// Analysis methods
- Bool_t ClusterSelected(AliVCluster* cl, TLorentzVector mom) ;
+ Bool_t ClusterSelected(AliVCluster* cl, const TLorentzVector mom, const Int_t nlm) ;
void FillAcceptanceHistograms();
void SwitchOnFillShowerShapeHistograms() { fFillSSHistograms = kTRUE ; }
void SwitchOffFillShowerShapeHistograms() { fFillSSHistograms = kFALSE ; }
+ void SwitchOnOnlySimpleSSHistoFill() { fFillOnlySimpleSSHisto = kTRUE ; }
+ void SwitchOffOnlySimpleHistoFill() { fFillOnlySimpleSSHisto = kFALSE ; }
+
+ void FillTrackMatchingResidualHistograms(AliVCluster* calo, const Int_t cut);
+
+ void SwitchOnTMHistoFill() { fFillTMHisto = kTRUE ; }
+ void SwitchOffTMHistoFill() { fFillTMHisto = kFALSE ; }
+
+ void FillPileUpHistograms(const Float_t energy, const Float_t pt, const Float_t time) ;
+ void FillPileUpHistogramsPerEvent(TObjArray * clusters) ;
+
+ void SwitchOnFillPileUpHistograms() { fFillPileUpHistograms = kTRUE ; }
+ void SwitchOffFillPileUpHistograms() { fFillPileUpHistograms = kFALSE ; }
// Analysis parameters setters getters
void SetNCellCut(Int_t n) { fNCellsCut = n ; }
Double_t GetNCellCut() const { return fNCellsCut ; }
+ void SetNLMCut(Int_t min, Int_t max) { fNLMCutMin = min;
+ fNLMCutMax = max ; }
+ Int_t GetNLMCutMin() const { return fNLMCutMin ; }
+ Int_t GetNLMCutMax() const { return fNLMCutMax ; }
+
+
Bool_t IsTrackMatchRejectionOn() const { return fRejectTrackMatch ; }
void SwitchOnTrackMatchRejection() { fRejectTrackMatch = kTRUE ; }
void SwitchOffTrackMatchRejection() { fRejectTrackMatch = kFALSE ; }
- void SwitchOnTMHistoFill() { fFillTMHisto = kTRUE ; }
- void SwitchOffTMHistoFill() { fFillTMHisto = kFALSE ; }
void FillNOriginHistograms(Int_t n) { fNOriginHistograms = n ;
if(n > 14) fNOriginHistograms = 14; }
Double_t fTimeCutMin ; // Remove clusters/cells with time smaller than this value, in ns
Double_t fTimeCutMax ; // Remove clusters/cells with time larger than this value, in ns
Int_t fNCellsCut ; // Accept for the analysis clusters with more than fNCellsCut cells
+ Int_t fNLMCutMin ; // Remove clusters/cells with number of local maxima smaller than this value
+ Int_t fNLMCutMax ; // Remove clusters/cells with number of local maxima larger than this value
Bool_t fFillSSHistograms ; // Fill shower shape histograms
+ Bool_t fFillOnlySimpleSSHisto; // Fill selected cluster histograms, selected SS histograms
Int_t fNOriginHistograms; // Fill only NOriginHistograms of the 14 defined types
Int_t fNPrimaryHistograms; // Fill only NPrimaryHistograms of the 7 defined types
-
+ Bool_t fFillPileUpHistograms; // Fill pile-up related histograms
+
//Histograms
- TH1F * fhClusterCuts[9]; //! control histogram on the different photon selection cuts
+ TH1F * fhClusterCuts[10]; //! control histogram on the different photon selection cuts
TH2F * fhNCellsE; //! number of cells in cluster vs E
+ TH2F * fhCellsE; //! energy of cells in cluster vs E of cluster
TH2F * fhMaxCellDiffClusterE; //! Fraction of energy carried by cell with maximum energy
TH2F * fhTimeE; //! time of cluster vs E
TH2F * fhEtaPhiPhoton ; //! Pseudorapidity vs Phi of identified photon for transerse momentum > 0.5
TH2F * fhEtaPhi05Photon ; //! Pseudorapidity vs Phi of identified photon for transerse momentum < 0.5
- //Shower shape
+
+ //Shower shape
+ TH2F * fhNLocMax; //! number of maxima in selected clusters
+
TH2F * fhDispE; //! cluster dispersion vs E
TH2F * fhLam0E; //! cluster lambda0 vs E
TH2F * fhLam1E; //! cluster lambda1 vs E
TH2F * fhLam0ETMTRD; //! cluster lambda0 vs E, SM covered by TRD, cut on Track Matching residual
TH2F * fhLam1ETMTRD; //! cluster lambda1 vs E, SM covered by TRD, cut on Track Matching residual
-
TH2F * fhNCellsLam0LowE; //! number of cells in cluster vs lambda0
TH2F * fhNCellsLam1LowE; //! number of cells in cluster vs lambda1
TH2F * fhNCellsDispLowE; //! number of cells in cluster vs dispersion
TH2F * fhDispLam1LowE; //! cluster disp vs lambda1, E<2
TH2F * fhDispLam1HighE; //! cluster disp vs lambda1, E>2
+ TH2F * fhDispEtaE ; //! shower dispersion in eta direction
+ TH2F * fhDispPhiE ; //! shower dispersion in phi direction
+ TH2F * fhSumEtaE ; //! shower dispersion in eta direction
+ TH2F * fhSumPhiE ; //! shower dispersion in phi direction
+ TH2F * fhSumEtaPhiE ; //! shower dispersion in eta and phi direction
+ TH2F * fhDispEtaPhiDiffE ; //! shower dispersion eta - phi
+ TH2F * fhSphericityE ; //! shower sphericity in eta vs phi
+ TH2F * fhDispSumEtaDiffE ; //! difference of 2 eta dispersions
+ TH2F * fhDispSumPhiDiffE ; //! difference of 2 phi dispersions
+ TH2F * fhDispEtaDispPhi[7] ; //! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
+ TH2F * fhLambda0DispEta[7] ; //! shower shape correlation l0 vs disp eta
+ TH2F * fhLambda0DispPhi[7] ; //! shower shape correlation l0 vs disp phi
+
//Fill MC dependent histograms, Origin of this cluster is ...
TH2F * fhMCDeltaE[14] ; //! MC-Reco E distribution coming from MC particle
TH2F * fhMCNCellsE[6]; //! NCells per cluster vs energy
TH2F * fhMCMaxCellDiffClusterE[6]; //! Fraction of energy carried by cell with maximum energy
+ TH2F * fhMCEDispEta[6] ; //! shower dispersion in eta direction
+ TH2F * fhMCEDispPhi[6] ; //! shower dispersion in phi direction
+ TH2F * fhMCESumEtaPhi[6] ; //! shower dispersion in eta vs phi direction
+ TH2F * fhMCEDispEtaPhiDiff[6] ; //! shower dispersion in eta -phi direction
+ TH2F * fhMCESphericity[6] ; //! shower sphericity, eta vs phi
+ TH2F * fhMCDispEtaDispPhi[7][6] ; //! shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
+ TH2F * fhMCLambda0DispEta[7][6] ; //! shower shape correlation l0 vs disp eta
+ TH2F * fhMCLambda0DispPhi[7][6] ; //! shower shape correlation l0 vs disp phi
+
//Embedding
TH2F * fhEmbeddedSignalFractionEnergy ; //! Fraction of photon energy of embedded signal vs cluster energy
TH2F * fhEmbedPi0ELambda0FullBkg ; //! Lambda0 vs E for embedded photons with less than 10% of the cluster energy
// Track Matching
- TH2F * fhTrackMatchedDEta ; //! Eta distance between track and cluster vs cluster E, after photon cuts
- TH2F * fhTrackMatchedDPhi ; //! Phi distance between track and cluster vs cluster E, after photon cuts
- TH2F * fhTrackMatchedDEtaDPhi ; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after photon cuts
- TH2F * fhTrackMatchedDEtaNoCut ; //! Eta distance between track and cluster vs cluster E
- TH2F * fhTrackMatchedDPhiNoCut ; //! Phi distance between track and cluster vs cluster E
- TH2F * fhTrackMatchedDEtaDPhiNoCut ; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
-
- TH2F * fhTrackMatchedDEtaTRD ; //! Eta distance between track and cluster vs cluster E, after photon cuts, behind TRD
- TH2F * fhTrackMatchedDPhiTRD ; //! Phi distance between track and cluster vs cluster E, after photon cuts, behind TRD
- TH2F * fhTrackMatchedDEtaTRDNoCut ; //! Eta distance between track and cluster vs cluster E, behind TRD
- TH2F * fhTrackMatchedDPhiTRDNoCut ; //! Phi distance between track and cluster vs cluster E, behind TRD
-
- TH2F * fhTrackMatchedDEtaMCOverlap ; //! Eta distance between track and cluster vs cluster E, several particle overlap
- TH2F * fhTrackMatchedDPhiMCOverlap ; //! Phi distance between track and cluster vs cluster E, several particle overlap
- TH2F * fhTrackMatchedDEtaMCNoOverlap; //! Eta distance between track and cluster vs cluster E, not other particle overlap
- TH2F * fhTrackMatchedDPhiMCNoOverlap; //! Phi distance between track and cluster vs cluster E, not other particle overlap
- TH2F * fhTrackMatchedDEtaMCConversion; //! Eta distance between track and cluster vs cluster E, originated in conversion
- TH2F * fhTrackMatchedDPhiMCConversion; //! Phi distance between track and cluster vs cluster E, originated in conversion
-
- TH2F * fhTrackMatchedMCParticle; //! Trace origin of matched particle
- TH2F * fhTrackMatchedMCParticleNoCut; //! Trace origin of matched particle
- TH2F * fhdEdx; //! matched track dEdx vs cluster E, after photon cuts
- TH2F * fhEOverP; //! matched track E cluster over P track vs cluster E, after dEdx cut, after photon cuts
- TH2F * fhdEdxNoCut; //! matched track dEdx vs cluster E, after photon cuts
- TH2F * fhEOverPNoCut; //! matched track E cluster over P track vs cluster E, after dEdx cut
- TH2F * fhEOverPTRD; //! matched track E cluster over P track vs cluster E, after dEdx cut, after photon cuts, behind TRD
- TH2F * fhEOverPTRDNoCut; //! matched track E cluster over P track vs cluster E, after dEdx cut, behind TRD
+ TH2F * fhTrackMatchedDEta[2] ; //! Eta distance between track and cluster vs cluster E, after and before photon cuts
+ TH2F * fhTrackMatchedDPhi[2] ; //! Phi distance between track and cluster vs cluster E, after and before photon cuts
+ TH2F * fhTrackMatchedDEtaDPhi[2] ; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before photon cuts
+
+ TH2F * fhTrackMatchedDEtaTRD[2] ; //! Eta distance between track and cluster vs cluster E, after and before photon cuts, behind TRD
+ TH2F * fhTrackMatchedDPhiTRD[2] ; //! Phi distance between track and cluster vs cluster E, after and before photon cuts, behind TRD
+
+ TH2F * fhTrackMatchedDEtaMCOverlap[2] ; //! Eta distance between track and cluster vs cluster E, several particle overlap, after and before photon cuts
+ TH2F * fhTrackMatchedDPhiMCOverlap[2] ; //! Phi distance between track and cluster vs cluster E, several particle overlap, after and before photon cuts
+ TH2F * fhTrackMatchedDEtaMCNoOverlap[2]; //! Eta distance between track and cluster vs cluster E, not other particle overlap, after and before photon cuts
+ TH2F * fhTrackMatchedDPhiMCNoOverlap[2]; //! Phi distance between track and cluster vs cluster E, not other particle overlap, after and before photon cuts
+ TH2F * fhTrackMatchedDEtaMCConversion[2]; //! Eta distance between track and cluster vs cluster E, originated in conversion, after and before photon cuts
+ TH2F * fhTrackMatchedDPhiMCConversion[2]; //! Phi distance between track and cluster vs cluster E, originated in conversion, after and before photon cuts
+
+ TH2F * fhTrackMatchedMCParticle[2]; //! Trace origin of matched particle
+ TH2F * fhdEdx[2]; //! matched track dEdx vs cluster E, after and before photon cuts
+ TH2F * fhEOverP[2]; //! matched track E cluster over P track vs cluster E, after dEdx cut, after and before photon cuts
+ TH2F * fhEOverPTRD[2]; //! matched track E cluster over P track vs cluster E, after dEdx cut, after and before photon cuts, behind TRD
+
+ // Pile-up
+ TH1F * fhPtPileUp[7]; //! pT distribution of clusters before any selection
+ TH1F * fhPtChargedPileUp[7]; //! pT distribution of track matched clusters
+ TH1F * fhPtPhotonPileUp[7]; //! pT distribution of selected photons
+ TH2F * fhLambda0PileUp[7]; //! E vs M02 distribution of clusters, before any selection
+ TH2F * fhLambda0ChargedPileUp[7]; //! E vs M02 distribution of clusters, track matched clusters
+ TH2F * fhClusterTimeDiffPileUp[7]; //! E vs Time difference inside cluster, before any selection
+ TH2F * fhClusterTimeDiffChargedPileUp[7]; //! E vs Time difference inside cluster for track matched clusters
+ TH2F * fhClusterTimeDiffPhotonPileUp[7]; //! E vs Time difference inside cluster for selected photons
+ TH2F * fhClusterEFracLongTimePileUp[7]; //! E vs fraction of cluster energy from cells with large time
+ TH2F * fhTimeENoCut; //! time of cluster vs E, no cut
+ TH2F * fhTimeESPD; //! time of cluster vs E, IsSPDPileUp
+ TH2F * fhTimeESPDMulti; //! time of cluster vs E, IsSPDPileUpMulti
+ TH2F * fhTimeNPileUpVertSPD; //! time of cluster vs n pile-up vertices from SPD
+ TH2F * fhTimeNPileUpVertTrack; //! time of cluster vs n pile-up vertices from Tracks
+ TH2F * fhTimeNPileUpVertContributors; //! time of cluster vs n pile-up vertex from SPD contributors
+ TH2F * fhTimePileUpMainVertexZDistance; //! time of cluster vs difference of z main vertex and pile-up vertex
+ TH2F * fhTimePileUpMainVertexZDiamond; //! time of cluster vs difference of z diamond and pile-up vertex
+ TH2F * fhClusterMultSPDPileUp[4]; //! E max cluster vs event cluster multiplicity, for tmax-tdiff cuts, pile up event
+ TH2F * fhClusterMultNoPileUp[4]; //! E max cluster vs event cluster multiplicity, for tmax-tdiff cuts, not pile up event
+ TH2F * fhEtaPhiBC0; //! eta/phi of clusters in BC=0
+ TH2F * fhEtaPhiBCPlus; //! eta/phi of clusters in BC>0
+ TH2F * fhEtaPhiBCMinus; //! eta/phi of clusters in BC<0
+ TH2F * fhEtaPhiBC0PileUpSPD; //! eta/phi of clusters in BC=0, SPD pile-up
+ TH2F * fhEtaPhiBCPlusPileUpSPD; //! eta/phi of clusters in BC>0, SPD pile-up
+ TH2F * fhEtaPhiBCMinusPileUpSPD; //! eta/phi of clusters in BC<0, SPD pile-up
AliAnaPhoton( const AliAnaPhoton & g) ; // cpy ctor
AliAnaPhoton & operator = (const AliAnaPhoton & g) ; // cpy assignment
- ClassDef(AliAnaPhoton,22)
+ ClassDef(AliAnaPhoton,28)
} ;