]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG/FLOW/Tasks/AliAnalysisTaskFlowStrange.h
from Ante Bilandzic:
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliAnalysisTaskFlowStrange.h
index 05e485efc2c3360742656b22636b2810ccc0d0f8..7ef7cb624ed1588a4e6fbf2c27f369019f5c6d53 100644 (file)
@@ -34,6 +34,7 @@ class AliAODVertex;
 class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
  public:
   enum Especie {kKZE=0,kLDA=1,kLDABAR=2,kLDAALL=3,kCHARGED=90,kPION=91,kKAON=92,kPROTON=93};
+  enum Econfig {kSpecie=1,kHarmonic,kReadMC,kSkipSelection};
   AliAnalysisTaskFlowStrange();
   AliAnalysisTaskFlowStrange(const Char_t *name);
   virtual ~AliAnalysisTaskFlowStrange();
@@ -42,56 +43,50 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   virtual void UserExec(Option_t *);
   virtual void Terminate(Option_t *);
 
-  void MyUserExec(Option_t *);
+  TList* RunTerminateAgain(TList *lst);
+
   void SetDebug(Int_t val=1) {fDebug = val;}
   void SetQAlevel(Int_t qa) {fQAlevel = qa;}
 
-  void SetMass(Int_t n, Double_t m, Double_t M) {fMassBins=n;fMinMass=m;fMaxMass=M;}
-
   void SetpA() {fRunOnpA = kTRUE;  fRunOnpp = kFALSE;}
   void Setpp() {fRunOnpA = kFALSE; fRunOnpp = kTRUE; }
-  void SetK0L0(Int_t specie) {fSpecie=specie;}
-  void SetOnline(Bool_t val) {fOnline=val;}
-  void SetHomemade(Bool_t val) {fHomemade=val;}
-  void SetExcludeTPCEdges(Bool_t value) {fExcludeTPCEdges=value;}
-  void SetCentralityRange(TString val, Int_t m, Int_t M) {fCentMethod=val; fCentPerMin=m; fCentPerMax=M;}
   void SetReadESD(Bool_t val) {fReadESD=val;}
   void SetReadMC(Bool_t val) {fReadMC=val;}
-  void SetPostMatched(Int_t val) {fPostMatched=val;}
+  void MyUserExec(Option_t *);
+
   void SetAvoidExec(Bool_t val) {fAvoidExec=val;}
-  void SetSkipSelection(Bool_t val) {fSkipSelection=val;}
-  void SetSkipFlow(Bool_t val) {fSkipFlow=val;}
-  void SetUseFlowPackage(Bool_t val) {fUseFP=val;}
-  void SetExtraEventRejection(Bool_t val) {fExtraEventRejection=val;}
   void SetVertexZcut(Double_t val) {fVertexZcut=val;}
+  void SetSkipCentralitySelection(Bool_t val) {fSkipCentralitySelection=val;}
+  void SetCentralityRange(TString val, Int_t m, Int_t M) {fCentMethod=val; fCentPerMin=m; fCentPerMax=M;}
+  void SetExtraEventRejection(Bool_t val) {fExtraEventRejection=val;}
+  void SetSkipTerminate(Bool_t val) {fSkipTerminate=val;}
 
+  void SetAddPiToMCReactionPlane(Bool_t val) {fAddPiToMCReactionPlane=val;}
+  void SetUseFlowPackage(Bool_t val) {fUseFP=val;}
   void SetWhichPsi(Int_t val) {fWhichPsi=val;}
   void SetStoreVZEResponse(Bool_t val) {fVZEsave=val;}
   void LoadVZEResponse(TList *val, Bool_t val2=kFALSE, Bool_t val3=kTRUE) {fVZEload=val;fVZEmb=val2;fVZEByDisk=val3;}
-  
   void SetRFPFilterBit(Int_t val) {fRFPFilterBit=val;}
   void SetRFPMinPt(Double_t val) {fRFPminPt=val;}
   void SetRFPMaxPt(Double_t val) {fRFPmaxPt=val;}
-  void SetRFPMinEta(Double_t val) {fRFPminEta=val;}
-  void SetRFPMaxEta(Double_t val) {fRFPmaxEta=val;}
+  void SetRFPAMinEta(Double_t val) {fRFPAminEta=val;}
+  void SetRFPAMaxEta(Double_t val) {fRFPAmaxEta=val;}
+  void SetRFPCMinEta(Double_t val) {fRFPCminEta=val;}
+  void SetRFPCMaxEta(Double_t val) {fRFPCmaxEta=val;}
   void SetRFPTPCSignal(Double_t val) {fRFPTPCsignal=val;}
   void SetRFPMaxIPxy(Double_t val) {fRFPmaxIPxy=val;}
   void SetRFPMaxIPz(Double_t val) {fRFPmaxIPz=val;}
   void SetRFPMinTPCCls(Int_t val) {fRFPTPCncls=val;}
   void SetRFPVZERingRange(Int_t val1, Int_t val2, Int_t val3, Int_t val4)
     {fVZECa=val1;fVZECb=val2;fVZEAa=val3;fVZEAb=val4;}
-  void SetDauMinNClsTPC(Int_t val) {fDaughterMinNClsTPC=val;}
-  void SetDauMinXRows(Int_t val) {fDaughterMinXRows=val;}
-  void SetDauMaxChi2PerNClsTPC(Double_t val) {fDaughterMaxChi2PerNClsTPC=val;}
-  void SetDauMinXRowsOverNClsFTPC(Double_t val) {fDaughterMinXRowsOverNClsFTPC=val;}
-  void SetDauITSLayer(Int_t layer, Int_t config) {fDaughterITSConfig[layer]=config;}
-  void SetDauMinEta(Double_t val) {fDaughterMinEta=val;}
-  void SetDauMaxEta(Double_t val) {fDaughterMaxEta=val;}
-  void SetDauMinPt(Double_t val) {fDaughterMinPt=val;}
-  void SetDauMinImpactParameterXY(Double_t val) {fDaughterMinImpactParameterXY=val;}
-  void SetDauMaxNSigmaPID(Double_t val) {fDaughterMaxNSigmaPID=val;}
-  void SetDauUnTagProcedure(Bool_t val) {fDaughterUnTag=val;}
 
+  void SetSkipSelection(Bool_t val) {fSkipSelection=val;}
+  void SetPostMatched(Int_t val) {fPostMatched=val;}
+  void SetK0L0(Int_t specie) {fSpecie=specie;}
+  void SetMass(Int_t n, Double_t m, Double_t M) {fMassBins=n;fMinMass=m;fMaxMass=M;}
+  void SetOnline(Bool_t val) {fOnline=val;}
+  void SetHomemade(Bool_t val) {fHomemade=val;}
+  void SetExcludeTPCEdges(Bool_t value) {fExcludeTPCEdges=value;}
   void SetMaxRapidity(Double_t val) {fDecayMaxRapidity=val;}
   void SetMinEta(Double_t val) {fDecayMinEta=val;}
   void SetMaxEta(Double_t val) {fDecayMaxEta=val;}
@@ -103,6 +98,18 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   void SetMaxDecayLength(Double_t val) {fDecayMaxDecayLength=val;}
   void SetMaxProductIPXY(Double_t val) {fDecayMaxProductIPXY=val;}
 
+  void SetDauMinNClsTPC(Int_t val) {fDaughterMinNClsTPC=val;}
+  void SetDauMinXRows(Int_t val) {fDaughterMinXRows=val;}
+  void SetDauMaxChi2PerNClsTPC(Double_t val) {fDaughterMaxChi2PerNClsTPC=val;}
+  void SetDauMinXRowsOverNClsFTPC(Double_t val) {fDaughterMinXRowsOverNClsFTPC=val;}
+  void SetDauITSLayer(Int_t layer, Int_t config) {fDaughterITSConfig[layer]=config;}
+  void SetDauMinEta(Double_t val) {fDaughterMinEta=val;}
+  void SetDauMaxEta(Double_t val) {fDaughterMaxEta=val;}
+  void SetDauMinPt(Double_t val) {fDaughterMinPt=val;}
+  void SetDauMinImpactParameterXY(Double_t val) {fDaughterMinImpactParameterXY=val;}
+  void SetDauMaxNSigmaPID(Double_t val) {fDaughterMaxNSigmaPID=val;}
+  void SetDauUnTagProcedure(Bool_t val) {fDaughterUnTag=val;}
+
  private:
   AliAnalysisTaskFlowStrange(const AliAnalysisTaskFlowStrange& analysisTask);
   AliAnalysisTaskFlowStrange& operator=(const AliAnalysisTaskFlowStrange& analysisTask);
@@ -114,6 +121,9 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   void Publish();
   
   void AddEventSpy(TString name);
+  void FillEventSpy(TString name);
+
+  Bool_t MinimumRequirementsAA(AliAODEvent *tAOD);
   Bool_t AcceptAAEvent(AliESDEvent *tESD);
   Bool_t AcceptAAEvent(AliAODEvent *tAOD);
   Bool_t AcceptPPEvent(AliAODEvent *tAOD);
@@ -128,18 +138,16 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
 
   void ComputePsi2(AliVEvent *event);
   void AddMakeQSpy();
-  void MakeQVZE(AliVEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);
-  void MakeQTPC(AliVEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);
-  void MakeQTPC(AliESDEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);
-  void MakeQTPC(AliAODEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);
+  void MakeQVZE(AliVEvent *event);
+  void MakeQTPC(AliVEvent *event);
+  void MakeQTPC(AliESDEvent *event);
+  void MakeQTPC(AliAODEvent *event);
   void AddTPCRFPSpy(TList *val);
   Bool_t PassesRFPTPCCuts(AliESDtrack *myTrack, Double_t aodChi2NDF=0, Float_t aodipxy=0, Float_t aodipz=0);
   void MakeQVectors();
   void ResetContainers();
 
-  void MakeDHcorr();
   void AddCandidates();
-  void ReadEventPlanesFromAOD(AliAODEvent *tAOD);
 
   Double_t GetMCDPHI(Double_t phi);
 
@@ -157,9 +165,20 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   void AddCandidatesSpy(TList *val, Bool_t fillRes=kFALSE);
   void FillCandidateSpy(TString listName, Bool_t fillRes=kFALSE);
 
-  void AddTracksSpy(TList *val, Bool_t fillRes=kFALSE);
+  void AddTrackSpy(TList *val, Bool_t fillRes=kFALSE);
   void FillTrackSpy(TString listName, Bool_t fillRes=kFALSE);
 
+  void AddDecayVn(TList *val);
+  void FillDecayVn(TString listName,Double_t ms,Double_t pt,Double_t phi,Double_t eta,Int_t fid1,Int_t fid2);
+  void QCStoreDecayVn(TString name);
+  void ComputeDecayVn(TString listName);
+
+  void AddTrackVn(TList *val);
+  void FillTrackVn(TString listName,Double_t pt,Double_t phi,Double_t eta,Int_t fid);
+  void QCStoreTrackVn(TString name);
+  void ComputeTrackVn(TString listName);
+  Bool_t InQTPC(Int_t id);
+
   void MakeFilterBits();
   Bool_t PassesFilterBit(AliESDtrack *me);
 
@@ -182,6 +201,7 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   void AddVZEQA();
   void SaveVZEROQA();
 
+  Int_t RefMult(AliAODEvent *tAOD, Int_t fb);
   Int_t RefMultTPC();
   Int_t RefMultGlobal();
 
@@ -200,19 +220,27 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
 
   Bool_t fReadESD;       // move back to ESD
   Bool_t fReadMC;        // read MC files
+  Bool_t fAddPiToMCReactionPlane; // add pi randomly (MCTUNED)
   Int_t fPostMatched;    // post only (un)matched particles
   Bool_t fAvoidExec;     // avoids Exec
   Bool_t fSkipSelection; // skip decay finder
-  Bool_t fSkipFlow;      // skip flow-wise code
-  Bool_t fSkipDHcorr;    // skip dhcorr code
   Bool_t fUseFP;         // flow package?
   Bool_t fRunOnpA;       // make task compatible with pA event selection
   Bool_t fRunOnpp;       // make task compatible with pp event selection
   Bool_t fExtraEventRejection; // to reject pile up
+  Bool_t fSkipCentralitySelection; // to skip centrality
   TString  fCentMethod; // CC
   Int_t    fCentPerMin; // CC
   Int_t    fCentPerMax; // CC
   Double_t fThisCent;   // CC
+  Double_t fV0M; // V0M CC
+  Double_t fTRK; // TRK CC
+  Double_t fPriVtxZ; // vtxZ
+  Double_t fSPDVtxZ; // vtxZ
+  Int_t fSPDtracklets; // spd tracklets
+  Float_t fVZETotM; // vzero total multiplicity
+  Int_t fRefMultTPC; // tpc only multiplicity
+  Int_t fRefMultHyb; // hybrid multiplicity
 
   Double_t fVertexZcut; // cut on main vertex Z
 
@@ -233,10 +261,32 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   Int_t   fVZECb;   // end of V0C (ring number 0-3)
   Int_t   fVZEAa;   // start of V0A (ring number 0-3)
   Int_t   fVZEAb;   // end of V0A (ring number 0-3)
-  TList  *fVZEQA;   // adress to qalist
+  TList  *fVZEQA;   // address to qalist
 
+  Int_t fHarmonic;  // flow angle order
   Double_t fPsi2;   // best estimation of Psi2
   Double_t fMCEP;   // stores MC EP (when available)
+  // VZE QVector
+  Double_t fQVZEACos;
+  Double_t fQVZEASin;
+  Double_t fQVZECCos;
+  Double_t fQVZECSin;
+  Double_t fQVZEA;
+  Double_t fQVZEC;
+  // TPC QVector
+  Double_t fQTPCACos;
+  Double_t fQTPCASin;
+  Double_t fQTPCCCos;
+  Double_t fQTPCCSin;
+  Double_t fQTPC2hCos;
+  Double_t fQTPC2hSin;
+  Double_t fQTPCA;
+  Double_t fQTPCC;
+  Int_t fQTPCA_nTracks;
+  Int_t fQTPCC_nTracks;
+  Int_t fQTPCA_fID[2000];
+  Int_t fQTPCC_fID[2000];
+  Bool_t fSkipTerminate;
 
   Int_t    fMassBins; // opens
   Double_t fMinMass;  // mass
@@ -247,8 +297,10 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   Int_t fRFPFilterBit;    // RFP TPC
   Double_t fRFPminPt;     // RFP TPC
   Double_t fRFPmaxPt;     // RFP TPC
-  Double_t fRFPminEta;    // RFP TPC
-  Double_t fRFPmaxEta;    // RFP TPC
+  Double_t fRFPAminEta;   // RFP TPC
+  Double_t fRFPAmaxEta;   // RFP TPC
+  Double_t fRFPCminEta;   // RFP TPC
+  Double_t fRFPCmaxEta;   // RFP TPC
   Double_t fRFPTPCsignal; // RFP TPC
   Double_t fRFPmaxIPxy;   // RFP TPC
   Double_t fRFPmaxIPz;    // RFP TPC
@@ -308,6 +360,9 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   UChar_t  fDaughterITScm;             // DAUGHTER
   Double_t fDaughterNSigmaPID;         // DAUGHTER
   Int_t    fDaughterKinkIndex;         // DAUGHTER
+  Double_t fDaughterAtSecPhi;          // DAUGHTER
+  Double_t fDaughterAtSecEta;          // DAUGHTER
+  Double_t fDaughterAtSecPt;           // DAUGHTER
 
   Double_t fDaughterMatchPhi;               // MC DAUGHTER
   Double_t fDaughterMatchEta;               // MC DAUGHTER
@@ -327,6 +382,6 @@ class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
   Double_t fDaughterMinImpactParameterXY; // DAUGHTER CUTS
   Double_t fDaughterMaxNSigmaPID;         // DAUGHTER CUTS
 
-  ClassDef(AliAnalysisTaskFlowStrange, 5);
+  ClassDef(AliAnalysisTaskFlowStrange, 6);
 };
 #endif