]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/macros/ConfigAnalysisESDExample.C
New more general analysis implemention for particle identification and correlation...
[u/mrichter/AliRoot.git] / PWG4 / macros / ConfigAnalysisESDExample.C
CommitLineData
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
12AliAnaMaker* 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}