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