]>
Commit | Line | Data |
---|---|---|
d92b41ad | 1 | /* $Id: $ */ |
2 | /* $Log$ */ | |
3 | ||
4 | //------------------------------------ | |
5 | // Configuration macro example: | |
6 | // | |
7 | // Do prompt photon analysis with ESDs | |
8 | // | |
9 | // Author : Gustavo Conesa Balbastre (INFN-LNF) | |
10 | //------------------------------------ | |
11 | ||
12 | AliAnaMaker* ConfigAnalysis() | |
13 | { | |
14 | // | |
15 | // Configuration goes here | |
16 | // | |
17 | printf("======================== \n"); | |
18 | printf("ConfigAnalysis() \n"); | |
19 | printf("======================== \n"); | |
20 | ||
21 | ||
22 | //Detector Fidutial Cuts | |
23 | AliFidutialCut * fidCut = new AliFidutialCut(); | |
24 | //Select particles depending on acceptance | |
25 | //kFALSE, open cuts | |
26 | fidCut->DoCTSFidutialCut(kTRUE) ; | |
27 | fidCut->DoEMCALFidutialCut(kTRUE) ; | |
28 | fidCut->DoPHOSFidutialCut(kTRUE) ; | |
29 | ||
30 | //Select particles in one region of the detectors | |
31 | fidCut->SetSimpleCTSFidutialCut(0.9,0.,360.); | |
32 | fidCut->SetSimpleEMCALFidutialCut(0.7,80.,190.); | |
33 | fidCut->SetSimplePHOSFidutialCut(0.13,220.,320.); | |
34 | ||
35 | //Select particles in N regions of the detectors | |
36 | // Float_t etamax[]={0.67,0.51,0.16,-0.21,-0.61}; | |
37 | // TArrayF etamaxarr(5,etamax); | |
38 | // fidCut->AddEMCALFidCutMaxEtaArray(etamaxarr); | |
39 | // Float_t etamin[]={0.61,0.21,-0.16,-0.51,-0.67}; | |
40 | // TArrayF etaminarr(5,etamin); | |
41 | // fidCut->AddEMCALFidCutMinEtaArray(etaminarr); | |
42 | // Float_t phimax[]={99.*TMath::DegToRad(), 119.*TMath::DegToRad(), 139.*TMath::DegToRad(), | |
43 | // 159.*TMath::DegToRad(), 179.*TMath::DegToRad(), 189.*TMath::DegToRad()}; | |
44 | // TArrayF phimaxarr(6,phimax); | |
45 | // fidCut->AddEMCALFidCutMaxPhiArray(phimaxarr); | |
46 | // Float_t phimin[]={81.*TMath::DegToRad(), 101.*TMath::DegToRad(), 121.*TMath::DegToRad(), | |
47 | // 141.*TMath::DegToRad(), 161.*TMath::DegToRad(), 181.*TMath::DegToRad()}; | |
48 | // TArrayF phiminarr(6,phimin); | |
49 | // fidCut->AddEMCALFidCutMinPhiArray(phiminarr); | |
50 | ||
51 | // //Fidutial cut PHOS | |
52 | // TArrayF etamaxarr(1,etamax); | |
53 | // etamaxarr.SetAt(0.12,0); | |
54 | // fidCut->AddPHOSFidCutMaxEtaArray(etamaxarr); | |
55 | // TArrayF etaminarr(1,etamin); | |
56 | // etaminarr.SetAt(-0.12,0); | |
57 | // fidCut->AddPHOSFidCutMinEtaArray(etaminarr); | |
58 | // TArrayF phimaxarr(1,phimax); | |
59 | // phimaxarr.SetAt(320.*TMath::DegToRad(),0); | |
60 | // fidCut->AddPHOSFidCutMaxPhiArray(phimaxarr); | |
61 | // TArrayF phiminarr(1,phimin); | |
62 | // phiminarr.SetAt(220.*TMath::DegToRad(),0); | |
63 | // fidCut->AddPHOSFidCutMinPhiArray(phiminarr); | |
64 | ||
65 | // //Fidutial cut CTS | |
66 | // TArrayF etamaxarr(1,etamax); | |
67 | // etamaxarr.SetAt(0.12,0); | |
68 | // fidCut->AddCTSFidCutMaxEtaArray(etamaxarr); | |
69 | // TArrayF etaminarr(1,etamin); | |
70 | // etaminarr.SetAt(-0.12,0); | |
71 | // fidCut->AddCTSFidCutMinEtaArray(etaminarr); | |
72 | // TArrayF phimaxarr(1,phimax); | |
73 | // phimaxarr.SetAt(320.*TMath::DegToRad(),0); | |
74 | // fidCut->AddCTSFidCutMaxPhiArray(phimaxarr); | |
75 | // TArrayF phiminarr(1,phimin); | |
76 | // phiminarr.SetAt(220.*TMath::DegToRad(),0); | |
77 | // fidCut->AddCTSFidCutMinPhiArray(phiminarr); | |
78 | ||
79 | fidCut->Print(""); | |
80 | ||
81 | //----------------------------------------------------------- | |
82 | // Reader | |
83 | //----------------------------------------------------------- | |
84 | AliCaloTrackReader *reader = new AliCaloTrackESDReader(); | |
85 | reader->SetDebug(-1); | |
86 | ||
87 | //Switch on or off the detectors information that you want | |
88 | //It will fill the corresponding detector arrays | |
89 | reader->SwitchOnEMCAL(); | |
90 | reader->SwitchOnCTS(); | |
91 | reader->SwitchOnPHOS(); | |
92 | reader->SwitchOnEMCALCells(); | |
93 | reader->SwitchOnPHOSCells(); | |
94 | //reader->SwitchOffEMCAL(); | |
95 | //reader->SwitchOffCTS(); | |
96 | //reader->SwitchOffPHOS(); | |
97 | //reader->SwitchOffEMCALCells(); | |
98 | //reader->SwitchOffPHOSCells(); | |
99 | ||
100 | //Min particle pT | |
101 | //Selections done while filling the detector arrays | |
102 | reader->SetEMCALPtMin(0.5); | |
103 | reader->SetPHOSPtMin(0.5); | |
104 | reader->SetCTSPtMin(0.2); | |
105 | ||
106 | reader->SetFidutialCut(fidCut); | |
107 | ||
108 | reader->Print(""); | |
109 | ||
110 | ||
111 | //--------------------------------------------------------------------- | |
112 | // Analysis algorithm | |
113 | //--------------------------------------------------------------------- | |
114 | ||
115 | //Some settings for the analysis | |
116 | ||
117 | //Detector Fidutial Cuts for analysis part | |
118 | //You can define different cuts for your analysis | |
119 | AliFidutialCut * fidCut2 = new AliFidutialCut(); | |
120 | fidCut2->DoCTSFidutialCut(kFALSE) ; | |
121 | fidCut2->DoEMCALFidutialCut(kTRUE) ; | |
122 | fidCut2->DoPHOSFidutialCut(kTRUE) ; | |
123 | ||
124 | fidCut2->SetSimpleCTSFidutialCut(0.9,0.,360.); | |
125 | fidCut2->SetSimpleEMCALFidutialCut(0.7,80.,160.); | |
126 | fidCut2->SetSimplePHOSFidutialCut(0.13,220.,280.); | |
127 | ||
128 | AliCaloPID * pid = new AliCaloPID(); | |
129 | // use selection with simple weights | |
130 | pid->SetPHOSPhotonWeight(0.7); pid->SetPHOSPi0Weight(0.7); | |
131 | pid->SetEMCALPhotonWeight(0.7); pid->SetEMCALPi0Weight(0.7); | |
132 | // use more complicated selection, particle weight depending on cluster energy, | |
133 | // only for PHOS | |
134 | // pid->UsePHOSPIDWeightFormula(kTRUE); | |
135 | // TFormula * photonF = new TFormula("photonWeight","0.98*(x<40)+ 0.68*(x>=100)+(x>=40 && x<100)*(0.98+x*(6e-3)-x*x*(2e-04)+x*x*x*(1.1e-06))"); | |
136 | // TFormula * pi0F = new TFormula("pi0Weight","0.98*(x<65)+ 0.915*(x>=100)+(x>=65 && x-x*(1.95e-3)-x*x*(4.31e-05)+x*x*x*(3.61e-07))"); | |
137 | // pid->SetPHOSPhotonWeightFormula(photonF); | |
138 | // pid->SetPHOSPi0WeightFormula(pi0F); | |
139 | ||
140 | AliAnaExample *ana = new AliAnaExample(); | |
141 | ana->SetDebug(-1); | |
142 | //Do PID selection with settings defined up | |
143 | ana->SetCaloPID(pid); | |
144 | ana->SwitchOnCaloPID(); | |
145 | //Do Acceptance selection with settings defined up | |
146 | ana->SetFidutialCut(fidCut2); | |
147 | ||
148 | ana->SetPdg(AliCaloPID::kPhoton); //plot identified photons | |
149 | ana->SetDetector("PHOS"); //Detector for the analysis | |
150 | ana->SetMinPt(2);// Minimum pt of clusters/tracks | |
151 | ||
152 | ana->SwitchOnDataMC() ; //Access to the stack and fill | |
153 | // some histograms with MC information | |
154 | ||
155 | ana->Print(""); | |
156 | ||
157 | //AliAnaExample *ana2 = new AliAnaExample(); | |
158 | ||
159 | //--------------------------------------------------------------------- | |
160 | // Set analysis algorithm and reader | |
161 | //--------------------------------------------------------------------- | |
162 | maker = new AliAnaMaker(); | |
163 | maker->SetReader(reader);//pointer to reader | |
164 | maker->AddAnalysis(ana,0); | |
165 | //maker->AddAnalysis(ana2,1); | |
166 | maker->SetAODBranchName("Test"); | |
167 | maker->SetAnaDebug(1) ; | |
168 | maker->SwitchOnAODsMaker() ; | |
169 | //maker->SwitchOffAODsMaker() ; | |
170 | maker->SwitchOnHistogramsMaker() ; | |
171 | //maker->SwitchOffHistogramsMaker() ; | |
172 | ||
173 | ||
174 | maker->Print(""); | |
175 | // | |
176 | printf("======================== \n"); | |
177 | printf("END ConfigAnalysis() \n"); | |
178 | printf("======================== \n"); | |
179 | return maker ; | |
180 | } |