]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliESDv0KineCuts.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / ANALYSIS / AliESDv0KineCuts.h
index e14d1e62d23d2c51e24b1978127a00ba9be729dd..bfd4ddbf938c2ebb03672b0c4917a0b7afc6e460 100644 (file)
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
- * See cxx source for full Copyright notice                               */\r
-/*\r
- * plesae see source file for more details\r
- */\r
-#ifndef ALIESDV0KINECUTS_H\r
-#define ALIESDV0KINECUTS_H\r
-\r
-#include <TObject.h>\r
-\r
-class AliESDv0;\r
-class AliESDEvent;\r
-class AliVEvent;\r
-class AliESDtrack;\r
-class AliVTrack;\r
-class AliKFParticle;\r
-class AliKFVertex;\r
-\r
-class AliESDv0KineCuts : public TObject{\r
- public:\r
-  enum{ // Reconstructed V0\r
-    kUndef = -1,\r
-      kGamma = 0,\r
-      kK0 = 1,\r
-      kLambda = 2,\r
-      kALambda = 3\r
-      };\r
-  enum{ // data types\r
-    kPP = 0,\r
-      kPbPb = 1,  // not yet implemented\r
-      };\r
-  enum{ // operation modes\r
-    kPurity = 0, // purely kinematical selection\r
-      kEffGamma = 1  // !!! involves TPC dEdx or nSimga cuts !!!\r
-      };\r
-  \r
-  AliESDv0KineCuts();\r
-  virtual ~AliESDv0KineCuts();\r
-\r
-  AliESDv0KineCuts(const AliESDv0KineCuts &ref);\r
-  AliESDv0KineCuts &operator=(const AliESDv0KineCuts &ref);\r
-\r
-  // main selection function - called once per V0 candidate\r
-  Bool_t const ProcessV0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN);\r
-  Bool_t const ProcessV0(AliESDv0* const v0, Int_t &pdgP, Int_t &pdgN);\r
-\r
-  // must be called by the user\r
-  void SetEvent(AliESDEvent* const event);\r
-  void SetEvent(AliVEvent* const event);\r
-  void SetPrimaryVertex(AliKFVertex* const v);\r
-\r
-  // user can select an operation modes [see .cxx for details]\r
-  void   SetMode(Int_t mode, Int_t type);\r
-  void   SetMode(Int_t mode, const char* type);\r
-\r
-  //\r
-  // setter functions for V0 cut values\r
-  // for default values see the constructor\r
-  // see the default contructor for comments\r
-  //\r
-\r
-  // single track cuts\r
-  void   SetNTPCclusters(Int_t n) { fTPCNcls = n; };\r
-  void   SetTPCrefit(Bool_t r = kTRUE) { fTPCrefit = r; };\r
-  void   SetTPCchi2perCls(Float_t chi2) { fTPCchi2perCls = chi2; };\r
-  void   SetTPCclusterratio(Float_t r) { fTPCclsRatio = r; };\r
-  void   SetNoKinks(Bool_t k = kTRUE) { fNoKinks = k; };\r
-\r
-  // gamma cuts\r
-  void   SetGammaCutChi2NDF(Float_t val)  { fGcutChi2NDF = val; };\r
-  void   SetGammaCutCosPoint(Float_t * const val) { \r
-    fGcutCosPoint[0] = val[0];\r
-    fGcutCosPoint[1] = val[1];\r
-  };\r
-  void   SetGammaCutDCA(Float_t * const val){\r
-    fGcutDCA[0] = val[0];\r
-    fGcutDCA[1] = val[1];\r
-  };\r
-  void   SetGammaCutVertexR(Float_t * const val){\r
-    fGcutVertexR[0] = val[0];\r
-    fGcutVertexR[1] = val[1];\r
-  };\r
-  void   SetGammaCutPsiPair(Float_t * const val){\r
-    fGcutPsiPair[0] = val[0];\r
-    fGcutPsiPair[1] = val[1];\r
-  };\r
-  void   SetGammaCutInvMass(Float_t val){\r
-    fGcutInvMass = val;\r
-  };\r
-  // K0 cuts\r
-  void   SetK0CutChi2NDF(Float_t val)  { fK0cutChi2NDF = val; };\r
-  void   SetK0CutCosPoint(Float_t * const val) { \r
-    fK0cutCosPoint[0] = val[0];\r
-    fK0cutCosPoint[1] = val[1];\r
-  };\r
-  void   SetK0CutDCA(Float_t * const val){\r
-    fK0cutDCA[0] = val[0];\r
-    fK0cutDCA[1] = val[1];\r
-  };\r
-  void   SetK0CutVertexR(Float_t * const val){\r
-    fK0cutVertexR[0] = val[0];\r
-    fK0cutVertexR[1] = val[1];\r
-  };\r
-  void   SetK0CutInvMass(Float_t * const val){\r
-    fK0cutInvMass[0] = val[0];\r
-    fK0cutInvMass[1] = val[1];\r
-  };\r
-  // lambda & anti-lambda cuts\r
-  void   SetLambdaCutChi2NDF(Float_t val)  { fLcutChi2NDF = val; };\r
-  void   SetLambdaCutCosPoint(Float_t * const val) { \r
-    fLcutCosPoint[0] = val[0];\r
-    fLcutCosPoint[1] = val[1];\r
-  };\r
-  void   SetLambdaCutDCA(Float_t * const val){\r
-    fLcutDCA[0] = val[0];\r
-    fLcutDCA[1] = val[1];\r
-  };\r
-  void   SetLambdaCutVertexR(Float_t * const val){\r
-    fLcutVertexR[0] = val[0];\r
-    fLcutVertexR[1] = val[1];\r
-  };\r
-  void   SetLambdaCutInvMass(Float_t * const val){\r
-    fLcutInvMass[0] = val[0];\r
-    fLcutInvMass[1] = val[1];\r
-  };\r
-  \r
-\r
-  Int_t  const PreselectV0(AliESDv0* const v0);\r
-\r
-  Bool_t const CaseGamma(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN);\r
-  Bool_t const CaseK0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN);\r
-  Bool_t const CaseLambda(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN, Int_t id);\r
-\r
-  Bool_t const V0CutsCommon(AliESDv0 * const v0);\r
-  Bool_t const SingleTrackCuts(AliESDv0 * const v0);\r
-  void   const Armenteros(AliESDv0* const v0, Float_t val[2]);\r
-  Bool_t const CheckSigns(AliESDv0* const v0);\r
-\r
-  Double_t const PsiPair(AliESDv0* const v0);\r
-  Bool_t   const GetConvPosXY(AliESDtrack * const ptrack, AliESDtrack * const ntrack, Double_t convpos[2]);\r
-  Bool_t   const GetHelixCenter(AliESDtrack * const track, Double_t b, Int_t charge, Double_t center[2]);\r
-\r
- protected:\r
-  void Copy(TObject &ref) const;\r
-\r
- private:\r
-\r
-  AliKFParticle *CreateMotherParticle(const AliVTrack* const pdaughter, const AliVTrack* const ndaughter, Int_t pspec, Int_t nspec);\r
-  void      SetCuts();                          // setup cuts for selected fMode and fType, see source file for details\r
-  Bool_t    GammaEffCuts(AliESDv0 * const v0);  // set of cuts optimized for high gamma efficiency\r
-\r
- private:\r
-  AliESDEvent           *fEvent;          // current event\r
-  AliKFVertex           *fPrimaryVertex;  // primary vertex\r
-\r
-  Int_t                 fType;            // data type: p-p or Pb-Pb\r
-  Int_t                 fMode;            // current operation mode\r
-\r
-  // single track cuts\r
-  Int_t                 fTPCNcls;          // number of TPC clusters\r
-  Bool_t                fTPCrefit;         // TPC refit - yes [kTRUE] or do not care [kFALSE]\r
-  Float_t               fTPCchi2perCls;    // max. chi2 per TPC cluster\r
-  Float_t               fTPCclsRatio;      // min. TPC cluster ratio\r
-  Bool_t                fNoKinks;          // kinks - no [kTRUE] or do not care [kFalse]\r
-\r
-  // gamma cut values\r
-  Float_t               fGcutChi2NDF;      // Chi2NF cut value for the AliKFparticle gamma\r
-  Float_t               fGcutCosPoint[2];  // cos of the pointing angle [min, max]\r
-  Float_t               fGcutDCA[2];       // DCA between the daughter tracks [min, max]\r
-  Float_t               fGcutVertexR[2];   // radius of the conversion point [min, max]\r
-  Float_t               fGcutPsiPair[2];   // value of the psi pair cut [min, max]\r
-  Float_t               fGcutInvMass;      // upper value on the gamma invariant mass\r
-  // K0 cut values\r
-  Float_t               fK0cutChi2NDF;     // Chi2NF cut value for the AliKFparticle K0\r
-  Float_t               fK0cutCosPoint[2]; // cos of the pointing angle [min, max]\r
-  Float_t               fK0cutDCA[2];      // DCA between the daughter tracks [min, max]\r
-  Float_t               fK0cutVertexR[2];  // radius of the decay point [min, max]\r
-  Float_t               fK0cutInvMass[2];  // invariant mass window\r
-  // Lambda & anti-Lambda cut values\r
-  Float_t               fLcutChi2NDF;      // Chi2NF cut value for the AliKFparticle K0\r
-  Float_t               fLcutCosPoint[2];  // cos of the pointing angle [min, max]\r
-  Float_t               fLcutDCA[2];       // DCA between the daughter tracks [min, max]\r
-  Float_t               fLcutVertexR[2];   // radius of the decay point [min, max]\r
-  Float_t               fLcutInvMass[2];   // invariant mass window\r
-  \r
-  \r
-  ClassDef(AliESDv0KineCuts, 0);\r
-\r
-};\r
-\r
-#endif\r
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+/*
+ * plesae see source file for more details
+ */
+#ifndef ALIESDV0KINECUTS_H
+#define ALIESDV0KINECUTS_H
+
+#include <TObject.h>
+
+class AliESDv0;
+class AliESDEvent;
+class AliVEvent;
+class AliESDtrack;
+class AliVTrack;
+class AliKFParticle;
+class AliKFVertex;
+
+class AliESDv0KineCuts : public TObject{
+ public:
+  enum{ // Reconstructed V0
+    kUndef = -1,
+      kGamma = 0,
+      kK0 = 1,
+      kLambda = 2,
+      kALambda = 3
+      };
+  enum{ // data types
+    kPP = 0,
+      kPbPb = 1,  // not yet implemented
+      };
+  enum{ // operation modes
+    kPurity = 0, // purely kinematical selection
+      kEffGamma = 1  // !!! involves TPC dEdx or nSimga cuts !!!
+      };
+  
+  AliESDv0KineCuts();
+  virtual ~AliESDv0KineCuts();
+
+  AliESDv0KineCuts(const AliESDv0KineCuts &ref);
+  AliESDv0KineCuts &operator=(const AliESDv0KineCuts &ref);
+
+  // main selection function - called once per V0 candidate
+  Bool_t ProcessV0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
+  Bool_t ProcessV0(AliESDv0* const v0, Int_t &pdgP, Int_t &pdgN) const;
+
+  // must be called by the user
+  void SetEvent(AliESDEvent* const event);
+  void SetEvent(AliVEvent* const event);
+  void SetPrimaryVertex(AliKFVertex* const v);
+
+  // user can select an operation modes [see .cxx for details]
+  void   SetMode(Int_t mode, Int_t type);
+  void   SetMode(Int_t mode, const char* type);
+  void  UseExternalVertex(Bool_t use_external=kTRUE);
+  AliKFParticle *CreateMotherParticle(const AliVTrack* const pdaughter, const AliVTrack* const ndaughter, Int_t pspec, Int_t nspec) const;
+  void      SetCuts();                          // setup cuts for selected fMode and fType, see source file for details
+  //
+  // setter functions for V0 cut values
+  // for default values see the constructor
+  // see the default contructor for comments
+  //
+
+  // single track cuts
+  void   SetNTPCclusters(Int_t n) { fTPCNcls = n; };
+  void   SetTPCrefit(Bool_t r = kTRUE) { fTPCrefit = r; };
+  void   SetTPCchi2perCls(Float_t chi2) { fTPCchi2perCls = chi2; };
+  void   SetTPCclusterratio(Float_t r) { fTPCclsRatio = r; };
+  void   SetNoKinks(Bool_t k = kTRUE) { fNoKinks = k; };
+
+  // gamma cuts
+  void   SetGammaCutChi2NDF(Float_t val)  { fGcutChi2NDF = val; };
+  void   SetGammaCutCosPoint(Float_t * const val) { 
+    fGcutCosPoint[0] = val[0];
+    fGcutCosPoint[1] = val[1];
+  };
+  void   SetGammaCutDCA(Float_t * const val){
+    fGcutDCA[0] = val[0];
+    fGcutDCA[1] = val[1];
+  };
+  void   SetGammaCutVertexR(Float_t * const val){
+    fGcutVertexR[0] = val[0];
+    fGcutVertexR[1] = val[1];
+  };
+  void   SetGammaCutPsiPair(Float_t * const val){
+    fGcutPsiPair[0] = val[0];
+    fGcutPsiPair[1] = val[1];
+  };
+  void   SetGammaCutInvMass(Float_t val){
+    fGcutInvMass = val;
+  };
+  // K0 cuts
+  void   SetK0CutChi2NDF(Float_t val)  { fK0cutChi2NDF = val; };
+  void   SetK0CutCosPoint(Float_t * const val) { 
+    fK0cutCosPoint[0] = val[0];
+    fK0cutCosPoint[1] = val[1];
+  };
+  void   SetK0CutDCA(Float_t * const val){
+    fK0cutDCA[0] = val[0];
+    fK0cutDCA[1] = val[1];
+  };
+  void   SetK0CutVertexR(Float_t * const val){
+    fK0cutVertexR[0] = val[0];
+    fK0cutVertexR[1] = val[1];
+  };
+  void   SetK0CutInvMass(Float_t * const val){
+    fK0cutInvMass[0] = val[0];
+    fK0cutInvMass[1] = val[1];
+  };
+  // lambda & anti-lambda cuts
+  void   SetLambdaCutChi2NDF(Float_t val)  { fLcutChi2NDF = val; };
+  void   SetLambdaCutCosPoint(Float_t * const val) { 
+    fLcutCosPoint[0] = val[0];
+    fLcutCosPoint[1] = val[1];
+  };
+  void   SetLambdaCutDCA(Float_t * const val){
+    fLcutDCA[0] = val[0];
+    fLcutDCA[1] = val[1];
+  };
+  void   SetLambdaCutVertexR(Float_t * const val){
+    fLcutVertexR[0] = val[0];
+    fLcutVertexR[1] = val[1];
+  };
+  void   SetLambdaCutInvMass(Float_t * const val){
+    fLcutInvMass[0] = val[0];
+    fLcutInvMass[1] = val[1];
+  };
+  
+
+  Int_t  PreselectV0(AliESDv0* const v0) const;
+
+  Bool_t CaseGamma(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
+  Bool_t CaseK0(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN) const;
+  Bool_t CaseLambda(AliESDv0* const v0, Int_t &pdgV0, Int_t &pdgP, Int_t &pdgN, Int_t id) const;
+
+  Bool_t V0CutsCommon(const AliESDv0 * const v0) const;
+  Bool_t SingleTrackCuts(AliESDv0 * const v0) const;
+  void   Armenteros(AliESDv0* const v0, Float_t val[2]) const;
+  Bool_t CheckSigns(AliESDv0* const v0) const;
+
+  Double_t PsiPair(AliESDv0* const v0) const;
+  Bool_t   GetConvPosXY(AliESDtrack * const ptrack, AliESDtrack * const ntrack, Double_t convpos[2]) const;
+  Bool_t   GetHelixCenter(AliESDtrack * const track, Double_t b, Int_t charge, Double_t center[2]) const;
+
+ protected:
+  void Copy(TObject &ref) const;
+
+ private:
+  Bool_t    GammaEffCuts(AliESDv0 * const v0);  // set of cuts optimized for high gamma efficiency
+
+ private:
+  AliESDEvent           *fEvent;          // current event
+  AliKFVertex           *fPrimaryVertex;  // primary vertex
+
+  Int_t                 fType;            // data type: p-p or Pb-Pb
+  Int_t                 fMode;            // current operation mode
+
+  // single track cuts
+  Int_t                 fTPCNcls;          // number of TPC clusters
+  Bool_t                fTPCrefit;         // TPC refit - yes [kTRUE] or do not care [kFALSE]
+  Float_t               fTPCchi2perCls;    // max. chi2 per TPC cluster
+  Float_t               fTPCclsRatio;      // min. TPC cluster ratio
+  Bool_t                fNoKinks;          // kinks - no [kTRUE] or do not care [kFalse]
+
+  // gamma cut values
+  Float_t               fGcutChi2NDF;      // Chi2NF cut value for the AliKFparticle gamma
+  Float_t               fGcutCosPoint[2];  // cos of the pointing angle [min, max]
+  Float_t               fGcutDCA[2];       // DCA between the daughter tracks [min, max]
+  Float_t               fGcutVertexR[2];   // radius of the conversion point [min, max]
+  Float_t               fGcutPsiPair[2];   // value of the psi pair cut [min, max]
+  Float_t               fGcutInvMass;      // upper value on the gamma invariant mass
+  // K0 cut values
+  Float_t               fK0cutChi2NDF;     // Chi2NF cut value for the AliKFparticle K0
+  Float_t               fK0cutCosPoint[2]; // cos of the pointing angle [min, max]
+  Float_t               fK0cutDCA[2];      // DCA between the daughter tracks [min, max]
+  Float_t               fK0cutVertexR[2];  // radius of the decay point [min, max]
+  Float_t               fK0cutInvMass[2];  // invariant mass window
+  // Lambda & anti-Lambda cut values
+  Float_t               fLcutChi2NDF;      // Chi2NF cut value for the AliKFparticle K0
+  Float_t               fLcutCosPoint[2];  // cos of the pointing angle [min, max]
+  Float_t               fLcutDCA[2];       // DCA between the daughter tracks [min, max]
+  Float_t               fLcutVertexR[2];   // radius of the decay point [min, max]
+  Float_t               fLcutInvMass[2];   // invariant mass window
+  Bool_t               fUseExternalVertex; // Is kTRUE if Vertex is set via SetPrimaryVertex()
+  Bool_t               fDeleteVertex;      // Is kTRUE if Vertex has been created in SetEvent() function
+  
+  ClassDef(AliESDv0KineCuts, 0);
+
+};
+
+#endif