Add a draw class for the CORRFW (produces a warning, will be fixed
[u/mrichter/AliRoot.git] / PWG3 / dielectron / AliDielectronCF.h
CommitLineData
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
27class AliAnalysisCuts;
28class AliAnalysisFilter;
29class AliCFContainer;
6551594b 30class AliDielectronPair;
b2a297fa 31
32class AliDielectronCF : public TNamed {
33public:
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 60private:
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