]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG2/SPECTRA/AliAnalysisTaskCheckCascade.h
Changes in the dca binning
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliAnalysisTaskCheckCascade.h
index 8e57ff8ee97291e6ceb2a41c57846d32e0282eab..342a5486ae69627a08e25cc770dc1d46e1b66b1a 100644 (file)
@@ -6,16 +6,28 @@
 //-----------------------------------------------------------------
 //                 AliAnalysisTaskCheckCascade class
 //            (AliAnalysisTaskCheckCascade)
-//            This task is for QAing the Cascades from ESD and AOD
-//              Origin:  AliAnalysisTaskESDCheckV0 by B.H. Nov2007, hippolyt@in2p3.fr
+//            This task has four roles :
+//              1. QAing the Cascades from ESD and AOD
+//                 Origin:  AliAnalysisTaskESDCheckV0 by B.H. Nov2007, hippolyt@in2p3.fr
+//              2. Prepare the plots which stand as raw material for yield extraction (wi/wo PID)
+//              3. Supply an AliCFContainer meant to define the optimised topological selections
+//              4. Rough azimuthal correlation study (Eta, Phi)
 //            Adapted to Cascade : A.Maire Mar2008, antonin.maire@ires.in2p3.fr
-//           Modified :           A.Maire Jun2009, antonin.maire@ires.in2p3.fr
+//            Modified :           A.Maire Mar2010, antonin.maire@ires.in2p3.fr
 //-----------------------------------------------------------------
 
 class TList;
 class TH1F;
 class TH2F;
+class TH3F;
+class TVector3;
+class THnSparse;
  
+class AliESDpid;
+class AliESDEvent;
+class AliPhysicsSelection;
+class AliCFContainer;
+
 
 #include "TString.h"
 
@@ -25,54 +37,106 @@ class AliAnalysisTaskCheckCascade : public AliAnalysisTaskSE {
  public:
   AliAnalysisTaskCheckCascade();
   AliAnalysisTaskCheckCascade(const char *name);
-  virtual ~AliAnalysisTaskCheckCascade() {}
+  virtual ~AliAnalysisTaskCheckCascade();
   
   virtual void   UserCreateOutputObjects();
   virtual void   UserExec(Option_t *option);
+         void   DoAngularCorrelation(const Char_t   *lCascType, 
+                                           Double_t  lInvMassCascade, 
+                                     const Int_t    *lArrTrackID,
+                                           TVector3 &lTVect3MomXi, 
+                                           Double_t  lEtaXi);
+  virtual Int_t  DoESDTrackWithTPCrefitMultiplicity(const AliESDEvent *lESDevent);
+  
   virtual void   Terminate(Option_t *);
   
-  void SetCollidingSystems(Short_t collidingSystems = 0)     {fCollidingSystems = collidingSystems;}
-  void SetAnalysisType    (const char* analysisType = "ESD") {fAnalysisType = analysisType;}
-    
- private:
-       TString fAnalysisType;                          // "ESD" or "AOD" analysis type 
-       Short_t fCollidingSystems;                      // 0 = pp collisions or 1 = AA collisions
-       
-
-               TList   *fListHistCascade;              //! List of Cascade histograms
-       
-       // - General histos (filled for any event)
-       TH1F    *fHistTrackMultiplicity;                //! Track multiplicity distribution
-       TH1F    *fHistCascadeMultiplicity;              //! Cascade multiplicity distribution
-
+  void SetCollidingSystems           (Short_t collidingSystems          = 0    ) { fCollidingSystems = collidingSystems;}
+  void SetAnalysisType               (const char* analysisType          = "ESD") { fAnalysisType     = analysisType;}
+  void SetRelaunchV0CascVertexers    (Bool_t rerunV0CascVertexers       = 0    ) { fkRerunV0CascVertexers       =  rerunV0CascVertexers;   }
+  void SetQualityCutZprimVtxPos      (Bool_t qualityCutZprimVtxPos      = kTRUE) { fkQualityCutZprimVtxPos      =  qualityCutZprimVtxPos;     }
+  void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE) { fkQualityCutNoTPConlyPrimVtx =  qualityCutNoTPConlyPrimVtx;}
+  void SetQualityCutTPCrefit         (Bool_t qualityCutTPCrefit         = kTRUE) { fkQualityCutTPCrefit         =  qualityCutTPCrefit;        }
+  void SetQualityCut80TPCcls         (Bool_t qualityCut80TPCcls         = kTRUE) { fkQualityCut80TPCcls         =  qualityCut80TPCcls;        }
+  void SetExtraSelections            (Bool_t extraSelections            = 0    ) { fkExtraSelections            =  extraSelections;           }
 
-       // - Vertex Positions
-       TH1F    *fHistVtxStatus;                        //! Is there a tracking vertex in the event ?
 
-               // Vtx coming from the full tracking
-       TH1F    *fHistPosTrkgPrimaryVtxX;               //! primary vertex position distribution in x 
-       TH1F    *fHistPosTrkgPrimaryVtxY;               //! primary vertex position distribution in y
-       TH1F    *fHistPosTrkgPrimaryVtxZ;               //! primary vertex position distribution in z
-       TH1F    *fHistTrkgPrimaryVtxRadius;             //! primary vertex (3D) radius distribution 
-
-               // Best primary Vtx available for the event
-       TH1F    *fHistPosBestPrimaryVtxX;               //! (best) primary vertex position distribution in x 
-       TH1F    *fHistPosBestPrimaryVtxY;               //! (best) primary vertex position distribution in y
-       TH1F    *fHistPosBestPrimaryVtxZ;               //! (best) primary vertex position distribution in z
-       TH1F    *fHistBestPrimaryVtxRadius;             //! (best) primary vertex radius distribution 
-       
-               // Correlation Best Vtx / Full Tracking Vtx
-       TH2F    *f2dHistTrkgPrimVtxVsBestPrimVtx;       //!  Radius of prim. Vtx from tracks Vs Radius of best Prim. Vtx
-       
-       
-       
-       // - Typical histos on the variables used for the selection of cascades
-       TH1F    *fHistEffMassXi;                        //! reconstructed cascade effective mass
-       TH1F    *fHistChi2Xi;                           //! chi2 value
-       TH1F    *fHistDcaXiDaughters;                   //! dca between Xi's daughters
-       TH1F    *fHistDcaBachToPrimVertex;              //! dca of the bachelor track to primary vertex
-       TH1F    *fHistXiCosineOfPointingAngle;          //! cosine of Xi pointing angle in a cascade
-       TH1F    *fHistXiRadius;                         //! (transverse) radius of the cascade vertex 
+ private:
+        // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
+        // your data member object is created on the worker nodes and streaming is not needed.
+        // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
+
+
+        TString         fAnalysisType;                  // "ESD" or "AOD" analysis type        
+        Short_t         fCollidingSystems;              // 0 = pp collisions or 1 = AA collisions
+
+        AliESDpid       *fESDpid;                       // Tool data member to manage the TPC Bethe-Bloch info
+        //TPaveText       *fPaveTextBookKeeping;          // TString to store all the relevant info necessary for book keeping (v0 cuts, cascade cuts, quality cuts, ...)
+
+        Bool_t          fkRerunV0CascVertexers;         // Boolean : kTRUE = relaunch both V0 + Cascade vertexers
+        Bool_t          fkQualityCutZprimVtxPos;        // Boolean : kTRUE = cut on the prim.vtx  z-position
+        Bool_t          fkQualityCutNoTPConlyPrimVtx;   // Boolean : kTRUE = prim vtx should be SPD or Tracking vertex
+        Bool_t          fkQualityCutTPCrefit;           // Boolean : kTRUE = ask for TPCrefit for the 3 daughter tracks
+        Bool_t          fkQualityCut80TPCcls;           // Boolean : kTRUE = ask for 80 TPC clusters for each daughter track
+        Bool_t          fkExtraSelections;              // Boolean : kTRUE = apply tighter selections, before starting the analysis
+        
+        Double_t        fAlephParameters[5];            // Array to store the 5 param values for the TPC Bethe-Bloch parametrisation
+        Double_t        fV0Sels[7];                     // Array to store the 7 values for the different selections V0 related (if fkRerunV0CascVertexers)
+        Double_t        fCascSels[8];                   // Array to store the 8 values for the different selections Casc. related (if fkRerunV0CascVertexers)
+
+
+             TList      *fListHistCascade;              //! List of Cascade histograms
+        
+        // - General histos (filled before the trigger selection)
+        TH1F    *fHistCascadeMultiplicityBeforeTrigSel; //! Cascade multiplicity distribution
+         
+        // - General histos (filled for any triggered event)
+        TH1F    *fHistCascadeMultiplicityForTrigEvt;              //! Cascade multiplicity distribution
+        TH1F    *fHistTrackMultiplicityForTrigEvt;                //! Track multiplicity distribution (without any cut = include ITS stand-alone + global tracks)
+        TH1F    *fHistTPCrefitTrackMultiplicityForTrigEvt;        //! Track multiplicity distribution for tracks with TPCrefit
+        
+
+        // - General histos (filled for events selected in this analysis (|z(prim. vtx)| < 10 cm + prim vtx = SPD or Tracking) )
+        TH1F    *fHistCascadeMultiplicityForSelEvt;     //! Cascade multiplicity distribution
+        TH1F    *fHistPosBestPrimaryVtxXForSelEvt;      //! (best) primary vertex position distribution in x 
+        TH1F    *fHistPosBestPrimaryVtxYForSelEvt;      //! (best) primary vertex position distribution in y
+        TH1F    *fHistPosBestPrimaryVtxZForSelEvt;      //! (best) primary vertex position distribution in z
+        
+        
+        
+
+        // - Characteristics for event with >1 cascade : Track Multiplicity, TPC clusters + Prim. vertex positions
+        TH1F   *fHistTPCrefitTrackMultiplicityForCascadeEvt;   //! TPCrefit Track multiplicity distribution for event with >1 cascade candidate (NB: after quality sel. within the task)
+
+        TH1F    *fHistPosV0TPCClusters;                 //! TPC clusters distribution for Positive V0 daughter track
+        TH1F    *fHistNegV0TPCClusters;                 //! TPC clusters distribution for Negative V0 daughter track
+        TH1F    *fHistBachTPCClusters;                  //! TPC clusters distribution for Bachelor             track
+
+        TH1F    *fHistVtxStatus;                        //! Is there a tracking vertex in the cascade event ?
+
+                // Vtx coming from the full tracking, for events containing at least a cascade
+        TH1F    *fHistPosTrkgPrimaryVtxXForCascadeEvt;  //! primary vertex position distribution in x 
+        TH1F    *fHistPosTrkgPrimaryVtxYForCascadeEvt;  //! primary vertex position distribution in y
+        TH1F    *fHistPosTrkgPrimaryVtxZForCascadeEvt;  //! primary vertex position distribution in z
+        TH1F    *fHistTrkgPrimaryVtxRadius;             //! primary vertex (3D) radius distribution 
+
+                // Best primary Vtx available, for events containing at least a cascade
+        TH1F    *fHistPosBestPrimaryVtxXForCascadeEvt;  //! (best) primary vertex position distribution in x 
+        TH1F    *fHistPosBestPrimaryVtxYForCascadeEvt;  //! (best) primary vertex position distribution in y
+        TH1F    *fHistPosBestPrimaryVtxZForCascadeEvt;  //! (best) primary vertex position distribution in z
+        TH1F    *fHistBestPrimaryVtxRadius;             //! (best) primary vertex radius distribution 
+
+                // Correlation Best Vtx / Full Tracking Vtx
+        TH2F    *f2dHistTrkgPrimVtxVsBestPrimVtx;       //!  Radius of prim. Vtx from tracks Vs Radius of best Prim. Vtx
+
+
+// PART 1 : Adavanced QA
+// - Typical histos on the variables used for the selection of cascades
+        TH1F    *fHistEffMassXi;                       //! reconstructed cascade effective mass
+        TH1F    *fHistChi2Xi;                          //! chi2 value
+        TH1F    *fHistDcaXiDaughters;                  //! dca between Xi's daughters
+        TH1F    *fHistDcaBachToPrimVertex;             //! dca of the bachelor track to primary vertex
+        TH1F    *fHistXiCosineOfPointingAngle;         //! cosine of Xi pointing angle in a cascade
+        TH1F    *fHistXiRadius;                         //! (transverse) radius of the cascade vertex 
                
        // - Histos about ~ the "V0 selection part" of the cascade,  coming by inheritance from AliESDv0
        TH1F    *fHistMassLambdaAsCascDghter;           //! Test Invariant Mass of Lambda coming from Cascade
@@ -91,22 +155,27 @@ class AliAnalysisTaskCheckCascade : public AliAnalysisTaskSE {
        TH1F    *fHistMassXiPlus;                       //! reconstructed cascade effective mass, under Xi+ hyp.
        TH1F    *fHistMassOmegaMinus;                   //! reconstructed cascade effective mass, under Omega- hyp.
        TH1F    *fHistMassOmegaPlus;                    //! reconstructed cascade effective mass, under Omega+ hyp.
+       
+       TH1F    *fHistMassWithCombPIDXiMinus;           //! reconstructed Xi- effective mass, with bach. comb PID
+       TH1F    *fHistMassWithCombPIDXiPlus;            //! reconstructed Xi+ effective mass, with bach. comb PID
+       TH1F    *fHistMassWithCombPIDOmegaMinus;        //! reconstructed Omega- effective mass, with bach. comb PID
+       TH1F    *fHistMassWithCombPIDOmegaPlus;         //! reconstructed Omega+ effective mass, with bach. comb PID
 
        // - Complements for QA
-       TH1F    *fHistXiTransvMom;                      //! Xi transverse momentum 
-       TH1F    *fHistXiTotMom;                         //! Xi momentum norm
+        TH1F   *fHistXiTransvMom;                      //! Xi transverse momentum, around the mass peak of Xi-/+ 
+       TH1F    *fHistXiTotMom;                         //! Xi momentum norm, around the mass peak of Xi-/+
        
-       TH1F    *fHistBachTransvMom;                    //! bachelor transverse momentum 
-       TH1F    *fHistBachTotMom;                       //! bachelor momentum norm
-                               
+       TH1F    *fHistBachTransvMomXi;                  //! bachelor transverse momentum, for cand. around the mass peak of Xi-/+
+       TH1F    *fHistBachTotMomXi;                     //! bachelor momentum norm, for cand. around the mass peak of Xi-/+
+
        TH1F    *fHistChargeXi;                         //! Charge sign of the cascade candidate
        TH1F    *fHistV0toXiCosineOfPointingAngle;      //! Cos. of Pointing angle between the V0 mom and the Xi-V0 vtx line
   
-       TH1F    *fHistRapXi;                            //! rapidity of Xi candidates
-       TH1F    *fHistRapOmega;                         //! rapidity of Omega candidates
-       TH1F    *fHistEta;                              //! eta distrib. of all the cascade candidates
-       TH1F    *fHistTheta;                            //! theta distrib. of all the cascade candidates
-       TH1F    *fHistPhi;                              //! phi distrib. of all the cascade candidates
+       TH1F    *fHistRapXi;                            //! rapidity of Xi candidates, around the mass peak of Xi-/+
+       TH1F    *fHistRapOmega;                         //! rapidity of Omega candidates, around the mass peak of Omega-/+
+       TH1F    *fHistEtaXi;                            //! eta distrib. of all the cascade candidates, around the mass peak of Xi-/+
+       TH1F    *fHistThetaXi;                          //! theta distrib. of all the cascade candidates, around the mass peak of Xi-/+
+       TH1F    *fHistPhiXi;                            //! phi distrib. of all the cascade candidates, around the mass peak of Xi-/+
        
        TH2F    *f2dHistArmenteros;                     //! alpha(casc. cand.) Vs PtArm(casc. cand.)
        
@@ -120,15 +189,53 @@ class AliAnalysisTaskCheckCascade : public AliAnalysisTaskSE {
        TH2F    *f2dHistXiRadiusVsEffMassOmegaMinus;    //! transv. casc. decay radius Vs Omega- Eff mass, under Omega- hyp.
        TH2F    *f2dHistXiRadiusVsEffMassOmegaPlus;     //! transv. casc. decay radius Vs Omega+ Eff mass, under Omega+ hyp.
        
-       TH2F    *f2dHistXiPtVsEffMassXiMinus;           //! casc. transv. momemtum Vs Xi- Eff mass
-       TH2F    *f2dHistXiPtVsEffMassXiPlus;            //! casc. transv. momemtum Vs Xi+ Eff mass
-       TH2F    *f2dHistXiPtVsEffMassOmegaMinus;        //! casc. transv. momemtum Vs Omega- Eff mass
-       TH2F    *f2dHistXiPtVsEffMassOmegaPlus;         //! casc. transv. momemtum Vs Omega+ Eff mass
+       
+       // PART 2 : TH3F needed for pt spectrum and yield extraction
+       // Without any PID
+       TH3F    *f3dHistXiPtVsEffMassVsYXiMinus;        //! casc. transv. momemtum Vs Xi- Eff mass Vs Y
+       TH3F    *f3dHistXiPtVsEffMassVsYXiPlus;         //! casc. transv. momemtum Vs Xi+ Eff mass Vs Y
+       TH3F    *f3dHistXiPtVsEffMassVsYOmegaMinus;     //! casc. transv. momemtum Vs Omega- Eff mass Vs Y
+       TH3F    *f3dHistXiPtVsEffMassVsYOmegaPlus;      //! casc. transv. momemtum Vs Omega+ Eff mass Vs Y
+       
+       // With single PID : proton PID for Xi (pion = useless) / bachelor PID for Omega
+       // = a priori, the most important PID info for each species
+       TH3F    *f3dHistXiPtVsEffMassVsYWithCombPIDXiMinus;     //! casc. transv. momemtum Vs Xi- Eff mass Vs Y
+       TH3F    *f3dHistXiPtVsEffMassVsYWithCombPIDXiPlus;      //! casc. transv. momemtum Vs Xi+ Eff mass Vs Y
+       TH3F    *f3dHistXiPtVsEffMassVsYWithCombPIDOmegaMinus;  //! casc. transv. momemtum Vs Omega- Eff mass Vs Y
+       TH3F    *f3dHistXiPtVsEffMassVsYWithCombPIDOmegaPlus;   //! casc. transv. momemtum Vs Omega+ Eff mass Vs Y
+       
+       // With double PID : proton PID + bachelor PID for Omega
+       // = "second order" refinement for omegas
+       TH3F    *f3dHistXiPtVsEffMassVsYWith2CombPIDOmegaMinus; //! casc. transv. momemtum Vs Omega- Eff mass Vs Y
+       TH3F    *f3dHistXiPtVsEffMassVsYWith2CombPIDOmegaPlus;  //! casc. transv. momemtum Vs Omega+ Eff mass Vs Y
+       
+       // With TPC PID : 3-sigma band on the Bethe-Bloch curve
+       // = directly detector-based
+       TH3F    *f3dHistXiPtVsEffMassVsYWithTpcPIDOmegaMinus;   //! casc. transv. momemtum Vs Omega- Eff mass Vs Y
+       
+       // Compilation of all PID plots (3D = casc. transv. momemtum Vs Casc Eff mass Vs Y), stored into an AliCFContainer
+       AliCFContainer  *fCFContCascadePIDXiMinus;      //! for Xi-   : Container to store any 3D histos with the different PID flavours
+       AliCFContainer  *fCFContCascadePIDXiPlus;       //! for Xi+   : Container to store any 3D histos with the different PID flavours
+       AliCFContainer  *fCFContCascadePIDOmegaMinus;   //! for Omega-: Container to store any 3D histos with the different PID flavours
+       AliCFContainer  *fCFContCascadePIDOmegaPlus;    //! for Omega+: Container to store any 3D histos with the different PID flavours
+       
+       
+       
+       // PART 3 : Towards the optimisation of topological selections / systematics
+       AliCFContainer  *fCFContCascadeCuts;            //! Container meant to store all the relevant distributions corresponding to the cut variables
+       
+       
+       // PART 4 :  Azimuthal correlation study
+       THnSparseF      *fHnSpAngularCorrXiMinus;       //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass
+       THnSparseF      *fHnSpAngularCorrXiPlus;        //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass
+       THnSparseF      *fHnSpAngularCorrOmegaMinus;    //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass
+       THnSparseF      *fHnSpAngularCorrOmegaPlus;     //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass
+
 
   AliAnalysisTaskCheckCascade(const AliAnalysisTaskCheckCascade&);            // not implemented
   AliAnalysisTaskCheckCascade& operator=(const AliAnalysisTaskCheckCascade&); // not implemented
   
-  ClassDef(AliAnalysisTaskCheckCascade, 3);
+  ClassDef(AliAnalysisTaskCheckCascade, 11);
 };
 
 #endif