]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/SPECTRA/AliProtonAnalysisBase.h
Removing deprecated linearization and MC rescaling (now part of the centrality framework)
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliProtonAnalysisBase.h
index c19cfde291e8e2b002da8921d50e43aec2c64eab..b7b94ddd2a97d1dadb2fd323f6b12bbb84b55d8b 100644 (file)
 #include "TString.h"
 class TF1;
 class TCanvas;
+class TList;
 
+#include "AliPhysicsSelection.h"
+#include "AliBackgroundSelection.h"
 #include "AliPID.h"
 class AliESDEvent;
 class AliESDtrack;
@@ -26,8 +29,8 @@ class AliESDVertex;
 class AliProtonAnalysisBase : public TObject {
  public:
   enum TriggerMode { kMB1 = 0, kMB2, kSPDFASTOR };
-  enum AnalysisMode { kInvalid = -1, kTPC = 0, kHybrid, kGlobal };
-  enum PIDMode { kBayesian = 0, kRatio, kSigma1, kSigma2 };
+  enum AnalysisMode { kInvalid = -1, kTPC = 0, kHybrid, kFullHybrid, kGlobal };
+  enum PIDMode { kBayesian = 0, kRatio, kSigma};
 
   AliProtonAnalysisBase();
   virtual ~AliProtonAnalysisBase();
@@ -35,7 +38,8 @@ class AliProtonAnalysisBase : public TObject {
   void SetAnalysisLevel(const char* type) {fProtonAnalysisLevel = type;}
   void SetAnalysisMode(AnalysisMode analysismode) {fProtonAnalysisMode = analysismode;}
   void SetEtaMode() {fAnalysisEtaMode = kTRUE;}
-  void SetTriggerMode(TriggerMode triggermode) {fTriggerMode = triggermode;}
+  void SetTriggerMode(TriggerMode triggermode) {
+    fAnalysisMC = kTRUE; fTriggerMode = triggermode;}
   void SetPIDMode(PIDMode pidmode) {fProtonPIDMode = pidmode;}
 
   const char *GetAnalysisLevel() {return fProtonAnalysisLevel.Data();}
@@ -43,6 +47,7 @@ class AliProtonAnalysisBase : public TObject {
   Bool_t GetEtaMode() const {return fAnalysisEtaMode;}
   TriggerMode GetTriggerMode() const {return fTriggerMode;}
   PIDMode GetPIDMode() const {return fProtonPIDMode;}
+  Bool_t GetMCAnalysisMode() {return fAnalysisMC;}
 
   const  AliESDVertex *GetVertex(AliESDEvent *esd,
                                 AnalysisMode mode,
@@ -54,6 +59,9 @@ class AliProtonAnalysisBase : public TObject {
   Double_t GetVxMax() const {return fVxMax;}
   Double_t GetVyMax() const {return fVyMax;}
   Double_t GetVzMax() const {return fVzMax;}
+  void SetMinNumOfContributors(Int_t nContributors) {
+    fMinNumOfContributors = nContributors;}
+  Int_t GetMinNumOfContributors() {return fMinNumOfContributors;}
 
   void SetPhaseSpace(Int_t nBinsX, Double_t gXmin, Double_t gXmax,
                     Int_t nBinsY, Double_t gYmin, Double_t gYmax) {
@@ -67,23 +75,42 @@ class AliProtonAnalysisBase : public TObject {
   Double_t GetMaxX() const {return fMaxX;}
   Double_t GetMaxY() const {return fMaxY;}
 
-  static Bool_t IsEventTriggered(const AliESDEvent *esd,
-                                 TriggerMode trigger = kMB2);
-  Bool_t IsAccepted(AliESDEvent *esd,
-                   const AliESDVertex *vertex, 
-                   AliESDtrack *track);
+  //Trigger
+  Bool_t IsOnlineTriggerUsed() {return kUseOnlineTrigger;}
+  void UseOnlineTrigger() {kUseOnlineTrigger = kTRUE;}
+  Bool_t IsEventTriggered(const AliESDEvent *esd,
+                         TriggerMode trigger = kMB2);
+  void OfflineTriggerInit() {
+    kUseOfflineTrigger = kTRUE;
+    fPhysicsSelection = new AliPhysicsSelection();
+    fPhysicsSelection->AddBackgroundIdentification(new AliBackgroundSelection());
+    fPhysicsSelection->SetAnalyzeMC(fAnalysisMC);
+  }
+  Bool_t IsOfflineTriggerUsed() {return kUseOfflineTrigger;}
+  AliPhysicsSelection *GetPhysicsSelectionObject() {return fPhysicsSelection;}
+
+  Bool_t IsPrimary(AliESDEvent *esd,
+                  const AliESDVertex *vertex, 
+                  AliESDtrack *track);
+  Bool_t IsAccepted(AliESDtrack *track);
   Bool_t IsInPhaseSpace(AliESDtrack *track);
 
   Float_t GetSigmaToVertex(AliESDtrack* esdTrack) const; 
   Double_t Rapidity(Double_t Px, Double_t Py, Double_t Pz) const;
   
   //Cut functions
+  void    SetPointOnSPDLayers() {fPointOnSPDLayersFlag = kTRUE;}
+  void    SetPointOnSDDLayers() {fPointOnSDDLayersFlag = kTRUE;}
+  void    SetPointOnSSDLayers() {fPointOnSSDLayersFlag = kTRUE;}
   void    SetPointOnITSLayer1() {fPointOnITSLayer1Flag = kTRUE;}
   void    SetPointOnITSLayer2() {fPointOnITSLayer2Flag = kTRUE;}
   void    SetPointOnITSLayer3() {fPointOnITSLayer3Flag = kTRUE;}
   void    SetPointOnITSLayer4() {fPointOnITSLayer4Flag = kTRUE;}
   void    SetPointOnITSLayer5() {fPointOnITSLayer5Flag = kTRUE;}
   void    SetPointOnITSLayer6() {fPointOnITSLayer6Flag = kTRUE;}
+  Bool_t  IsUsedPointOnSPDLayer() const {return fPointOnSPDLayersFlag;}
+  Bool_t  IsUsedPointOnSDDLayer() const {return fPointOnSDDLayersFlag;}
+  Bool_t  IsUsedPointOnSSDLayer() const {return fPointOnSSDLayersFlag;}
   Bool_t  IsUsedPointOnITSLayer1() const {return fPointOnITSLayer1Flag;}
   Bool_t  IsUsedPointOnITSLayer2() const {return fPointOnITSLayer2Flag;}
   Bool_t  IsUsedPointOnITSLayer3() const {return fPointOnITSLayer3Flag;}
@@ -188,6 +215,10 @@ class AliProtonAnalysisBase : public TObject {
   Bool_t  IsUsedMaxDCA3D() const {return fMaxDCA3DFlag;}
   Double_t   GetMaxDCA3D() const {return fMaxDCA3D;}
 
+  void SetPtDependentDCAxy(Int_t nSigma, Double_t p0, 
+                          Double_t p1, Double_t p2);
+  Bool_t  IsUsedPtDependentDCAxy() const {return fPtDependentDcaXYFlag;}
+
   void    SetMaxDCA3DTPC(Double_t maxDCA3D) {
     fMaxDCA3DTPC = maxDCA3D;
     fMaxDCA3DTPCFlag = kTRUE;
@@ -217,6 +248,8 @@ class AliProtonAnalysisBase : public TObject {
   Bool_t  IsUsedESDpid() const {return fESDpidFlag;}
   void    SetTPCpid() {fTPCpidFlag = kTRUE;}
   Bool_t  IsUsedTPCpid() const {return fTPCpidFlag;}
+  void    SetTOFpid() {fTOFpidFlag = kTRUE;}
+  Bool_t  IsUsedTOFpid() const {return fTOFpidFlag;}
 
   TCanvas *GetListOfCuts();
 
@@ -224,7 +257,8 @@ class AliProtonAnalysisBase : public TObject {
   Bool_t IsProton(AliESDtrack *track);
   void SetNSigma(Int_t nsigma) {fNSigma = nsigma;}  
   Int_t GetNSigma() const {return fNSigma;}
-  void SetdEdxBandInfo(const char* filename);
+  void SetRatio(Double_t ratio) {fNRatio = ratio;}
+  Double_t GetRatio() {return fNRatio;}
   void SetPriorProbabilities(Double_t * const partFrac) {
     for(Int_t i = 0; i < AliPID::kSPECIESN; i++) fPartFrac[i] = partFrac[i];} 
   void SetPriorProbabilityFunctions(TF1 *const felectron, 
@@ -238,22 +272,32 @@ class AliProtonAnalysisBase : public TObject {
   }
   Bool_t IsPriorProbabilityFunctionUsed() const {return fFunctionProbabilityFlag;}
   Double_t GetParticleFraction(Int_t i, Double_t p);
-  Double_t Bethe(Double_t bg) const;
+  //Double_t Bethe(Double_t bg) const;
 
   void SetDebugMode() {fDebugMode = kTRUE;}
   Bool_t GetDebugMode() const {return fDebugMode;}
 
+  void SetRunQA() {fRunQAAnalysis = kTRUE;}
+  Bool_t IsQARun() {return fRunQAAnalysis;}
+  TList *GetVertexQAList() {return fListVertexQA;}
+
  private:
   AliProtonAnalysisBase(const AliProtonAnalysisBase&); // Not implemented
   AliProtonAnalysisBase& operator=(const AliProtonAnalysisBase&); // Not implemented
 
   TString fProtonAnalysisLevel;//"ESD", "AOD" or "MC"
+  Bool_t fAnalysisMC; //kTRUE if MC analysis while reading the ESDs
   TriggerMode fTriggerMode; //Trigger mode
+  Bool_t kUseOnlineTrigger; //use the online trigger or not
+  Bool_t kUseOfflineTrigger; //use the offline trigger or not
+  AliPhysicsSelection *fPhysicsSelection; //Trigger selection: offline
   AnalysisMode fProtonAnalysisMode; //Analysis mode: TPC-Hybrid-Global
   PIDMode fProtonPIDMode; //PID mode: Bayesian-dE/dx ratio-Nsigma areas
   Bool_t fAnalysisEtaMode; //run the analysis in eta or y
 
+  Bool_t fRunQAAnalysis; //boolnean to indicate to run the QA or not
   Double_t fVxMax, fVyMax, fVzMax; //vertex diamond constrain 
+  Int_t fMinNumOfContributors;//min number of contributors
 
   Int_t fNBinsX; //number of bins in y or eta
   Double_t fMinX, fMaxX; //min & max value of y or eta
@@ -281,17 +325,22 @@ class AliProtonAnalysisBase : public TObject {
   Bool_t fMaxDCA3DFlag, fMaxDCA3DTPCFlag; //shows if this cut is used or not
   Bool_t fMaxConstrainChi2Flag; //shows if this cut is used or not
   Bool_t fITSRefitFlag, fTPCRefitFlag; //shows if this cut is used or not
-  Bool_t fESDpidFlag, fTPCpidFlag; //shows if this cut is used or not
+  Bool_t fESDpidFlag, fTPCpidFlag, fTOFpidFlag; //shows if this cut is used or not
+  Bool_t fPointOnSPDLayersFlag;//shows if this cut is used or not
+  Bool_t fPointOnSDDLayersFlag;//shows if this cut is used or not
+  Bool_t fPointOnSSDLayersFlag;//shows if this cut is used or not
   Bool_t fPointOnITSLayer1Flag, fPointOnITSLayer2Flag; //shows if this cut is used or not
   Bool_t fPointOnITSLayer3Flag, fPointOnITSLayer4Flag; //shows if this cut is used or not
   Bool_t fPointOnITSLayer5Flag, fPointOnITSLayer6Flag; //shows if this cut is used or not
   Bool_t fMinTPCdEdxPointsFlag; //shows if this cut is used or not
+  TF1  *fPtDependentDcaXY; //pt dependence dca cut (xy)
+  Bool_t fPtDependentDcaXYFlag; //shows if this cut is used or not
+  Int_t fNSigmaDCAXY; //n-sigma dca xy cut (pt dependent)
 
   //pid
   Bool_t fFunctionProbabilityFlag; //flag: kTRUE if functions used
   Int_t fNSigma; //N-sigma cut in the dE/dx band
-  Double_t fdEdxMean[24]; //mean values of the dE/dx distributions for the proton band - P slices
-  Double_t fdEdxSigma[24]; //sigma values of the dE/dx distributions for the proton band - P slices
+  Double_t fNRatio; //min value of the ratio of the measured dE/dx vs the expected
   Double_t fPartFrac[10]; //prior probabilities
   TF1  *fElectronFunction; //momentum dependence of the prior probs
   TF1  *fMuonFunction; //momentum dependence of the prior probs
@@ -302,6 +351,9 @@ class AliProtonAnalysisBase : public TObject {
   //Debug
   Bool_t fDebugMode; //Enable the debug mode
 
+  //QA list
+  TList *fListVertexQA; //vertex QA list
+
   ClassDef(AliProtonAnalysisBase,1);
 };