LCOV - code coverage report
Current view: top level - ANALYSIS/ANALYSISalice - AliESDv0KineCuts.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 47 2.1 %
Date: 2016-06-14 17:26:59 Functions: 1 26 3.8 %

          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 ALIESDV0KINECUTS_H
       7             : #define ALIESDV0KINECUTS_H
       8             : 
       9             : #include <TObject.h>
      10             : 
      11             : class AliESDv0;
      12             : class AliESDEvent;
      13             : class AliVEvent;
      14             : class AliESDtrack;
      15             : class AliVTrack;
      16             : class AliKFParticle;
      17             : class AliKFVertex;
      18             : 
      19             : class AliESDv0KineCuts : public TObject{
      20             :  public:
      21             :   enum{ // Reconstructed V0
      22             :     kUndef = -1,
      23             :       kGamma = 0,
      24             :       kK0 = 1,
      25             :       kLambda = 2,
      26             :       kALambda = 3
      27             :       };
      28             :   enum{ // data types
      29             :     kPP = 0,
      30             :       kPbPb = 1,  // not yet implemented
      31             :       };
      32             :   enum{ // operation modes
      33             :     kPurity = 0, // purely kinematical selection
      34             :       kEffGamma = 1  // !!! involves TPC dEdx or nSimga cuts !!!
      35             :       };
      36             :   
      37             :   AliESDv0KineCuts();
      38             :   virtual ~AliESDv0KineCuts();
      39             : 
      40             :   AliESDv0KineCuts(const AliESDv0KineCuts &ref);
      41             :   AliESDv0KineCuts &operator=(const AliESDv0KineCuts &ref);
      42             : 
      43             :   // main selection function - called once per V0 candidate
      44             :   Bool_t ProcessV0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
      45             :   Bool_t ProcessV0(AliESDv0* const v0, Int_t &pdgP, Int_t &pdgN) const;
      46             : 
      47             :   // must be called by the user
      48             :   void SetEvent(AliESDEvent* const event);
      49             :   void SetEvent(AliVEvent* const event);
      50             :   void SetPrimaryVertex(AliKFVertex* const v);
      51             : 
      52             :   // user can select an operation modes [see .cxx for details]
      53             :   void   SetMode(Int_t mode, Int_t type);
      54             :   void   SetMode(Int_t mode, const char* type);
      55             :   void   UseExternalVertex(Bool_t use_external=kTRUE);
      56             :   AliKFParticle *CreateMotherParticle(const AliVTrack* const pdaughter, const AliVTrack* const ndaughter, Int_t pspec, Int_t nspec) const;
      57             :   void      SetCuts();                          // setup cuts for selected fMode and fType, see source file for details
      58             :   //
      59             :   // setter functions for V0 cut values
      60             :   // for default values see the constructor
      61             :   // see the default contructor for comments
      62             :   //
      63             : 
      64             :   // single track cuts
      65           0 :   void   SetNTPCclusters(Int_t n) { fTPCNcls = n; };
      66           0 :   void   SetTPCrefit(Bool_t r = kTRUE) { fTPCrefit = r; };
      67           0 :   void   SetTPCchi2perCls(Float_t chi2) { fTPCchi2perCls = chi2; };
      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(AliESDv0* const v0) const;
     131             : 
     132             :   Bool_t CaseGamma(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
     133             :   Bool_t CaseK0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
     134             :   Bool_t CaseLambda(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN, Int_t id) const;
     135             : 
     136             :   Bool_t V0CutsCommon(const AliESDv0 * const v0) const;
     137             :   Bool_t SingleTrackCuts(AliESDv0 * const v0) const;
     138             :   void   Armenteros(AliESDv0* const v0, Float_t val[2]) const;
     139             :   Bool_t CheckSigns(AliESDv0* const v0) const;
     140             : 
     141             :   Double_t PsiPair(AliESDv0* const v0) const;
     142             :   Bool_t   GetConvPosXY(AliESDtrack * const ptrack, AliESDtrack * const ntrack, Double_t convpos[2]) const;
     143             :   Bool_t   GetHelixCenter(AliESDtrack * const track, Double_t b, Int_t charge, Double_t center[2]) const;
     144             : 
     145             :  protected:
     146             :   void Copy(TObject &ref) const;
     147             : 
     148             :  private:
     149             :   Bool_t    GammaEffCuts(AliESDv0 * const v0);  // set of cuts optimized for high gamma efficiency
     150             : 
     151             :  private:
     152             :   AliESDEvent           *fEvent;          // current event
     153             :   AliKFVertex           *fPrimaryVertex;  // primary vertex
     154             : 
     155             :   Int_t                 fType;            // data type: p-p or Pb-Pb
     156             :   Int_t                 fMode;            // current operation mode
     157             : 
     158             :   // single track cuts
     159             :   Int_t                 fTPCNcls;          // number of TPC clusters
     160             :   Bool_t                fTPCrefit;         // TPC refit - yes [kTRUE] or do not care [kFALSE]
     161             :   Float_t               fTPCchi2perCls;    // max. chi2 per TPC cluster
     162             :   Float_t               fTPCclsRatio;      // min. TPC cluster ratio
     163             :   Bool_t                fNoKinks;          // kinks - no [kTRUE] or do not care [kFalse]
     164             : 
     165             :   // gamma cut values
     166             :   Float_t               fGcutChi2NDF;      // Chi2NF cut value for the AliKFparticle gamma
     167             :   Float_t               fGcutCosPoint[2];  // cos of the pointing angle [min, max]
     168             :   Float_t               fGcutDCA[2];       // DCA between the daughter tracks [min, max]
     169             :   Float_t               fGcutVertexR[2];   // radius of the conversion point [min, max]
     170             :   Float_t               fGcutPsiPair[2];   // value of the psi pair cut [min, max]
     171             :   Float_t               fGcutInvMass;      // upper value on the gamma invariant mass
     172             :   // K0 cut values
     173             :   Float_t               fK0cutChi2NDF;     // Chi2NF cut value for the AliKFparticle K0
     174             :   Float_t               fK0cutCosPoint[2]; // cos of the pointing angle [min, max]
     175             :   Float_t               fK0cutDCA[2];      // DCA between the daughter tracks [min, max]
     176             :   Float_t               fK0cutVertexR[2];  // radius of the decay point [min, max]
     177             :   Float_t               fK0cutInvMass[2];  // invariant mass window
     178             :   // Lambda & anti-Lambda cut values
     179             :   Float_t               fLcutChi2NDF;      // Chi2NF cut value for the AliKFparticle K0
     180             :   Float_t               fLcutCosPoint[2];  // cos of the pointing angle [min, max]
     181             :   Float_t               fLcutDCA[2];       // DCA between the daughter tracks [min, max]
     182             :   Float_t               fLcutVertexR[2];   // radius of the decay point [min, max]
     183             :   Float_t               fLcutInvMass[2];   // invariant mass window
     184             :   Bool_t                fUseExternalVertex; // Is kTRUE if Vertex is set via SetPrimaryVertex()
     185             :   Bool_t                fDeleteVertex;      // Is kTRUE if Vertex has been created in SetEvent() function
     186             :   
     187         170 :   ClassDef(AliESDv0KineCuts, 0);
     188             : 
     189             : };
     190             : 
     191             : #endif

Generated by: LCOV version 1.11