AliPhysics  608b256 (608b256)
AliCaloPhotonCuts.h
Go to the documentation of this file.
1 #ifndef ALICALOPHOTONCUTS_H
2 #define ALICALOPHOTONCUTS_H
3 
6 #include "AliAnalysisCuts.h"
7 #include "AliAnalysisUtils.h"
8 #include "AliVCluster.h"
9 #include "AliVCaloCells.h"
10 #include "AliEMCALGeometry.h"
11 #include "AliPHOSGeometry.h"
12 #include "AliAODCaloCluster.h"
13 #include "AliEMCALRecoUtils.h"
14 #include "AliCalorimeterUtils.h"
15 #include "AliAODTrack.h"
16 #include "AliESDtrack.h"
17 #include "AliVTrack.h"
18 #include "AliAODTrack.h"
19 #include "AliMCEvent.h"
20 #include "TProfile2D.h"
21 #include "TH1F.h"
22 #include "TF1.h"
23 #include "AliAnalysisManager.h"
24 #include "AliCaloTrackMatcher.h"
25 #include "AliPhotonIsolation.h"
26 #include <vector>
27 
28 
29 class AliESDEvent;
30 class AliAODEvent;
32 class TH1F;
33 class TH2F;
34 class TF1;
35 class AliPIDResponse;
36 class AliAnalysisCuts;
37 class iostream;
38 class TList;
39 class AliAnalysisManager;
40 class AliAODMCParticle;
41 
42 
77 class AliCaloPhotonCuts : public AliAnalysisCuts {
78 
79  public:
80  enum cutIds {
101  };
102 
103  enum photonCuts {
109  };
110 
111  enum MCSet {
112  // MC data sets
113  kNoMC=0,
114  // pp 7 TeV 2010
116  // pp 7 TeV 2011
119  // pp 2.76 TeV 2011
125  // PbPb 2.76 TeV 2011
127  // pp 8 TeV 2012
132  // pPb 5 TeV 2013
140  // pp 2.76TeV 2013
144  // pp 13 TeV 2015
148  // pp 5 TeV 2015
157  // pp 5 TeV 2017
162  // PbPb 5 TeV 2015
165  // PbPb 5 TeV 2018
167  // pp 13 TeV 2016
181  // pPb 5 TeV 2016
187  // pPb 8 TeV 2016
197  // pp 13 TeV 2017
205  // Xe-Xe MC
207  //
210  // Pb-Pb 5 TeV 2015 Gamma-Jet
212 
213  // Data starts here
237  };
238 
239 
240  //handeling of CutString
241  static const char * fgkCutNames[kNCuts];
242  Bool_t SetCutIds(TString cutString);
244  Bool_t SetCut(cutIds cutID, Int_t cut);
246  void PrintCuts();
247  void PrintCutsWithValues(const TString analysisCutSelection);
248 
249  Bool_t InitializeCutsFromCutString(const TString analysisCutSelection);
255 
256  //Constructors
257  AliCaloPhotonCuts(Int_t isJetJet=0, const char *name="ClusterCuts", const char * title="Cluster Cuts");
260 
261  //virtual destructor
262  virtual ~AliCaloPhotonCuts();
263 
264  virtual Bool_t IsSelected(TObject* /*obj*/) {return kTRUE;}
265  virtual Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
266 
267  Bool_t ClusterIsSelected(AliVCluster* cluster, AliVEvent *event, AliMCEvent *mcEvent,Int_t isMC, Double_t weight=1., Long_t clusterID = -1);
269  Bool_t ClusterIsSelectedMC(TParticle *particle,AliMCEvent *mcEvent);
270  Bool_t ClusterIsSelectedElecMC(TParticle *particle,AliMCEvent *mcEvent);
271  Bool_t ClusterIsSelectedElecAODMC(AliAODMCParticle *particle,TClonesArray *aodmcArray);
272  Bool_t ClusterIsSelectedAODMC(AliAODMCParticle *particle,TClonesArray *aodmcArray);
273  Bool_t ClusterIsIsolated(Int_t clusterID, AliAODConversionPhoton *PhotonCandidate);
274 
275  void SetLightOutput( Bool_t flag ) {fDoLightOutput = flag; return;}
276  //correct NonLinearity
277  void SetV0ReaderName(TString name) {fV0ReaderName = name; return;}
279  void SetCaloIsolationName(TString name) {fCaloIsolationName = name; return;}
280  MCSet FindEnumForMCSet(TString namePeriod);
281 
282  void ApplyNonLinearity(AliVCluster* cluster, Int_t isMC, AliVEvent *event = 0x0);
283 
286 
287  Float_t FunctionNL_kSDM(Float_t e, Float_t p0, Float_t p1, Float_t p2, Float_t p3 = 1.0);
290  Float_t FunctionNL_DExp(Float_t e, Float_t p0, Float_t p1, Float_t p2, Float_t p3, Float_t p4, Float_t p5, Float_t p6 = 1.0, Float_t p7 = 1.0);
291  //predefined functions
304 
305  void InitCutHistograms(TString name="");
306  void SetFillCutHistograms(TString name="") {if(!fHistograms){InitCutHistograms(name);} return;}
309  void FillClusterCutIndex(Int_t photoncut) {if(fHistCutIndex)fHistCutIndex->Fill(photoncut); return;}
310  void InitializeEMCAL(AliVEvent *event);
311  void InitializePHOS(AliVEvent *event);
312 
313  void SetExtendedMatchAndQA(Int_t extendedMatchAndQA) {fExtendedMatchAndQA = extendedMatchAndQA; return;}
314  void FillHistogramsExtendedQA(AliVEvent *event, Int_t isMC);
315  Double_t GetTotalEnergyDeposit(AliVEvent *event);
316  void SetIsPureCaloCut(Int_t merged) {fIsPureCalo = merged; return;}
321 
322  // Cut functions
323  Bool_t AcceptanceCuts(AliVCluster* cluster, AliVEvent *event, Double_t weight);
324  Bool_t ClusterQualityCuts(AliVCluster* cluster,AliVEvent *event, AliMCEvent *mcEvent, Int_t isMC, Double_t weight, Long_t clusterID);
325 
326  Bool_t MatchConvPhotonToCluster(AliAODConversionPhoton* convPhoton, AliVCluster* cluster, AliVEvent* event, Double_t weight=1.);
327  void MatchTracksToClusters(AliVEvent* event, Double_t weight=1., Bool_t isEMCalOnly = kTRUE, AliMCEvent *mcEvent = 0x0);
328  Bool_t CheckClusterForTrackMatch(AliVCluster* cluster);
329  Int_t GetNumberOfLocalMaxima(AliVCluster* cluster, AliVEvent * event);
330  Int_t GetNumberOfLocalMaxima(AliVCluster* cluster, AliVEvent * event, Int_t *absCellIdList, Float_t* maxEList);
331  Bool_t AreNeighbours(Int_t absCellId1, Int_t absCellId2);
332  Int_t GetModuleNumberAndCellPosition(Int_t absCellId, Int_t & icol, Int_t & irow);
333  void SplitEnergy(Int_t absCellId1, Int_t absCellId2, AliVCluster* cluster, AliVEvent* event,
334  Int_t isMC, AliAODCaloCluster* cluster1, AliAODCaloCluster* cluster2);
335  Int_t FindLargestCellInCluster(AliVCluster* cluster, AliVEvent* event);
336  Int_t FindSecondLargestCellInCluster(AliVCluster* cluster, AliVEvent* event);
337  Bool_t CheckDistanceToBadChannel(AliVCluster* cluster, AliVEvent* event);
338  Int_t ClassifyClusterForTMEffi(AliVCluster* cluster, AliVEvent* event, AliMCEvent* mcEvent, Bool_t isESD);
339 
340  std::vector<Int_t> GetVectorMatchedTracksToCluster(AliVEvent* event, AliVCluster* cluster);
341  Bool_t GetClosestMatchedTrackToCluster(AliVEvent* event, AliVCluster* cluster, Int_t &trackLabel);
342  Bool_t GetHighestPtMatchedTrackToCluster(AliVEvent* event, AliVCluster* cluster, Int_t &trackLabel);
343  Bool_t IsClusterPi0(AliVEvent *event, AliMCEvent *mcEvent, AliVCluster *cluster);
344 
347 
349 
352 
353  // modify acceptance via histogram with cellID
354  void SetHistoToModifyAcceptance(TH1S* histAcc) {fHistoModifyAcc = histAcc; return;}
355 
356  // Set basic merging cuts
357  void SetSeedEnergy(Double_t seed) {fSeedEnergy = seed; return;}
358  void SetLocMaxCutEDiff(Double_t diffCut) {fLocMaxCutEDiff = diffCut; return;}
359 
360  // Set Individual Cuts
380 
381 
383  void SetUseNonLinearitySwitch( Bool_t useNonLin) { fUseNonLinearity = useNonLin;}
384 
386  Float_t CalculateMaxM02 (Int_t maxM02, Float_t clusEnergy);
387  Float_t CalculateMinM02 (Int_t minM02, Float_t clusEnergy);
388  Double_t GetDistanceBetweenClusters(AliVCluster* cluster1, AliVCluster* cluster2);
389  void SetLogBinningXTH1 (TH1* histoRebin);
390  void SetLogBinningXTH2 (TH2* histoRebin);
391  void SetLogBinningYTH2 (TH2* histoRebin);
392 
393  Bool_t IsExoticCluster ( AliVCluster *cluster, AliVEvent *event, Float_t& energyStar );
394  Float_t GetECross ( Int_t absID, AliVCaloCells* cells );
397  void SetExoticsQA(Bool_t enable) { fDoExoticsQA = enable; return;}
398 
399  // Function to set correction task setting
401 
402  AliEMCALGeometry* GetGeomEMCAL(){return fGeomEMCAL;}
403  AliPHOSGeometry* GetGeomPHOS() {return fGeomPHOS;}
404 
405  protected:
408 
409  AliCaloTrackMatcher* fCaloTrackMatcher; // pointer to CaloTrackMatcher
410  AliPhotonIsolation* fCaloIsolation; // pointer to PhotonIsolation
411  AliEMCALGeometry* fGeomEMCAL; // pointer to EMCAL geometry
412  AliEMCALRecoUtils* fEMCALRecUtils; // pointer to EMCAL recUtils
413  Bool_t fEMCALInitialized; // flag for EMCal initialization
414  AliPHOSGeometry* fGeomPHOS; // pointer to PHOS geometry
415  Bool_t fPHOSInitialized; // flag for PHOS initialization
416  Int_t fPHOSCurrentRun; // PHOS: current processed run for bad channel map
417  TObjArray* fEMCALBadChannelsMap; // pointer to EMCAL bad channel map
418  TH2I** fPHOSBadChannelsMap; // pointer to PHOS bad channel map
419  TProfile* fBadChannels; // TProfile with bad channels
420  Int_t fNMaxEMCalModules; // max number of EMCal Modules
421  Int_t fNMaxPHOSModules; // max number of PHOS Modules
422  TH1S* fHistoModifyAcc; // hisogram for modified acceptance, if leadCellID->1 accept cluster, if leadCellID->0 reject cluster
423 
424  Bool_t fDoLightOutput; // switch for running light output, kFALSE -> normal mode, kTRUE -> light mode
425  Int_t fIsMC; // Flag for usage of JetJet MC
426 
427  Bool_t fIsCurrentClusterAcceptedBeforeTM; // flag if latest checked cluster would have been accepted before track matching cut
428 
429  //for NonLinearity correction
430  TString fV0ReaderName; // Name of V0Reader
431  TString fCorrTaskSetting; // Name of Correction Task Setting
432  TString fCaloTrackMatcherName; // Name of global TrackMatching instance
433  TString fCaloIsolationName; // Name of global Isolation instance
434  TString fPeriodName; // PeriodName of MC
435  MCSet fCurrentMC; // enum for current MC set being processed
436 
437  //cuts
438  Int_t fClusterType; // which cluster do we have
439  Float_t fIsolationRadius; // radius of isolation cone
440  Float_t fMomPercentage; // percentage of the isolated Photon Pt
441  Bool_t fUsePhotonIsolation; // is photonisolation turned on
442  Double_t fMinEtaCut; // min eta cut
443  Double_t fMinEtaInnerEdge; // min eta of inner Edge (DCal)
444  Double_t fMaxEtaCut; // max eta cut
445  Double_t fMaxEtaInnerEdge; // max eta of inner Edge (DCal)
446  Bool_t fUseEtaCut; // flag for switching on eta cut
447  Double_t fMinPhiCut; // phi cut
448  Double_t fMaxPhiCut; // phi cut
451  Bool_t fUsePhiCut; // flag for switching on phi cut
452  Double_t fMinDistanceToBadChannel; // minimum distance to bad channel
453  Int_t fUseDistanceToBadChannel; // flag for switching on distance to bad channel cut: 0 off, 1 on without corners, 2 on with corners included
454  Double_t fMaxTimeDiff; // maximum time difference to triggered collision
455  Double_t fMinTimeDiff; // minimum time difference to triggered collision
456  Bool_t fUseTimeDiff; // flag for switching on time difference cut
457  Double_t fMaxDistTrackToClusterEta; // minimum distance between track and cluster in eta
458  Double_t fMinDistTrackToClusterPhi; // minimum distance between track and cluster in phi
459  Double_t fMaxDistTrackToClusterPhi; // maximum distance between track and cluster in phi
460  Bool_t fUseDistTrackToCluster; // flag for switching on distance between track and cluster cut
461  Int_t fUsePtDepTrackToCluster; // flag for switching on pT dependent matching parameters
462  TF1* fFuncPtDepEta; // TF1 for pT dep cutting in eta
463  TF1* fFuncPtDepPhi; // TF1 for pT dep cutting in phi
464  Float_t fMinTMDistSigma; // number of sigma's for TM using PHOS
465  Bool_t fUseEOverPVetoTM; // flag for switching on E/P veto (forbidding tracks to match clusters if clusterE/trackP > someValue
466  Double_t fEOverPMax; // maximum value for E/P of a track to be considered for TM
467  Bool_t fUseTMMIPsubtraction; // flag for switching on MIP subtraction
468  Int_t fExtendedMatchAndQA; // switching on ext matching histograms (1) / ext QA_noCell (2) / ext matching + ext QA_noCell (3) / extQA + cell (4) / ext match + extQA + cell (5) or all off (0)
469  Double_t fExoticEnergyFracCluster; // exotic energy compared to E_cross cluster cut
470  Double_t fExoticMinEnergyCell; // minimum energy of cell to test for exotics
471  Bool_t fUseExoticCluster; // flag for switching on exotic cluster cut
472  Bool_t fDoExoticsQA; // flag for switching on exotic cluster cut
473  Double_t fMinEnergy; // minium energy per cluster
474  Bool_t fDoFlatEnergySubtraction; // enable flat energy subtraction
475  Double_t fSeedEnergy; // seed energy for clusters
476  Double_t fLocMaxCutEDiff; // cut on energy difference between two cells
477  Bool_t fUseMinEnergy; // flag for switching on minimum energy cut
478  Int_t fMinNCells; // minimum number of cells
479  Bool_t fUseNCells; // flag for switching on minimum N Cells cut
480  Double_t fMaxM02; // maximum M02
481  Double_t fMinM02; // minimum M02
482  Int_t fUseM02; // flag for switching on M02 cut
483  Int_t fMaxM02CutNr; // maximum M02 CutNr
484  Int_t fMinM02CutNr; // minimum M02 CutNr
485  Double_t fMaxM20; // maximum M20
486  Double_t fMinM20; // minimum M20
487  Bool_t fUseM20; // flag for switching on M20 cut
488  Float_t fMaxMGGRecConv; // maximum invariant mass below which the 2 clusters are gonna be combined assuming they are from a photon
489  Int_t fUseRecConv; // flag to switch on conversion recovery
490  Double_t fMaxDispersion; // maximum dispersion
491  Bool_t fUseDispersion; // flag for switching on dispersion cut
492  Int_t fMinNLM; // minimum number of local maxima in cluster
493  Int_t fMaxNLM; // maximum number of local maxima in cluster
494  Bool_t fUseNLM; // flag for switching on NLM cut
495  Int_t fNonLinearity1; // selection of nonlinearity correction, part1
496  Int_t fNonLinearity2; // selection of nonlinearity correction, part2
497  Int_t fSwitchNonLinearity; // selection (combined) of NonLinearity
498  Bool_t fUseNonLinearity; // flag for switching NonLinearity correction
499  Int_t fIsPureCalo; // flag for MergedCluster analysis
500  Int_t fNactiveEmcalCells; // total number of active emcal cells
501  Bool_t fDoSecondaryTrackMatching; // flag to switch on secondary trackmatching
502 
503  //vector
504  std::vector<Int_t> fVectorMatchedClusterIDs; // vector with cluster IDs that have been matched to tracks in merged cluster analysis
505 
506  // CutString
507  TObjString* fCutString; // cut number used for analysis
509 
510  // Histograms
511  TH1F* fHistCutIndex; // bookkeeping for cuts
512  TH1F* fHistAcceptanceCuts; // bookkeeping for acceptance cuts
513  TH2F* fHistClusterIdentificationCuts; // bookkeeping for cluster identification cuts
514 
515  TH2F* fHistClusterEtavsPhiBeforeAcc; // eta-phi-distribution before acceptance cuts
516  TH2F* fHistClusterEtavsPhiAfterAcc; // eta-phi-distribution of all after acceptance cuts
517  TH2F* fHistClusterEtavsPhiAfterQA; // eta-phi-distribution of all after cluster quality cuts
518  TH2F* fHistClusterTimevsEBeforeQA; // Cluster time vs E before cluster quality cuts
519  TH2F* fHistClusterTimevsEAfterQA; // Cluster time vs E after cluster quality cuts
520  TH1F* fHistEnergyOfClusterBeforeNL; // enery per cluster before NonLinearity correction
521  TH1F* fHistEnergyOfClusterAfterNL; // enery per cluster after NonLinearity correction
522  TH1F* fHistEnergyOfClusterBeforeQA; // enery per cluster before acceptance cuts
523  TH1F* fHistEnergyOfClusterAfterQA; // enery per cluster after cluster quality cuts
524  TH1F* fHistNCellsBeforeQA; // number of cells per cluster before acceptance cuts
525  TH1F* fHistNCellsAfterQA; // number of cells per cluster after cluster quality cuts
526  TH1F* fHistM02BeforeQA; // M02 before acceptance cuts
527  TH1F* fHistM02AfterQA; // M02 after cluster quality cuts
528  TH1F* fHistM20BeforeQA; // M20 before acceptance cuts
529  TH1F* fHistM20AfterQA; // M20 after cluster quality cuts
530  TH1F* fHistDispersionBeforeQA; // dispersion before acceptance cuts
531  TH1F* fHistDispersionAfterQA; // dispersion after cluster quality cuts
532  TH1F* fHistNLMBeforeQA; // number of local maxima in cluster before acceptance cuts
533  TH1F* fHistNLMAfterQA; // number of local maxima in cluster after cluster quality cuts
534 // TH2F* fHistNLMAvsNLMBBeforeQA; // number of local maxima in cluster after cluster quality cuts
535  TH2F* fHistNLMVsNCellsAfterQA; // number of local maxima vs Ncells in cluster after cluster quality cuts
536  TH2F* fHistNLMVsEAfterQA; // number of local maxima vs E in cluster after cluster quality cuts
537  //More histograms
538  TH2F* fHistClusterEnergyvsMod; // Cluster Energy vs Module Number
539  TH2F* fHistNCellsBigger100MeVvsMod; // NCells with >0.1 GeV vs Module Number
540  TH2F* fHistNCellsBigger1500MeVvsMod; // NCells with >1.5 GeV vs Module Number
541  TH2F* fHistEnergyOfModvsMod; // Deposited Energy vs Module Number
542  TH2F* fHistClusterEnergyvsNCellsBeforeQA; // Cluster Energy vs NCells before QA
543  TH2F* fHistClusterEnergyvsNCellsAfterQA; // Cluster Energy vs NCells after QA
544  TH2F* fHistCellEnergyvsCellID; // Cell Energy vs CellID
545  TH2F* fHistCellTimevsCellID; // Cell Time vs CellID
546  TH2F* fHistClusterEM02BeforeQA; // 2-dim plot E vs. M02
547  TH2F* fHistClusterEM02AfterQA; // 2-dim plot E vs. M02
548  TH1F* fHistClusterIncludedCellsBeforeQA; // CellIDs in Cluster
549  TH1F* fHistClusterIncludedCellsAfterQA; // CellIDs in Cluster of accepted ones
550  TH1F* fHistClusterEnergyFracCellsBeforeQA; // Energy fraction of CellIDs in Cluster
551  TH1F* fHistClusterEnergyFracCellsAfterQA; // Energy fraction of CellIDs in Cluster of accepted ones
552  TH2F* fHistClusterIncludedCellsTimingAfterQA; // Timing of CellIDs in Cluster of accepted ones
553  TH2F* fHistClusterIncludedCellsTimingEnergyAfterQA; // Timing vs Energy of CellIDs in Cluster of accepted ones
554  TH2F* fHistClusterDistanceInTimeCut; // distance of clusters: within cluster timing cut + within cluster timing cut
555  TH2F* fHistClusterDistanceOutTimeCut; // distance of clusters: within cluster timing cut + outside cluster timing cut
556  TH1F* fHistClusterDistance1DInTimeCut; // 1D distance of clusters: within cluster timing cut + within cluster timing cut
557 
558  //Track matching histograms
559  TH1F* fHistClusterRBeforeQA; // cluster position in R=SQRT(x^2+y^2) (before QA)
560  TH1F* fHistClusterRAfterQA; // cluster position in R=SQRT(x^2+y^2) for matched tracks (After QA)
561  TH2F* fHistClusterdEtadPhiBeforeQA; // 2-dim plot dEta vs. dPhi
562  TH2F* fHistClusterdEtadPhiAfterQA; // 2-dim plot dEta vs. dPhi for matched tracks (after QA)
563  TH1F* fHistDistanceTrackToClusterBeforeQA; // distance cluster to track before acceptance cuts
564  TH1F* fHistDistanceTrackToClusterAfterQA; // distance cluster to track after cluster quality cuts
565 
566  //Extended track matching histograms
567  TH2F* fHistClusterdEtadPhiPosTracksBeforeQA; // 2-dim plot dEta vs. dPhi
568  TH2F* fHistClusterdEtadPhiNegTracksBeforeQA; // 2-dim plot dEta vs. dPhi
569  TH2F* fHistClusterdEtadPhiPosTracksAfterQA; // 2-dim plot dEta vs. dPhi
570  TH2F* fHistClusterdEtadPhiNegTracksAfterQA; // 2-dim plot dEta vs. dPhi
571  TH2F* fHistClusterdEtadPhiPosTracksP_000_075BeforeQA; // 2-dim plot dEta vs. dPhi, positive Tracks, P < 0.75
572  TH2F* fHistClusterdEtadPhiPosTracksP_075_125BeforeQA; // 2-dim plot dEta vs. dPhi, positive Tracks, 0.75 < P < 1.25
573  TH2F* fHistClusterdEtadPhiPosTracksP_125_999BeforeQA; // 2-dim plot dEta vs. dPhi, positive Tracks, P > 1.25
574  TH2F* fHistClusterdEtadPhiNegTracksP_000_075BeforeQA; // 2-dim plot dEta vs. dPhi, negative Tracks, P < 0.75
575  TH2F* fHistClusterdEtadPhiNegTracksP_075_125BeforeQA; // 2-dim plot dEta vs. dPhi, negative Tracks, 0.75 < P < 1.25
576  TH2F* fHistClusterdEtadPhiNegTracksP_125_999BeforeQA; // 2-dim plot dEta vs. dPhi, negative Tracks, P > 1.25
577  TH2F* fHistClusterdEtadPtBeforeQA; // 2-dim plot dEta vs. Pt
578  TH2F* fHistClusterdEtadPtAfterQA; // 2-dim plot dEta vs. Pt
579  TH2F* fHistClusterdEtadPtTrueMatched; // 2-dim plot dEta vs. Pt for validated match
580  TH2F* fHistClusterdPhidPtPosTracksBeforeQA; // 2-dim plot dPhi vs. Pt, positive Tracks
581  TH2F* fHistClusterdPhidPtNegTracksBeforeQA; // 2-dim plot dPhi vs. Pt, negative Tracks
582  TH2F* fHistClusterdPhidPtAfterQA; // 2-dim plot dPhi vs. Pt
583  TH2F* fHistClusterdPhidPtPosTracksTrueMatched; // 2-dim plot dPhi vs. Pt, positive Tracks, validated match
584  TH2F* fHistClusterdPhidPtNegTracksTrueMatched; // 2-dim plot dPhi vs. Pt, negative Tracks, validated match
585  TH2F* fHistClusterM20M02BeforeQA; // 2-dim plot M20 vs. M02
586  TH2F* fHistClusterM20M02AfterQA; // 2-dim plot M20 vs. M20
587 
588  // QA histograms for exotic clusters
589  TH2F* fHistClusterEtavsPhiExotics; // eta-phi-distribution of exotic clusters
590  TH2F* fHistClusterEM02Exotics; // 2-dim plot E vs. M02 for exotic clusters
591  TH2F* fHistClusterEnergyvsNCellsExotics; // Cluster Energy vs NCells
592  TH2F* fHistClusterEEstarExotics; // 2-dim plot E vs. Estar for exotic clusters
593 
594  // histograms for track matching efficiency
596  TH2F* fHistClusterTrueElecEtaPhiBeforeTM_30_00; // electron clusters before track matching, only for E_clus > 30 GeV
597  TH2F* fHistClusterTrueElecEtaPhiAfterTM_30_00; // electron clusters after track matching, only for E_clus > 30 GeV
609 
610  TH1F* fHistClusETruePi0_BeforeTM; // for checking the false positives: how much true pi0s are matched away?
612 
613  // histograms for studying track matching veto with track momentum vs. cluster energy
614  TH2F* fHistMatchedTrackPClusE; // track P vs cluster E in case of matching with a cluster
615  TH2F* fHistMatchedTrackPClusEAfterEOverPVeto; // track P vs cluster E for matched tracks surviving the E/P veto
616  TH2F* fHistMatchedTrackPClusETruePi0Clus; // track P vs cluster E in case of matching with a true pi0 cluster
617 
618  Int_t fNMaxDCalModules; // max number of DCal Modules
619  Int_t fgkDCALCols; // Number of columns in DCal
620  Bool_t fIsAcceptedForBasic; // basic counting
621 
622  private:
623 
624  ClassDef(AliCaloPhotonCuts,83)
625 };
626 
627 #endif
Double_t fMaxDistTrackToClusterPhi
Bool_t AcceptCellByBadChannelMap(Int_t absID)
void MatchTracksToClusters(AliVEvent *event, Double_t weight=1., Bool_t isEMCalOnly=kTRUE, AliMCEvent *mcEvent=0x0)
Bool_t GetIsAcceptedForBasicCounting()
TH1F * fHistDistanceTrackToClusterBeforeQA
Bool_t IsExoticCluster(AliVCluster *cluster, AliVEvent *event, Float_t &energyStar)
TH2F * fHistClusterDistanceOutTimeCut
TH2F * fHistClusterdEtadPhiPosTracksP_075_125BeforeQA
Bool_t CheckClusterForTrackMatch(AliVCluster *cluster)
Float_t FunctionNL_kTestBeamMod(Float_t e, Float_t p0, Float_t p1, Float_t p2, Float_t p3, Float_t p4, Float_t p5, Float_t p6)
Double_t fMaxDistTrackToClusterEta
TH2F * fHistClusterEtavsPhiBeforeAcc
double Double_t
Definition: External.C:58
Float_t FunctionNL_kPi0MCv3(Float_t e)
Bool_t SetMinNCellsCut(Int_t)
void SetExoticsQA(Bool_t enable)
Definition: External.C:236
TH2F * fHistNCellsBigger1500MeVvsMod
const char * title
Definition: MakeQAPdf.C:27
std::vector< Int_t > GetVectorMatchedTracksToCluster(AliVEvent *event, AliVCluster *cluster)
Double_t GetDistanceBetweenClusters(AliVCluster *cluster1, AliVCluster *cluster2)
void PrintCutsWithValues(const TString analysisCutSelection)
TH2F * fHistClusterdEtadPhiBeforeQA
TH2F * fHistClusterIncludedCellsTimingEnergyAfterQA
TH2F * fHistClusterIncludedCellsTimingAfterQA
TH2F * fHistClusterEvsTrackSumEPrimaryButNoElec
TH2F * fHistNCellsBigger100MeVvsMod
void SetLogBinningYTH2(TH2 *histoRebin)
Bool_t SetCut(cutIds cutID, Int_t cut)
TH2F * fHistClusterdEtadPhiPosTracksBeforeQA
TH1F * fHistClusterIncludedCellsAfterQA
void SetHistoToModifyAcceptance(TH1S *histAcc)
void SetSeedEnergy(Double_t seed)
Bool_t SetNonLinearity1(Int_t)
TH2F * fHistClusterEtavsPhiAfterAcc
std::vector< Int_t > fVectorMatchedClusterIDs
Float_t CalculateMinM02(Int_t minM02, Float_t clusEnergy)
Bool_t SetClusterTypeCut(Int_t)
void FillClusterCutIndex(Int_t photoncut)
Bool_t ClusterIsSelected(AliVCluster *cluster, AliVEvent *event, AliMCEvent *mcEvent, Int_t isMC, Double_t weight=1., Long_t clusterID=-1)
virtual Bool_t IsSelected(TObject *)
void SetLightOutput(Bool_t flag)
Float_t FunctionNL_kPi0MCv2(Float_t e)
TObjString * fCutString
TH1F * fHistEnergyOfClusterBeforeQA
Int_t GetModuleNumberAndCellPosition(Int_t absCellId, Int_t &icol, Int_t &irow)
Double_t GetTotalEnergyDeposit(AliVEvent *event)
TH2F * fHistClusterEvsTrackEGammaSubCharged
TCanvas * c
Definition: TestFitELoss.C:172
Bool_t GetDoFlatEnergySubtraction()
Float_t FunctionNL_kSDMv6(Float_t e)
Bool_t GetDoSecondaryTrackMatching()
void SetCorrectionTaskSetting(TString setting)
TH2F * fHistClusterdEtadPhiNegTracksP_075_125BeforeQA
void SetFillCutHistograms(TString name="")
void SetUseNonLinearitySwitch(Bool_t useNonLin)
Bool_t SetMaxEtaCut(Int_t)
TObjArray * fEMCALBadChannelsMap
void ApplyNonLinearity(AliVCluster *cluster, Int_t isMC, AliVEvent *event=0x0)
TH2F * fHistClusterdPhidPtNegTracksTrueMatched
TH2F * fHistClusterEtavsPhiAfterQA
TH2F * fHistMatchedTrackPClusETruePi0Clus
Float_t FunctionNL_kSDMv5(Float_t e)
Bool_t MatchConvPhotonToCluster(AliAODConversionPhoton *convPhoton, AliVCluster *cluster, AliVEvent *event, Double_t weight=1.)
Float_t FunctionNL_DExp(Float_t e, Float_t p0, Float_t p1, Float_t p2, Float_t p3, Float_t p4, Float_t p5, Float_t p6=1.0, Float_t p7=1.0)
TH2F * fHistClusterEvsTrackENeutralSubCharged
TH2F * fHistClusterdEtadPhiPosTracksP_000_075BeforeQA
Some utilities for cluster and cell treatment.
virtual Bool_t IsSelected(TList *)
TH2F * fHistClusterdEtadPhiNegTracksBeforeQA
MCSet FindEnumForMCSet(TString namePeriod)
AliCaloPhotonCuts(Int_t isJetJet=0, const char *name="ClusterCuts", const char *title="Cluster Cuts")
Float_t FunctionNL_kSDM(Float_t e, Float_t p0, Float_t p1, Float_t p2, Float_t p3=1.0)
TH2F * fHistClusterdPhidPtPosTracksBeforeQA
Bool_t ClusterQualityCuts(AliVCluster *cluster, AliVEvent *event, AliMCEvent *mcEvent, Int_t isMC, Double_t weight, Long_t clusterID)
int Int_t
Definition: External.C:63
Double_t fMinDistTrackToClusterPhi
Class handling all kinds of selection cuts for Gamma Calo analysis.
AliPHOSGeometry * fGeomPHOS
TH2F * fHistClusterTimevsEBeforeQA
void FillHistogramsExtendedQA(AliVEvent *event, Int_t isMC)
AliEMCALGeometry * GetGeomEMCAL()
float Float_t
Definition: External.C:68
AliCaloTrackMatcher * GetCaloTrackMatcherInstance()
TH1F * fHistClusterIncludedCellsBeforeQA
TH2F * fHistClusterEvsTrackEPrimaryButNoElec
Bool_t SetDistanceToBadChannelCut(Int_t)
Bool_t GetClosestMatchedTrackToCluster(AliVEvent *event, AliVCluster *cluster, Int_t &trackLabel)
Float_t FunctionNL_kTestBeamv2(Float_t e)
Bool_t SetExoticClusterCut(Int_t)
Bool_t InitializeCutsFromCutString(const TString analysisCutSelection)
TH1F * fHistEnergyOfClusterAfterNL
TH2F * fHistMatchedTrackPClusEAfterEOverPVeto
Int_t ClassifyClusterForTMEffi(AliVCluster *cluster, AliVEvent *event, AliMCEvent *mcEvent, Bool_t isESD)
void SetLogBinningXTH2(TH2 *histoRebin)
TH2F * fHistClusterEnergyvsNCellsExotics
void InitializePHOS(AliVEvent *event)
AliPhotonIsolation * GetPhotonIsolationInstance()
Bool_t SetDispersion(Int_t)
TH2F * fHistClusterdEtadPtBeforeQA
void SplitEnergy(Int_t absCellId1, Int_t absCellId2, AliVCluster *cluster, AliVEvent *event, Int_t isMC, AliAODCaloCluster *cluster1, AliAODCaloCluster *cluster2)
void SetCaloIsolationName(TString name)
Bool_t GetHighestPtMatchedTrackToCluster(AliVEvent *event, AliVCluster *cluster, Int_t &trackLabel)
TH2F * fHistClusterENMatchesNeutral
Bool_t ClusterIsIsolated(Int_t clusterID, AliAODConversionPhoton *PhotonCandidate)
TH2F * fHistClusterdEtadPhiPosTracksAfterQA
Float_t FunctionM02(Float_t E, Float_t a, Float_t b, Float_t c, Float_t d, Float_t e)
TH2F * fHistClusterdPhidPtPosTracksTrueMatched
TH1F * fHistEnergyOfClusterBeforeNL
Bool_t ClusterIsSelectedAODMC(AliAODMCParticle *particle, TClonesArray *aodmcArray)
Bool_t SetTimingCut(Int_t)
Bool_t ClusterIsSelectedElecAODMC(AliAODMCParticle *particle, TClonesArray *aodmcArray)
Bool_t ClusterIsSelectedMC(TParticle *particle, AliMCEvent *mcEvent)
TH2F * fHistClusterDistanceInTimeCut
TH1F * fHistClusterDistance1DInTimeCut
Bool_t SetMinMaxM20(Int_t)
Float_t CalculateMaxM02(Int_t maxM02, Float_t clusEnergy)
static const char * fgkCutNames[kNCuts]
void InitializeEMCAL(AliVEvent *event)
Bool_t CheckDistanceToBadChannel(AliVCluster *cluster, AliVEvent *event)
void SetLocMaxCutEDiff(Double_t diffCut)
Bool_t SetMaxPhiCut(Int_t)
void SetCaloTrackMatcherName(TString name)
Double_t fExoticEnergyFracCluster
Float_t FunctionNL_SPOW(Float_t e, Float_t p0, Float_t p1, Float_t p2)
Double_t fMinDistanceToBadChannel
Float_t FunctionNL_kPi0MCv6(Float_t e)
TH2F * fHistClusterEvsTrackEChargedLead
AliPHOSGeometry * GetGeomPHOS()
void SetExtendedMatchAndQA(Int_t extendedMatchAndQA)
TH2F * fHistClusterENMatchesCharged
Float_t GetECross(Int_t absID, AliVCaloCells *cells)
AliCaloTrackMatcher * fCaloTrackMatcher
Float_t FunctionNL_kPi0MCMod(Float_t e, Float_t p0, Float_t p1, Float_t p2, Float_t p3, Float_t p4, Float_t p5, Float_t p6)
Bool_t isMC
Int_t FindSecondLargestCellInCluster(AliVCluster *cluster, AliVEvent *event)
Bool_t IsClusterPi0(AliVEvent *event, AliMCEvent *mcEvent, AliVCluster *cluster)
TH1F * fHistClusterEnergyFracCellsAfterQA
TH2F * fHistClusterdEtadPhiNegTracksP_125_999BeforeQA
Int_t GetNumberOfLocalMaxima(AliVCluster *cluster, AliVEvent *event)
Float_t GetInvMassConversionRecovery()
TH2F * fHistClusterEvsTrackENeutral
Bool_t SetTrackMatchingCut(Int_t)
Float_t FunctionNL_kPi0MCv5(Float_t e)
Definition: External.C:220
AliEMCALRecoUtils * fEMCALRecUtils
TH2F * fHistClusterEvsTrackECharged
void SetV0ReaderName(TString name)
TH2F * fHistClusterTrueElecEtaPhiAfterTM_30_00
Bool_t ClusterIsSelectedElecMC(TParticle *particle, AliMCEvent *mcEvent)
Bool_t AcceptanceCuts(AliVCluster *cluster, AliVEvent *event, Double_t weight)
void InitCutHistograms(TString name="")
TH2F * fHistClusterEnergyvsNCellsAfterQA
TH2F * fHistClusterdEtadPhiPosTracksP_125_999BeforeQA
TH2F * fHistClusterdEtadPhiNegTracksAfterQA
void SetLogBinningXTH1(TH1 *histoRebin)
TH2F * fHistClusterdPhidPtNegTracksBeforeQA
Float_t FunctionNL_kPi0MC(Float_t e, Float_t p0, Float_t p1, Float_t p2, Float_t p3, Float_t p4, Float_t p5, Float_t p6)
TList * GetExtQAHistograms()
Float_t FunctionNL_PHOSOnlyMC(Float_t e, Float_t p0, Float_t p1, Float_t p2)
TH2F * fHistClusterdEtadPtTrueMatched
TH1F * fHistEnergyOfClusterAfterQA
bool Bool_t
Definition: External.C:53
TH2F * fHistClusterdEtadPhiAfterQA
TH1F * fHistDistanceTrackToClusterAfterQA
TH1F * fHistClusterEnergyFracCellsBeforeQA
AliPhotonIsolation * fCaloIsolation
Bool_t SetMinEtaCut(Int_t)
Float_t FunctionNL_DPOW(Float_t e, Float_t p0, Float_t p1, Float_t p2, Float_t p3, Float_t p4, Float_t p5)
Float_t FunctionNL_kPi0MCv1(Float_t e)
Int_t FindLargestCellInCluster(AliVCluster *cluster, AliVEvent *event)
Bool_t SetNonLinearity2(Int_t)
Float_t FunctionNL_kTestBeamv3(Float_t e)
Bool_t AreNeighbours(Int_t absCellId1, Int_t absCellId2)
TH2F * fHistClusterEnergyvsNCellsBeforeQA
Bool_t SetCutIds(TString cutString)
TH2F * fHistClusterTrueElecEtaPhiBeforeTM_30_00
Bool_t fIsCurrentClusterAcceptedBeforeTM
Definition: External.C:196
TH2F * fHistClusterIdentificationCuts
TH2F * fHistClusterEtavsPhiExotics
AliEMCALGeometry * fGeomEMCAL
Bool_t SetMinPhiCut(Int_t)
void SetExoticsMinCellEnergyCut(Double_t minE)
TH2F * fHistClusterdEtadPhiNegTracksP_000_075BeforeQA
void SetIsPureCaloCut(Int_t merged)
Float_t FunctionNL_kTestBeamv4(Float_t e)
Bool_t SetMinEnergyCut(Int_t)
Bool_t ClusterIsSelectedBeforeTrackMatch()
AliCaloPhotonCuts & operator=(const AliCaloPhotonCuts &)