LCOV - code coverage report
Current view: top level - ANALYSIS/ANALYSISalice - AliAODv0KineCuts.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 46 2.2 %
Date: 2016-06-14 17:26:59 Functions: 1 25 4.0 %

          Line data    Source code
       1             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       2             :  * See cxx source for full Copyright notice                               */
       3             : /*
       4             :  * plesae see source file for more details
       5             :  */
       6             : #ifndef ALIAODV0KINECUTS_H
       7             : #define ALIAODV0KINECUTS_H
       8             : 
       9             : #include <TObject.h>
      10             : #include <TArrayI.h>
      11             : 
      12             : class AliAODv0;
      13             : class AliAODEvent;
      14             : class AliVEvent;
      15             : class AliAODTrack;
      16             : class AliVTrack;
      17             : class AliKFParticle;
      18             : class AliKFVertex;
      19             : 
      20             : class AliAODv0KineCuts : public TObject{
      21             :  public:
      22             :   enum{ // Reconstructed V0
      23             :     kUndef = -1,
      24             :       kGamma = 0,
      25             :       kK0 = 1,
      26             :       kLambda = 2,
      27             :       kALambda = 3
      28             :       };
      29             :   enum{ // data types
      30             :       kPP = 0,
      31             :       kPbPb = 1,  // not yet implemented
      32             :       };
      33             :   enum{ // operation modes
      34             :       kPurity = 0, // purely kinematical selection
      35             :       kEffGamma = 1  // !!! involves TPC dEdx or nSimga cuts !!!
      36             :       };
      37             :   
      38             :   AliAODv0KineCuts();
      39             :   virtual ~AliAODv0KineCuts();
      40             : 
      41             :   AliAODv0KineCuts(const AliAODv0KineCuts &ref);
      42             :   AliAODv0KineCuts &operator=(const AliAODv0KineCuts &ref);
      43             : 
      44             :   // main selection function - called once per V0 candidate
      45             :   Bool_t ProcessV0(AliAODv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
      46             :   Bool_t ProcessV0(AliAODv0* const v0, Int_t &pdgP, Int_t &pdgN) const;
      47             : 
      48             :   // must be called by the user
      49             :   void SetEvent(AliAODEvent* const event);
      50             :   void SetEvent(AliVEvent* const event);
      51             :   void SetPrimaryVertex(AliKFVertex* const v);
      52             : 
      53             :   // user can select an operation modes [see .cxx for details]
      54             :   void   SetMode(Int_t mode, Int_t type);
      55             :   void   SetMode(Int_t mode, const char* type);
      56             :   void   UseExternalVertex(Bool_t use_external=kTRUE);
      57             :   AliKFParticle *CreateMotherParticle(const AliVTrack* const pdaughter, const AliVTrack* const ndaughter, Int_t pspec, Int_t nspec) const;
      58             :   void      SetCuts();                          // setup cuts for selected fMode and fType, see source file for details
      59             :   //
      60             :   // setter functions for V0 cut values
      61             :   // for default values see the constructor
      62             :   // see the default contructor for comments
      63             :   //
      64             : 
      65             :   // single track cuts
      66           0 :   void   SetNTPCclusters(Int_t n) { fTPCNcls = n; };
      67           0 :   void   SetTPCrefit(Bool_t r = kTRUE) { fTPCrefit = r; };
      68           0 :   void   SetTPCclusterratio(Float_t r) { fTPCclsRatio = r; };
      69           0 :   void   SetNoKinks(Bool_t k = kTRUE) { fNoKinks = k; };
      70             : 
      71             :   // gamma cuts
      72           0 :   void   SetGammaCutChi2NDF(Float_t val)  { fGcutChi2NDF = val; };
      73             :   void   SetGammaCutCosPoint(Float_t * const val) { 
      74           0 :     fGcutCosPoint[0] = val[0];
      75           0 :     fGcutCosPoint[1] = val[1];
      76           0 :   };
      77             :   void   SetGammaCutDCA(Float_t * const val){
      78           0 :     fGcutDCA[0] = val[0];
      79           0 :     fGcutDCA[1] = val[1];
      80           0 :   };
      81             :   void   SetGammaCutVertexR(Float_t * const val){
      82           0 :     fGcutVertexR[0] = val[0];
      83           0 :     fGcutVertexR[1] = val[1];
      84           0 :   };
      85             :   void   SetGammaCutPsiPair(Float_t * const val){
      86           0 :     fGcutPsiPair[0] = val[0];
      87           0 :     fGcutPsiPair[1] = val[1];
      88           0 :   };
      89             :   void   SetGammaCutInvMass(Float_t val){
      90           0 :     fGcutInvMass = val;
      91           0 :   };
      92             :   // K0 cuts
      93           0 :   void   SetK0CutChi2NDF(Float_t val)  { fK0cutChi2NDF = val; };
      94             :   void   SetK0CutCosPoint(Float_t * const val) { 
      95           0 :     fK0cutCosPoint[0] = val[0];
      96           0 :     fK0cutCosPoint[1] = val[1];
      97           0 :   };
      98             :   void   SetK0CutDCA(Float_t * const val){
      99           0 :     fK0cutDCA[0] = val[0];
     100           0 :     fK0cutDCA[1] = val[1];
     101           0 :   };
     102             :   void   SetK0CutVertexR(Float_t * const val){
     103           0 :     fK0cutVertexR[0] = val[0];
     104           0 :     fK0cutVertexR[1] = val[1];
     105           0 :   };
     106             :   void   SetK0CutInvMass(Float_t * const val){
     107           0 :     fK0cutInvMass[0] = val[0];
     108           0 :     fK0cutInvMass[1] = val[1];
     109           0 :   };
     110             :   // lambda & anti-lambda cuts
     111           0 :   void   SetLambdaCutChi2NDF(Float_t val)  { fLcutChi2NDF = val; };
     112             :   void   SetLambdaCutCosPoint(Float_t * const val) { 
     113           0 :     fLcutCosPoint[0] = val[0];
     114           0 :     fLcutCosPoint[1] = val[1];
     115           0 :   };
     116             :   void   SetLambdaCutDCA(Float_t * const val){
     117           0 :     fLcutDCA[0] = val[0];
     118           0 :     fLcutDCA[1] = val[1];
     119           0 :   };
     120             :   void   SetLambdaCutVertexR(Float_t * const val){
     121           0 :     fLcutVertexR[0] = val[0];
     122           0 :     fLcutVertexR[1] = val[1];
     123           0 :   };
     124             :   void   SetLambdaCutInvMass(Float_t * const val){
     125           0 :     fLcutInvMass[0] = val[0];
     126           0 :     fLcutInvMass[1] = val[1];
     127           0 :   };
     128             :   
     129             : 
     130             :   Int_t  PreselectV0(AliAODv0* const v0) const;
     131             : 
     132             :   Bool_t CaseGamma(AliAODv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
     133             :   Bool_t CaseK0(AliAODv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
     134             :   Bool_t CaseLambda(AliAODv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN, Int_t id) const;
     135             : 
     136             :   Bool_t V0CutsCommon(const AliAODv0 * const v0) const;
     137             :   Bool_t SingleTrackCuts(AliAODv0 * const v0) const;
     138             :   Bool_t CheckSigns(AliAODv0* const v0) const;
     139             : 
     140             :   Double_t PsiPair(AliAODv0* const v0) const;
     141             :   Bool_t   GetConvPosXY(AliAODTrack * const ptrack, AliAODTrack * const ntrack, Double_t convpos[2]) const;
     142             :   Bool_t   GetHelixCenter(AliAODTrack * const track, Double_t b, Int_t charge, Double_t center[2]) const;
     143             : 
     144             :  protected:
     145             :   void Copy(TObject &ref) const;
     146             : 
     147             :  private:
     148             :   Bool_t    GammaEffCuts(AliAODv0 * const v0);  // set of cuts optimized for high gamma efficiency
     149             :   Bool_t    IsKinkMother(const AliAODTrack * const track) const;
     150             :   Bool_t    IsKinkDaughter(const AliAODTrack * const track) const;
     151             : 
     152             :  private:
     153             :   AliAODEvent           *fEvent;          // current event
     154             :   AliKFVertex           *fPrimaryVertex;  // primary vertex
     155             : 
     156             :   Int_t                 fType;            // data type: p-p or Pb-Pb
     157             :   Int_t                 fMode;            // current operation mode
     158             : 
     159             :   // single track cuts
     160             :   Int_t                 fTPCNcls;          // number of TPC clusters
     161             :   Bool_t                fTPCrefit;         // TPC refit - yes [kTRUE] or do not care [kFALSE]
     162             :   Float_t               fTPCclsRatio;      // min. TPC cluster ratio
     163             :   Bool_t                fNoKinks;          // kinks - no [kTRUE] or do not care [kFalse]
     164             :   TArrayI               fKinkMotherList;   // Kink mothers
     165             :   Int_t                 fNumberKinkMothers; // Number of kink mothers
     166             : 
     167             :   // gamma cut values
     168             :   Float_t               fGcutChi2NDF;      // Chi2NF cut value for the AliKFparticle gamma
     169             :   Float_t               fGcutCosPoint[2];  // cos of the pointing angle [min, max]
     170             :   Float_t               fGcutDCA[2];       // DCA between the daughter tracks [min, max]
     171             :   Float_t               fGcutVertexR[2];   // radius of the conversion point [min, max]
     172             :   Float_t               fGcutPsiPair[2];   // value of the psi pair cut [min, max]
     173             :   Float_t               fGcutInvMass;      // upper value on the gamma invariant mass
     174             :   // K0 cut values
     175             :   Float_t               fK0cutChi2NDF;     // Chi2NF cut value for the AliKFparticle K0
     176             :   Float_t               fK0cutCosPoint[2]; // cos of the pointing angle [min, max]
     177             :   Float_t               fK0cutDCA[2];      // DCA between the daughter tracks [min, max]
     178             :   Float_t               fK0cutVertexR[2];  // radius of the decay point [min, max]
     179             :   Float_t               fK0cutInvMass[2];  // invariant mass window
     180             :   // Lambda & anti-Lambda cut values
     181             :   Float_t               fLcutChi2NDF;      // Chi2NF cut value for the AliKFparticle K0
     182             :   Float_t               fLcutCosPoint[2];  // cos of the pointing angle [min, max]
     183             :   Float_t               fLcutDCA[2];       // DCA between the daughter tracks [min, max]
     184             :   Float_t               fLcutVertexR[2];   // radius of the decay point [min, max]
     185             :   Float_t               fLcutInvMass[2];   // invariant mass window
     186             :   Bool_t                fUseExternalVertex; // Is kTRUE if Vertex is set via SetPrimaryVertex()
     187             :   Bool_t                fDeleteVertex;      // Is kTRUE if Vertex has been created in SetEvent() function
     188             :   
     189         170 :   ClassDef(AliAODv0KineCuts, 0);
     190             : 
     191             : };
     192             : 
     193             : #endif

Generated by: LCOV version 1.11