ROOT logo
#ifndef AliAnalysisTaskV0QA_h
#define AliAnalysisTaskV0QA_h
//----------------------------------
// Class to check the V0 method efficiency for 
// Author A. Marin   revision 18/10/2009
//----------------------------------

#include "THnSparse.h"
#include "TList.h"
#include "AliPID.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisDataContainer.h"

class TH1;
class THnSparse;
class TList;
class AliESDEvent;
class AliESD;
class TLorentzVector;
class AliAnalysisManager;
class AliAnalysisDataContainer;
class AliESDtrackCuts;
class AliMCEventHandler;
class AliStack;
class TChain;

class AliAnalysisTaskV0QA : public AliAnalysisTaskSE {
 public:
  //  AliAnalysisTaskV0QA() : AliAnalysisTask(), fESD(0), fChain(0) {}
    AliAnalysisTaskV0QA();
    AliAnalysisTaskV0QA(const char *name);
  
  virtual ~AliAnalysisTaskV0QA();
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);

  void InspectListOfChargedParticles();
  void InspectListOfV0s();
  void FillHnSparseGamma();
  void FillHnSparseK0();
  void FillHnSparseL();
  void FillHnSparseAL();

  //  void getPID(AliESDtrack *esdTrack, Stat_t &fpid, Stat_t &fweight);


  //  AliESDtrackCuts* fEsdTrackCuts;           // Object containing the parameters of the esd track cuts
  //  void SetESDtrackCuts();




  Int_t GetTPCReference(Int_t label);




 private:



  AliESDEvent *fESD;                // ESD object
  AliStack * fStack;                // The MC Stack
  AliMCEventHandler* fMCtruth;      // The mc info
 
  TChain * fChain;                  // Input chian
  TList * fOutputContainer; // ! output data container

  THnSparse   *fSparseV0;   // THnSparse with Gamma info 
  THnSparse   *fSparseK0;   // THnSparse with K0 info
  THnSparse   *fSparseL;    // THnSparse with L info
  THnSparse   *fSparseAL;   // THnSparse with antiL info

  //////////////////////////////////

  Int_t fnEv;               // Number of event to analyse
  Int_t fgDim;              // Dimension of the THnSparse

  Int_t fnConvGamGeant;     // number of conversions in mc 

  Int_t * fgConvGamGeantIndex; //[fgDim] index of conversions in mc 
  Int_t * feNegConvGamGeantIndex; //[fgDim] index of e- from conversions in mc 
  Int_t * fePosConvGamGeantIndex; //[fgDim] index of e+ from conversions in mc 
  Float_t * feNegConvGamGeantLength; //[fgDim]  length of the e- from conv 
  Float_t * fePosConvGamGeantLength; //[fgDim]  length of the e+ from conv 


  Int_t * feNegConvGamSingleRecIndex; //[fgDim] index of e- from conversions reconstructed single
  Int_t * fePosConvGamSingleRecIndex; //[fgDim] index of e+ from conversions reconstructed single
  Int_t * feNegConvGamV0RecIndex;     //[fgDim] index of e- from conversions reconstructed in V0
  Int_t * fePosConvGamV0RecIndex;     //[fgDim] index of e- from conversions reconstructed in V0
  Int_t * fConvGamV0RecIndexPos;      //[fgDim] index of V0 from conversions reconstructed
  Int_t * fConvGamV0RecIndexNeg;      //[fgDim] index of V0 from conversions reconstructed



   // Lambda  
  Int_t fnDecayLGeant;                // number of Lambda in mc 
  Int_t * flDecayLGeantIndex;         //[fgDim] index of Lambda in MC
  Int_t * fpiNegDecayLGeantIndex;     //[fgDim] index of pi- from L in MC
  Int_t * fpPosDecayLGeantIndex;      //[fgDim] index of proton from L in MC 
  Float_t * fpiNegDecayLGeantLength;  //[fgDim] length of the pi- from MC
  Float_t * fpPosDecayLGeantLength;   //[fgDim] length of the proton from MC

  Int_t * fpiNegDecayLSingleRecIndex; //[fgDim] index of pi- from L reconstr. single
  Int_t * fpPosDecayLSingleRecIndex;  //[fgDim] index of proton from L reconstr. single
  Int_t * fpiNegDecayLV0RecIndex;     //[fgDim] index of pi- from L reconstr. V0
  Int_t * fpPosDecayLV0RecIndex;      //[fgDim] index of proton from L reconstr. V0
  Int_t * fDecayLV0RecIndexPos;       //[fgDim] index of pi- from L reconstr. V0
  Int_t * fDecayLV0RecIndexNeg;       //[fgDim] index of proton from L reconstr.


  // AntiLambda
  Int_t fnDecayALGeant;               // number of Lambdabar in mc 
  Int_t * falDecayALGeantIndex;       //[fgDim] index of Lambdabar in MC
  Int_t * fpiPosDecayALGeantIndex;    //[fgDim] index of pi+ from AL in MC
  Int_t * fapNegDecayALGeantIndex;    //[fgDim] index of antiproton from AL in MC
  Float_t * fpiPosDecayALGeantLength; //[fgDim] Length of pi+ in MC 
  Float_t * fapNegDecayALGeantLength; //[fgDim] Length of antiproton in MC 

  Int_t * fpiPosDecayALSingleRecIndex; //[fgDim] index of pi+ from AL reconstr. single
  Int_t * fapNegDecayALSingleRecIndex; //[fgDim] index of antiproton from AL reconstr. single
  Int_t * fpiPosDecayALV0RecIndex;     //[fgDim] index of pi+ from AL reconstr. V0 
  Int_t * fapNegDecayALV0RecIndex;     //[fgDim] index of antiproton from AL reconstr. V0  
  Int_t * fDecayALV0RecIndexPos;       //[fgDim] index of pi+ V0
  Int_t * fDecayALV0RecIndexNeg;       //[fgDim] index of antiproton V0


  // K0S
  Int_t fnDecayK0Geant;                // number of K0s in mc  
  Int_t * fK0DecayK0GeantIndex;        //[fgDim] index of K0S in MC
  Int_t * fpiNegDecayK0GeantIndex;     //[fgDim] index of pi- from K0s in MC
  Int_t * fpiPosDecayK0GeantIndex;     //[fgDim] index of pi+ from K0s in MC
  Float_t * fpiNegDecayK0GeantLength;  //[fgDim] length of the pi- from K0s in MC
  Float_t * fpiPosDecayK0GeantLength;  //[fgDim] length of the pi+ from K0s in MC

  Int_t * fpiNegDecayK0SingleRecIndex;  //[fgDim] index of pi- from K0S reconstr. single
  Int_t * fpiPosDecayK0SingleRecIndex;  //[fgDim] index of pi+ from K0S reconstr. single 
  Int_t * fpiNegDecayK0V0RecIndex;      //[fgDim] index of pi- from K0S reconstr. V0    
  Int_t * fpiPosDecayK0V0RecIndex;      //[fgDim] index of pi+ from K0S reconstr. V0
  Int_t * fDecayK0V0RecIndexPos;        //[fgDim] index of pi+ V0 
  Int_t * fDecayK0V0RecIndexNeg;        //[fgDim] index of pi- V0  

  Int_t fpiPosK0Index;    //      
  Int_t fpiNegK0Index;    //

  
  Int_t fnTracksPrim;    // number of primary tracks contributing to vertex


  Int_t ftpcRefit;    // tpcRefit condition
  Int_t fitsRefit;    // itsRefit condition
  Int_t ftrdRefit;    // trdRefit condition
  Int_t ftrdOut;      // trdOut condition




  //Double_t fprobabilityPos[AliPID::kSPECIES];
  //Double_t fprobabilityNeg[AliPID::kSPECIES];

  Int_t    fDim;        // number of dimensions THnSparse
  Double_t * fValueL;   //[fDim] values to THnSparse for L
  Double_t * fValueAL;  //[fDim] values to THnSparse for AL
  Double_t * fValueK0;  //[fDim] values to THnSparse for K0
  Double_t * fValueV0;  //[fDim] values to THnSparse for Gamma

  Double_t * fxminV0;   //[fDim] min value to THnSparse
  Double_t * fxmaxV0;   //[fDim] max value to THnSparse
  Int_t    * fbinsV0;   //[fDim] number of bins to THnSparse
  Int_t	 fCentralityC;  // centrality



  TObjArray* fRefTPC;   // references for the tpc
  int fLabelsTPC[100000]; // labels for the tpc


  TClonesArray *fclRefsN;  // negative references for the tpc
  TClonesArray *fclRefsP;  // positive references for the tpc

  // MC variables

  AliAnalysisTaskV0QA (const AliAnalysisTaskV0QA & v0QA );
  AliAnalysisTaskV0QA & operator=(const AliAnalysisTaskV0QA & v0QA);



  ClassDef(AliAnalysisTaskV0QA, 1); // example of analysis
};


#endif
 AliAnalysisTaskV0QA.h:1
 AliAnalysisTaskV0QA.h:2
 AliAnalysisTaskV0QA.h:3
 AliAnalysisTaskV0QA.h:4
 AliAnalysisTaskV0QA.h:5
 AliAnalysisTaskV0QA.h:6
 AliAnalysisTaskV0QA.h:7
 AliAnalysisTaskV0QA.h:8
 AliAnalysisTaskV0QA.h:9
 AliAnalysisTaskV0QA.h:10
 AliAnalysisTaskV0QA.h:11
 AliAnalysisTaskV0QA.h:12
 AliAnalysisTaskV0QA.h:13
 AliAnalysisTaskV0QA.h:14
 AliAnalysisTaskV0QA.h:15
 AliAnalysisTaskV0QA.h:16
 AliAnalysisTaskV0QA.h:17
 AliAnalysisTaskV0QA.h:18
 AliAnalysisTaskV0QA.h:19
 AliAnalysisTaskV0QA.h:20
 AliAnalysisTaskV0QA.h:21
 AliAnalysisTaskV0QA.h:22
 AliAnalysisTaskV0QA.h:23
 AliAnalysisTaskV0QA.h:24
 AliAnalysisTaskV0QA.h:25
 AliAnalysisTaskV0QA.h:26
 AliAnalysisTaskV0QA.h:27
 AliAnalysisTaskV0QA.h:28
 AliAnalysisTaskV0QA.h:29
 AliAnalysisTaskV0QA.h:30
 AliAnalysisTaskV0QA.h:31
 AliAnalysisTaskV0QA.h:32
 AliAnalysisTaskV0QA.h:33
 AliAnalysisTaskV0QA.h:34
 AliAnalysisTaskV0QA.h:35
 AliAnalysisTaskV0QA.h:36
 AliAnalysisTaskV0QA.h:37
 AliAnalysisTaskV0QA.h:38
 AliAnalysisTaskV0QA.h:39
 AliAnalysisTaskV0QA.h:40
 AliAnalysisTaskV0QA.h:41
 AliAnalysisTaskV0QA.h:42
 AliAnalysisTaskV0QA.h:43
 AliAnalysisTaskV0QA.h:44
 AliAnalysisTaskV0QA.h:45
 AliAnalysisTaskV0QA.h:46
 AliAnalysisTaskV0QA.h:47
 AliAnalysisTaskV0QA.h:48
 AliAnalysisTaskV0QA.h:49
 AliAnalysisTaskV0QA.h:50
 AliAnalysisTaskV0QA.h:51
 AliAnalysisTaskV0QA.h:52
 AliAnalysisTaskV0QA.h:53
 AliAnalysisTaskV0QA.h:54
 AliAnalysisTaskV0QA.h:55
 AliAnalysisTaskV0QA.h:56
 AliAnalysisTaskV0QA.h:57
 AliAnalysisTaskV0QA.h:58
 AliAnalysisTaskV0QA.h:59
 AliAnalysisTaskV0QA.h:60
 AliAnalysisTaskV0QA.h:61
 AliAnalysisTaskV0QA.h:62
 AliAnalysisTaskV0QA.h:63
 AliAnalysisTaskV0QA.h:64
 AliAnalysisTaskV0QA.h:65
 AliAnalysisTaskV0QA.h:66
 AliAnalysisTaskV0QA.h:67
 AliAnalysisTaskV0QA.h:68
 AliAnalysisTaskV0QA.h:69
 AliAnalysisTaskV0QA.h:70
 AliAnalysisTaskV0QA.h:71
 AliAnalysisTaskV0QA.h:72
 AliAnalysisTaskV0QA.h:73
 AliAnalysisTaskV0QA.h:74
 AliAnalysisTaskV0QA.h:75
 AliAnalysisTaskV0QA.h:76
 AliAnalysisTaskV0QA.h:77
 AliAnalysisTaskV0QA.h:78
 AliAnalysisTaskV0QA.h:79
 AliAnalysisTaskV0QA.h:80
 AliAnalysisTaskV0QA.h:81
 AliAnalysisTaskV0QA.h:82
 AliAnalysisTaskV0QA.h:83
 AliAnalysisTaskV0QA.h:84
 AliAnalysisTaskV0QA.h:85
 AliAnalysisTaskV0QA.h:86
 AliAnalysisTaskV0QA.h:87
 AliAnalysisTaskV0QA.h:88
 AliAnalysisTaskV0QA.h:89
 AliAnalysisTaskV0QA.h:90
 AliAnalysisTaskV0QA.h:91
 AliAnalysisTaskV0QA.h:92
 AliAnalysisTaskV0QA.h:93
 AliAnalysisTaskV0QA.h:94
 AliAnalysisTaskV0QA.h:95
 AliAnalysisTaskV0QA.h:96
 AliAnalysisTaskV0QA.h:97
 AliAnalysisTaskV0QA.h:98
 AliAnalysisTaskV0QA.h:99
 AliAnalysisTaskV0QA.h:100
 AliAnalysisTaskV0QA.h:101
 AliAnalysisTaskV0QA.h:102
 AliAnalysisTaskV0QA.h:103
 AliAnalysisTaskV0QA.h:104
 AliAnalysisTaskV0QA.h:105
 AliAnalysisTaskV0QA.h:106
 AliAnalysisTaskV0QA.h:107
 AliAnalysisTaskV0QA.h:108
 AliAnalysisTaskV0QA.h:109
 AliAnalysisTaskV0QA.h:110
 AliAnalysisTaskV0QA.h:111
 AliAnalysisTaskV0QA.h:112
 AliAnalysisTaskV0QA.h:113
 AliAnalysisTaskV0QA.h:114
 AliAnalysisTaskV0QA.h:115
 AliAnalysisTaskV0QA.h:116
 AliAnalysisTaskV0QA.h:117
 AliAnalysisTaskV0QA.h:118
 AliAnalysisTaskV0QA.h:119
 AliAnalysisTaskV0QA.h:120
 AliAnalysisTaskV0QA.h:121
 AliAnalysisTaskV0QA.h:122
 AliAnalysisTaskV0QA.h:123
 AliAnalysisTaskV0QA.h:124
 AliAnalysisTaskV0QA.h:125
 AliAnalysisTaskV0QA.h:126
 AliAnalysisTaskV0QA.h:127
 AliAnalysisTaskV0QA.h:128
 AliAnalysisTaskV0QA.h:129
 AliAnalysisTaskV0QA.h:130
 AliAnalysisTaskV0QA.h:131
 AliAnalysisTaskV0QA.h:132
 AliAnalysisTaskV0QA.h:133
 AliAnalysisTaskV0QA.h:134
 AliAnalysisTaskV0QA.h:135
 AliAnalysisTaskV0QA.h:136
 AliAnalysisTaskV0QA.h:137
 AliAnalysisTaskV0QA.h:138
 AliAnalysisTaskV0QA.h:139
 AliAnalysisTaskV0QA.h:140
 AliAnalysisTaskV0QA.h:141
 AliAnalysisTaskV0QA.h:142
 AliAnalysisTaskV0QA.h:143
 AliAnalysisTaskV0QA.h:144
 AliAnalysisTaskV0QA.h:145
 AliAnalysisTaskV0QA.h:146
 AliAnalysisTaskV0QA.h:147
 AliAnalysisTaskV0QA.h:148
 AliAnalysisTaskV0QA.h:149
 AliAnalysisTaskV0QA.h:150
 AliAnalysisTaskV0QA.h:151
 AliAnalysisTaskV0QA.h:152
 AliAnalysisTaskV0QA.h:153
 AliAnalysisTaskV0QA.h:154
 AliAnalysisTaskV0QA.h:155
 AliAnalysisTaskV0QA.h:156
 AliAnalysisTaskV0QA.h:157
 AliAnalysisTaskV0QA.h:158
 AliAnalysisTaskV0QA.h:159
 AliAnalysisTaskV0QA.h:160
 AliAnalysisTaskV0QA.h:161
 AliAnalysisTaskV0QA.h:162
 AliAnalysisTaskV0QA.h:163
 AliAnalysisTaskV0QA.h:164
 AliAnalysisTaskV0QA.h:165
 AliAnalysisTaskV0QA.h:166
 AliAnalysisTaskV0QA.h:167
 AliAnalysisTaskV0QA.h:168
 AliAnalysisTaskV0QA.h:169
 AliAnalysisTaskV0QA.h:170
 AliAnalysisTaskV0QA.h:171
 AliAnalysisTaskV0QA.h:172
 AliAnalysisTaskV0QA.h:173
 AliAnalysisTaskV0QA.h:174
 AliAnalysisTaskV0QA.h:175
 AliAnalysisTaskV0QA.h:176
 AliAnalysisTaskV0QA.h:177
 AliAnalysisTaskV0QA.h:178
 AliAnalysisTaskV0QA.h:179
 AliAnalysisTaskV0QA.h:180
 AliAnalysisTaskV0QA.h:181
 AliAnalysisTaskV0QA.h:182
 AliAnalysisTaskV0QA.h:183
 AliAnalysisTaskV0QA.h:184
 AliAnalysisTaskV0QA.h:185
 AliAnalysisTaskV0QA.h:186
 AliAnalysisTaskV0QA.h:187
 AliAnalysisTaskV0QA.h:188
 AliAnalysisTaskV0QA.h:189
 AliAnalysisTaskV0QA.h:190
 AliAnalysisTaskV0QA.h:191
 AliAnalysisTaskV0QA.h:192
 AliAnalysisTaskV0QA.h:193
 AliAnalysisTaskV0QA.h:194
 AliAnalysisTaskV0QA.h:195
 AliAnalysisTaskV0QA.h:196