]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/AliAnalysisTaskMultiDielectronTG.h
including switch to set on/off iso-track core removal, cleaning and bug fix
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliAnalysisTaskMultiDielectronTG.h
index 4ee55cfc3817164da47c4df2f18e1b83d83dfe84..fe5f6a3b73302d444eaa2592d27f045da395f814 100644 (file)
@@ -24,6 +24,9 @@
 #include <cstdlib>
 
 
+using std::vector;
+using std::deque;
+
 // #include "AliDielectronPID.h"
 
 class AliDielectron;
@@ -90,6 +93,7 @@ class AliDielectronSingleTG : public TObject
       void SetTrack(AliVTrack * const trk) { fObj = trk;}
       virtual Int_t Charge(void) const { return fCharge;}
       Double_t  Phi(void) const { return fPhi;}
+      Double_t  Eta(void) const { return fEta;}
       Double_t  Theta(void) const { return fTheta;}
       Double_t  Px(void) const { return fPx;}
       Double_t  Py(void) const { return fPy;}
@@ -157,28 +161,30 @@ public:
 
 
   void RejectOP(double val){fdop = val;} ///To reject conversions
-  void RejectConversion(double val){fdconvphiv = val;} ///To reject conversions
+  void RejectConversion(double val, double mass){fdconvphiv = val; fdconvMee = mass;} ///To reject conversions
   void EnableV0mixing(Bool_t val){fdv0mixing = val;}   ///Enable V0 mixing  
-  void CheckGhostPairs(vector<AliDielectronSingleTG*> e1); ///identify ghost pairs in like sign pais
-  void RejectPairs(vector<AliDielectronSingleTG*> e1, vector<AliDielectronSingleTG*> e2, Int_t idie); ///identify conversions for the rejection
+  void CheckGhostPairs(std::vector<AliDielectronSingleTG*> e1); ///identify ghost pairs in like sign pais
+  Bool_t CheckGhost(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2); ///check ghost pairs for like sign and mixed like-sign pais
+  void RejectPairs(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2, Int_t idie); ///identify conversions for the rejection
   void FillPair(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2, int type, AliDielectron *die, Int_t idie); /// Fill Pairs
-  bool PairTrackcut(double var1, double var2, int idie); /// Pair cuts
+  bool PairTrackcut(double var1, double var2, double var3, int idie); /// Pair cuts
   void CalcVars(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2, 
                 double &mass, double &phiv, double &px, double &py, double&pz,
                double &pt, double &e, double &phi, double &eta, double &cos, double &psi); /// Calcualate kinematic variables
-  void CalcPair(vector<AliDielectronSingleTG*> e1, vector<AliDielectronSingleTG*> e2, AliDielectron *die, Int_t idie);  ///Process Pairs
-  void RandomizePool(vector<AliDielectronSingleTG*> e1, vector<AliDielectronSingleTG*> e2);         ///Randimize pairs
-  void ReshuffleBuffer(vector<AliDielectronSingleTG*> ve, deque<AliDielectronSingleTG*> pool);  ///ReshuffleBuffer
+  void CalcPair(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2, AliDielectron *die, Int_t idie);  ///Process Pairs
+  void RandomizePool(std::vector<AliDielectronSingleTG*> e1, std::vector<AliDielectronSingleTG*> e2);         ///Randimize pairs
+  void ReshuffleBuffer(std::vector<AliDielectronSingleTG*> ve, std::deque<AliDielectronSingleTG*> pool);  ///ReshuffleBuffer
 
   Double_t GetPhiv(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2); /// calculate phiv
   Double_t GetOpeningAngle(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2); /// calculate opening angle 
+  Double_t GetMass(AliDielectronSingleTG* e1, AliDielectronSingleTG* e2); /// calculate Mass 
+  void SetRejBGPairs(bool Val1, bool Val2){ fBGRejUnlike = Val1 ; fBGRejLike = Val2 ; } /// SetFlag to Enable Rejection of ghost BG pairs 
   void SetPairCuts(Int_t Types[20]){
     for(int i=0;i<20;i++){
       fRejectPairFlag[i] = Types[i];
     }
   }
 
-
 protected:
   enum {kAllEvents=0, kSelectedEvents, kV0andEvents, kFilteredEvents, kPileupEvents, kNbinsEvent};
   TList fListDielectron;             // List of dielectron framework instances
@@ -223,10 +229,12 @@ protected:
   std::vector<AliDielectronSingleTG*>  fVemtmp;   /// template for electron lists
   std::vector<AliDielectronSingleTG*>  fVeptmp;   /// template for positron lists
   Double_t fdconvphiv;      /// PhiCut
+  Double_t fdconvMee;      /// MassCut
   Double_t fdop;      /// Opening angle Cut
   Double_t fbz;            /// Magnetic field
   Bool_t fdv0mixing;       /// Mixing using V0 
-
+  Bool_t fBGRejUnlike;     //// Ghost rejection flag for event mixing (unlike pairs)
+  Bool_t fBGRejLike;     //// Ghost rejection flag for event mixing (like pairs)
 
   //Buffer for event mixing
   static const int fgkNBUF=100; //depth of buffer