]> 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 224a0b327d07c370d481037395c27ff2880ee515..7ef7cb624ed1588a4e6fbf2c27f369019f5c6d53 100644 (file)
-/////////////////////////////////////////////////////\r
-// AliAnalysisTaskFlowStrange:\r
-// Analysis task to select K0/Lambda candidates for flow analysis.\r
-// Authors: Cristian Ivan (civan@cern.ch)\r
-//          Carlos Perez (cperez@cern.ch)\r
-//          Pawel Debski (pdebski@cern.ch)\r
-//////////////////////////////////////////////////////\r
-\r
-/* Copyright(c) 1998-1999, ALICExperiment at CERN, All rights reserved. *\r
-* See cxx source for full Copyright notice */\r
-/* $Id: $ */\r
-\r
-#ifndef AliAnalysisTaskFlowStrange_H\r
-#define AliAnalysisTaskFlowStrange_H\r
-\r
-#include "AliAnalysisTaskSE.h"\r
-\r
-class TList;\r
-class TH2D;\r
-class TObjArray;\r
-class TClonesArray;\r
-class AliAODMCParticle;\r
-class AliESDtrackCuts;\r
-class AliFlowEventCuts;\r
-class AliPIDResponse;\r
-class AliESDEvent;\r
-class AliAODEvent;\r
-class AliAODv0;\r
-class AliESDv0;\r
-class AliVVertex;\r
-class AliFlowBayesianPID;\r
-class AliAODVertex;\r
-\r
-class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {\r
- public:\r
-  enum Especie {kKZE=0,kLDA=1,kLDABAR=2,kLDAALL=3,kCHARGED=90,kPION=91,kKAON=92,kPROTON=93};\r
-  AliAnalysisTaskFlowStrange();\r
-  AliAnalysisTaskFlowStrange(const Char_t *name);\r
-  virtual ~AliAnalysisTaskFlowStrange();\r
-  virtual void UserCreateOutputObjects();\r
-  virtual void Exec(Option_t*);\r
-  virtual void UserExec(Option_t *);\r
-  virtual void Terminate(Option_t *);\r
-  virtual void NotifyRun();\r
-\r
-  void MyUserExec(Option_t *);\r
-  void SetDebug(Int_t val=1) {fDebug = val;}\r
-  void SetQAlevel(Int_t qa) {fQAlevel = qa;}\r
-\r
-  void SetMass(Int_t n, Double_t m, Double_t M) {fMassBins=n;fMinMass=m;fMaxMass=M;}\r
-\r
-  void SetpA() {fRunOnpA = kTRUE;  fRunOnpp = kFALSE;}\r
-  void Setpp() {fRunOnpA = kFALSE; fRunOnpp = kTRUE; }\r
-  void SetK0L0(Int_t specie) {fSpecie=specie;}\r
-  void SetOnline(Bool_t val) {fOnline=val;}\r
-  void SetHomemade(Bool_t val) {fHomemade=val;}\r
-  void SetExcludeTPCEdges(Bool_t value) {fExcludeTPCEdges=value;}\r
-  void SetCentralityRange(TString val, Int_t m, Int_t M) {fCentMethod=val; fCentPerMin=m; fCentPerMax=M;}\r
-  void SetReadESD(Bool_t val) {fReadESD=val;}\r
-  void SetReadMC(Bool_t val) {fReadMC=val;}\r
-  void SetAvoidExec(Bool_t val) {fAvoidExec=val;}\r
-  void SetSkipSelection(Bool_t val) {fSkipSelection=val;}\r
-  void SetSkipFlow(Bool_t val) {fSkipFlow=val;}\r
-  void SetUseFlowPackage(Bool_t val) {fUseFP=val;}\r
-  void SetExtraEventRejection(Bool_t val) {fExtraEventRejection=val;}\r
-\r
-  void SetWhichPsi(Int_t val) {fWhichPsi=val;}\r
-  void SetStoreVZEResponse(Bool_t val) {fVZEsave=val;}\r
-  void LoadVZEResponse(TList *val) {fVZEload=val;}\r
-  \r
-  void SetRFPFilterBit(Int_t val) {fRFPFilterBit=val;}\r
-  void SetRFPMinPt(Double_t val) {fRFPminPt=val;}\r
-  void SetRFPMaxPt(Double_t val) {fRFPmaxPt=val;}\r
-  void SetRFPMinEta(Double_t val) {fRFPminEta=val;}\r
-  void SetRFPMaxEta(Double_t val) {fRFPmaxEta=val;}\r
-  void SetRFPTPCSignal(Double_t val) {fRFPTPCsignal=val;}\r
-  void SetRFPMaxIPxy(Double_t val) {fRFPmaxIPxy=val;}\r
-  void SetRFPMaxIPz(Double_t val) {fRFPmaxIPz=val;}\r
-  void SetRFPMinTPCCls(Int_t val) {fRFPTPCncls=val;}\r
-\r
-  void SetDauMinNClsTPC(Int_t val) {fDaughterMinNClsTPC=val;}\r
-  void SetDauMinXRows(Int_t val) {fDaughterMinXRows=val;}\r
-  void SetDauMaxChi2PerNClsTPC(Double_t val) {fDaughterMaxChi2PerNClsTPC=val;}\r
-  void SetDauMinXRowsOverNClsFTPC(Double_t val) {fDaughterMinXRowsOverNClsFTPC=val;}\r
-  void SetDauMinEta(Double_t val) {fDaughterMinEta=val;}\r
-  void SetDauMaxEta(Double_t val) {fDaughterMaxEta=val;}\r
-  void SetDauMinPt(Double_t val) {fDaughterMinPt=val;}\r
-  void SetDauMinImpactParameterXY(Double_t val) {fDaughterMinImpactParameterXY=val;}\r
-  void SetDauMaxNSigmaPID(Double_t val) {fDaughterMaxNSigmaPID=val;}\r
-\r
-  void SetMaxRapidity(Double_t val) {fDecayMaxRapidity=val;}\r
-  void SetMinEta(Double_t val) {fDecayMinEta=val;}\r
-  void SetMaxEta(Double_t val) {fDecayMaxEta=val;}\r
-  void SetMinPt(Double_t val) {fDecayMinPt=val;}\r
-  void SetMaxDCAdaughters(Double_t val) {fDecayMaxDCAdaughters=val;}\r
-  void SetMinCosinePointingAngleXY(Double_t val) {fDecayMinCosinePointingAngleXY=val;}\r
-  void SetMinQt(Double_t val, Bool_t val2=kTRUE) {fDecayMinQt=val; fDecayAPCutPie=val2;}\r
-  void SetMinRadXY(Double_t val) {fDecayMinRadXY=val;}\r
-  void SetMaxDecayLength(Double_t val) {fDecayMaxDecayLength=val;}\r
-  void SetMaxProductIPXY(Double_t val) {fDecayMaxProductIPXY=val;}\r
-\r
- private:\r
-  AliAnalysisTaskFlowStrange(const AliAnalysisTaskFlowStrange& analysisTask);\r
-  AliAnalysisTaskFlowStrange& operator=(const AliAnalysisTaskFlowStrange& analysisTask);\r
-  void AddQAEvents();\r
-  void AddQACandidates();\r
-\r
-  void AddEventSpy();\r
-  Bool_t AcceptAAEvent(AliESDEvent *tESD);\r
-  Bool_t AcceptAAEvent(AliAODEvent *tAOD);\r
-  Bool_t AcceptPPEvent(AliAODEvent *tAOD);\r
-  Bool_t AcceptPAEvent(AliAODEvent *tAOD);\r
-  Int_t GetReferenceMultiplicity();\r
-\r
-  void ReadStack(TClonesArray* mcArray);\r
-  void ReadFromESD(AliESDEvent *tESD);\r
-  void ReadFromAODv0(AliAODEvent *tAOD);\r
-\r
-  void ChargeParticles(AliAODEvent *tAOD);\r
-\r
-  void ComputePsi2(AliVEvent *event);\r
-  void AddMakeQSpy();\r
-  void MakeQVZE(AliVEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);\r
-  void MakeQTPC(AliESDEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);\r
-  void MakeQTPC(AliAODEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);\r
-  void AddTPCRFPSpy(TList *val);\r
-  Bool_t PassesRFPTPCCuts(AliESDtrack *myTrack, Double_t aodChi2NDF=0, Float_t aodipxy=0, Float_t aodipz=0);\r
-  void MakeQVectors();\r
-\r
-  void AddCandidates();\r
-  void ReadEventPlanesFromAOD(AliAODEvent *tAOD);\r
-\r
-  Double_t CosThetaPointXY(AliESDv0 *me, const AliVVertex *vtx);\r
-  Double_t CosThetaPointXY(AliAODv0 *me, const AliVVertex *vtx);\r
-  Double_t DecayLengthXY(AliESDv0 *me, const AliVVertex *vtx);\r
-  Double_t DecayLengthXY(AliAODv0 *me, const AliVVertex *vtx);\r
-  Double_t DecayLength(AliESDv0 *me, const AliVVertex *vtx);\r
-  Double_t DecayLength(AliAODv0 *me, const AliVVertex *vtx);\r
-\r
-  void AddMCParticleSpy(TList *val);\r
-  void FillMCParticleSpy(TString listName, AliAODMCParticle *par);\r
-  void FillMCParticleSpy(TString listName, TParticle *par);\r
-\r
-  void AddCandidatesSpy(TList *val);\r
-  void FillCandidateSpy(TString listName);\r
-\r
-  void AddTracksSpy(TList *val);\r
-  void FillTrackSpy(TString listName);\r
-\r
-  void MakeFilterBits();\r
-  Bool_t PassesFilterBit(AliESDtrack *me);\r
-\r
-  void LoadTrack(AliESDtrack *myTrack, Double_t aodChi2NDF=0);\r
-  Bool_t AcceptDaughter();\r
-  Bool_t AcceptCandidate();\r
-  Bool_t PassesPIDCuts(AliESDtrack *myTrack, AliPID::EParticleType pid=AliPID::kProton);\r
-\r
-  Bool_t IsAtTPCEdge(Double_t phi,Double_t pt,Int_t charge,Double_t b);\r
-\r
-  void MakeTrack();\r
-  void PushBackFlowTrack(AliFlowEvent *event, Double_t pt, Double_t phi, Double_t eta, Double_t we, Int_t id);\r
-\r
-  Double_t GetWDist(const AliVVertex* v0, const AliVVertex* v1);\r
-  Bool_t plpMV(const AliVEvent *event);\r
-\r
-  void LoadVZEROResponse();\r
-  void AddVZEROResponse();\r
-  void SaveVZEROResponse();\r
-  void AddVZEQA();\r
-  void SaveVZEROQA();\r
-\r
-  Int_t RefMultTPC();\r
-  Int_t RefMultGlobal();\r
-\r
-  AliPIDResponse *fPIDResponse; //! PID response object\r
-  AliESDtrackCuts *fFB1;        // filterbit cut equivalent\r
-  AliESDtrackCuts *fFB1024;     // filterbit cut equivalent\r
-  AliFlowEvent   *fTPCevent;    // flow event (needed here due to ev selection)\r
-  AliFlowEvent   *fVZEevent;    // flow event (needed here due to ev selection)\r
-  TObjArray      *fCandidates;  // array of selected candidates\r
-  TList          *fList;        // stores the final list of output histograms\r
-\r
-  Int_t fDebug;   // debug level\r
-  Int_t fQAlevel; // QA plots\r
-\r
-  Bool_t fReadESD;       // move back to ESD\r
-  Bool_t fReadMC;        // read MC files\r
-  Bool_t fAvoidExec;     // avoids Exec\r
-  Bool_t fSkipSelection; // skip decay finder\r
-  Bool_t fSkipFlow;      // skip flow-wise code\r
-  Bool_t fUseFP;         // flow package?\r
-  Bool_t fRunOnpA;       // make task compatible with pA event selection\r
-  Bool_t fRunOnpp;       // make task compatible with pp event selection\r
-  Bool_t fExtraEventRejection; // to reject pile up\r
-  TString  fCentMethod; // CC\r
-  Int_t    fCentPerMin; // CC\r
-  Int_t    fCentPerMax; // CC\r
-  Double_t fThisCent;   // CC\r
-\r
-  Bool_t fExcludeTPCEdges; // exclude TPC edges from single track selection\r
-\r
-  Int_t  fSpecie;   // K0=>0 L0=>1\r
-  Bool_t fOnline;   // change into online v0 finder\r
-  Bool_t fHomemade; // homemade v0 finder\r
-\r
-  Int_t fWhichPsi;  // detector for Psi2\r
-  Bool_t  fVZEsave; // make vze response\r
-  TList  *fVZEload; // adress to calibration file\r
-  TH2D   *fVZEResponse; // vze response vs centrality class\r
-  TList  *fVZEQA;   // adress to qalist\r
-  Double_t fPsi2;   // best estimation of Psi2\r
-\r
-  Int_t    fMassBins; // opens\r
-  Double_t fMinMass;  // mass\r
-  Double_t fMaxMass;  // window\r
-\r
-  Int_t fRFPFilterBit;    // RFP TPC\r
-  Double_t fRFPminPt;     // RFP TPC\r
-  Double_t fRFPmaxPt;     // RFP TPC\r
-  Double_t fRFPminEta;    // RFP TPC\r
-  Double_t fRFPmaxEta;    // RFP TPC\r
-  Double_t fRFPTPCsignal; // RFP TPC\r
-  Double_t fRFPmaxIPxy;   // RFP TPC\r
-  Double_t fRFPmaxIPz;    // RFP TPC\r
-  Int_t fRFPTPCncls;      // RFP TPC\r
-\r
-  Double_t fDecayMass;                  // DECAY\r
-  Double_t fDecayPhi;                   // DECAY\r
-  Double_t fDecayEta;                   // DECAY\r
-  Double_t fDecayPt;                    // DECAY\r
-  Double_t fDecayDCAdaughters;          // DECAY\r
-  Double_t fDecayCosinePointingAngleXY; // DECAY\r
-  Double_t fDecayRadXY;                 // DECAY\r
-  Double_t fDecayDecayLength;           // DECAY\r
-  Double_t fDecayQt;                    // DECAY\r
-  Double_t fDecayAlpha;                 // DECAY\r
-  Double_t fDecayRapidity;              // DECAY\r
-  Double_t fDecayProductIPXY;           // DECAY\r
-  Int_t    fDecayIDneg;                 // DECAY\r
-  Int_t    fDecayIDpos;                 // DECAY\r
-\r
-  Double_t fDecayMinEta;                   // DECAY CUTS\r
-  Double_t fDecayMaxEta;                   // DECAY CUTS\r
-  Double_t fDecayMinPt;                    // DECAY CUTS\r
-  Double_t fDecayMaxDCAdaughters;          // DECAY CUTS\r
-  Double_t fDecayMinCosinePointingAngleXY; // DECAY CUTS\r
-  Double_t fDecayMinQt;                    // DECAY CUTS\r
-  Bool_t   fDecayAPCutPie;                 // DECAY CUTS\r
-  Double_t fDecayMinRadXY;                 // DECAY CUTS\r
-  Double_t fDecayMaxDecayLength;           // DECAY CUTS\r
-  Double_t fDecayMaxProductIPXY;           // DECAY CUTS\r
-  Double_t fDecayMaxRapidity;              // DECAY CUTS\r
-\r
-  Double_t fDaughterPhi;               // DAUGHTER\r
-  Double_t fDaughterEta;               // DAUGHTER\r
-  Double_t fDaughterPt;                // DAUGHTER\r
-  Int_t    fDaughterNClsTPC;           // DAUGHTER\r
-  Int_t    fDaughterCharge;            // DAUGHTER\r
-  Int_t    fDaughterNFClsTPC;          // DAUGHTER\r
-  Int_t    fDaughterNSClsTPC;          // DAUGHTER\r
-  Double_t fDaughterChi2PerNClsTPC;    // DAUGHTER\r
-  Double_t fDaughterXRows;             // DAUGHTER\r
-  Float_t  fDaughterImpactParameterXY; // DAUGHTER\r
-  Float_t  fDaughterImpactParameterZ;  // DAUGHTER\r
-  UInt_t   fDaughterStatus;            // DAUGHTER\r
-  Double_t fDaughterNSigmaPID;         // DAUGHTER\r
-  Int_t    fDaughterKinkIndex;         // DAUGHTER\r
-\r
-  Double_t fDaughterMinEta;               // DAUGHTER CUTS\r
-  Double_t fDaughterMaxEta;               // DAUGHTER CUTS\r
-  Double_t fDaughterMinPt;                // DAUGHTER CUTS\r
-  Int_t    fDaughterMinNClsTPC;           // DAUGHTER CUTS\r
-  Int_t    fDaughterMinXRows;             // DAUGHTER CUTS\r
-  Double_t fDaughterMaxChi2PerNClsTPC;    // DAUGHTER CUTS\r
-  Double_t fDaughterMinXRowsOverNClsFTPC; // DAUGHTER CUTS\r
-  Double_t fDaughterMinImpactParameterXY; // DAUGHTER CUTS\r
-  Double_t fDaughterMaxNSigmaPID;         // DAUGHTER CUTS\r
-\r
-  ClassDef(AliAnalysisTaskFlowStrange, 5);\r
-};\r
-#endif\r
+/////////////////////////////////////////////////////
+// AliAnalysisTaskFlowStrange:
+// Analysis task to select K0/Lambda candidates for flow analysis.
+// Authors: Cristian Ivan (civan@cern.ch)
+//          Carlos Perez (cperez@cern.ch)
+//          Pawel Debski (pdebski@cern.ch)
+//////////////////////////////////////////////////////
+
+/* Copyright(c) 1998-1999, ALICExperiment at CERN, All rights reserved. *
+* See cxx source for full Copyright notice */
+/* $Id: $ */
+
+#ifndef AliAnalysisTaskFlowStrange_H
+#define AliAnalysisTaskFlowStrange_H
+
+#include "AliAnalysisTaskSE.h"
+
+class TList;
+class TH2D;
+class TObjArray;
+class TClonesArray;
+class AliAODMCParticle;
+class AliESDtrackCuts;
+class AliFlowEventCuts;
+class AliPIDResponse;
+class AliESDEvent;
+class AliAODEvent;
+class AliAODv0;
+class AliESDv0;
+class AliVVertex;
+class AliFlowBayesianPID;
+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();
+  virtual void UserCreateOutputObjects();
+  virtual void Exec(Option_t*);
+  virtual void UserExec(Option_t *);
+  virtual void Terminate(Option_t *);
+
+  TList* RunTerminateAgain(TList *lst);
+
+  void SetDebug(Int_t val=1) {fDebug = val;}
+  void SetQAlevel(Int_t qa) {fQAlevel = qa;}
+
+  void SetpA() {fRunOnpA = kTRUE;  fRunOnpp = kFALSE;}
+  void Setpp() {fRunOnpA = kFALSE; fRunOnpp = kTRUE; }
+  void SetReadESD(Bool_t val) {fReadESD=val;}
+  void SetReadMC(Bool_t val) {fReadMC=val;}
+  void MyUserExec(Option_t *);
+
+  void SetAvoidExec(Bool_t val) {fAvoidExec=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 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 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;}
+  void SetMinPt(Double_t val) {fDecayMinPt=val;}
+  void SetMaxDCAdaughters(Double_t val) {fDecayMaxDCAdaughters=val;}
+  void SetMinCosinePointingAngleXY(Double_t val) {fDecayMinCosinePointingAngleXY=val;}
+  void SetMinQt(Double_t val, Bool_t val2=kTRUE) {fDecayMinQt=val; fDecayAPCutPie=val2;}
+  void SetMinRadXY(Double_t val) {fDecayMinRadXY=val;}
+  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);
+  void AddQAEvents();
+  void AddQACandidates();
+
+  void MyNotifyRun();
+  Bool_t CalibrateEvent();
+  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);
+  Bool_t AcceptPAEvent(AliAODEvent *tAOD);
+  Int_t GetReferenceMultiplicity();
+
+  void ReadStack(TClonesArray* mcArray);
+  void ReadFromESD(AliESDEvent *tESD);
+  void ReadFromAODv0(AliAODEvent *tAOD);
+
+  void ChargeParticles(AliAODEvent *tAOD);
+
+  void ComputePsi2(AliVEvent *event);
+  void AddMakeQSpy();
+  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 AddCandidates();
+
+  Double_t GetMCDPHI(Double_t phi);
+
+  Double_t CosThetaPointXY(AliESDv0 *me, const AliVVertex *vtx);
+  Double_t CosThetaPointXY(AliAODv0 *me, const AliVVertex *vtx);
+  Double_t DecayLengthXY(AliESDv0 *me, const AliVVertex *vtx);
+  Double_t DecayLengthXY(AliAODv0 *me, const AliVVertex *vtx);
+  Double_t DecayLength(AliESDv0 *me, const AliVVertex *vtx);
+  Double_t DecayLength(AliAODv0 *me, const AliVVertex *vtx);
+
+  void AddMCParticleSpy(TList *val);
+  void FillMCParticleSpy(TString listName, AliAODMCParticle *par);
+  void FillMCParticleSpy(TString listName, TParticle *par);
+
+  void AddCandidatesSpy(TList *val, Bool_t fillRes=kFALSE);
+  void FillCandidateSpy(TString listName, 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);
+
+  void LoadTrack(AliESDtrack *myTrack, Double_t aodChi2NDF=0);
+  Bool_t AcceptDaughter();
+  Bool_t AcceptCandidate();
+  Bool_t PassesPIDCuts(AliESDtrack *myTrack, AliPID::EParticleType pid=AliPID::kProton);
+
+  Bool_t IsAtTPCEdge(Double_t phi,Double_t pt,Int_t charge,Double_t b);
+
+  void MakeTrack();
+  void PushBackFlowTrack(AliFlowEvent *event, Double_t pt, Double_t phi, Double_t eta, Double_t we, Int_t id);
+
+  Double_t GetWDist(const AliVVertex* v0, const AliVVertex* v1);
+  Bool_t plpMV(const AliVEvent *event);
+
+  void LoadVZEROResponse();
+  void AddVZEROResponse();
+  void SaveVZEROResponse();
+  void AddVZEQA();
+  void SaveVZEROQA();
+
+  Int_t RefMult(AliAODEvent *tAOD, Int_t fb);
+  Int_t RefMultTPC();
+  Int_t RefMultGlobal();
+
+  AliPIDResponse *fPIDResponse; //! PID response object
+  AliESDtrackCuts *fFB1;        // filterbit cut equivalent
+  AliESDtrackCuts *fFB1024;     // filterbit cut equivalent
+  AliFlowEvent   *fTPCevent;    // flow event (needed here due to ev selection)
+  AliFlowEvent   *fVZEevent;    // flow event (needed here due to ev selection)
+  TObjArray      *fCandidates;  // array of selected candidates
+  TList          *fList;        // stores the final list of output histograms
+
+  Int_t fRunNumber; // current run number
+
+  Int_t fDebug;   // debug level
+  Int_t fQAlevel; // QA plots
+
+  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 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
+
+  Bool_t fExcludeTPCEdges; // exclude TPC edges from single track selection
+
+  Int_t  fSpecie;   // K0=>0 L0=>1
+  Bool_t fOnline;   // change into online v0 finder
+  Bool_t fHomemade; // homemade v0 finder
+
+  Int_t fWhichPsi;  // detector for Psi2
+
+  Bool_t  fVZEsave; // make vze response
+  TList  *fVZEload; // adress to calibration file
+  TH2D   *fVZEResponse; // vze response vs centrality class
+  Bool_t  fVZEmb;   // integrate response (linearity)
+  Bool_t  fVZEByDisk; // normalized by disk
+  Int_t   fVZECa;   // start of V0C (ring number 0-3)
+  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;   // 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
+  Double_t fMaxMass;  // window
+  Double_t fMinMassX; // HP window
+  Double_t fMaxMassX; // HP window
+
+  Int_t fRFPFilterBit;    // RFP TPC
+  Double_t fRFPminPt;     // RFP TPC
+  Double_t fRFPmaxPt;     // 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
+  Int_t fRFPTPCncls;      // RFP TPC
+
+  Double_t fDecayMass;                  // DECAY
+  Double_t fDecayPhi;                   // DECAY
+  Double_t fDecayEta;                   // DECAY
+  Double_t fDecayPt;                    // DECAY
+  Double_t fDecayDCAdaughters;          // DECAY
+  Double_t fDecayCosinePointingAngleXY; // DECAY
+  Double_t fDecayRadXY;                 // DECAY
+  Double_t fDecayDecayLength;           // DECAY
+  Double_t fDecayQt;                    // DECAY
+  Double_t fDecayAlpha;                 // DECAY
+  Double_t fDecayRapidity;              // DECAY
+  Double_t fDecayProductIPXY;           // DECAY
+  Double_t fDecayIPneg;                 // DECAY
+  Double_t fDecayIPpos;                 // DECAY
+  Double_t fDecayXneg;                  // DECAY
+  Double_t fDecayXpos;                  // DECAY
+  Int_t    fDecayIDneg;                 // DECAY
+  Int_t    fDecayIDpos;                 // DECAY
+  Int_t    fDecayID;                    // DECAY
+
+  Double_t fDecayMatchOrigin;  // MC DECAY
+  Double_t fDecayMatchPhi;     // MC DECAY
+  Double_t fDecayMatchEta;     // MC DECAY
+  Double_t fDecayMatchPt;      // MC DECAY
+  Double_t fDecayMatchRadXY;   // MC DECAY
+
+  Double_t fDecayMinEta;                   // DECAY CUTS
+  Double_t fDecayMaxEta;                   // DECAY CUTS
+  Double_t fDecayMinPt;                    // DECAY CUTS
+  Double_t fDecayMaxDCAdaughters;          // DECAY CUTS
+  Double_t fDecayMinCosinePointingAngleXY; // DECAY CUTS
+  Double_t fDecayMinQt;                    // DECAY CUTS
+  Bool_t   fDecayAPCutPie;                 // DECAY CUTS
+  Double_t fDecayMinRadXY;                 // DECAY CUTS
+  Double_t fDecayMaxDecayLength;           // DECAY CUTS
+  Double_t fDecayMaxProductIPXY;           // DECAY CUTS
+  Double_t fDecayMaxRapidity;              // DECAY CUTS
+
+  Double_t fDaughterPhi;               // DAUGHTER
+  Double_t fDaughterEta;               // DAUGHTER
+  Double_t fDaughterPt;                // DAUGHTER
+  Int_t    fDaughterNClsTPC;           // DAUGHTER
+  Int_t    fDaughterITSConfig[6];      // DAUGHTER
+  Int_t    fDaughterCharge;            // DAUGHTER
+  Int_t    fDaughterNFClsTPC;          // DAUGHTER
+  Int_t    fDaughterNSClsTPC;          // DAUGHTER
+  Double_t fDaughterChi2PerNClsTPC;    // DAUGHTER
+  Double_t fDaughterXRows;             // DAUGHTER
+  Float_t  fDaughterImpactParameterXY; // DAUGHTER
+  Float_t  fDaughterImpactParameterZ;  // DAUGHTER
+  UInt_t   fDaughterStatus;            // DAUGHTER
+  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
+  Double_t fDaughterMatchPt;                // MC DAUGHTER
+  Float_t  fDaughterMatchImpactParameterXY; // MC DAUGHTER
+  Float_t  fDaughterMatchImpactParameterZ;  // MC DAUGHTER
+
+  Bool_t   fDaughterUnTag;             // UNTAG PROCEDURE
+
+  Double_t fDaughterMinEta;               // DAUGHTER CUTS
+  Double_t fDaughterMaxEta;               // DAUGHTER CUTS
+  Double_t fDaughterMinPt;                // DAUGHTER CUTS
+  Int_t    fDaughterMinNClsTPC;           // DAUGHTER CUTS
+  Int_t    fDaughterMinXRows;             // DAUGHTER CUTS
+  Double_t fDaughterMaxChi2PerNClsTPC;    // DAUGHTER CUTS
+  Double_t fDaughterMinXRowsOverNClsFTPC; // DAUGHTER CUTS
+  Double_t fDaughterMinImpactParameterXY; // DAUGHTER CUTS
+  Double_t fDaughterMaxNSigmaPID;         // DAUGHTER CUTS
+
+  ClassDef(AliAnalysisTaskFlowStrange, 6);
+};
+#endif