1 #ifndef ALIFMDANAPARAMETERS_H
2 #define ALIFMDANAPARAMETERS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
6 * Latest changes by Hans Hjersing Dalsgaard, NBI, hans.dalsgaard@cern.ch
8 * See cxx source for full Copyright notice
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
15 //Author: Hans Hjersing Dalsgaard, NBI, hans.dalsgaard@cern.ch
17 //____________________________________________________________________
25 #ifndef ALIFMDUSHORTMAP_H
26 # include <AliFMDUShortMap.h>
28 #ifndef ALIFMDBOOLMAP_H
29 # include <AliFMDBoolMap.h>
31 #include "AliCDBEntry.h"
34 #include "TObjArray.h"
38 #include "AliFMDAnaCalibBackgroundCorrection.h"
39 #include "AliFMDAnaCalibEnergyDistribution.h"
40 #include "AliFMDAnaCalibEventSelectionEfficiency.h"
41 #include "AliFMDAnaCalibSharingEfficiency.h"
44 //#include "AliPWG0Helper.h"
50 class AliFMDAnaParameters : public TNamed
53 /** Enumeration of things to initialize */
56 kBackgroundCorrection = 0x1, // Background Correction
57 kEnergyDistributions = 0x2, // Energy Distributions
58 kEventSelectionEfficiency = 0x4, // Event Selection Efficiency
59 kSharingEfficiency = 0x8 // Sharing algorithm efficiency
62 enum Trigger { kMB1 = 0, kMB2, kSPDFASTOR, kTEST_NOCTP };
64 enum Energy { k900 , k10000, k14000 };
66 enum MagField {k0G, k5G};
68 enum Species {kPP, kPbPb};
72 static AliFMDAnaParameters* Instance();
74 void Init(Bool_t forceReInit=kTRUE, UInt_t what=kBackgroundCorrection|kEnergyDistributions|kEventSelectionEfficiency|kSharingEfficiency);
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);
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);
121 AliFMDAnaParameters();
123 AliFMDAnaParameters(const AliFMDAnaParameters& o)
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),
140 fMagField(o.fMagField),
143 AliFMDAnaParameters& operator=(const AliFMDAnaParameters&) { return *this; }
144 virtual ~AliFMDAnaParameters() {}
146 static AliFMDAnaParameters* fgInstance; // Static singleton instance
148 // AliCDBEntry* GetEntry(const char* path, Bool_t fatal=kTRUE) const ;
149 void InitBackground();
150 void InitEnergyDists();
151 void InitEventSelectionEff();
152 void InitSharingEff();
154 TH1F* GetEnergyDistribution(Int_t det, Char_t ring, Float_t eta);
155 TObjArray* GetBackgroundArray();
158 void SetCorners(Char_t ring) ;
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 ;
177 TString fBackgroundPath;
178 TString fEventSelectionEffPath;
179 TString fSharingEffPath;
180 Bool_t fProcessPrimary;
187 ClassDef(AliFMDAnaParameters,0) // Manager of parameters
191 //____________________________________________________________________