1 #ifndef ALIDIELECTRONCF_H
2 #define ALIDIELECTRONCF_H
3 /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
6 //#############################################################
8 //# Class AliDielectronCF #
9 //# Dielectron Correction Framework Manager #
12 //# Anton Andronic, GSI / A.Andronic@gsi.de #
13 //# Ionut C. Arsene, GSI / I.C.Arsene@gsi.de #
14 //# Julian Book, Uni Ffm / Julian.Book@cern.ch #
15 //# Frederick Kramer, Uni Ffm, / Frederick.Kramer@cern.ch #
16 //# Magnus Mager, CERN / Magnus.Mager@cern.ch #
17 //# WooJin J. Park, GSI / W.J.Park@gsi.de #
18 //# Jens Wiechula, Uni HD / Jens.Wiechula@cern.ch #
20 //#############################################################
25 #include "AliDielectronVarManager.h"
27 class AliAnalysisCuts;
28 class AliAnalysisFilter;
31 class AliDielectronCF : public TNamed {
33 enum {kNmaxAddSteps=50};
36 AliDielectronCF(const char* name, const char* title);
37 virtual ~AliDielectronCF();
39 void SetStepForMCtruth(Bool_t steps=kTRUE) { fStepForMCtruth=steps; }
40 void SetStepForNoCutsMCmotherPid(Bool_t steps=kTRUE) { fStepForNoCutsMCmotherPid=steps; }
41 void SetStepForAfterAllCuts(Bool_t steps=kTRUE) { fStepForAfterAllCuts=steps; }
42 void SetStepsForEachCut(Bool_t steps=kTRUE) { fStepsForEachCut=steps; }
43 void SetStepsForCutsIncreasing(Bool_t steps=kTRUE) { fStepsForCutsIncreasing=steps; }
45 void SetPdgMother(Int_t pdg) { fPdgMother=pdg; }
47 void AddStepMask(UInt_t mask) { fStepMasks[fNStepMasks++]=mask; }
49 void AddVariable(AliDielectronVarManager::ValueTypes type, Int_t nbins, Double_t min, Double_t max);
51 void InitialiseContainer(const AliAnalysisFilter& filter);
53 void Fill(UInt_t mask, const TObject *particle);
54 void FillMC(const TObject *particle);
56 AliCFContainer* GetContainer() const { return fCfContainer; }
59 UInt_t fVariables[AliDielectronVarManager::kNMaxValues]; //configured variables
61 Int_t fNSteps; // number of selection steps
62 Int_t fNVars; // number of variables
63 Int_t fNBins[kNmaxAddSteps]; // array of numbers ob bins of the vars
64 Double_t fVarLoLimit[kNmaxAddSteps]; // array of the lower limits of the vars
65 Double_t fVarUpLimit[kNmaxAddSteps]; // array of the upper limits of the vars
67 Int_t fNCuts; // Number of cuts in the filter concerned
69 Bool_t fStepForMCtruth; //create a step for the MC truth
70 Bool_t fStepForNoCutsMCmotherPid; //create a step for before cuts, but with MC truth of the mother
71 Bool_t fStepForAfterAllCuts; //create a step for before cuts, but with MC truth of the mother
72 Bool_t fStepsForEachCut; //create steps for each cut?
73 Bool_t fStepsForCutsIncreasing; //create steps for increasing cut combinatons?
74 //e.g. cut1&cut2, cut1&cut2&cut3 ...
76 UInt_t fStepMasks[kNmaxAddSteps]; //steps for additional cut combinatons
77 UInt_t fNStepMasks; //number of configured step masks
79 Int_t fPdgMother; //Pdg code of MCtruth validation
80 AliCFContainer* fCfContainer; //the CF container
82 AliDielectronCF(const AliDielectronCF &c);
83 AliDielectronCF &operator=(const AliDielectronCF &c);
85 ClassDef(AliDielectronCF,2) //Dielectron Correction Framework handler