]>
Commit | Line | Data |
---|---|---|
b2a297fa | 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 */ | |
5 | ||
6 | //############################################################# | |
7 | //# # | |
8 | //# Class AliDielectronCF # | |
9 | //# Dielectron Correction Framework Manager # | |
10 | //# # | |
11 | //# Authors: # | |
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 # | |
19 | //# # | |
20 | //############################################################# | |
21 | ||
22 | ||
23 | ||
24 | #include <TNamed.h> | |
25 | #include "AliDielectronVarManager.h" | |
26 | ||
27 | class AliAnalysisCuts; | |
28 | class AliAnalysisFilter; | |
29 | class AliCFContainer; | |
6551594b | 30 | class AliDielectronPair; |
b2a297fa | 31 | |
32 | class AliDielectronCF : public TNamed { | |
33 | public: | |
34 | enum {kNmaxAddSteps=50}; | |
35 | ||
36 | AliDielectronCF(); | |
37 | AliDielectronCF(const char* name, const char* title); | |
38 | virtual ~AliDielectronCF(); | |
39 | ||
e123f993 | 40 | void SetStepForMCtruth(Bool_t steps=kTRUE) { fStepForMCtruth=steps; } |
41 | void SetStepForNoCutsMCmotherPid(Bool_t steps=kTRUE) { fStepForNoCutsMCmotherPid=steps; } | |
42 | void SetStepForAfterAllCuts(Bool_t steps=kTRUE) { fStepForAfterAllCuts=steps; } | |
43 | void SetStepsForEachCut(Bool_t steps=kTRUE) { fStepsForEachCut=steps; } | |
44 | void SetStepsForCutsIncreasing(Bool_t steps=kTRUE) { fStepsForCutsIncreasing=steps; } | |
b2a297fa | 45 | |
46 | void SetPdgMother(Int_t pdg) { fPdgMother=pdg; } | |
47 | ||
48 | void AddStepMask(UInt_t mask) { fStepMasks[fNStepMasks++]=mask; } | |
49 | ||
6551594b | 50 | void AddVariable(AliDielectronVarManager::ValueTypes type, Int_t nbins, Double_t min, Double_t max, Bool_t leg=kFALSE); |
b2a297fa | 51 | |
52 | void InitialiseContainer(const AliAnalysisFilter& filter); | |
53 | ||
6551594b | 54 | // void Fill(UInt_t mask, const TObject *particle); |
55 | void Fill(UInt_t mask, const AliDielectronPair *particle); | |
b2a297fa | 56 | void FillMC(const TObject *particle); |
57 | ||
58 | AliCFContainer* GetContainer() const { return fCfContainer; } | |
59 | ||
6551594b | 60 | private: |
b2a297fa | 61 | UInt_t fVariables[AliDielectronVarManager::kNMaxValues]; //configured variables |
6551594b | 62 | UInt_t fVariablesLeg[AliDielectronVarManager::kNMaxValues]; //configured variables for the legs |
b2a297fa | 63 | |
64 | Int_t fNSteps; // number of selection steps | |
6551594b | 65 | |
b2a297fa | 66 | Int_t fNVars; // number of variables |
67 | Int_t fNBins[kNmaxAddSteps]; // array of numbers ob bins of the vars | |
68 | Double_t fVarLoLimit[kNmaxAddSteps]; // array of the lower limits of the vars | |
69 | Double_t fVarUpLimit[kNmaxAddSteps]; // array of the upper limits of the vars | |
70 | ||
6551594b | 71 | Int_t fNVarsLeg; // number of variables for the legs |
72 | Int_t fNBinsLeg[kNmaxAddSteps]; // array of numbers ob bins of the vars for the legs | |
73 | Double_t fVarLoLimitLeg[kNmaxAddSteps]; // array of the lower limits of the vars for the legs | |
74 | Double_t fVarUpLimitLeg[kNmaxAddSteps]; // array of the upper limits of the vars for the legs | |
75 | ||
76 | Int_t fNCuts; // Number of cuts in the filter concerned | |
b2a297fa | 77 | |
6551594b | 78 | Double_t *fValues; // Value array for filling the container |
79 | ||
e123f993 | 80 | Bool_t fStepForMCtruth; //create a step for the MC truth |
81 | Bool_t fStepForNoCutsMCmotherPid; //create a step for before cuts, but with MC truth of the mother | |
82 | Bool_t fStepForAfterAllCuts; //create a step for before cuts, but with MC truth of the mother | |
83 | Bool_t fStepsForEachCut; //create steps for each cut? | |
84 | Bool_t fStepsForCutsIncreasing; //create steps for increasing cut combinatons? | |
85 | //e.g. cut1&cut2, cut1&cut2&cut3 ... | |
b2a297fa | 86 | |
87 | UInt_t fStepMasks[kNmaxAddSteps]; //steps for additional cut combinatons | |
88 | UInt_t fNStepMasks; //number of configured step masks | |
89 | ||
90 | Int_t fPdgMother; //Pdg code of MCtruth validation | |
91 | AliCFContainer* fCfContainer; //the CF container | |
92 | ||
93 | AliDielectronCF(const AliDielectronCF &c); | |
94 | AliDielectronCF &operator=(const AliDielectronCF &c); | |
95 | ||
6551594b | 96 | ClassDef(AliDielectronCF,3) //Dielectron Correction Framework handler |
b2a297fa | 97 | }; |
98 | ||
99 | #endif |