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