]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/analysis/AliFMDAnaParameters.h
3e9c91119c614c0e370fe3a38f03acf5f456777b
[u/mrichter/AliRoot.git] / FMD / analysis / AliFMDAnaParameters.h
1 #ifndef ALIFMDANAPARAMETERS_H
2 #define ALIFMDANAPARAMETERS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * Latest changes by Hans Hjersing Dalsgaard, NBI, hans.dalsgaard@cern.ch
7  *
8  * See cxx source for full Copyright notice                               
9  */
10 //
11 //The design of this class is based on the AliFMDParameters class. Its purpose
12 //is to hold parameters for the analysis such as background correction and 
13 //fit functions.
14 //
15 //Author: Hans Hjersing Dalsgaard, NBI, hans.dalsgaard@cern.ch
16 //
17 //____________________________________________________________________
18
19 #ifndef ROOT_TNamed
20 # include <TNamed.h>
21 #endif
22 #ifndef ROOT_TArrayI
23 # include <TArrayI.h>
24 #endif
25 #ifndef ALIFMDUSHORTMAP_H
26 # include <AliFMDUShortMap.h>
27 #endif
28 #ifndef ALIFMDBOOLMAP_H
29 # include <AliFMDBoolMap.h>
30 #endif
31 #include "AliCDBEntry.h"
32
33 #include "TFile.h"
34 #include "TObjArray.h"
35 #include "TH2F.h"
36 #include "TAxis.h"
37 #include "TH1F.h"
38 #include "AliFMDAnaCalibBackgroundCorrection.h"
39 #include "AliFMDAnaCalibEnergyDistribution.h"
40 #include "AliFMDAnaCalibEventSelectionEfficiency.h"
41 #include "AliFMDAnaCalibSharingEfficiency.h"
42 #include <TVector2.h>
43 #include <TString.h>
44 //#include "AliPWG0Helper.h"
45 class AliESDEvent;
46
47 /**
48  * @ingroup FMD_ana
49  */
50 class AliFMDAnaParameters : public TNamed
51 {
52 public:
53   /** Enumeration of things to initialize */ 
54   enum What { 
55     /** Pulser gain */ 
56     kBackgroundCorrection         = 0x1, // Background Correction 
57     kEnergyDistributions          = 0x2, // Energy Distributions
58     kEventSelectionEfficiency     = 0x4, // Event Selection Efficiency
59     kSharingEfficiency            = 0x8  // Sharing algorithm efficiency
60   };
61   
62   enum Trigger { kMB1 = 0, kMB2, kSPDFASTOR, kTEST_NOCTP };
63   
64   enum Energy { k900 , k10000, k14000 };
65   
66   enum MagField {k0G, k5G};
67   
68   enum Species {kPP, kPbPb};
69   
70   /** Singleton access
71       @return  single to */
72   static AliFMDAnaParameters* Instance();
73   
74   void Init(Bool_t forceReInit=kTRUE, UInt_t what=kBackgroundCorrection|kEnergyDistributions|kEventSelectionEfficiency|kSharingEfficiency);
75   Float_t GetVtxCutZ();
76   Int_t GetNvtxBins();
77   Int_t GetNetaBins();
78   Float_t GetEtaMin();  
79   Float_t GetEtaMax();
80   Float_t GetMPV(Int_t det, Char_t ring, Float_t eta);
81   Float_t GetSigma(Int_t det, Char_t ring, Float_t eta);
82   Float_t Get2MIPWeight(Int_t det, Char_t ring, Float_t eta);
83   Float_t Get3MIPWeight(Int_t det, Char_t ring, Float_t eta);
84   //static const char* GetBackgroundPath() { return fgkBackgroundCorrection;}
85   // static const char* GetEdistPath()      { return fgkEnergyDists;}
86   static const char* GetBackgroundID() { return fgkBackgroundID;}
87   static const char* GetEdistID()      { return fgkEnergyDistributionID;}
88   static const char* GetEventSelectionEffID()      { return fgkEventSelectionEffID;}
89   static const char* GetSharingEffID()      { return fgkSharingEffID;}
90   TH2F* GetBackgroundCorrection(Int_t det, Char_t ring, Int_t vtxbin);
91   TH1F* GetDoubleHitCorrection(Int_t det, Char_t ring);
92   
93   TH1F* GetSharingEfficiency(Int_t det, Char_t ring, Int_t vtxbin);
94   TH1F* GetSharingEfficiencyTrVtx(Int_t det, Char_t ring, Int_t vtxbin);
95   Float_t  GetEventSelectionEfficiency(Int_t vtxbin);
96   Float_t  GetPhiFromSector(UShort_t det, Char_t ring, UShort_t sec) const;
97   Float_t  GetEtaFromStrip(UShort_t det, Char_t ring, UShort_t sec, UShort_t strip, Float_t zvtx) const;
98   Float_t  GetStripLength(Char_t ring, UShort_t strip)  ;
99   Float_t  GetBaseStripLength(Char_t ring, UShort_t strip)  ;
100   Float_t  GetMaxR(Char_t ring) const;
101   Float_t  GetMinR(Char_t ring) const;
102   void     SetBackgroundPath(const Char_t* bgpath) {fBackgroundPath.Form(bgpath);}
103   void     SetEnergyPath(const Char_t* epath) {fEnergyPath.Form(epath);}
104   void     SetEventSelectionPath(const Char_t* evpath) {fEventSelectionEffPath.Form(evpath);}
105   void     SetSharingEfficiencyPath(const Char_t* sharpath) {fSharingEffPath.Form(sharpath);}
106   void     SetProcessPrimary(Bool_t prim=kTRUE) {fProcessPrimary = prim;}
107   void     SetProcessHits(Bool_t hits=kTRUE) {fProcessHits = hits;}
108   Bool_t   GetProcessPrimary() {return fProcessPrimary;}
109   Bool_t   GetProcessHits() {return fProcessHits;}
110   void     GetVertex(AliESDEvent* esd, Double_t* vertexXYZ);
111   void     SetTriggerDefinition(Trigger trigger) {fTrigger = trigger;}
112   Trigger  GetTriggerDefinition() {return fTrigger;}
113   Bool_t   IsEventTriggered(AliESDEvent* esd);
114   void     SetEnergy(Energy energy) {fEnergy = energy;}
115   void     SetMagField(MagField magfield) {fMagField = magfield;}
116   char*    GetPath(const char* species);
117
118
119 protected:
120   
121   AliFMDAnaParameters();
122   
123   AliFMDAnaParameters(const AliFMDAnaParameters& o) 
124     : TNamed(o),
125       fIsInit(o.fIsInit),
126       fBackground(o.fBackground),
127       fEnergyDistribution(o.fEnergyDistribution),
128       fEventSelectionEfficiency(o.fEventSelectionEfficiency),
129       fSharingEfficiency(o.fSharingEfficiency),
130       fCorner1(o.fCorner1),
131       fCorner2(o.fCorner2),
132       fEnergyPath(o.fEnergyPath),
133       fBackgroundPath(o.fBackgroundPath),
134       fEventSelectionEffPath(o.fEventSelectionEffPath),
135       fSharingEffPath(o.fSharingEffPath),
136       fProcessPrimary(o.fProcessPrimary),
137       fProcessHits(o.fProcessHits),
138       fTrigger(o.fTrigger),
139       fEnergy(o.fEnergy),
140       fMagField(o.fMagField),
141       fSpecies(o.fSpecies)
142   {}
143   AliFMDAnaParameters& operator=(const AliFMDAnaParameters&) { return *this; }
144   virtual ~AliFMDAnaParameters() {}
145   
146   static AliFMDAnaParameters* fgInstance;   // Static singleton instance
147   
148   //  AliCDBEntry* GetEntry(const char* path, Bool_t fatal=kTRUE) const ;
149   void InitBackground();
150   void InitEnergyDists();
151   void InitEventSelectionEff();
152   void InitSharingEff();
153   
154   TH1F* GetEnergyDistribution(Int_t det, Char_t ring, Float_t eta);
155   TObjArray* GetBackgroundArray();
156   
157   TAxis* GetRefAxis();
158   void SetCorners(Char_t ring) ;
159   
160   Bool_t fIsInit;
161   //TObjArray*  fBackgroundArray;
162   // TObjArray*  fEdistArray;
163   AliFMDAnaCalibBackgroundCorrection*         fBackground;
164   AliFMDAnaCalibEnergyDistribution*           fEnergyDistribution;
165   AliFMDAnaCalibEventSelectionEfficiency*     fEventSelectionEfficiency;
166   AliFMDAnaCalibSharingEfficiency*            fSharingEfficiency;
167   //static const char* fgkBackgroundCorrection;
168   //static const char* fgkEnergyDists;
169   static const char* fgkBackgroundID;
170   static const char* fgkEnergyDistributionID ;
171   static const char* fgkEventSelectionEffID ;
172   static const char* fgkSharingEffID ;
173   
174   TVector2 fCorner1;
175   TVector2 fCorner2;
176   TString  fEnergyPath;
177   TString  fBackgroundPath;
178   TString  fEventSelectionEffPath;
179   TString  fSharingEffPath;
180   Bool_t   fProcessPrimary;
181   Bool_t   fProcessHits; 
182   Trigger  fTrigger;
183   Energy   fEnergy;
184   MagField fMagField;
185   Species  fSpecies;
186   
187   ClassDef(AliFMDAnaParameters,0) // Manager of parameters
188 };
189
190 #endif
191 //____________________________________________________________________
192 //
193 // Local Variables:
194 //   mode: C++
195 // End:
196 //
197 // EOF
198 //
199