]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIANALYSISTASKJETSERVICES_H | |
2 | #define ALIANALYSISTASKJETSERVICES_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | // ************************************** | |
8 | // Task used for the correction of determiantion of reconstructed jet spectra | |
9 | // Compares input (gen) and output (rec) jets | |
10 | // ******************************************* | |
11 | ||
12 | #include "AliAnalysisTaskSE.h" | |
13 | #include "THnSparse.h" // cannot forward declare ThnSparseF | |
14 | ||
15 | //////////////// | |
16 | class AliJetHeader; | |
17 | class AliESDEvent; | |
18 | class AliESDVertex; | |
19 | class AliAODEvent; | |
20 | class AliAODVertex; | |
21 | class AliAODVZERO; | |
22 | class AliAODJet; | |
23 | class AliGenPythiaEventHeader; | |
24 | class AliCFManager; | |
25 | class AliTriggerAnalysis; | |
26 | ||
27 | class TList; | |
28 | class TClonesArray; | |
29 | class TObjArray; | |
30 | class TChain; | |
31 | class TH1F; | |
32 | class TH2F; | |
33 | class TH3F; | |
34 | class TProfile; | |
35 | class TRandom3; | |
36 | ||
37 | ||
38 | ||
39 | class AliAnalysisTaskJetServices : public AliAnalysisTaskSE | |
40 | { | |
41 | public: | |
42 | AliAnalysisTaskJetServices(); | |
43 | AliAnalysisTaskJetServices(const char* name); | |
44 | virtual ~AliAnalysisTaskJetServices(); | |
45 | // Implementation of interface methods | |
46 | virtual void UserCreateOutputObjects(); | |
47 | virtual void Init(); | |
48 | virtual void LocalInit() { Init(); } | |
49 | virtual void UserExec(Option_t *option); | |
50 | virtual void Terminate(Option_t *option); | |
51 | virtual void SetZVertexCut(Float_t f){fVtxZCut = f;} | |
52 | virtual void SetDeltaZVertexCut(Float_t f){fVtxDeltaZCut = f;} | |
53 | virtual void SetPtMinCosmic(Float_t ptMin) {fPtMinCosmic = ptMin;} | |
54 | virtual void SetRMinCosmic(Float_t rMin) {fRIsolMinCosmic = rMin;} | |
55 | virtual void SetMaxCosmicAngle(Float_t angle) {fMaxCosmicAngle = angle;} | |
56 | virtual Bool_t Notify(); | |
57 | ||
58 | virtual void SetAODInput(Bool_t b){fUseAODInput = b;} | |
59 | virtual void SetRunRange(Float_t fLo,Float_t fUp){fRunRange[0] = fLo;fRunRange[1] = fUp;} | |
60 | virtual void SetMCData(Bool_t b){fMC = b;} | |
61 | virtual void SetCollisionType(Int_t iType){fCollisionType = iType;} | |
62 | virtual void SetUsePhysicsSelection(Bool_t b){fUsePhysicsSelection = b;} | |
63 | virtual void SetPhysicsSelectionFlag(Int_t i){fPhysicsSelectionFlag = i;} | |
64 | virtual void SetFilterAODCollisions(Bool_t b){fFilterAODCollisions = b;} | |
65 | ||
66 | virtual void SetNonStdFile(char *c){fNonStdFile = c;} | |
67 | Bool_t IsEventSelected(const AliESDEvent* esd); | |
68 | Bool_t IsEventSelected(const AliAODEvent* aod) const; | |
69 | ||
70 | Bool_t IsEventPileUp(const AliESDEvent* esd) const; | |
71 | ||
72 | Bool_t IsEventCosmic(const AliESDEvent* esd) const; | |
73 | ||
74 | Bool_t IsVertexValid(const AliESDVertex *vtx); | |
75 | Bool_t IsVertexValid(const AliAODVertex *vtx) const; | |
76 | ||
77 | Bool_t IsVertexIn(const AliESDVertex *vtx,const AliESDVertex *vtxSPD); | |
78 | Bool_t IsVertexIn(const AliAODVertex *vtx,const AliAODVertex *vtxSPD) const; | |
79 | Int_t GetEventClass(AliESDEvent *esd); | |
80 | Int_t GetEventClass(AliAODEvent *aod); | |
81 | ||
82 | ||
83 | virtual void SetFilterMask(UInt_t i){fFilterMask = i;} | |
84 | virtual void SetMinTrackPt(Float_t f){fMinTrackPt = f;} | |
85 | virtual void SetTrackEtaWindow(Float_t f){fTrackRecEtaWindow = f;} | |
86 | virtual void SetRPMethod(Int_t i){fRPMethod = i;} | |
87 | virtual void SetV0Centroids(TProfile *xa,TProfile *ya, | |
88 | TProfile *xc,TProfile *yc); | |
89 | ||
90 | virtual void SetNTrigger(Int_t n); | |
91 | virtual void SetTrigger(Int_t i,UInt_t it,const char* c = ""); | |
92 | ||
93 | ||
94 | Bool_t CalculateReactionPlaneAngleVZERO(AliAODEvent *aod); | |
95 | Int_t GetListOfTracks(TList *list); | |
96 | ||
97 | ||
98 | enum { kAllTriggered = 0, | |
99 | kTriggeredVertex, //1 | |
100 | kTriggeredVertexIn, //2 | |
101 | kSelectedALICE, //3 | |
102 | kSelectedALICEVertexValid, //4 | |
103 | kSelectedALICEVertexIn, //5 | |
104 | kSelected, //6 | |
105 | kConstraints}; //7 | |
106 | enum { kRPTracks = 0, kRPVZEROA,kRPVZEROC,kRPMethods}; | |
107 | ||
108 | enum { kNoEventCut=1<<0, | |
109 | kPhysicsSelectionCut=1<<1, | |
110 | kContributorsCut1=1<<2, | |
111 | kContributorsCut2=1<<3, | |
112 | kContributorsCut3=1<<4, | |
113 | kVertexTPC=1<<5, | |
114 | kVertexSPD=1<<6, | |
115 | kVertexGlobal=1<<7, | |
116 | kSPDDispersionCut=1<<8, | |
117 | kVertexZCut=1<<9, | |
118 | kVertexRCut=1<<10, | |
119 | kVertexDeltaZCut=1<<11, | |
120 | kTotalEventCuts=(1<<12)-1}; | |
121 | enum {kPbPb = 0,kPP,kPbP}; | |
122 | ||
123 | private: | |
124 | ||
125 | AliAnalysisTaskJetServices(const AliAnalysisTaskJetServices&); | |
126 | AliAnalysisTaskJetServices& operator=(const AliAnalysisTaskJetServices&); | |
127 | ||
128 | Bool_t fUseAODInput; // take jet from input AOD not from ouptu AOD | |
129 | Bool_t fUsePhysicsSelection;// decide wether we take into account physicsselction task | |
130 | Bool_t fMC; // true for MC data to allow correct trigger slection | |
131 | Bool_t fFilterAODCollisions; // filter out collision canditates to the AOD | |
132 | UInt_t fPhysicsSelectionFlag; // defines the glag for acceptance of events from physics selection | |
133 | UInt_t fSelectionInfoESD; // slection info bit mask | |
134 | UInt_t fEventCutInfoESD; // event selection info of what is cutted after physics selection | |
135 | UInt_t fFilterMask; // filter bit for slecected tracks | |
136 | Int_t fRPMethod; // method for subevent calculation | |
137 | Int_t fCollisionType; // type of collisions | |
138 | Int_t fNTrigger; // Number of different triggers | |
139 | Float_t fAvgTrials; // Average number of trials | |
140 | Float_t fVtxXMean; // mean x for cuts | |
141 | Float_t fVtxYMean; // mean y for cuts | |
142 | Float_t fVtxZMean; // mean z for cuts | |
143 | Float_t fVtxRCut; // vtx cut in R | |
144 | Float_t fVtxZCut; // vtzx cut in Z | |
145 | Float_t fVtxDeltaZCut; // cut on difference between SPD and Global vtx | |
146 | Float_t fPtMinCosmic; // Minimum pT to be considered as cosmic candidate | |
147 | Float_t fRIsolMinCosmic; // Minimum R = sqrt{deltaPhi^2 + deltaEta^2} to be considered as cosmic candidate | |
148 | Float_t fMaxCosmicAngle; // Max deviation from pi (angle between two tracks) in case of cosmic candidate | |
149 | Float_t fRunRange[2]; // only important for real data for | |
150 | Float_t fCentrality; // ! centrality | |
151 | Float_t fTrackRecEtaWindow; // eta window for rec tracks | |
152 | Float_t fMinTrackPt; // limits the track p_T | |
153 | Float_t fRPAngle; // ! RP angle of the reaction plane | |
154 | Float_t fPsiVZEROA; // ! RP angle from vzeroa | |
155 | Float_t fPsiVZEROC; // ! RP angle from vzeroc | |
156 | UInt_t *fTriggerBit ; //[fNTrigger] | |
157 | ||
158 | TRandom3 *fRandomizer; // ! randomizer | |
159 | ||
160 | TString fNonStdFile; // outputName for replication | |
161 | TString *fTriggerName; //[fNTrigger] array of trigger names | |
162 | TProfile* fh1Xsec; //! pythia cross section is averaged | |
163 | TH1F* fh1Trials; //! trials are added per notify... | |
164 | TH1F* fh1AvgTrials; //! average trials are added per event | |
165 | TH1F* fh1PtHard; //! Pt har of the event... | |
166 | TH1F* fh1PtHardTrials; //! Number of trials | |
167 | TH1F* fh1SelectionInfoESD; //! Masks that satisfy fSelectionInfo | |
168 | TH1F* fh1EventCutInfoESD; //! Masks that satisfy fSelectionInfo | |
169 | TH1F* fh1CentralityESD; //! centrality | |
170 | TH1F* fh1Centrality; //! centrality | |
171 | TH1F* fh1RP; //! RP distribution | |
172 | TH2F* fh2ReducedTrigger; //! reduced trigger count | |
173 | TH2F* fh2CentralityTriggerESD; //! centrality | |
174 | TH2F* fh2CentralityTrigger; //! centrality | |
175 | TH2F* fh2TriggerCount; //! number of fire triggers in each case | |
176 | TH2F* fh2ESDTriggerCount; //! number of fire triggers in each case | |
177 | TH2F* fh2TriggerVtx; //! vtx. position vs. trigger decision | |
178 | TH2F* fh2ESDTriggerVtx; //! vtx. position vs. trigger decision | |
179 | TH2F* fh2ESDTriggerRun; //! fired triggers vs. run number | |
180 | TH2F* fh2VtxXY; //! XY position of VTX were available | |
181 | TH1F* fh1NCosmicsPerEvent; //! Number of coscmic candidates found in event | |
182 | TProfile* fp1RPXA; //! mean XA vs run | |
183 | TProfile* fp1RPYA; //! mean YA vs run | |
184 | TProfile* fp1RPXC; //! mean XA vs run | |
185 | TProfile* fp1RPYC; //! mean YA vs run | |
186 | TProfile* fp1CalibRPXA; // calib mean XA vs run | |
187 | TProfile* fp1CalibRPYA; // calib YA vs run | |
188 | TProfile* fp1CalibRPXC; // calib XA vs run | |
189 | TProfile* fp1CalibRPYC; // calib YA vs run | |
190 | TH2F* fh2RPAC; //! RP A vs C | |
191 | TH2F* fh2RPAT; //! RP A vs tracks | |
192 | TH2F* fh2RPCT; //! RP C vs tracks | |
193 | TH2F* fh2XYA; //! XY correlations VZERO C | |
194 | TH2F* fh2XYC; //! XY correlations VZERO C | |
195 | TH2F* fh2RPCentrality; //! RP vs centrality | |
196 | TH2F* fh2RPACentrality; //! RP vs centrality | |
197 | TH2F* fh2RPCCentrality; //! RP vs centrality | |
198 | ||
199 | AliTriggerAnalysis *fTriggerAnalysis; //! Trigger Analysis to get the background rates etc. | |
200 | TList *fHistList; //! Output list | |
201 | ||
202 | // Provisions for replication | |
203 | static AliAODHeader* fgAODHeader; //! Header for replication | |
204 | static AliAODVZERO* fgAODVZERO; //! vzero for replication | |
205 | static TClonesArray* fgAODVertices; //! primary vertex for replication | |
206 | ClassDef(AliAnalysisTaskJetServices,17) | |
207 | }; | |
208 | ||
209 | #endif |