class AliAODPWG4Particle;
class AliAODPWG4ParticleCorrelation ;
-
class AliAnaParticleIsolation : public AliAnaCaloTrackCorrBaseClass {
public:
void FillAcceptanceHistograms();
void FillTrackMatchingShowerShapeControlHistograms(AliAODPWG4ParticleCorrelation * pCandidate,
- Int_t mcIndex) ;
+ Float_t coneptsum, Float_t coneleadpt, Int_t mcIndex) ;
Bool_t IsTriggerTheNearSideEventLeadingParticle(Int_t & idLeading);
// Analysis Setters and Getters
- TString GetCalorimeter() const { return fCalorimeter ; }
+ TString GetTriggerDetectorString() const { return fIsoDetectorString ; }
TString GetTriggerDetector() const { return fIsoDetector ; }
Int_t GetNCones() const { return fNCones ; }
Int_t GetNPtThresFrac() const { return fNPtThresFrac ; }
Int_t GetMCIndex(Int_t mcTag);
- void SetCalorimeter(TString & det) { fCalorimeter = det ; }
- void SetTriggerDetector(TString & det) { fIsoDetector = det ; }
+ void SetTriggerDetector(TString & det) ;
+ void SetTriggerDetector(Int_t det) ;
void SetNCones(Int_t ncs) { fNCones = ncs ; }
void SetNPtThresFrac(Int_t npt) { fNPtThresFrac = npt ; }
void SetConeSizes(Int_t i, Float_t r) { fConeSizes[i] = r ; }
void SetPtFractions(Int_t i, Float_t pt) { fPtFractions[i] = pt ; }
void SetSumPtThresholds(Int_t i, Float_t pt){ fSumPtThresholds[i] = pt ; }
+ void SetMinCellsAngleOverlap(Float_t n) { fMinCellsAngleOverlap = n ; }
+
Bool_t IsReIsolationOn() const { return fReMakeIC ; }
void SwitchOnReIsolation() { fReMakeIC = kTRUE ; }
void SwitchOffReIsolation() { fReMakeIC = kFALSE ; }
Bool_t IsSeveralIsolationOn() const { return fMakeSeveralIC ; }
void SwitchOnSeveralIsolation() { fMakeSeveralIC = kTRUE ; }
void SwitchOffSeveralIsolation() { fMakeSeveralIC = kFALSE ; }
-
- void SwitchOnFillPileUpHistograms() { fFillPileUpHistograms = kTRUE ; }
- void SwitchOffFillPileUpHistograms() { fFillPileUpHistograms = kFALSE ; }
void SwitchOnTMHistoFill() { fFillTMHisto = kTRUE ; }
void SwitchOffTMHistoFill() { fFillTMHisto = kFALSE ; }
void SwitchOnCellHistoFill() { fFillCellHistograms = kTRUE ; }
void SwitchOffCellHistoFill() { fFillCellHistograms = kFALSE; }
- void SwitchOnHighMultiplicityHistoFill() { fFillHighMultHistograms = kTRUE ; }
- void SwitchOffHighMultiplicityHistoFill() { fFillHighMultHistograms = kFALSE; }
-
void SwitchOnNLMHistoFill() { fFillNLMHistograms = kTRUE ; }
void SwitchOffNLMHistoFill() { fFillNLMHistograms = kFALSE; }
void SetNDecayBits(Int_t n) { fNDecayBits = n ; }
void SetDecayBits(Int_t i, UInt_t bit) { if(i < 4) fDecayBits[i] = bit ; }
- // For primary histograms in arrays, index in the array, corresponding to a photon origin
+ void SwitchOnBackgroundBinHistoFill() { fFillBackgroundBinHistograms = kTRUE ; }
+ void SwitchOffBackgroundBinHistoFill() { fFillBackgroundBinHistograms = kFALSE; }
+ void SetNBackgroundBins(Int_t n) { if(n < 19) fNBkgBin = n ; }
+ void SetBackgroundLimits(Int_t i,Float_t l){ if(i <= fNBkgBin) fBkgBinLimit[i] = l; }
+
+ void SwitchOnPtTrigBinHistoFill() { fFillPtTrigBinHistograms = kTRUE ; }
+ void SwitchOffPtTrigBinHistoFill() { fFillPtTrigBinHistograms = kFALSE; }
+ void SetNPtTrigBins(Int_t n) { if(n < 19) fNPtTrigBin = n ; }
+ void SetPtTrigLimits(Int_t i,Float_t l) { if(i <= fNPtTrigBin) fPtTrigBinLimit[i] = l; }
+
+ void SwitchOnPrimariesInConeSelection() { fSelectPrimariesInCone = kTRUE ; }
+ void SwitchOffPrimariesInConeSelection() { fSelectPrimariesInCone = kFALSE; }
+
+ void SwitchOnPrimariesPi0DecayStudy() { fMakePrimaryPi0DecayStudy = kTRUE ; }
+ void SwitchOffPrimariesPi0DecayStudy() { fMakePrimaryPi0DecayStudy = kFALSE; }
+
+ // For primary histograms in arrays, index in the array, corresponding to a photon origin
enum mcPrimTypes { kmcPrimPhoton = 0, kmcPrimPi0Decay = 1, kmcPrimOtherDecay = 2,
- kmcPrimPrompt = 3, kmcPrimFrag = 4, kmcPrimISR = 5 } ;
+ kmcPrimPrompt = 3, kmcPrimFrag = 4, kmcPrimISR = 5, kmcPrimPi0 = 6 } ;
+ static const Int_t fgkNmcPrimTypes = 7;
// For histograms in arrays, index in the array, corresponding to any particle origin
- enum mcTypes { kmcPhoton = 0, kmcPrompt = 1, kmcFragment = 2,
- kmcPi0 = 3, kmcPi0Decay = 4, kmcEtaDecay = 5, kmcOtherDecay = 6,
- kmcElectron = 7, kmcHadron = 8 } ;
-
+ enum mcTypes { kmcPhoton = 0, kmcPrompt = 1, kmcFragment = 2,
+ kmcPi0 = 3, kmcPi0Decay = 4, kmcPi0DecayLostPair = 5,
+ kmcEtaDecay = 6, kmcOtherDecay = 7,
+ kmcElectron = 8, kmcHadron = 9 } ;
+ static const Int_t fgkNmcTypes = 10;
+
private:
- TString fCalorimeter ; // Calorimeter where neutral particles in cone for isolation are;
- TString fIsoDetector ; // Candidate particle for isolation detector ;
+ Int_t fIsoDetector ; // Candidate particle for isolation detector ;
+ TString fIsoDetectorString ; // Candidate particle for isolation detector ;
Bool_t fReMakeIC ; // Do isolation analysis
Bool_t fMakeSeveralIC ; // Do analysis for different IC
- Bool_t fFillPileUpHistograms; // Fill pile-up related histograms
Bool_t fFillTMHisto; // Fill track matching plots
Bool_t fFillSSHisto; // Fill Shower shape plots
Bool_t fFillUEBandSubtractHistograms; // Fill histograms working on the UE subtraction
Bool_t fFillCellHistograms; // Fill cell histograms
- Bool_t fFillHighMultHistograms; // Fill high multiplicity histograms
Bool_t fFillTaggedDecayHistograms; // Fill histograms for clusters tagged as decay
Int_t fNDecayBits ; // in case of study of decay triggers, select the decay bit
UInt_t fDecayBits[4] ; // in case of study of decay triggers, select the decay bit
Bool_t fFillNLMHistograms; // Fill NLM histograms
Bool_t fLeadingOnly; // Do isolation with leading particle
Bool_t fCheckLeadingWithNeutralClusters; // Compare the trigger candidate to Leading pT with the clusters pT, by default only charged
+ Bool_t fSelectPrimariesInCone; // In primary particle isolation studies, select only particles in isolation cone within detector acceptance and E cut.
+ Bool_t fMakePrimaryPi0DecayStudy; // Fill dedicated histograms for primary decay photons
+
+ Bool_t fFillBackgroundBinHistograms; // Fill histograms for different bins in pt content of the cone
+ Int_t fNBkgBin; // Number of bins on pt content in cone
+ Float_t fBkgBinLimit[20]; // Pt bin limits on pt content in the cone
+ Bool_t fFillPtTrigBinHistograms; // Fill histograms for different bins in pt trigger
+ Int_t fNPtTrigBin; // Number of bins on pt trigger
+ Float_t fPtTrigBinLimit[20]; // Pt bin limits on pt trigger
+
+ Float_t fMinCellsAngleOverlap; // Number of cells that define the cluster overlap
+
// Analysis data members for multiple cones and pt thresholds
Int_t fNCones ; //! Number of cone sizes to test
Int_t fNPtThresFrac ; //! Number of ptThres and ptFrac to test
Float_t fPtFractions[5] ; //! Array with pt thresholds to test frac
Float_t fSumPtThresholds[5] ; //! Array with pt thresholds to test frac
+ TLorentzVector fMomentum; //! Temporary vector, avoid creation per event
+ TLorentzVector fMomIso; //! Temporary vector, avoid creation per event
+ TLorentzVector fMomDaugh1; //! Temporary vector, avoid creation per event
+ TLorentzVector fMomDaugh2; //! Temporary vector, avoid creation per event
+ TVector3 fTrackVector; //! Temporary vector, avoid creation per event
+
//Histograms
TH1F * fhEIso ; //! Number of isolated particles vs energy
TH1F * fhENoIso ; //! Number of not isolated leading particles vs Energy
TH1F * fhPtNoIso ; //! Number of not isolated leading particles vs pT
TH2F * fhPtNLocMaxNoIso ; //! Number of not isolated particles vs NLM in cluster
- TH1F * fhPtDecayIso[4] ; //! Number of isolated Pi0 decay particles (invariant mass tag)
- TH1F * fhPtDecayNoIso[4] ; //! Number of not isolated Pi0 decay leading particles (invariant mass tag)
- TH2F * fhEtaPhiDecayIso[4] ; //! eta vs phi of isolated Pi0 decay particles
- TH2F * fhEtaPhiDecayNoIso[4] ; //! eta vs phi of not isolated leading Pi0 decay particles
+ TH1F * fhPtDecay[2][4] ; //! Number of (non) isolated Pi0 decay particles (invariant mass tag)
+ TH2F * fhEtaPhiDecay[2][4] ; //! eta vs phi of (not) isolated leading Pi0 decay particles
+ TH2F * fhPtLambda0Decay[2][4]; //! Shower shape of (non) isolated leading Pi0 decay particles (do not apply SS cut previously)
TH2F * fhPtInCone ; //! Cluster/track Pt in the cone
TH2F * fhPtClusterInCone ; //! Cluster Pt in the cone
TH2F * fhConePtLead ; //! Cluster and tracks leading pt in the cone
TH2F * fhConePtLeadCluster ; //! Clusters leading pt in the cone
TH2F * fhConePtLeadTrack ; //! Tracks leading pt in the cone
+ TH2F * fhConePtLeadClustervsTrack; //! Tracks vs Clusters leading pt
+ TH2F * fhConePtLeadClusterTrackFrac; //! Trigger pt vs cluster/track leading pt
TH2F * fhConeSumPt ; //! Cluster and tracks Sum Pt Sum Pt in the cone
TH2F * fhConeSumPtCellTrack ; //! Cells and tracks Sum Pt Sum Pt in the cone
TH2F * fhFractionCellOutConePhiTrigEtaPhi; //! Fraction of cone out of cells acceptance in phi, vs trigger eta-phi
TH2F * fhConeSumPtClustervsTrack ; //! Cluster vs tracks Sum Pt Sum Pt in the cone
+ TH2F * fhConeSumPtClusterTrackFrac ; //! Cluster / tracks Sum Pt Sum Pt in the cone
TH2F * fhConeSumPtEtaUESubClustervsTrack ; //! Cluster vs tracks Sum Pt Sum Pt in the cone, after subtraction in eta band
TH2F * fhConeSumPtPhiUESubClustervsTrack ; //! Cluster vs tracks Sum Pt Sum Pt in the cone, after subtraction in phi band
TH2F * fhConeSumPtCellvsTrack; //! Cell vs tracks Sum Pt Sum Pt in the cone
//MC
//
- TH2F * fhEtaPrimMC [6]; //! Pt vs Eta of generated photon
- TH2F * fhPhiPrimMC [6]; //! Pt vs Phi of generated photon
- TH1F * fhEPrimMC [6]; //! Number of generated photon vs E
- TH1F * fhPtPrimMCiso[6]; //! Number of generated isolated photon vs pT
-
- TH1F * fhPtNoIsoMC[9]; //! Number of not isolated mcTypes particle
- TH1F * fhPtIsoMC [9]; //! Number of isolated mcTypes particle
- TH2F * fhPhiIsoMC [9]; //! Phi of isolated mcTypes particle
- TH2F * fhEtaIsoMC [9]; //! eta of isolated mcTypes particle
-
- TH1F * fhPtDecayIsoMC[4][9] ; //! Number of isolated Pi0 decay particles (invariant mass tag) for a mcTypes particle
- TH1F * fhPtDecayNoIsoMC[4][9] ; //! Number of not isolated Pi0 decay particles (invariant mass tag) for a mcTypes particle
-
- TH2F * fhPtLambda0MC[9][2]; //! Shower shape of (non) isolated candidates originated by mcTypes particle (do not apply SS cut previously)
+ TH2F * fhEtaPrimMC [fgkNmcPrimTypes]; //! Pt vs Eta of generated photon
+ TH2F * fhPhiPrimMC [fgkNmcPrimTypes]; //! Pt vs Phi of generated photon
+ TH1F * fhEPrimMC [fgkNmcPrimTypes]; //! Number of generated photon vs E
+ TH1F * fhPtPrimMC [fgkNmcPrimTypes]; //! Number of generated photon vs pT
+ TH1F * fhPtPrimMCiso[fgkNmcPrimTypes]; //! Number of generated isolated photon vs pT
+
+ TH1F * fhPtPrimMCPi0DecayPairOutOfCone; //! Pi0 decay photons, with decay pair out of isolation cone
+ TH1F * fhPtPrimMCPi0DecayPairOutOfAcceptance; //! Pi0 decay photons, with decay pair out of detector acceptance
+ TH1F * fhPtPrimMCPi0DecayPairOutOfAcceptanceNoOverlap; //! Pi0 decay photons, with decay pair out of detector acceptance
+ TH1F * fhPtPrimMCPi0DecayPairAcceptInConeLowPt;//! Pi0 decay photons, with decay pair in cone and acceptance and lower pT than threshold
+ TH1F * fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlap; //! Pi0 decay photons, with decay pair in cone and acceptance and lower pT than threshold, and do not overlap
+ TH1F * fhPtPrimMCPi0DecayPairAcceptInConeLowPtNoOverlapCaloE; //! Pi0 decay photons, with decay pair in cone and acceptance and lower pT than threshold, and larger than detector threshold, and do not overlap
+ TH1F * fhPtPrimMCPi0DecayPairNoOverlap; //! Pi0 decay photons, not overlapped decay
+
+ TH1F * fhPtPrimMCPi0DecayIsoPairOutOfCone; //! Pi0 decay photons, with decay pair out of isolation cone, isolated
+ TH1F * fhPtPrimMCPi0DecayIsoPairOutOfAcceptance; //! Pi0 decay photons, with decay pair out of detector acceptance, isolated
+ TH1F * fhPtPrimMCPi0DecayIsoPairOutOfAcceptanceNoOverlap; //! Pi0 decay photons, with decay pair out of detector acceptance, isolated
+ TH1F * fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPt;//! Pi0 decay photons, with decay pair in cone and acceptance and lower pT than threshold, isolated
+ TH1F * fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlap; //! Pi0 decay photons, with decay pair in cone and acceptance and lower pT than threshold, and do not overlap, isolated
+ TH1F * fhPtPrimMCPi0DecayIsoPairAcceptInConeLowPtNoOverlapCaloE; //! Pi0 decay photons, with decay pair in cone and acceptance and lower pT than threshold, and larger than detector threshold, and do not overlap, isolated
+ TH1F * fhPtPrimMCPi0DecayIsoPairNoOverlap; //! Pi0 decay photons isolated, not overlapped decay
+
+ TH1F * fhPtPrimMCPi0Overlap; //! Pi0 with overlapped decay photons
+ TH1F * fhPtPrimMCPi0IsoOverlap; //! Pi0 isolated with overlapped decay photons
+
+
+ TH1F * fhPtNoIsoMC [fgkNmcTypes]; //! Number of not isolated mcTypes particle
+ TH1F * fhPtIsoMC [fgkNmcTypes]; //! Number of isolated mcTypes particle
+ TH2F * fhPhiIsoMC [fgkNmcTypes]; //! Phi of isolated mcTypes particle
+ TH2F * fhEtaIsoMC [fgkNmcTypes]; //! eta of isolated mcTypes particle
+
+ TH1F * fhPtDecayMC [2][4][fgkNmcTypes] ; //! Number of (not) isolated Pi0 decay particles (invariant mass tag) for a mcTypes particle
+
+ TH2F * fhPtLambda0MC [fgkNmcTypes][2]; //! Shower shape of (non) isolated candidates originated by mcTypes particle (do not apply SS cut previously)
// Multiple cut analysis
TH2F * fhSumPtLeadingPt[5] ; //! Sum Pt in the cone
TH2F * fhEtaPhiFracPtSumDecayIso[5][5]; //! Isolated particle with threshold on cone sum density, only for decay bit fDecayBits[0]
// Multiple cut MC
- TH1F * fhPtThresIsolatedMC[9][5][5]; //! Isolated mcTypes particle with pt threshold
- TH1F * fhPtFracIsolatedMC [9][5][5]; //! Isolated mcTypes particle with pt frac
- TH1F * fhSumPtIsolatedMC [9][5][5]; //! Isolated mcTypes particle with threshold on cone pt sum
- TH2F * fhSumPtLeadingPtMC [9][5]; //! mcTypes particle for sum Pt, different cone
+ TH1F * fhPtThresIsolatedMC[fgkNmcTypes][5][5];//! Isolated mcTypes particle with pt threshold
+ TH1F * fhPtFracIsolatedMC [fgkNmcTypes][5][5];//! Isolated mcTypes particle with pt frac
+ TH1F * fhSumPtIsolatedMC [fgkNmcTypes][5][5];//! Isolated mcTypes particle with threshold on cone pt sum
+ TH2F * fhSumPtLeadingPtMC [fgkNmcTypes][5]; //! mcTypes particle for sum Pt, different cone
-
// Track matching studies
TH2F * fhTrackMatchedDEta[2] ; //! Eta distance between track and cluster vs cluster E
TH2F * fhTrackMatchedDPhi[2] ; //! Phi distance between track and cluster vs cluster E
// Shower Shape histograms
TH2F * fhELambda0[2]; //! Shower shape of (non) isolated photons (do not apply SS cut previously)
TH2F * fhPtLambda0[2]; //! Shower shape of (non) isolated photons (do not apply SS cut previously)
- TH2F * fhELambda1[2]; //! Shower shape of (non) isolated photons (do not apply SS cut previously)
+ //TH2F * fhELambda1[2]; //! Shower shape of (non) isolated photons (do not apply SS cut previously)
TH2F * fhELambda0TRD[2]; //! Shower shape of (non) isolated photons, SM behind TRD (do not apply SS cut previously)
TH2F * fhPtLambda0TRD[2]; //! Shower shape of (non) isolated photons, SM behind TRD (do not apply SS cut previously)
- TH2F * fhELambda1TRD[2]; //! Shower shape of (non) isolated photons, SM behind TRD (do not apply SS cut previously)
+ //TH2F * fhELambda1TRD[2]; //! Shower shape of (non) isolated photons, SM behind TRD (do not apply SS cut previously)
+
+ TH1F ** fhPtLeadConeBin ; //![fNBkgBin] Candidate Pt distribution depending on bin of cone leading particle
+ TH1F ** fhSumPtConeBin ; //![fNBkgBin] Candidate Pt distribution depending on bin of cone sum pt
+ TH1F ** fhPtLeadConeBinMC ; //![fNBkgBin*fgkNmcTypes] Candidate Pt distribution depending on bin of cone leading particle, per MC particle
+ TH1F ** fhSumPtConeBinMC ; //![fNBkgBin*fgkNmcTypes] Candidate Pt distribution depending on bin of cone sum pt, per MC particle
+
+ TH1F ** fhPtLeadConeBinDecay ; //![fNBkgBin*fNDecayBits] Candidate Pt distribution depending on bin of cone leading particle, tagged as decay
+ TH1F ** fhSumPtConeBinDecay ; //![fNBkgBin*fNDecayBits] Candidate Pte distribution depending on bin of cone sum pt, tagged as decay
+
+ TH2F ** fhPtLeadConeBinLambda0 ; //![fNBkgBin] Candidate shower shape distribution depending on bin of cone leading particle
+ TH2F ** fhSumPtConeBinLambda0 ; //![fNBkgBin] Candidate shower shape distribution depending on bin of cone sum pt
+ TH2F ** fhPtLeadConeBinLambda0MC ; //![fNBkgBin*fgkNmcTypes] Candidate shower shape distribution depending on bin of cone leading particle, per MC particle
+ TH2F ** fhSumPtConeBinLambda0MC ; //![fNBkgBin*fgkNmcTypes] Candidate shower shape distribution depending on bin of cone sum pt, per MC particle
+
+ TH1F ** fhPtTrigBinPtLeadCone ; //![fNPtTrigBin] Candidate pt bin, distribution of cone leading particle pt
+ TH1F ** fhPtTrigBinSumPtCone ; //![fNPtTrigBin] Candidate pt bin, distribution of cone sum particle pt
+ TH1F ** fhPtTrigBinPtLeadConeMC ; //![fNPtTrigBin*fgkNmcTypes] Candidate pt bin, distribution of cone leading particle pt, per MC particle
+ TH1F ** fhPtTrigBinSumPtConeMC ; //![fNPtTrigBin*fgkNmcTypes] Candidate pt bin, distribution of cone sum particle pt, per MC particle
+
+ TH1F ** fhPtTrigBinPtLeadConeDecay ; //![fNBkgBin*fNDecayBits] Candidate pt bin, distribution of cone leading particle pt, tagged as decay
+ TH1F ** fhPtTrigBinSumPtConeDecay ; //![fNBkgBin*fNDecayBits] Candidate pt bin, distribution of cone sum particle pt, tagged as decay
+
+ TH2F ** fhPtTrigBinLambda0vsPtLeadCone ; //![fNPtTrigBin] Candidate shower shape distribution depending vs cone leading particle in pT trigger bins
+ TH2F ** fhPtTrigBinLambda0vsSumPtCone ; //![fNPtTrigBin] Candidate shower shape distribution depending vs of cone sum pt in pT trigger bins
+ TH2F ** fhPtTrigBinLambda0vsPtLeadConeMC ; //![fNPtTrigBin*fgkNmcTypes] Candidate shower shape distribution depending vs cone leading particle in pT trigger bins, per MC particle
+ TH2F ** fhPtTrigBinLambda0vsSumPtConeMC ; //![fNPtTrigBin*fgkNmcTypes] Candidate shower shape distribution depending vs cone sum pt in pT trigger bins, per MC particle
// Local maxima
TH2F * fhNLocMax[2]; //! number of maxima in selected clusters
AliAnaParticleIsolation( const AliAnaParticleIsolation & iso) ; // cpy ctor
AliAnaParticleIsolation & operator = (const AliAnaParticleIsolation & iso) ; // cpy assignment
- ClassDef(AliAnaParticleIsolation,28)
+ ClassDef(AliAnaParticleIsolation,32)
} ;