]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/macros/ConfigAnalysisGammaDirect.C
604bd446aa121fefc1657450fac3b9905add2091
[u/mrichter/AliRoot.git] / PWG4 / macros / ConfigAnalysisGammaDirect.C
1 /* $Id: $ */
2 /* $Log$ */
3
4 //------------------------------------
5 // Configuration macro example:
6 //
7 // Do prompt photon analysis with ESDs
8 // Gamma in PHOS, 
9 // for EMCAL, PHOS by EMCAL where necessary
10 // First find photons with AliAnaPhoton, then 
11 // isolate them with AliAnaParticleIsolation
12 //
13 // Author : Gustavo Conesa Balbastre (INFN-LNF)
14 //------------------------------------
15
16 AliAnaPartCorrMaker*  ConfigAnalysis()
17 {
18         //
19         // Configuration goes here
20         // 
21         printf("======================== \n");
22         printf("ConfigAnalysis() \n");
23         printf("======================== \n");
24         
25         
26         //Detector Fidutial Cuts
27         AliFidutialCut * fidCut = new AliFidutialCut();
28         fidCut->DoCTSFidutialCut(kFALSE) ;
29         fidCut->DoEMCALFidutialCut(kFALSE) ;
30         fidCut->DoPHOSFidutialCut(kFALSE) ;
31         
32         //fidCut->SetSimpleCTSFidutialCut(0.9,0.,360.);
33         //fidCut->SetSimpleEMCALFidutialCut(0.7,80.,190.);
34         //fidCut->SetSimplePHOSFidutialCut(0.13,220.,320.);
35         
36         fidCut->Print("");
37         
38         //-----------------------------------------------------------  
39         // Reader
40         //-----------------------------------------------------------
41         AliCaloTrackESDReader *reader = new AliCaloTrackESDReader();
42         reader->SetDebug(-1);
43         
44         //Switch on or off the detectors information that you want
45         reader->SwitchOffEMCAL();
46         reader->SwitchOnCTS();
47         reader->SwitchOnPHOS();
48         
49         //Min particle pT
50         reader->SetEMCALPtMin(0.2); 
51         reader->SetPHOSPtMin(0.2);
52         reader->SetCTSPtMin(0.2);
53         
54         reader->SetFidutialCut(fidCut);
55         reader->Print("");
56         
57         
58         //---------------------------------------------------------------------
59         // Analysis algorithm
60         //---------------------------------------------------------------------
61         //>>>> First Analysis <<<<
62         //Detector Fidutial Cuts for analysis part
63         AliFidutialCut * fidCut2 = new AliFidutialCut();
64         fidCut2->DoCTSFidutialCut(kFALSE) ;
65         fidCut2->DoEMCALFidutialCut(kFALSE) ;
66         fidCut2->DoPHOSFidutialCut(kFALSE) ;
67         
68         //fidCut2->SetSimpleCTSFidutialCut(0.9,0.,360.);
69         //fidCut2->SetSimpleEMCALFidutialCut(0.7,80.,190.);
70         fidCut2->SetSimplePHOSFidutialCut(0.12,220.,320.);
71         
72 //      //Select particles in N regions of the detectors
73 //      Float_t etamax[]={0.67,0.51,0.16,-0.21,-0.61};
74 //      TArrayF etamaxarr(5,etamax);
75 //      fidCut2->AddEMCALFidCutMaxEtaArray(etamaxarr);
76 //      Float_t etamin[]={0.61,0.21,-0.16,-0.51,-0.67};
77 //      TArrayF etaminarr(5,etamin);
78 //      fidCut2->AddEMCALFidCutMinEtaArray(etaminarr);
79 //      Float_t phimax[]={99., 119., 139., 159., 179., 189.};
80 //      TArrayF phimaxarr(6,phimax);
81 //      fidCut2->AddEMCALFidCutMaxPhiArray(phimaxarr);
82 //      Float_t phimin[]={81., 101.  , 121. , 141. , 161. , 181. };
83 //      TArrayF phiminarr(6,phimin);
84 //      fidCut2->AddEMCALFidCutMinPhiArray(phiminarr);
85 //      fidCut2->Print("");
86 //      
87         AliCaloPID * pid = new AliCaloPID();
88         // use selection with simple weights
89         pid->SetPHOSPhotonWeight(0.7);    pid->SetPHOSPi0Weight(0.7); 
90         pid->SetEMCALPhotonWeight(0.7);    pid->SetEMCALPi0Weight(0.7);
91         // use more complicated selection, particle weight depending on cluster energy
92         // pid->UsePHOSPIDWeightFormula(kTRUE);
93         // 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))");
94         // 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))");
95         // pid->SetPHOSPhotonWeightFormula(photonF);
96         // pid->SetPHOSPi0WeightFormula(pi0F);
97         pid->Print("");
98         
99         
100         AliAnaPhoton *anaphoton = new AliAnaPhoton();
101         anaphoton->SetDebug(-1); //10 for lots of messages
102         anaphoton->SetMinPt(0.2);
103         anaphoton->SetMinDistanceToBadChannel(2, 4, 5);
104         anaphoton->SetCaloPID(pid);
105         anaphoton->SetFidutialCut(fidCut2); //More acceptance selections if needed at this level
106         anaphoton->SetCalorimeter("PHOS");
107         anaphoton->SwitchOffDataMC() ;//Access MC stack and fill more histograms
108         anaphoton->SwitchOnCaloPID();
109         anaphoton->SwitchOffCaloPIDRecalculation(); //recommended for EMCAL
110         anaphoton->SwitchOnFidutialCut();
111         anaphoton->SetOutputAODName("Photons");
112         anaphoton->SetOutputAODClassName("AliAODPWG4ParticleCorrelation");
113         //Set Histrograms bins and ranges
114         //      anaphoton->SetHistoPtRangeAndNBins(0, 50, 100) ;
115         //      anaphoton->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;
116         //      anaphoton->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;
117         anaphoton->Print("");
118         
119         // >>>> Second Analysis <<<< Isolate the photons
120         AliIsolationCut * ic = new AliIsolationCut();
121         ic->SetConeSize(0.5);
122         ic->SetPtThreshold(1.);
123         ic->SetICMethod(AliIsolationCut::kPtThresIC);
124         ic->Print("");
125         
126         AliAnaParticleIsolation *anaisol = new AliAnaParticleIsolation();
127         anaisol->SetDebug(-1);
128         anaisol->SetMinPt(5);
129         anaisol->SetInputAODName("Photons");
130         anaisol->SetCalorimeter("PHOS");
131         anaisol->SwitchOffDataMC() ;//Access MC stack and fill more histograms
132         //Select clusters with no pair, if both clusters with pi0 mass
133         anaisol->SwitchOffInvariantMass();
134         //anaisol->SetNeutralMesonSelection(nms);
135         //Do isolation cut
136         anaisol->SetIsolationCut(ic);   
137         //Do or not do isolation with previously produced AODs.
138         //No effect if use of SwitchOnSeveralIsolation()
139         anaisol->SwitchOffReIsolation();
140         //Multiple IC
141         anaisol->SwitchOffSeveralIsolation() ;
142         
143         anaisol->Print("");
144         
145                 
146         //---------------------------------------------------------------------
147         // Set  analysis algorithm and reader
148         //---------------------------------------------------------------------
149         maker = new AliAnaPartCorrMaker();
150         maker->SetReader(reader);//pointer to reader
151         maker->AddAnalysis(anaphoton,0);
152         maker->AddAnalysis(anaisol,1);
153         maker->SetAnaDebug(-1)  ;
154         maker->SwitchOnHistogramsMaker()  ;
155         //maker->SwitchOffHistogramsMaker() ;  
156         maker->SwitchOnAODsMaker()  ;
157         //maker->SwitchOffAODsMaker() ; 
158         
159         maker->Print("");
160         //
161         printf("======================== \n");
162         printf("END ConfigAnalysis() \n");
163         printf("======================== \n");
164         return maker ;
165 }