]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaInsideClusterInvariantMass.h
comment
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaInsideClusterInvariantMass.h
1 #ifndef ALIANAINSIDECLUSTERINVARIANTMASS_H
2 #define ALIANAINSIDECLUSTERINVARIANTMASS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 //_________________________________________________________________________
7 //
8 // Split clusters with some criteria and calculate invariant mass
9 // to identify them as pi0 or conversion
10 //
11 //
12 //-- Author: Gustavo Conesa (LPSC-Grenoble)  
13 //_________________________________________________________________________
14
15
16 // --- ROOT system ---
17 class TList ;
18 class TObjString;
19 class TLorentzVector;
20
21 // --- ANALYSIS system ---
22 #include "AliAnaCaloTrackCorrBaseClass.h"
23
24 class AliAnaInsideClusterInvariantMass : public AliAnaCaloTrackCorrBaseClass {
25
26  public: 
27   AliAnaInsideClusterInvariantMass() ; // default ctor
28   virtual ~AliAnaInsideClusterInvariantMass() { ; } //virtual dtor
29
30   Bool_t       AreNeighbours(const Int_t absId1, const Int_t absId2) const ;  
31   
32   TObjString * GetAnalysisCuts();
33   
34   TList      * GetCreateOutputObjects();
35   
36   TLorentzVector GetCellMomentum(const Int_t absId, Float_t energy, AliVCaloCells* cells) ;
37   
38   Int_t        GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells,
39                                       Int_t *absIdList,     Float_t *maxEList)  ;
40   
41   void         Init();
42   
43   void         InitParameters();
44      
45   void         MakeAnalysisFillHistograms() ; 
46
47   void         RecalibrateCellAmplitude(Float_t  & amp,  const Int_t absId);
48       
49   void         SetCalorimeter(TString & det)     { fCalorimeter   = det  ; }
50   
51   void         SetLocalMaximaCutE(Float_t cut)   { fLocMaxCutE     = cut ; }
52   
53   void         SetLocalMaximaCutEDiff(Float_t c) { fLocMaxCutEDiff = c   ; }
54   
55   void         SetM02Cut(Float_t cut)            { fM02Cut         = cut ; }
56
57   void         SetMinNCells(Int_t cut)           { fMinNCells      = cut ; }
58
59   void         SetPi0MassRange(Float_t min, Float_t max) { fMassPi0Min = min ; fMassPi0Max = max ; }
60   void         SetEtaMassRange(Float_t min, Float_t max) { fMassEtaMin = min ; fMassEtaMax = max ; }
61   void         SetConMassRange(Float_t min, Float_t max) { fMassConMin = min ; fMassConMax = max ; }
62   
63   void         SplitEnergy(const Int_t absId1, const Int_t absId2, 
64                            AliVCluster *cluster, 
65                            AliVCaloCells* cells,
66                            Float_t & e1, Float_t & e2,
67                            const Int_t nMax//, Int_t *absIdList, Float_t *maxEList,
68 );
69   
70   void         Print(const Option_t * opt) const;
71
72   //For histograms
73   enum mcTypes { kmcPhoton = 1, kmcConversion = 2, kmcPi0    = 3,  
74                  kmcEta    = 4, kmcElectron   = 5, kmcHadron = 6 };
75
76  private:
77   
78   TString      fCalorimeter ;       // Calorimeter where the gamma is searched
79   Float_t      fLocMaxCutE;         // Local maxima cut must have more than this energy
80   Float_t      fLocMaxCutEDiff;     // Local maxima cut, when aggregating cells, next can be a bit higher
81   Float_t      fM02Cut    ;         // Study clusters with l0 larger than cut
82   Int_t        fMinNCells ;         // Study clusters with ncells larger than cut
83   Float_t      fMassEtaMin;         // Min Eta mass
84   Float_t      fMassEtaMax;         // Max Eta mass  
85   Float_t      fMassPi0Min;         // Min Pi0 mass
86   Float_t      fMassPi0Max;         // Min Pi0 mass
87   Float_t      fMassConMin;         // Min Conversions mass
88   Float_t      fMassConMax;         // Min Conversions mass
89   
90   //Histograms
91   
92   TH2F       * fhMassNLocMax1[7] ;  //! Mass of 2 highest energy cells when 1 local max, 1-6 for different MC particle types 
93   TH2F       * fhMassNLocMax2[7] ;  //! Mass of 2 cells local maxima vs E,  1-6 for different MC particle types
94   TH2F       * fhMassNLocMaxN[7] ;  //! Mass of >2 cells local maxima vs E, 1-6 for different MC particle types
95
96   TH2F       * fhNLocMax[7] ;       //! Number of maxima in cluster vs E, 1-6 for different MC particle types
97   TH2F       * fhNLocMaxEMax[7] ;   //! Number of maxima in cluster vs E of each maxima, 1-6 for different MC particle types
98   TH2F       * fhNLocMaxEFrac[7] ;  //! Number of maxima in cluster vs fraction of cluster E of each maxima, 1-6 for different MC particle types
99   TH2F       * fhNLocMaxM02Cut[7];  //! Number of maxima in cluster vs E, 1-6 for different MC particle types, after SS cut
100
101   TH2F       * fhM02NLocMax1[7] ;   //! M02 vs E for N max in cluster = 1, 1-6 for different MC particle types
102   TH2F       * fhM02NLocMax2[7] ;   //! M02 vs E for N max in cluster = 2, 1-6 for different MC particle types
103   TH2F       * fhM02NLocMaxN[7] ;   //! M02 vs E for N max in cluster > 2, 1-6 for different MC particle types
104
105   TH2F       * fhNCellNLocMax1[7] ; //! n cells in cluster vs E for N max in cluster = 1, 1-6 for different MC particle types
106   TH2F       * fhNCellNLocMax2[7] ; //! n cells in cluster vs E for N max in cluster = 2, 1-6 for different MC particle types
107   TH2F       * fhNCellNLocMaxN[7] ; //! n cells in cluster vs E for N max in cluster > 2, 1-6 for different MC particle types
108   
109   TH2F       * fhM02Pi0LocMax1[7] ; //! M02 for Mass around pi0, N Local Maxima = 1
110   TH2F       * fhM02EtaLocMax1[7] ; //! M02 for Mass around eta, N Local Maxima = 1
111   TH2F       * fhM02ConLocMax1[7] ; //! M02 for Mass around close to 0, N Local Maxima = 1
112
113   TH2F       * fhM02Pi0LocMax2[7] ; //! M02 for Mass around pi0, N Local Maxima = 2
114   TH2F       * fhM02EtaLocMax2[7] ; //! M02 for Mass around eta, N Local Maxima = 2
115   TH2F       * fhM02ConLocMax2[7] ; //! M02 for Mass around close to 0, N Local Maxima = 2
116   
117   TH2F       * fhM02Pi0LocMaxN[7] ; //! M02 for Mass around pi0, N Local Maxima > 2
118   TH2F       * fhM02EtaLocMaxN[7] ; //! M02 for Mass around eta, N Local Maxima > 2
119   TH2F       * fhM02ConLocMaxN[7] ; //! M02 for Mass around close to 0, N Local Maxima > 2
120   
121   AliAnaInsideClusterInvariantMass(              const AliAnaInsideClusterInvariantMass & g) ; // cpy ctor
122   AliAnaInsideClusterInvariantMass & operator = (const AliAnaInsideClusterInvariantMass & g) ; // cpy assignment
123   
124   ClassDef(AliAnaInsideClusterInvariantMass,4)
125   
126 } ;
127
128 #endif //ALIANAINSIDECLUSTERINVARIANTMASS_H
129
130
131