// Main methods
- void BadClusterHistograms(AliVCluster* clus, const TObjArray *caloClusters, AliVCaloCells * cells,
- const Int_t absIdMax, const Double_t maxCellFraction, const Float_t eCrossFrac,
- const Double_t tmax, Double_t timeAverages[2]);
+ void BadClusterHistograms(AliVCluster* clus, const TObjArray *caloClusters, AliVCaloCells * cells,
+ Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac, Double_t tmax);
void CalculateAverageTime(AliVCluster *clus, AliVCaloCells *cells, Double_t timeAverages[2]);
void CellInClusterPositionHistograms(AliVCluster* cluster);
- void ClusterAsymmetryHistograms(AliVCluster* clus, const Int_t absIdMax, const Bool_t goodCluster );
+ void ClusterAsymmetryHistograms(AliVCluster* clus, Int_t absIdMax, Bool_t goodCluster );
void ClusterHistograms(AliVCluster* cluster, const TObjArray *caloClusters, AliVCaloCells * cells,
- const Int_t absIdMax, const Double_t maxCellFraction, const Float_t eCrossFrac,
- const Double_t tmax, Double_t timeAverages[2]);
+ Int_t absIdMax, Double_t maxCellFraction, Float_t eCrossFrac, Double_t tmax);
void ClusterLoopHistograms(const TObjArray * clusters, AliVCaloCells * cells);
- Bool_t ClusterMCHistograms(const TLorentzVector mom,const Bool_t matched,
- const Int_t * labels, const Int_t nLabels, Int_t & pdg );
+ Bool_t ClusterMCHistograms(TLorentzVector mom, Bool_t matched,
+ const Int_t * labels, Int_t nLabels, Int_t & pdg );
void ClusterMatchedWithTrackHistograms(AliVCluster* clus, TLorentzVector mom,
- const Bool_t mcOK, const Int_t pdg);
+ Bool_t mcOK, Int_t pdg);
void Correlate();
- void ExoticHistograms(const Int_t absIdMax, const Float_t ampMax,
+ void ExoticHistograms(Int_t absIdMax, Float_t ampMax,
AliVCluster *clus, AliVCaloCells* cells);
- Float_t GetECross(const Int_t absId, AliVCaloCells* cells,const Float_t dtcut = 10000);
+ Float_t GetECross(Int_t absId, AliVCaloCells* cells,Float_t dtcut = 10000);
- void InvariantMassHistograms(const Int_t iclus, const TLorentzVector mom, const Int_t nModule,
+ void InvariantMassHistograms(Int_t iclus, TLorentzVector mom, Int_t nModule,
const TObjArray* caloClusters, AliVCaloCells * cells);
- Bool_t IsGoodCluster(const Int_t absIdMax, AliVCaloCells *cells);
+ Bool_t IsGoodCluster(Int_t absIdMax, AliVCaloCells *cells);
void MCHistograms();
- void MCHistograms(const TLorentzVector mom, const Int_t pdg);
-
void WeightHistograms(AliVCluster *clus, AliVCaloCells* cells);
// Setters and Getters
Float_t GetPHOSCellAmpMin() const { return fPHOSCellAmpMin ; }
void SetPHOSCellAmpMin (Float_t amp) { fPHOSCellAmpMin = amp ; }
-
+
+ Float_t GetInvMassMinECut() const { return fMinInvMassECut ; }
+ void SetInvMassMinECut(Float_t cut) { fMinInvMassECut = cut ; }
+
TString GetCalorimeter() const { return fCalorimeter ; }
void SetCalorimeter(TString calo) { fCalorimeter = calo ; }
-
- void SetNumberOfModules(Int_t nmod) { fNModules = nmod ; }
Double_t GetTimeCutMin() const { return fTimeCutMin ; }
Double_t GetTimeCutMax() const { return fTimeCutMax ; }
void SwitchOnFillAllPositionHistogram2() { fFillAllPosHisto2 = kTRUE ; }
void SwitchOffFillAllPositionHistogram2() { fFillAllPosHisto2 = kFALSE ; }
- void SwitchOnFillAllTH12Histogram() { fFillAllTH12 = kTRUE ; }
- void SwitchOffFillAllTH12Histogram() { fFillAllTH12 = kFALSE ; }
-
void SwitchOnFillAllTH3Histogram() { fFillAllTH3 = kTRUE ; }
void SwitchOffFillAllTH3Histogram() { fFillAllTH3 = kFALSE ; }
Bool_t fFillAllCellTimeHisto; // Fill all cell time histo
Bool_t fFillAllPosHisto; // Fill all the position related histograms
Bool_t fFillAllPosHisto2; // Fill all the position related histograms 2
- Bool_t fFillAllTH12 ; // Fill simple histograms which information is already in TH3 histograms
Bool_t fFillAllTH3 ; // Fill TH3 histograms
Bool_t fFillAllTMHisto ; // Fill track matching histograms
Bool_t fFillAllPi0Histo ; // Fill invariant mass histograms
//Cuts
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
+ Float_t fCellAmpMin; // amplitude Threshold on calorimeter cells, set at execution time
Float_t fEMCALCellAmpMin; // amplitude Threshold on emcal cells
Float_t fPHOSCellAmpMin ; // amplitude Threshold on phos cells
+ Float_t fMinInvMassECut; // Minimum energy cut value for clusters entering the invariant mass calculation
+
// Exotic studies
Float_t fExoNECrossCuts ; // Number of ecross cuts
Float_t fExoECrossCuts[10]; // List of ecross cuts
//Calo Cells
TH1F * fhNCells; //! Number of towers/crystals with signal
+ TH1F * fhNCellsCutAmpMin; //! Number of towers/crystals with signal, with min amplitude
TH1F * fhAmplitude; //! Amplitude measured in towers/crystals
- TH2F * fhAmpId; //! Amplitude measured in towers/crystals vs id of tower.
+ TH2F * fhAmpId; //! Amplitude measured in towers/crystals vs id of tower.
TH3F * fhEtaPhiAmp; //! eta vs phi vs amplitude, cells
TH1F * fhTime; //! Time measured in towers/crystals
TH2F * fhTimeVz; //! Time measured in towers/crystals vs vertex z component, for E > 0.5
TH2F * fhTimeId; //! Time vs Absolute cell Id
- TH2F * fhTimeAmp; //! Time vs Amplitude
+ TH2F * fhTimeAmp; //! Time vs Amplitude
- TH2F * fhCellECross; //! 1 - Energy in cross around cell / cell energy
+ TH2F * fhAmpIdLowGain; //! Amplitude measured in towers/crystals vs id of tower, low gain towers
+ TH2F * fhTimeIdLowGain; //! Time vs Absolute cell Id, low gain
+ TH2F * fhTimeAmpLowGain; //! Time vs Amplitude, low gain
+
+ TH2F * fhCellECross; //! 1 - Energy in cross around cell / cell energy
//Calorimeters Correlation
TH2F * fhCaloCorrNClusters; //! EMCAL vs PHOS, number of clusters
TH2F * fhCaloTrackMCorrNCells; //! Calo vs V0 Track Multiplicity, number of cells
TH2F * fhCaloTrackMCorrECells; //! Calo vs V0 Track Multipliticy, total measured cell energy
+ // Centrality
+ TH2F * fhCaloCenNClusters; //! Calo vs centrality, number of clusters
+ TH2F * fhCaloCenEClusters; //! Calo vs centrality, total measured cluster energy
+ TH2F * fhCaloCenNCells; //! Calo vs centrality, number of cells
+ TH2F * fhCaloCenECells; //! Calo vs centrality, total measured cell energy
+
+ // Event plane
+ TH2F * fhCaloEvPNClusters; //! Calo vs event plane angle, number of clusters
+ TH2F * fhCaloEvPEClusters; //! Calo vs event plane angle, total measured cluster energy
+ TH2F * fhCaloEvPNCells; //! Calo vs event plane angle, number of cells
+ TH2F * fhCaloEvPECells; //! Calo vs event plane angle, total measured cell energy
+
//Module histograms
TH2F * fhEMod ; //! cluster E distribution for different module, Reco
TH2F * fhAmpMod ; //! cell amplitude distribution for different module, Reco
TH2F * fhGridCells ; //! Cells ordered in column/row for different module, Reco
TH2F * fhGridCellsE ; //! Cells ordered in column/row for different module, weighted with energy, Reco
TH2F * fhGridCellsTime ; //! Cells ordered in column/row for different module, weighted with time, Reco
+ TH2F * fhGridCellsLowGain ; //! Cells ordered in column/row for different module, Reco, low gain
+ TH2F * fhGridCellsELowGain ; //! Cells ordered in column/row for different module, weighted with energy, Reco, low gain
+ TH2F * fhGridCellsTimeLowGain ; //! Cells ordered in column/row for different module, weighted with time, Reco, low gain
TH2F ** fhTimeAmpPerRCU; //! Time vs Amplitude measured in towers/crystals different RCU
TH2F ** fhIMMod; //! cluster pairs invariant mass, different module,
TH2F * fhLambda0ForW0MC[14][5]; //! L0 for 7 defined w0= 3, 3.5 ... 6, depending on the particle of origin
//TH2F * fhLambda1ForW0MC[7][5]; //! L1 for 7 defined w0= 3, 3.5 ... 6, depending on the particle of origin
+ TH2F * fhECellTotalRatio; //! e cell / e total vs e total
+ TH2F * fhECellTotalLogRatio; //! log (e cell / e total) vs e total
+ TH2F ** fhECellTotalRatioMod; //! e cell / e total vs e total, per SM
+ TH2F ** fhECellTotalLogRatioMod; //! log (e cell / e total) vs e total, per SM
+
// Exotic studies
- TH2F * fhExoNCell [10][5] ; //! Number of cells per cluster for different cuts
- TH2F * fhExoL0 [10][5] ; //! Long shower shape axis for exotic
- TH2F * fhExoECross[10][5] ; //! E cross for max cell in cluster, for different cuts
- TH2F * fhExoTime [10][5] ; //! Time of exotic cluster, for different cuts
- TH2F * fhExoDTime [10] ; //! Difference in time between cell with max energy and rest of cells for exotic
+ TH2F * fhExoNCell [10][5] ; //! Number of cells per cluster for different cuts
+ TH2F * fhExoL0 [10][5] ; //! Long shower shape axis for exotic
+ TH2F * fhExoL1 [10][5] ; //! Short shower shape axis for exotic
+ TH2F * fhExoECross [10][5] ; //! E cross for max cell in cluster, for different cuts
+ TH2F * fhExoTime [10][5] ; //! Time of exotic cluster, for different cuts
+ TH2F * fhExoDTime [10] ; //! Difference in time between cell with max energy and rest of cells for exotic
+ TH2F * fhExoL0NCell[10][5] ; //! Lambda0 vs n cells in cluster for several E cross cuts and cluster with E > 5
+ TH2F * fhExoL0ECross ; //! Lambda0 vs E cross fraction for clusters with E > 5 GeV
+ TH2F * fhExoL1NCell[10][5] ; //! Lambda1 vs n cells in cluster for several E cross cuts and cluster with E > 5
+ TH2F * fhExoL1ECross ; //! Lambda1 vs E cross fraction for clusters with E > 5 GeV
//Pure MC
- enum mcTypes {kmcPhoton = 0, kmcPi0 = 1, kmcEta = 2, kmcElectron = 3, kmcNeHadron = 4, kmcChHadron = 5 };
-
- TH2F * fhRecoMCE[6][2] ; //! E generated particle vs reconstructed E
- TH2F * fhRecoMCPhi[6][2] ; //! phi generated particle vs reconstructed phi
- TH2F * fhRecoMCEta[6][2] ; //! eta generated particle vs reconstructed Eta
- TH2F * fhRecoMCDeltaE[6][2] ; //! Gen-Reco E generated particle vs reconstructed E
- TH2F * fhRecoMCRatioE[6][2] ; //! Reco/Gen E generated particle vs reconstructed E
- TH2F * fhRecoMCDeltaPhi[6][2]; //! Gen-Reco phi generated particle vs reconstructed E
- TH2F * fhRecoMCDeltaEta[6][2]; //! Gen-Reco eta generated particle vs reconstructed E
-
- TH1F * fhGenMCE[4] ; //! pt of primary particle
+ enum mcTypes {kmcPhoton = 0, kmcPi0 = 1, kmcEta = 2,
+ kmcElectron = 3, kmcPhotonConv = 4,
+ kmcNeHadron = 5, kmcChHadron = 6 };
+
+ TH2F * fhRecoMCE[7][2] ; //! E generated particle vs reconstructed E
+ TH2F * fhRecoMCPhi[7][2] ; //! phi generated particle vs reconstructed phi
+ TH2F * fhRecoMCEta[7][2] ; //! eta generated particle vs reconstructed Eta
+ TH2F * fhRecoMCDeltaE[7][2] ; //! Gen-Reco E generated particle vs reconstructed E
+ TH2F * fhRecoMCRatioE[7][2] ; //! Reco/Gen E generated particle vs reconstructed E
+ TH2F * fhRecoMCDeltaPhi[7][2]; //! Gen-Reco phi generated particle vs reconstructed E
+ TH2F * fhRecoMCDeltaEta[7][2]; //! Gen-Reco eta generated particle vs reconstructed E
+
+ TH1F * fhGenMCE [4] ; //! pt of primary particle
+ TH1F * fhGenMCPt[4] ; //! pt of primary particle
TH2F * fhGenMCEtaPhi[4] ; //! eta vs phi of primary particle
- TH1F * fhGenMCAccE[4] ; //! pt of primary particle, in acceptance
+ TH1F * fhGenMCAccE [4] ; //! pt of primary particle, in acceptance
+ TH1F * fhGenMCAccPt[4] ; //! pt of primary particle, in acceptance
TH2F * fhGenMCAccEtaPhi[4] ; //! eta vs phi of primary particle, in acceptance
TH2F * fhEMVxyz ; //! Electromagnetic particle production vertex
TH1F * fhMCNeutral1dR; //! distance between projected track and cluster, MC neutral
TH2F * fhMCNeutral2MatchdEdx; //! dE/dx vs. momentum for all matches, MC neutral
- TH2F * fh1EOverPR02; //! p/E for track-cluster matches, dR > 0.2
- TH2F * fhMCEle1EOverPR02; //! p/E for track-cluster matches, dR > 0.2, MC electrons
- TH2F * fhMCChHad1EOverPR02; //! p/E for track-cluster matches, dR > 0.2, MC charged hadrons
- TH2F * fhMCNeutral1EOverPR02; //! p/E for track-cluster matches, dR > 0.2, MC neutral
-
+ TH2F * fh1EOverPR02; //! p/E for track-cluster matches, dR < 0.2
+ TH2F * fhMCEle1EOverPR02; //! p/E for track-cluster matches, dR < 0.2, MC electrons
+ TH2F * fhMCChHad1EOverPR02; //! p/E for track-cluster matches, dR < 0.2, MC charged hadrons
+ TH2F * fhMCNeutral1EOverPR02; //! p/E for track-cluster matches, dR < 0.2, MC neutral
+
+ TH2F * fh1EleEOverP; //! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100
+ TH2F * fhMCEle1EleEOverP; //! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC electrons
+ TH2F * fhMCChHad1EleEOverP; //! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC charged hadrons
+ TH2F * fhMCNeutral1EleEOverP; //! p/E for track-cluster matches, dR < 0.2, 60 < dEdx < 100, MC neutral
+
+ TH2F * fhTrackMatchedDEta ; //! Eta distance between track and cluster vs cluster E, after and before photon cuts
+ TH2F * fhTrackMatchedDPhi ; //! Phi distance between track and cluster vs cluster E, after and before photon cuts
+ TH2F * fhTrackMatchedDEtaDPhi; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before
+
+ TH2F * fhTrackMatchedDEtaPos; //! Eta distance between track and cluster vs cluster E, after and before photon cuts
+ TH2F * fhTrackMatchedDPhiPos; //! Phi distance between track and cluster vs cluster E, after and before photon cuts
+ TH2F * fhTrackMatchedDEtaDPhiPos; //! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV, after and before
+
AliAnaCalorimeterQA & operator = (const AliAnaCalorimeterQA & qa) ;//cpy assignment
AliAnaCalorimeterQA( const AliAnaCalorimeterQA & qa) ; // cpy ctor
- ClassDef(AliAnaCalorimeterQA,25)
+ ClassDef(AliAnaCalorimeterQA,29)
} ;