]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGGA/CaloTrackCorrelations/AliAnaCalorimeterQA.h
Add sigma2 jet shape and fill constituent info. for subtracted jets
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaCalorimeterQA.h
index 0cb87a2691d2cde0cb65c6746ad2eaa388761ae0..f80ef9b95b6975ade2a0a4cbc1d7162065f3f7c0 100755 (executable)
@@ -45,9 +45,8 @@ public:
     
   // 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]);
   
@@ -55,36 +54,33 @@ public:
 
   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
@@ -95,11 +91,12 @@ public:
   
   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         ; }
@@ -117,9 +114,6 @@ public:
   void SwitchOnFillAllPositionHistogram2()      { fFillAllPosHisto2 = kTRUE  ; }
   void SwitchOffFillAllPositionHistogram2()     { fFillAllPosHisto2 = kFALSE ; }
   
-  void SwitchOnFillAllTH12Histogram()           { fFillAllTH12      = kTRUE  ; }
-  void SwitchOffFillAllTH12Histogram()          { fFillAllTH12      = kFALSE ; }
-  
   void SwitchOnFillAllTH3Histogram()            { fFillAllTH3       = kTRUE  ; }
   void SwitchOffFillAllTH3Histogram()           { fFillAllTH3       = kFALSE ; }
   
@@ -158,7 +152,6 @@ public:
   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
@@ -177,9 +170,12 @@ public:
   //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
@@ -282,16 +278,21 @@ public:
        
   //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    
@@ -315,6 +316,18 @@ public:
   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
@@ -326,6 +339,9 @@ public:
   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,
        
@@ -342,29 +358,43 @@ public:
   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
@@ -390,15 +420,28 @@ public:
   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)
 } ;