]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGDQ/dielectron/AliDielectronCF.h
including switch to set on/off iso-track core removal, cleaning and bug fix
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronCF.h
index 5b277f3e17dacb832e99f8e5a1644a7660e91f68..fe23273fcf68652a80042033bcfd87d32cf530ab 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <TNamed.h>
 #include <TVectorDfwd.h>
+#include <TBits.h>
 #include "AliDielectronVarManager.h"
 
 class AliAnalysisCuts;
@@ -48,6 +49,7 @@ public:
   void SetStepsForCutsIncreasing(Bool_t steps=kTRUE)   { fStepsForCutsIncreasing=steps;   }
   void SetStepsForSignal(Bool_t steps=kTRUE)           { fStepsForSignal=steps;           }
   void SetStepsForBackground(Bool_t steps=kTRUE)       { fStepsForBackground=steps;       }
+  void SetStepsForMCtruthOnly(Bool_t steps=kTRUE)      { fStepsForMCtruthOnly=steps;       }
   
   void SetPdgMother(Int_t pdg) { fPdgMother=pdg; }
   void SetSignalsMC(TObjArray* array)    {fSignalsMC = array;}
@@ -60,7 +62,13 @@ public:
   void AddVariable(AliDielectronVarManager::ValueTypes type, TVectorD *binLimits, Bool_t leg=kFALSE);
   
   void InitialiseContainer(const AliAnalysisFilter& filter);
-  
+
+  Int_t GetNvarsPair()     const {return fNVars;}
+  Int_t GetNvarsLeg()      const {return fNVarsLeg;}
+
+  UInt_t GetVariablePair(UInt_t var) const {return (var>=(UInt_t)AliDielectronVarManager::kNMaxValues)? (UInt_t)AliDielectronVarManager::kNMaxValues+1:fVariables[var];}
+  UInt_t GetVariableLeg(UInt_t var) const {return (var>=(UInt_t)AliDielectronVarManager::kNMaxValues)? (UInt_t)AliDielectronVarManager::kNMaxValues+1:fVariablesLeg[var];}
+
 //   void Fill(UInt_t mask, const TObject *particle);
   void Fill(UInt_t mask, const AliDielectronPair *particle);
   void FillMC(const TObject *particle);
@@ -69,6 +77,8 @@ public:
   AliCFContainer* GetContainer() const { return fCfContainer; }
   
 private:
+  TBits     *fUsedVars;             // list of used variables
+
   UInt_t          fVariables[AliDielectronVarManager::kNMaxValues]; //configured variables
   UInt_t          fVariablesLeg[AliDielectronVarManager::kNMaxValues]; //configured variables for the legs
   
@@ -80,9 +90,10 @@ private:
   Int_t           fNVarsLeg;                   // number of variables for the legs
   TObjArray      *fVarBinLimitsLeg;            //  array of bin limits of the legs
   
-  Int_t           fNCuts;                         // Number of cuts in the filter concerned
+  Int_t           fNCuts;                      // Number of cuts in the filter concerned
 
-  Double_t        *fValues;                       //! Value array for filling the container
+  Double_t        *fValues;                    //! Value array for filling the container
+  Bool_t          *fIsMCTruth;                 //! Buffer array for MC truth information
   
   Bool_t fStepForMCtruth;               //create a step for the MC truth
   Bool_t fStepForNoCutsMCmotherPid;     //create a step for before cuts, but with MC truth of the mother
@@ -93,6 +104,7 @@ private:
                                         //e.g. cut1&cut2, cut1&cut2&cut3 ...
   Bool_t fStepsForSignal;               //steps for pure signal
   Bool_t fStepsForBackground;           //steps for pure background
+  Bool_t fStepsForMCtruthOnly;          //Switch off all pair steps, allow only MC truth Class
   
   UInt_t fStepMasks[kNmaxAddSteps];      //steps for additional cut combinatons
   UInt_t fNStepMasks;                    //number of configured step masks
@@ -110,7 +122,7 @@ private:
   AliDielectronCF(const AliDielectronCF &c);
   AliDielectronCF &operator=(const AliDielectronCF &c);
   
-  ClassDef(AliDielectronCF,4)  //Dielectron Correction Framework handler
+  ClassDef(AliDielectronCF,5)  //Dielectron Correction Framework handler
 };
 
 #endif