]>
Commit | Line | Data |
---|---|---|
6551594b | 1 | #ifndef ALIDIELECTRONCFDRAW_H |
2 | #define ALIDIELECTRONCFDRAW_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 Draw helper # | |
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> | |
572b0139 | 25 | #include <TVectorD.h> |
6551594b | 26 | #include <AliCFContainer.h> |
7c2efce2 | 27 | #include "AliDielectronVarManager.h" |
6551594b | 28 | |
29 | class TObjArray; | |
30 | class TSeqCollection; | |
a655b716 | 31 | class AliCFEffGrid; |
6551594b | 32 | class TH1; |
33 | ||
34 | class AliCFContainer; | |
35 | ||
36 | class AliDielectronCFdraw : public TNamed { | |
37 | public: | |
a823f01b | 38 | enum ECollectType { kSE=0, kME, kMEOS, kROT, kAll }; |
39 | ||
6551594b | 40 | AliDielectronCFdraw(); |
41 | AliDielectronCFdraw(const char* name, const char* title); | |
a655b716 | 42 | AliDielectronCFdraw(AliCFContainer *cont); |
43 | AliDielectronCFdraw(const char* filename); | |
44 | ||
d327d9cd | 45 | virtual ~AliDielectronCFdraw(); |
a655b716 | 46 | |
6551594b | 47 | void SetCFContainer(AliCFContainer * const container) {fCfContainer=container;} |
48 | void SetCFContainers(const TSeqCollection *arr); | |
49 | ||
50 | void SetCFContainers(const char* filename); | |
51 | ||
52 | AliCFContainer* GetCFContainer() const {return fCfContainer;} | |
53 | ||
54 | void SetRangeUser(Int_t ivar, Double_t min, Double_t max, const char* slices=""); | |
55 | void SetRangeUser(const char* varname, Double_t min, Double_t max, const char* slices=""); | |
7c2efce2 | 56 | void SetRangeUser(AliDielectronVarManager::ValueTypes type, Double_t min, Double_t max, const char* slices="", Bool_t leg=kFALSE); |
6551594b | 57 | |
58 | void UnsetRangeUser(Int_t ivar, const char* slices=""); | |
59 | void UnsetRangeUser(const char* varname, const char* slices=""); | |
7c2efce2 | 60 | void UnsetRangeUser(AliDielectronVarManager::ValueTypes type, const char* slices="", Bool_t leg=kFALSE); |
61 | ||
62 | TString FindSteps(const char* search=""); | |
01e4cb7f | 63 | Int_t FindStep(const char* search=""); |
64 | Int_t FindVar(AliDielectronVarManager::ValueTypes type, Bool_t leg=kFALSE); | |
6551594b | 65 | |
66b2c564 | 66 | virtual void Draw(const Option_t* varnames = "") { Draw(varnames,"");} |
5720c765 | 67 | virtual void Print(const Option_t*) const { if (fCfContainer) fCfContainer->Print(""); } |
a655b716 | 68 | //Draw Projections |
66b2c564 | 69 | void Draw(const Option_t* varnames, const char* opt, const char* slices=""); |
6551594b | 70 | void Draw(Int_t var, const char* opt="", const char* slices=""); |
71 | void Draw(Int_t var0, Int_t var1, const char* opt="", const char* slices=""); | |
72 | void Draw(Int_t var0, Int_t var1, Int_t var2, const char* opt="", const char* slices=""); | |
a655b716 | 73 | |
ba15fdfb | 74 | TObjArray* CollectHistosProj(const Option_t* varnames, const char* slices); |
ffbede40 | 75 | TObjArray* CollectHistosProj(const Int_t vars[3], const char* slices); |
a823f01b | 76 | TObjArray* CollectMinvProj(Int_t slice, ECollectType collect=kAll, TString var="M"); |
ffbede40 | 77 | TH1* Project(const Int_t vars[3], Int_t slice); |
2a14a7b1 | 78 | TH1* Project(const Option_t* var, Int_t slice); |
79 | ||
a655b716 | 80 | //Draw efficiencies |
554e40f8 | 81 | void DrawEfficiency(const char* varnames, const char* numerators, Int_t denominator=0, const char* opt="sameleg2"); |
82 | void DrawEfficiency(Int_t var, const char* numerators, Int_t denominator=0, const char* opt="sameleg", Int_t type=0); | |
83 | void DrawEfficiency(Int_t var0, Int_t var1, const char* numerators, Int_t denominator=0, const char* opt="sameleg", Int_t type=0); | |
84 | void DrawEfficiency(Int_t var0, Int_t var1, Int_t var2, const char* numerators, Int_t denominator=0, const char* opt="sameleg", Int_t type=0); | |
a655b716 | 85 | |
ffbede40 | 86 | TObjArray* CollectHistosEff(const Int_t vars[3], const char* numerators, Int_t denominator, Int_t type=0); |
87 | TH1* ProjectEff(const Int_t vars[3]); | |
554e40f8 | 88 | |
89 | Double_t GetAverageEfficiency(Int_t numerator, Int_t denominator, Double_t &effErr); | |
a655b716 | 90 | |
572b0139 | 91 | const TVectorD& GetData() const {return fVdata;} |
a655b716 | 92 | void Draw(const TObjArray *arr, const char* opt=""); |
6551594b | 93 | private: |
94 | AliCFContainer *fCfContainer; // CF container | |
a655b716 | 95 | AliCFEffGrid *fEffGrid; // Efficiency calculation |
572b0139 | 96 | |
97 | TVectorD fVdata; // vector with data, like mean efficiencies | |
a655b716 | 98 | |
6551594b | 99 | AliDielectronCFdraw(const AliDielectronCFdraw &c); |
100 | AliDielectronCFdraw &operator=(const AliDielectronCFdraw &c); | |
101 | ||
102 | ClassDef(AliDielectronCFdraw,0) // CF draw helper class | |
103 | }; | |
104 | ||
105 | // | |
106 | // Inline functions | |
107 | // | |
01e4cb7f | 108 | |
109 | inline Int_t AliDielectronCFdraw::FindVar(AliDielectronVarManager::ValueTypes type, Bool_t leg) | |
110 | { | |
111 | // | |
112 | // find variable number in CF container | |
113 | // | |
114 | return ( fCfContainer->GetVar(Form("%s%s", leg?"Leg1_":"", AliDielectronVarManager::GetValueName(type))) ); | |
115 | } | |
6551594b | 116 | #endif |
117 |