]>
Commit | Line | Data |
---|---|---|
32301b07 | 1 | //------------------------------------\r |
2 | // Configuration macro example:\r | |
3 | //\r | |
4 | // Configure EMCal electron analysis\r | |
5 | //\r | |
6 | // Modified by: K. Read\r | |
7 | //\r | |
8 | //------------------------------------\r | |
9 | \r | |
10 | AliAnaPartCorrMaker* ConfigAnalysis()\r | |
11 | {\r | |
12 | //\r | |
13 | // Configuration goes here\r | |
14 | // \r | |
15 | printf("======================== \n");\r | |
16 | printf("ConfigAnalysisElectron() \n");\r | |
17 | printf("======================== \n");\r | |
18 | Bool_t kInputIsESD = kTRUE; //uncomment for input ESD\r | |
19 | //Bool_t kInputIsESD = kFALSE; //uncomment for input AODs\r | |
20 | Bool_t kFollowsFilter = kTRUE; //uncomment if follows ESD filter task\r | |
21 | //Bool_t kFollowsFilter = kFALSE; //uncomment if no ESD filter task\r | |
22 | Bool_t kMC = kTRUE; //set to kFALSE for data\r | |
23 | \r | |
24 | //enum for the different electron cut sets\r | |
25 | //defined for dR and p/E\r | |
26 | //kTight2 is the default standard cuts\r | |
27 | enum kCutTypes {kTight2, kLooseTight, kTightLoose, kLoose2};\r | |
28 | Int_t kCutSet = kTight2;\r | |
29 | Double_t pOverEmin = 0.8; //tight\r | |
30 | Double_t pOverEmax = 1.2; //tight\r | |
31 | Double_t dRmax = 0.02; //tight\r | |
32 | if (gSystem->Getenv("ELECUTSET")){\r | |
33 | kCutSet = atoi(gSystem->Getenv("ELECUTSET"));\r | |
34 | }\r | |
35 | if(kCutSet == kLooseTight) {\r | |
36 | pOverEmin = 0.6; //loose\r | |
37 | pOverEmax = 1.4; //loose\r | |
38 | dRmax = 0.02; //tight\r | |
39 | }\r | |
40 | if(kCutSet == kTightLoose) {\r | |
41 | pOverEmin = 0.8; //tight\r | |
42 | pOverEmax = 1.2; //tight\r | |
43 | dRmax = 0.05; //loose\r | |
44 | }\r | |
45 | if(kCutSet == kLoose2) {\r | |
46 | pOverEmin = 0.6; //loose\r | |
47 | pOverEmax = 1.4; //loose\r | |
48 | dRmax = 0.05; //loose\r | |
49 | } \r | |
50 | \r | |
51 | //Alternatively, select input via anaInputData environment variable.\r | |
52 | if (gSystem->Getenv("anaInputData")){\r | |
53 | TString kInputData = gSystem->Getenv("anaInputData");\r | |
54 | if( kInputData == "AOD" ){\r | |
55 | kInputIsESD = kFALSE;\r | |
56 | kFollowsFilter = kFALSE;\r | |
57 | }\r | |
58 | }\r | |
59 | \r | |
60 | //Alternatively, adjust for real data based on kMC value.\r | |
61 | if (gSystem->Getenv("anakMC")){\r | |
62 | kMC = atoi(gSystem->Getenv("anakMC"));\r | |
63 | }\r | |
64 | \r | |
65 | //Detector Fiducial Cuts\r | |
66 | AliFiducialCut * fidCut = new AliFiducialCut();\r | |
67 | fidCut->DoCTSFiducialCut(kFALSE) ;\r | |
68 | fidCut->DoEMCALFiducialCut(kFALSE) ;\r | |
69 | fidCut->DoPHOSFiducialCut(kFALSE) ;\r | |
70 | \r | |
71 | //fidCut->SetSimpleCTSFiducialCut(0.9,0.,360.);\r | |
72 | //fidCut->SetSimpleEMCALFiducialCut(0.7,80.,190.);\r | |
73 | //fidCut->SetSimplePHOSFiducialCut(0.13,220.,320.);\r | |
74 | \r | |
75 | fidCut->Print("");\r | |
76 | \r | |
77 | //----------------------------------------------------------- \r | |
78 | // Reader\r | |
79 | //-----------------------------------------------------------\r | |
80 | if(kInputIsESD && !kFollowsFilter)AliCaloTrackESDReader *reader = new AliCaloTrackESDReader();\r | |
81 | else AliCaloTrackAODReader *reader = new AliCaloTrackAODReader();\r | |
82 | reader->SetDebug(-1);//10 for lots of messages\r | |
83 | \r | |
84 | //Switch on or off the detectors information that you want\r | |
85 | reader->SwitchOnEMCAL();\r | |
86 | reader->SwitchOnCTS();\r | |
87 | //reader->SwitchOffEMCALCells(); \r | |
88 | reader->SwitchOffPHOS();\r | |
89 | //reader->SwitchOffPHOSCells(); \r | |
90 | \r | |
91 | //Kine\r | |
92 | if(kMC && !kInputIsESD){\r | |
93 | reader->SwitchOffStack(); // On by default, remember to SwitchOnMCData() in analysis classes\r | |
94 | reader->SwitchOnAODMCParticles(); // Off by default, remember to SwitchOnMCData() in analysis classes\r | |
95 | }\r | |
96 | \r | |
97 | //Select Trigger Class for real data\r | |
98 | if(!kMC) reader->SetFiredTriggerClassName("CINT1B-ABCE-NOPF-ALL");\r | |
99 | \r | |
100 | //Min particle pT\r | |
101 | reader->SetCTSPtMin(0.0); //new\r | |
102 | reader->SetEMCALPtMin(0.0); //new\r | |
103 | if(kFollowsFilter)reader->SetTrackStatus(0); //to prevent automatic TPC and ITS refit\r | |
104 | \r | |
105 | //In case of generating jet events (with PYTHIA), if pt hard bin is small\r | |
106 | //reject events with large difference between ptHard and triggered jet\r | |
107 | //reader->SetPtHardAndJetPtComparison(kTRUE);\r | |
108 | \r | |
109 | reader->SetFiducialCut(fidCut);\r | |
110 | \r | |
111 | if(!kInputIsESD){\r | |
112 | // Analysis with tracks, select only tracks with\r | |
113 | // following bits\r | |
114 | \r | |
115 | // //We want tracks fitted in the detectors:\r | |
116 | // ULong_t status=AliAODTrack::kTPCrefit;\r | |
117 | // status|=AliAODTrack::kITSrefit;\r | |
118 | \r | |
119 | // We want tracks whose PID bit is set:\r | |
120 | // ULong_t status =AliAODTrack::kITSpid;\r | |
121 | // status|=AliAODTrack::kTPCpid; \r | |
122 | \r | |
123 | // reader->SetTrackStatus(status);\r | |
124 | }\r | |
125 | \r | |
126 | reader->Print("");\r | |
127 | \r | |
128 | \r | |
129 | //Detector Fiducial Cuts\r | |
130 | AliFiducialCut * fidCut2 = new AliFiducialCut();\r | |
131 | fidCut2->DoEMCALFiducialCut(kTRUE) ;\r | |
132 | fidCut2->SetSimpleEMCALFiducialCut(0.7,80.,190.);\r | |
133 | \r | |
134 | fidCut2->DoCTSFiducialCut(kTRUE) ;\r | |
135 | fidCut2->SetSimpleCTSFiducialCut(0.9,0.,360.); \r | |
136 | \r | |
137 | fidCut2->Print("");\r | |
138 | \r | |
139 | //---------------------------------------------------------------------\r | |
140 | // Analysis algorithm\r | |
141 | //---------------------------------------------------------------------\r | |
142 | \r | |
143 | AliAnaBtag *anaelectron = new AliAnaBtag();\r | |
144 | anaelectron->SetDebug(-1); //10 for lots of messages\r | |
145 | anaelectron->SetCalorimeter("EMCAL");\r | |
146 | if(kMC){\r | |
147 | anaelectron->SwitchOffDataMC();\r | |
148 | anaelectron->SetMinPt(1.);\r | |
149 | }\r | |
150 | anaelectron->SetOutputAODName("Electrons");\r | |
151 | anaelectron->SetOutputAODClassName("AliAODPWG4Particle");\r | |
152 | anaelectron->SetWriteNtuple(kFALSE);\r | |
153 | //Determine which cuts to use based on enum\r | |
154 | anaelectron->SetpOverEmin(pOverEmin);\r | |
155 | anaelectron->SetpOverEmax(pOverEmax);\r | |
156 | anaelectron->SetResidualCut(dRmax);\r | |
157 | //Set Histrograms bins and ranges\r | |
158 | anaelectron->SetHistoPtRangeAndNBins(0, 100, 100) ;\r | |
159 | anaelectron->SetHistoPhiRangeAndNBins(0, TMath::TwoPi(), 100) ;\r | |
160 | anaelectron->SetHistoEtaRangeAndNBins(-0.7, 0.7, 100) ;\r | |
161 | anaelectron->Print("");\r | |
162 | \r | |
163 | //---------------------------------------------------------------------\r | |
164 | // Set analysis algorithm and reader\r | |
165 | //---------------------------------------------------------------------\r | |
166 | maker = new AliAnaPartCorrMaker();\r | |
167 | maker->SetReader(reader);//pointer to reader\r | |
168 | maker->AddAnalysis(anaelectron,0);\r | |
169 | maker->SetAnaDebug(-1) ;\r | |
170 | maker->SwitchOnHistogramsMaker() ;\r | |
171 | maker->SwitchOnAODsMaker() ;\r | |
172 | \r | |
173 | maker->Print("");\r | |
174 | //\r | |
175 | printf("============================ \n");\r | |
176 | printf("END ConfigAnalysisElectron() \n");\r | |
177 | printf("============================ \n");\r | |
178 | return maker ;\r | |
179 | }\r |