]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/macros/electrons/ConfigAnalysisElectron.C
major updates to plotting macros
[u/mrichter/AliRoot.git] / PWG4 / macros / electrons / ConfigAnalysisElectron.C
CommitLineData
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
10AliAnaPartCorrMaker* 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