]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG1/AliAnalysisTaskV0QA.h
make Kalman propagator more flexible for testing
[u/mrichter/AliRoot.git] / PWG1 / AliAnalysisTaskV0QA.h
1 #ifndef AliAnalysisTaskV0QA_h
2 #define AliAnalysisTaskV0QA_h
3 //----------------------------------
4 // Class to check the V0 method efficiency for 
5 // Author A. Marin   revision 18/10/2009
6 //----------------------------------
7
8 #include "THnSparse.h"
9 #include "TList.h"
10 #include "AliPID.h"
11 #include "AliAnalysisTask.h"
12 #include "AliAnalysisManager.h"
13 #include "AliAnalysisDataContainer.h"
14
15 class TH1;
16 class THnSparse;
17 class TList;
18 class AliESDEvent;
19 class AliESD;
20 class TLorentzVector;
21 class AliAnalysisManager;
22 class AliAnalysisDataContainer;
23 class AliESDtrackCuts;
24 class AliMCEventHandler;
25 class AliStack;
26 class TChain;
27
28 class AliAnalysisTaskV0QA : public AliAnalysisTask {
29  public:
30   //  AliAnalysisTaskV0QA() : AliAnalysisTask(), fESD(0), fChain(0) {}
31   AliAnalysisTaskV0QA(const char *name);
32   virtual ~AliAnalysisTaskV0QA();
33   
34   virtual void   ConnectInputData(Option_t *);
35   virtual void   CreateOutputObjects();
36   virtual void   Exec(Option_t *option);
37   virtual void   Terminate(Option_t *);
38
39   void InspectListOfChargedParticles();
40   void InspectListOfV0s();
41   void FillHnSparseGamma();
42   void FillHnSparseK0();
43   void FillHnSparseL();
44   void FillHnSparseAL();
45
46   //  void getPID(AliESDtrack *esdTrack, Stat_t &fpid, Stat_t &fweight);
47
48
49   //  AliESDtrackCuts* fEsdTrackCuts;           // Object containing the parameters of the esd track cuts
50   //  void SetESDtrackCuts();
51
52
53
54
55   Int_t GetTPCReference(Int_t label);
56
57
58
59
60  private:
61
62
63
64   AliESDEvent *fESD;                // ESD object
65   AliStack * fStack;                // The MC Stack
66   AliMCEventHandler* fMCtruth;      // The mc info
67  
68   TChain * fChain;                  // Input chian
69   TList * fOutputContainer; // ! output data container
70
71   THnSparse   *fSparseV0;   // THnSparse with Gamma info 
72   THnSparse   *fSparseK0;   // THnSparse with K0 info
73   THnSparse   *fSparseL;    // THnSparse with L info
74   THnSparse   *fSparseAL;   // THnSparse with antiL info
75
76   //////////////////////////////////
77
78   Int_t fnEv;               // Number of event to analyse
79   Int_t fgDim;              // Dimension of the THnSparse
80
81   Int_t fnConvGamGeant;     // number of conversions in mc 
82
83   Int_t * fgConvGamGeantIndex; //[fgDim] index of conversions in mc 
84   Int_t * feNegConvGamGeantIndex; //[fgDim] index of e- from conversions in mc 
85   Int_t * fePosConvGamGeantIndex; //[fgDim] index of e+ from conversions in mc 
86   Float_t * feNegConvGamGeantLength; //[fgDim]  length of the e- from conv 
87   Float_t * fePosConvGamGeantLength; //[fgDim]  length of the e+ from conv 
88
89
90   Int_t * feNegConvGamSingleRecIndex; //[fgDim] index of e- from conversions reconstructed single
91   Int_t * fePosConvGamSingleRecIndex; //[fgDim] index of e+ from conversions reconstructed single
92   Int_t * feNegConvGamV0RecIndex;     //[fgDim] index of e- from conversions reconstructed in V0
93   Int_t * fePosConvGamV0RecIndex;     //[fgDim] index of e- from conversions reconstructed in V0
94   Int_t * fConvGamV0RecIndexPos;      //[fgDim] index of V0 from conversions reconstructed
95   Int_t * fConvGamV0RecIndexNeg;      //[fgDim] index of V0 from conversions reconstructed
96
97
98
99    // Lambda  
100   Int_t fnDecayLGeant;                // number of Lambda in mc 
101   Int_t * flDecayLGeantIndex;         //[fgDim] index of Lambda in MC
102   Int_t * fpiNegDecayLGeantIndex;     //[fgDim] index of pi- from L in MC
103   Int_t * fpPosDecayLGeantIndex;      //[fgDim] index of proton from L in MC 
104   Float_t * fpiNegDecayLGeantLength;  //[fgDim] length of the pi- from MC
105   Float_t * fpPosDecayLGeantLength;   //[fgDim] length of the proton from MC
106
107   Int_t * fpiNegDecayLSingleRecIndex; //[fgDim] index of pi- from L reconstr. single
108   Int_t * fpPosDecayLSingleRecIndex;  //[fgDim] index of proton from L reconstr. single
109   Int_t * fpiNegDecayLV0RecIndex;     //[fgDim] index of pi- from L reconstr. V0
110   Int_t * fpPosDecayLV0RecIndex;      //[fgDim] index of proton from L reconstr. V0
111   Int_t * fDecayLV0RecIndexPos;       //[fgDim] index of pi- from L reconstr. V0
112   Int_t * fDecayLV0RecIndexNeg;       //[fgDim] index of proton from L reconstr.
113
114
115   // AntiLambda
116   Int_t fnDecayALGeant;               // number of Lambdabar in mc 
117   Int_t * falDecayALGeantIndex;       //[fgDim] index of Lambdabar in MC
118   Int_t * fpiPosDecayALGeantIndex;    //[fgDim] index of pi+ from AL in MC
119   Int_t * fapNegDecayALGeantIndex;    //[fgDim] index of antiproton from AL in MC
120   Float_t * fpiPosDecayALGeantLength; //[fgDim] Length of pi+ in MC 
121   Float_t * fapNegDecayALGeantLength; //[fgDim] Length of antiproton in MC 
122
123   Int_t * fpiPosDecayALSingleRecIndex; //[fgDim] index of pi+ from AL reconstr. single
124   Int_t * fapNegDecayALSingleRecIndex; //[fgDim] index of antiproton from AL reconstr. single
125   Int_t * fpiPosDecayALV0RecIndex;     //[fgDim] index of pi+ from AL reconstr. V0 
126   Int_t * fapNegDecayALV0RecIndex;     //[fgDim] index of antiproton from AL reconstr. V0  
127   Int_t * fDecayALV0RecIndexPos;       //[fgDim] index of pi+ V0
128   Int_t * fDecayALV0RecIndexNeg;       //[fgDim] index of antiproton V0
129
130
131   // K0S
132   Int_t fnDecayK0Geant;                // number of K0s in mc  
133   Int_t * fK0DecayK0GeantIndex;        //[fgDim] index of K0S in MC
134   Int_t * fpiNegDecayK0GeantIndex;     //[fgDim] index of pi- from K0s in MC
135   Int_t * fpiPosDecayK0GeantIndex;     //[fgDim] index of pi+ from K0s in MC
136   Float_t * fpiNegDecayK0GeantLength;  //[fgDim] length of the pi- from K0s in MC
137   Float_t * fpiPosDecayK0GeantLength;  //[fgDim] length of the pi+ from K0s in MC
138
139   Int_t * fpiNegDecayK0SingleRecIndex;  //[fgDim] index of pi- from K0S reconstr. single
140   Int_t * fpiPosDecayK0SingleRecIndex;  //[fgDim] index of pi+ from K0S reconstr. single 
141   Int_t * fpiNegDecayK0V0RecIndex;      //[fgDim] index of pi- from K0S reconstr. V0    
142   Int_t * fpiPosDecayK0V0RecIndex;      //[fgDim] index of pi+ from K0S reconstr. V0
143   Int_t * fDecayK0V0RecIndexPos;        //[fgDim] index of pi+ V0 
144   Int_t * fDecayK0V0RecIndexNeg;        //[fgDim] index of pi- V0  
145
146   Int_t fpiPosK0Index;    //      
147   Int_t fpiNegK0Index;    //
148
149   
150   Int_t fnTracksPrim;    // number of primary tracks contributing to vertex
151
152
153   Int_t ftpcRefit;    // tpcRefit condition
154   Int_t fitsRefit;    // itsRefit condition
155   Int_t ftrdRefit;    // trdRefit condition
156   Int_t ftrdOut;      // trdOut condition
157
158
159
160
161   Double_t fprobabilityPos[AliPID::kSPECIES];
162   Double_t fprobabilityNeg[AliPID::kSPECIES];
163
164   Int_t    fDim;        // number of dimensions THnSparse
165   Double_t * fValueL;   //[fDim] values to THnSparse for L
166   Double_t * fValueAL;  //[fDim] values to THnSparse for AL
167   Double_t * fValueK0;  //[fDim] values to THnSparse for K0
168   Double_t * fValueV0;  //[fDim] values to THnSparse for Gamma
169
170   Double_t * fxminV0;   //[fDim] min value to THnSparse
171   Double_t * fxmaxV0;   //[fDim] max value to THnSparse
172   Int_t    * fbinsV0;   //[fDim] number of bins to THnSparse
173
174
175
176
177   TObjArray* fRefTPC;   // references for the tpc
178   int fLabelsTPC[100000]; // labels for the tpc
179
180
181   TClonesArray *fclRefsN;  // negative references for the tpc
182   TClonesArray *fclRefsP;  // positive references for the tpc
183
184   // MC variables
185
186   AliAnalysisTaskV0QA (const AliAnalysisTaskV0QA & v0QA );
187   AliAnalysisTaskV0QA & operator=(const AliAnalysisTaskV0QA & v0QA);
188
189
190
191   ClassDef(AliAnalysisTaskV0QA, 1); // example of analysis
192 };
193
194
195 #endif