]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/FLOW/Tasks/AliAnalysisTaskVnV0.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliAnalysisTaskVnV0.h
index 3e7243c2079f5cc174f79d01bf54338981ae1159..2a6a44ca158df40492f2af8f90b7f93ee8c0818e 100644 (file)
 // AliRoot includes
 #include <AliAnalysisTaskSE.h>
 #include <AliAODEvent.h>
-#include <AliCFContainer.h>
 #include "AliFlowBayesianPID.h"
 #include "AliFlowVZEROResults.h"
+#include "AliFlowVZEROQA.h"
 
 class TH2F;
+class AliESDtrackCuts;
+class TProfile2D;
 
 class AliAnalysisTaskVnV0 : public AliAnalysisTaskSE {
  public:
@@ -35,6 +37,8 @@ class AliAnalysisTaskVnV0 : public AliAnalysisTaskSE {
   virtual void  SetVtxCut(Double_t vtxCut){fVtxCut = vtxCut;}
   virtual void  SetEtaCut(Double_t etaCut){fEtaCut = etaCut;}
   virtual void  SetMinPt(Double_t value) {fMinPt = value;}   
+  virtual void  SetMinDistV0(Double_t value){fMinDistV0=value;}
+  virtual void  SetMaxDistV0(Double_t value){fMaxDistV0=value;}
   virtual void SetV2(Bool_t val){fV2 = val;};
   virtual void SetV3(Bool_t val){fV3 = val;};
 
@@ -43,64 +47,153 @@ class AliAnalysisTaskVnV0 : public AliAnalysisTaskSE {
 
   void OpenInfoCalbration(Int_t run);
 
+  void SetFillDCAinfo(Bool_t flag=kTRUE){fFillDCA = flag;};
+
+  void SetModulationDEDx(Bool_t flag=kTRUE){fModulationDEDx=flag;};
+
+  void SetAfter2011(Bool_t stat=kTRUE){fIsAfter2011=stat;};
+  Bool_t GetAfter2011() const {return fIsAfter2011;};
+
+  void SetTPCclusterN(Int_t ncl){fNcluster=ncl;};
+  static Bool_t IsPsiComputed(){return fgIsPsiComputed;};
+  static Float_t GetPsi2V0A(){return fgPsi2v0a;};
+  static Float_t GetPsi2V0C(){return fgPsi2v0c;};
+  static Float_t GetPsi2TPC(){return fgPsi2tpc;};
+  static Float_t GetPsi3V0A(){return fgPsi3v0a;};
+  static Float_t GetPsi3V0C(){return fgPsi3v0c;};
+  static Float_t GetPsi3TPC(){return fgPsi3tpc;};
+  static Float_t GetPsi2V0AMC(){return fgPsi2v0aMC;};
+  static Float_t GetPsi2V0CMC(){return fgPsi2v0cMC;};
+  static Float_t GetPsi2TPCMC(){return fgPsi2tpcMC;};
+  static Float_t GetPsi3V0AMC(){return fgPsi3v0aMC;};
+  static Float_t GetPsi3V0CMC(){return fgPsi3v0cMC;};
+  static Float_t GetPsi3TPCMC(){return fgPsi3tpcMC;};
+
  private:
-  AliAnalysisTaskVnV0(const AliAnalysisTaskVnV0 &old);
-  AliAnalysisTaskVnV0& operator=(const AliAnalysisTaskVnV0 &source);
+  AliAnalysisTaskVnV0(const AliAnalysisTaskVnV0 &old); 
+  AliAnalysisTaskVnV0& operator=(const AliAnalysisTaskVnV0 &source); 
+
+  Int_t PassesAODCuts(AliAODv0 *myV0, AliAODEvent *tAOD,Int_t specie);
+
+  static Bool_t fgIsPsiComputed; // flag which return if event was processed
+  static Float_t fgPsi2v0a,fgPsi2v0c,fgPsi2tpc; // current Psi2
+  static Float_t fgPsi3v0a,fgPsi3v0c,fgPsi3tpc; // current Psi3
+  static Float_t fgPsi2v0aMC,fgPsi2v0cMC,fgPsi2tpcMC; // current Psi2
+  static Float_t fgPsi3v0aMC,fgPsi3v0cMC,fgPsi3tpcMC; // current Psi3
 
   virtual Float_t GetVertex(AliAODEvent* aod) const;
   virtual void Analyze(AliAODEvent* aodEvent, Float_t v0Centr); 
+  virtual void SelectK0s();
+
+  Double_t     fVtxCut;             // Vtx cut on z position in cm
+  Double_t     fEtaCut;             // Eta cut used to select particles
+  Double_t     fMinPt;              // Min pt - for histogram limits
+  Double_t     fMinDistV0;          // Minimal distance for V0s
+  Double_t     fMaxDistV0;          // Maximal distance for V0s
 
-  AliAODEvent* fAOD;                //! AOD object
+  Bool_t fV2; // switch to set the armonics
+  Bool_t fV3; // switch to set the armonics
+  Bool_t fIsMC; // if MC
+  Bool_t fQAsw;   // if QA
+  Bool_t fIsAfter2011; // switch for 2011 and later runs
 
-  static const Int_t nCentrBin = 9;          // # cenrality bins
+  static const Int_t nCentrBin = 9;          //! # cenrality bins
 
   //
   // Cuts and options
   //
-  Double_t     fVtxCut;             // Vtx cut on z position in cm
-  Double_t     fEtaCut;             // Eta cut used to select particles
-  Double_t     fMinPt;              // Min pt - for histogram limits
 
-  Int_t fRun;                       // current run checked to load VZERO calibrations
+  Int_t fRun;                       //! current run checked to load VZERO calibrations
 
-  TList *fList,*fList2,*fList3,*fList4;             // List for output objects
+  Int_t fNcluster;           // Numer of TPC cluster required
+  TList *fList;              //! List for output objects
+  TList *fList2;             //! List for output objects
+  TList *fList3;             //! List for output objects
+  TList *fList4;             //! List for output objects
   //
   // Output objects
-  TProfile *fMultV0;                // object containing VZERO calibration information
-  Float_t fV0Cpol,fV0Apol;          // loaded by OADB
-  Float_t fMeanQ[nCentrBin][2][2];           // and recentering
-  Float_t fWidthQ[nCentrBin][2][2];          // ...
-  Float_t fMeanQv3[nCentrBin][2][2];         // also for v3
-  Float_t fWidthQv3[nCentrBin][2][2];        // ...
-
-  TProfile *fHResTPCv0A2,*fHResTPCv0C2,*fHResv0Cv0A2;   // TProfile for subevent resolution (output)
-  TProfile *fHResTPCv0A3,*fHResTPCv0C3,*fHResv0Cv0A3;   // also for v3
-
-  TH2F *fPhiRPv0A,*fPhiRPv0C;          // EP distribution vs. centrality (v2)
-  TH2F *fPhiRPv0Av3,*fPhiRPv0Cv3;      // EP distribution vs. centrality (v3)
-
-  AliCFContainer *fPhiTracks;          // phi distribution of particles (if needed)
-
-
-  AliCFContainer *fQA,*fQA2;           // QA container (v2)
-  AliCFContainer *fQAv3,*fQA2v3;       // QA container (v3)
-
-  AliFlowBayesianPID *fPID;            // PID class for the Bayesian probabilities
+  TProfile *fMultV0;                //! object containing VZERO calibration information
+  Float_t fV0Cpol;          //! loaded by OADB
+  Float_t fV0Apol;          //! loaded by OADB
+  Float_t fMeanQ[nCentrBin][2][2];           //! and recentering
+  Float_t fWidthQ[nCentrBin][2][2];          //! ...
+  Float_t fMeanQv3[nCentrBin][2][2];         //! also for v3
+  Float_t fWidthQv3[nCentrBin][2][2];        //! ...
+
+  TProfile *fHResTPCv0A2;   //! TProfile for subevent resolution (output)
+  TProfile *fHResTPCv0C2;   //! TProfile for subevent resolution (output)
+  TProfile *fHResv0Cv0A2;   //! TProfile for subevent resolution (output)
+  TProfile *fHResTPCv0A3;    //! also for v3
+  TProfile *fHResTPCv0C3;   //! also for v3
+  TProfile *fHResv0Cv0A3;   //! also for v3
+
+  TH2F *fPhiRPv0A;          //! EP distribution vs. centrality (v2)
+  TH2F *fPhiRPv0C;          //! EP distribution vs. centrality (v2)
+  TH2F *fPhiRPv0Av3;      //! EP distribution vs. centrality (v3)
+  TH2F *fPhiRPv0Cv3;      //! EP distribution vs. centrality (v3)
+
+  AliFlowVZEROQA *fQA;            //! QA histos (v2)
+  AliFlowVZEROQA *fQA2;           //! QA histos (v2)
+  AliFlowVZEROQA *fQAv3;        //! QA histos (v3)
+  AliFlowVZEROQA *fQA2v3;       //! QA histos (v3)
+
+  AliFlowBayesianPID *fPID;            //! PID class for the Bayesian probabilities
  
-  TTree *fTree;                        // tree to debug EP (if needed)
-
-  Float_t fCentrality;  // current centrality for the tree
-  Float_t evPlAngV0ACor2,evPlAngV0CCor2,evPlAng2;   // subevent EPs (v2)
-  Float_t evPlAngV0ACor3,evPlAngV0CCor3,evPlAng3;   // subevent EPs (v3)
-
-  Bool_t fV2,fV3; // swith to set the armonics
-
-  AliFlowVZEROResults *fContAllChargesV0A,*fContAllChargesV0C,*fContAllChargesV0Av3,*fContAllChargesV0Cv3,*fContAllChargesMC,*fContAllChargesMCv3;
-
-  Bool_t fIsMC; // if MC
-  Bool_t fQAsw;   // if QA
-
-  ClassDef(AliAnalysisTaskVnV0, 2);    //Analysis task v2 and v3 analysis on AOD
+  TTree *fTree;                        //! tree to debug EP (if needed)
+
+  Float_t fCentrality;  //! current centrality for the tree
+  Float_t evPlAngV0ACor2;   //! subevent EPs (v2)
+  Float_t evPlAngV0CCor2;   //! subevent EPs (v2)
+  Float_t evPlAng2;   //! subevent EPs (v2)
+  Float_t evPlAngV0ACor3;   //! subevent EPs (v3)
+  Float_t evPlAngV0CCor3;   //! subevent EPs (v3)
+  Float_t evPlAng3;   //! subevent EPs (v3)
+
+  AliFlowVZEROResults *fContAllChargesV0A; //! results
+  AliFlowVZEROResults *fContAllChargesV0C; //! results
+  AliFlowVZEROResults *fContAllChargesV0Av3; //! results
+  AliFlowVZEROResults *fContAllChargesV0Cv3; //! results
+  AliFlowVZEROResults *fContAllChargesMC; //! results
+
+  // MC
+  TProfile *fHResMA2;   //! TProfile for subevent resolution (output)
+  TProfile *fHResMC2;   //! TProfile for subevent resolution (output)
+  TProfile *fHResAC2;   //! TProfile for subevent resolution (output)
+  TProfile *fHResMA3;    //! also for v3
+  TProfile *fHResMC3;   //! also for v3
+  TProfile *fHResAC3;   //! also for v3
+
+  AliFlowVZEROResults *fContAllChargesMCA; //! results
+  AliFlowVZEROResults *fContAllChargesMCC; //! results
+  AliFlowVZEROResults *fContAllChargesMCAv3; //! results
+  AliFlowVZEROResults *fContAllChargesMCCv3; //! results
+
+  Bool_t fFillDCA; // require to fill also DCA info
+  TH2D *fHdcaPt[nCentrBin][7]; //! DCA distribution (for MC primary)
+  TH2D *fHdcaPtSec[nCentrBin][7]; //! DCA distribution (for MC secondary, not used for data)
+  AliFlowVZEROResults *fContQApid; //! QA pid object
+
+  Bool_t fModulationDEDx; //add a modulation on the dE/dx response w.r.t. EP (kFALSE default)
+
+  Float_t fZvtx; //! primary vertex z coordinate
+  Int_t fNK0s; //! number of K0s in my private selection
+  Float_t fPhiK0s[1000]; //! phi of K0s in my private selection
+  Float_t fPtK0s[1000];//! pt of K0s in my private selection
+  Int_t fNpiPos; //! number of positive pions for K0s selection
+  Int_t fNpiNeg; //! number of negative pions for K0s selection
+  Int_t fIPiPos[1000]; //! position in the AOD stack of positive pions for K0s
+  Int_t fIPiNeg[1000]; //! position in the AOD stack of negative pions for K0s
+
+  TH2D *fHKsPhi; //! Ks phi distribution
+  TH2D *fHKsPhiEP; //! EP distribution
+  TH2D *fHK0sMass; //! K0s mass vs. pt (private selection)
+  TH2D *fHK0sMass2; //! K0s mass vs. pt (standard selection)
+  TH2D *fHK0vsLambda; //! K0s vs lambda mass (in private K0s selection)
+  TProfile2D *fHctauPtEP; //! ctau vs DeltaPhi,pt
+  TH2F *fHctauAt1EP;    //! ctau vs. DeltaPhi at 1 GeV/c
+
+  AliESDtrackCuts *fCutsDaughter; // daughter cut for K0s standard selection
+  ClassDef(AliAnalysisTaskVnV0, 8);    //Analysis task v2 and v3 analysis on AOD
 };
 
 #endif