]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGLF/SPECTRA/PiKaPr/TestAOD/AliSpectraAODEventCuts.h
Q vector selection in MC
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / AliSpectraAODEventCuts.h
index 77b8e518c1ba58804b96653bafa1618b6219cee2..f412f6e3b0f9bed2778b89e42afdefa30f6754dc 100644 (file)
 
 class AliAODEvent;
 class AliSpectraAODTrackCuts;
-//class AliSpectraAODHistoManager;
+class TProfile;
 
-#include "TH1I.h"
 #include "TNamed.h"
+#include "TFile.h"
+#include "TKey.h"
+#include "AliOADBContainer.h"
+#include "AliVEvent.h"
 
 class AliSpectraAODEventCuts : public TNamed
 {
@@ -25,79 +28,190 @@ class AliSpectraAODEventCuts : public TNamed
   enum {  kProcessedEvents = 0,kPhysSelEvents,kAcceptedEvents, kVtxRange, kVtxCentral, kVtxNoEvent, kQVector, kNVtxCuts};
 
   // Constructors
- AliSpectraAODEventCuts() : TNamed(), fAOD(0), fTrackBits(0), fIsMC(0), fUseCentPatchAOD049(0), fIsSelected(0), fCentralityCutMin(0), fCentralityCutMax(0), fQVectorPosCutMin(0), fQVectorPosCutMax(0), fQVectorNegCutMin(0), fQVectorNegCutMax(0), fHistoCuts(0),fHistoVtxBefSel(0),fHistoVtxAftSel(0),fHistoEtaBefSel(0),fHistoEtaAftSel(0),fHistoNChAftSel(0),fHistoQVectorPos(0),fHistoQVectorNeg(0) {}
+ AliSpectraAODEventCuts() : 
+  TNamed(),
+    fAOD(0),
+    fSelectBit(AliVEvent::kMB),
+    fCentralityMethod(),
+    fTrackBits(1),
+    fIsMC(0),
+    fIsLHC10h(0),
+    fTrackCuts(0),
+    fIsSelected(0),
+    fCentralityCutMin(0.),
+    fCentralityCutMax(999),
+    fQVectorCutMin(-999.),
+    fQVectorCutMax(999.),
+    fVertexCutMin(-10.),
+    fVertexCutMax(10.),
+    fMultiplicityCutMin(-999.),
+    fMultiplicityCutMax(99999.),
+    fqV0C(-999.),
+    fqV0A(-999.),
+    fqV0Cx(-999.),
+    fqV0Ax(-999.),
+    fqV0Cy(-999.),
+    fqV0Ay(-999.),
+    fPsiV0C(-999.),
+    fPsiV0A(-999.),
+    fCent(-999.),
+    fOutput(0),
+    fCalib(0),
+    fRun(-1),
+    fMultV0(0),
+    fV0Cpol1(-1),
+    fV0Cpol2(-1),
+    fV0Cpol3(-1),
+    fV0Cpol4(-1),
+    fV0Apol1(-1),
+    fV0Apol2(-1),
+    fV0Apol3(-1),
+    fV0Apol4(-1),
+    fQvecIntList(0),
+    fQvecIntegral(0), 
+    fSplineArrayV0A(0),
+    fSplineArrayV0C(0)
+      {
+       for (Int_t i = 0; i<10; i++){
+         fMeanQxa2[i] = -1;
+         fMeanQya2[i] = -1;
+         fMeanQxc2[i] = -1;
+         fMeanQyc2[i] = -1;   
+       }
+      }
   AliSpectraAODEventCuts(const char *name);
   virtual  ~AliSpectraAODEventCuts() {}
   
-  void SetIsMC(Bool_t isMC = kFALSE)    {fIsMC = isMC; };
-  Bool_t GetIsMC()           const           { return fIsMC;};
+  void  SetEventSelectionBit( UInt_t val )        { fSelectBit = val;  }
+  void  SetCentralityMethod(const char* method) { fCentralityMethod = method; }
+  void  SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
+  void  SetIsMC(Bool_t isMC = kFALSE)    {fIsMC = isMC; };
+  void  SetIsLHC10h(Bool_t isLHC10h = kFALSE)    {fIsLHC10h = isLHC10h; };
+  void  SetCentralityCutMin(Float_t cut)  { fCentralityCutMin = cut; }
+  void  SetCentralityCutMax(Float_t cut)  { fCentralityCutMax = cut; }
+  void  SetQVectorCut(Float_t min,Float_t max)  { fQVectorCutMin = min; fQVectorCutMax = max; }
+  void  SetVertexCut(Float_t min,Float_t max)  { fVertexCutMin = min; fVertexCutMax = max; }
+  void  SetMultiplicityCut(Float_t min,Float_t max)  { fMultiplicityCutMin = min; fMultiplicityCutMax = max; }
+  
+  UInt_t GetEventSelectionBit()   const           { return fSelectBit;}
+  TString GetCentralityMethod()   const           { return fCentralityMethod;}
+  UInt_t GetTrackType()          const    { return fTrackBits;}
+  Bool_t GetIsMC()                const           { return fIsMC;}
+  Bool_t GetIsLHC10h()                const           { return fIsLHC10h;}
+  Float_t  GetCentralityMin()      const {  return fCentralityCutMin; }
+  Float_t  GetCentralityMax()     const {  return fCentralityCutMax; }
+  Float_t  GetQVectorCutMin()    const {  return fQVectorCutMin; }
+  Float_t  GetQVectorCutMax()   const {  return fQVectorCutMax; }
+  Float_t  GetVertexCutMin()     const {  return fVertexCutMin; }
+  Float_t  GetVertexCutMax()    const {  return fVertexCutMax; }
+  Float_t  GetMultiplicityCutMin()  const {  return fMultiplicityCutMin; }
+  Float_t  GetMultiplicityCutMax()  const {  return fMultiplicityCutMax; }
+  Double_t  GetqV0C()  const {  return fqV0C; }
+  Double_t  GetqV0A()  const {  return fqV0A; }
+  Double_t  GetqV0Cx()  const {  return fqV0Cx; }
+  Double_t  GetqV0Ax()  const {  return fqV0Ax; }
+  Double_t  GetqV0Cy()  const {  return fqV0Cy; }
+  Double_t  GetqV0Ay()  const {  return fqV0Ay; }
+  Double_t  GetPsiV0C()  const {  return fPsiV0C; }
+  Double_t  GetPsiV0A()  const {  return fPsiV0A; }
+  Double_t  GetCent()  const {  return fCent; }
+  TList *GetOutputList()       {return fOutput;};
+  TList *GetCalibList()       {return fCalib;};
+  void SetCalibFile(TFile *f)    {
+    TIter next(f->GetListOfKeys());
+    TKey *key;
+    while ((key = (TKey*)next())) {
+      AliOADBContainer * obj=(AliOADBContainer*)key->ReadObj();
+      fCalib->Add(obj);
+    }
+  };
   
-  void SetUseCentPatchAOD049(Bool_t useCentPatchAOD049 = kFALSE)    {fUseCentPatchAOD049 = useCentPatchAOD049; };
-  Bool_t GetUseCentPatchAOD049()           const           { return fUseCentPatchAOD049;};
+  void SetQvecIntegralFile(TFile *f)    {
+    TIter next(f->GetListOfKeys());
+    TKey *key;
+    while ((key = (TKey*)next())) {
+      TH2F * h=(TH2F*)key->ReadObj();
+      fQvecIntList->Add(h);
+    }
+  };
   
   // Methods
   Bool_t IsSelected(AliAODEvent * aod,AliSpectraAODTrackCuts     *trackcuts);
   Bool_t CheckVtxRange();
   Bool_t CheckCentralityCut();
+  Bool_t CheckMultiplicityCut();
   Bool_t CheckQVectorCut();
-  void  SetCentralityCutMin(Float_t cut)  { fCentralityCutMin = cut; }
-  void  SetCentralityCutMax(Float_t cut)  { fCentralityCutMax = cut; }
-  void  SetQVectorPosCut(Float_t min,Float_t max)  { fQVectorPosCutMin = min; fQVectorPosCutMax = max; }
-  void  SetQVectorNegCut(Float_t min,Float_t max)  { fQVectorNegCutMin = min; fQVectorNegCutMax = max; }
-  void SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
-
-
-  UInt_t GetTrackType()  const    { return fTrackBits;}
-  TH1I * GetHistoCuts()         {  return fHistoCuts; }
-  TH1F * GetHistoVtxBefSel()         {  return fHistoVtxBefSel; }
-  TH1F * GetHistoVtxAftSel()         {  return fHistoVtxAftSel; }
-  TH1F * GetHistoEtaBefSel()         {  return fHistoEtaBefSel; }
-  TH1F * GetHistoEtaAftSel()         {  return fHistoEtaAftSel; }
-  TH1F * GetHistoNChAftSel()         {  return fHistoNChAftSel; }
-  TH1F * GetHistoQVectorPos()         {  return fHistoQVectorPos; }
-  TH1F * GetHistoQVectorNeg()         {  return fHistoQVectorNeg; }
-  Float_t  GetCentralityMin()  const {  return fCentralityCutMin; }
-  Float_t  GetCentralityMax()  const {  return fCentralityCutMax; }
-  Float_t  GetQVectorPosCutMin()  const {  return fQVectorPosCutMin; }
-  Float_t  GetQVectorPosCutMax()  const {  return fQVectorPosCutMax; }
-  Float_t  GetQVectorNegCutMin()  const {  return fQVectorNegCutMin; }
-  Float_t  GetQVectorNegCutMax()  const {  return fQVectorNegCutMax; }
+  Double_t CalculateQVectorLHC10h();
   void   PrintCuts();
-  Double_t ApplyCentralityPatchAOD049();
-
-  Float_t  NumberOfEvents()     { return fHistoCuts->GetBinContent(kAcceptedEvents+1); }
-  Float_t  NumberOfProcessedEvents()     { return fHistoCuts->GetBinContent(kProcessedEvents+1); }
-  Float_t  NumberOfPhysSelEvents()     { return fHistoCuts->GetBinContent(kPhysSelEvents+1); }
+  Bool_t OpenInfoCalbration(Int_t run);
+  Short_t  GetCentrCode(AliVEvent* ev);
+  
+  Float_t  NumberOfEvents()     { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kAcceptedEvents+1); }
+  Float_t  NumberOfProcessedEvents()     { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kProcessedEvents+1); }
+  Float_t  NumberOfPhysSelEvents()     { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kPhysSelEvents+1); }
 
   Long64_t Merge(TCollection* list);
 
+  Double_t GetQvecPercentile(Int_t v0side);  
+  Bool_t CheckSplineArray(TObjArray * splarr);
+  TObjArray *GetSplineArrayV0A() { return fSplineArrayV0A; }
+  TObjArray *GetSplineArrayV0C() { return fSplineArrayV0C; }
+  
+  Double_t CalculateQVectorMC(Int_t v0side);
 
  private:
   
   AliAODEvent     *fAOD;              //! AOD event
+  UInt_t           fSelectBit;            // Select events according to AliAnalysisTaskJetServices bit maps 
+  TString          fCentralityMethod;     // Method to determine centrality
   UInt_t           fTrackBits;       // Type of track to be used in the Qvector calculation
-  Bool_t          fIsMC;// true if processing MC
-  Bool_t          fUseCentPatchAOD049;// Patch for centrality selection on AOD049
+  Bool_t          fIsMC; // true if processing MC
+  Bool_t          fIsLHC10h; // for LHC10h
   AliSpectraAODTrackCuts     *fTrackCuts;              //! track cuts
   Bool_t          fIsSelected;        // True if cuts are selected
   Float_t         fCentralityCutMin;     // minimum centrality percentile
   Float_t         fCentralityCutMax;     // maximum centrality percentile
-  Float_t         fQVectorPosCutMin;     // minimum qvecPos
-  Float_t         fQVectorPosCutMax;     // maximum qvecPos
-  Float_t         fQVectorNegCutMin;     // minimum qvecNeg
-  Float_t         fQVectorNegCutMax;     // maximum qvecNeg
-  TH1I            *fHistoCuts;        // Cuts statistics
-  TH1F            *fHistoVtxBefSel;        // Vtx distr before event selection
-  TH1F            *fHistoVtxAftSel;        // Vtx distr after event selection
-  TH1F            *fHistoEtaBefSel;        // Eta distr before event selection
-  TH1F            *fHistoEtaAftSel;        // Eta distr after event selection
-  TH1F            *fHistoNChAftSel;        // NCh distr after event selection
-  TH1F            *fHistoQVectorPos;        // QVectorPos
-  TH1F            *fHistoQVectorNeg;        // QVectorNeg
+  Float_t         fQVectorCutMin;     // minimum qvecPos
+  Float_t         fQVectorCutMax;     // maximum qvecPos
+  Float_t         fVertexCutMin;     // minimum vertex position
+  Float_t         fVertexCutMax;     // maximum vertex position
+  Float_t         fMultiplicityCutMin;     // minimum multiplicity position
+  Float_t         fMultiplicityCutMax;     // maximum multiplicity position
+  Double_t       fqV0C;            //q vector in the VZERO-C
+  Double_t       fqV0A;            //q vector in the VZERO-A
+  Double_t       fqV0Cx;            //q vector in the VZERO-C, x-comp
+  Double_t       fqV0Ax;            //q vector in the VZERO-A, x-comp
+  Double_t       fqV0Cy;            //q vector in the VZERO-C, y-comp
+  Double_t       fqV0Ay;            //q vector in the VZERO-A, y-comp
+  Double_t       fPsiV0C;            //EP from VZERO-C
+  Double_t       fPsiV0A;            //EP from VZERO-A
+  Double_t       fCent;            //centrality according to fCentralityMethod
+  TList            *fOutput;        // output list 
+  TList            *fCalib;        // output list 
+  Int_t fRun;                       // run number - for calibration
+  TProfile* fMultV0;                //! profile from V0 multiplicity
+  Float_t fV0Cpol1;                 // mean V0C multiplicity - from fit profile - ring 1
+  Float_t fV0Cpol2;                 // mean V0C multiplicity - from fit profile - ring 2
+  Float_t fV0Cpol3;                 // mean V0C multiplicity - from fit profile - ring 3
+  Float_t fV0Cpol4;                 // mean V0C multiplicity - from fit profile - ring 4
+  Float_t fV0Apol1;                 // mean V0A multiplicity - from fit profile - ring 1
+  Float_t fV0Apol2;                 // mean V0A multiplicity - from fit profile - ring 2
+  Float_t fV0Apol3;                 // mean V0A multiplicity - from fit profile - ring 3
+  Float_t fV0Apol4;                 // mean V0A multiplicity - from fit profile - ring 4
+  Float_t fMeanQxa2[10];             // mean Qxa values for centr - recentering
+  Float_t fMeanQya2[10];             // mean Qya values for centr - recentering
+  Float_t fMeanQxc2[10];             // mean Qxc values for centr - recentering
+  Float_t fMeanQyc2[10];             // mean Qyc values for centr - recentering
+
+  TList *fQvecIntList;            // List with Qvec Integrated vs centrality distribution
+  TH2D * fQvecIntegral;           // ! Integrated Qvec distribution
+  TObjArray * fSplineArrayV0A;    // TSpline array for VZERO-A
+  TObjArray * fSplineArrayV0C;    // TSpline array for VZERO-C
+
   AliSpectraAODEventCuts(const AliSpectraAODEventCuts&);
   AliSpectraAODEventCuts& operator=(const AliSpectraAODEventCuts&);
   
-  ClassDef(AliSpectraAODEventCuts, 2);
+  ClassDef(AliSpectraAODEventCuts, 6);
   
 };
 #endif