1 Float_t kPtTrackMin = 0.15; // pt cut on tracks
2 Int_t kDetectorType = 1; // 0 = MC, 1 = TPC
4 AliAnalysisDataContainer* cout_jet_cont = 0x0;
6 void SetJetReaderExchangeContainer(AliAnalysisDataContainer* acont) {
11 AliAnalysisDataContainer* GetJetReaderExchangeContainer() { return cout_jet_cont;}
12 AliAnalysisDataContainer* AddJetExchangeContainer(const char* contname) { return AliAnalysisManager::GetAnalysisManager()->CreateContainer(contname, TTree::Class(),AliAnalysisManager::kExchangeContainer);}
14 AliJetReader *CreateJetReader(AliAnalysisDataContainer* contname,Char_t *jr,UInt_t filterMask); // Common config
16 AliAnalysisTaskJetsReader *AddTaskJetsReader(AliAnalysisDataContainer* contname,Char_t *jr, UInt_t filterMask = 0,Float_t ptTrackMin = 0.15 , Int_t dettype = 1); // for the new AF
17 Int_t AddTaskJetsReaderDelta(AliAnalysisDataContainer* contname,char *nonStdFile = "",UInt_t filterMask = 0,Bool_t kUseAODMC = kTRUE,UInt_t runFlag = 1|4|32|128|256);
18 AliAnalysisTaskJetsReader *AddTaskJetsReader(AliAnalysisDataContainer* contname,UInt_t filterMask = 0);
20 AliAnalysisTaskJetsReader *AddTaskJetsReader(const char* contname, UInt_t filterMask = 0) { return AddTaskJetsReader(AddJetExchangeContainer(contname),filterMask); } // LEGO trains
21 AliAnalysisTaskJetsReader *AddTaskJetsReader(const char* contname,Char_t *jr, UInt_t filterMask = 0,Float_t ptTrackMin = 0.15 , Int_t dettype = 1) {
22 return AddTaskJetsReader(AddJetExchangeContainer(contname),jr,filterMask,ptTrackMin,dettype);
26 AliAnalysisTaskJetsReader *AddTaskJetsReader(AliAnalysisDataContainer* contname,UInt_t filterMask){
27 // fills the standard input "jets" branch in the AOD
28 // need the ESDFilter to run before, to access the AODtracks
29 // Tracks selected by the first Filter (1<<0)
30 // needs to be adapted for different cuts
33 return AddTaskJetsReader(contname,"AOD",filterMask);
39 Int_t AddTaskJetsReaderDelta(AliAnalysisDataContainer* contname,char *nonStdFile,UInt_t filterMask,Bool_t kUseAODMC,UInt_t runFlag){
41 // Adds a whole set of jet finders all to be written
44 // this can in principle be done also with on the fly
45 // if we have an ESD input jet fidner task does automatically fetch the ouput aod
48 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
50 ::Error("AddTaskJetsReaderDelta", "No analysis manager to connect to.");
55 // Check the analysis type using the event handlers connected to the analysis manager.
56 //==============================================================================
57 if (!mgr->GetInputEventHandler()) {
58 ::Error("AddTaskJetsReaderDelta", "This task requires an input event handler");
63 AliAODHandler *aodh = (AliAODHandler*)mgr->GetOutputEventHandler();
65 ::Error("AddTaskJetsReaderDelta", "This task needs an output event handler");
69 TString outFile(nonStdFile);
72 AliAnalysisTaskJetsReader *taskjetsReader = 0;
75 const char *cReader[4] = {"AOD","AODMC","AODMC2","AODMC2b"};
80 // if(!kUseAODMC)ib=1; // switch OFF MC if we do not have it
81 for(int ib = 0;ib<4;ib++){
83 cout << "cReader[" << ib << "]: " << cReader[ib] << ", filterMask: " << filterMask << endl;
84 taskjetsReader = AddTaskJetsReader(contname,cReader[ib],filterMask);
86 if(outFile.Length()>0)taskjetsReader->SetNonStdOutputFile(outFile.Data());
93 AliAnalysisTaskJetsReader *AddTaskJetsReader(AliAnalysisDataContainer* contname,Char_t *jr, UInt_t filterMask,Float_t ptTrackMin,Int_t dettype)
95 // Creates a jet finder task, configures it and adds it to the analysis manager.
97 kPtTrackMin = ptTrackMin;
98 kDetectorType = dettype;
100 // Get the pointer to the existing analysis manager via the static access method.
101 //==============================================================================
102 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
104 ::Error("AddTaskJetsReader", "No analysis manager to connect to.");
108 // Check the analysis type using the event handlers connected to the analysis manager.
109 //==============================================================================
110 if (!mgr->GetInputEventHandler()) {
111 ::Error("AddTaskJetsReader", "This task requires an input event handler");
115 AliAODHandler *aodh = (AliAODHandler*)mgr->GetOutputEventHandler();
117 ::Error("AddTaskJetsReader", "This task needs an output event handler");
122 // Create the task and configure it.
123 //===========================================================================
124 AliAnalysisTaskJetsReader *taskjetsReader;
125 AliJetReader *er = CreateJetReader(contname,jr,filterMask);
127 taskjetsReader = new AliAnalysisTaskJetsReader(Form("JetAnalysis%s",jr));
129 // Connect jet finder to task.
130 taskjetsReader->SetJetReader(er);
131 taskjetsReader->SetConfigFile("");
132 taskjetsReader->SetDebugLevel(-1);
133 mgr->SetGlobalStr(cout_jet_cont->GetName(),Form("%s#_Filter%05d_Cut%05d",jr,filterMask,(int)((1000.*ptTrackMin))));
134 mgr->AddTask(taskjetsReader);
136 cout_jet_cont = GetJetReaderExchangeContainer();
137 if(! cout_jet_cont) { ::Error("AddTaskJetsReader", "This task needs an Exchange container"); return NULL;}
138 // Create ONLY the output containers for the data produced by the task.
139 // Get and connect other common input/output containers via the manager as below
140 //==============================================================================
141 mgr->ConnectInput (taskjetsReader, 0, mgr->GetCommonInputContainer());
142 mgr->ConnectOutput (taskjetsReader, 0, mgr->GetCommonOutputContainer());
143 mgr->ConnectOutput (taskjetsReader, 1, cout_jet_cont);
146 return taskjetsReader;
150 AliJetReader *CreateJetReader(AliAnalysisDataContainer* contname,Char_t *jr,UInt_t filterMask){
151 AliJetReader *er = 0;
152 SetJetReaderExchangeContainer(contname);
153 Float_t ptCut = kPtTrackMin ; // cut on track p_T
157 AliJetReaderHeader *jrh = new AliJetReaderHeader(kDetectorType);
158 jrh->SetDataType("ESD");
159 jrh->SetComment("ESD Reader");
161 jrh->SetPtCut(ptCut);
162 jrh->SetFiducialEta(-0.9,0.9);
163 jrh->SetFiducialPhi(0,2*TMath::Pi());
164 // Define reader and set its header
165 er = new AliJetReader();
166 er->SetReaderHeader(jrh);
169 AliJetReaderHeader *jrh = new AliJetReaderHeader(kDetectorType);
170 jrh->SetDataType("AOD");
171 jrh->SetComment("AOD Reader");
173 jrh->SetPtCut(ptCut);
174 jrh->SetTestFilterMask(32); // Change this one for a different set of cuts
175 if(filterMask>0)jrh->SetTestFilterMask(filterMask);
176 jrh->SetFilterType(0); // Filter type
177 jrh->SetFiducialEta(-0.9,0.9);
178 jrh->SetFiducialPhi(0,2*TMath::Pi());
179 // Define reader and set its header
180 er = new AliJetReader();
181 er->SetReaderHeader(jrh);
184 AliJetReaderHeader *jrh = new AliJetReaderHeader(/*kDetectorType =*/0);
185 jrh->SetComment("AOD MC Reader");
186 jrh->SetDataType("AODMC");
188 jrh->SetPtCut(ptCut);
189 jrh->SetFiducialEta(-2.1,2.1); // to take all MC particles default is 0.9
190 // Define reader and set its header
191 er = new AliJetReader();
192 er->SetReaderHeader(jrh);
195 AliJetReaderHeader *jrh = new AliJetReaderHeader(/*kDetectorType =*/0);
196 jrh->SetDataType("AODMC2");
197 jrh->SetComment("AOD MC Reader");
199 jrh->SetPtCut(ptCut);
200 jrh->SetFiducialEta(-2.1,2.1); // to take all MC particles default is 0.9
201 // Define reader and set its header
202 er = new AliJetReader();
203 er->SetReaderHeader(jrh);
206 AliJetReaderHeader *jrh = new AliJetReaderHeader(/*kDetectorType =*/0);
207 jrh->SetDataType("AODMC2b");
208 jrh->SetComment("AOD MC Reader");
210 jrh->SetPtCut(ptCut);
211 jrh->SetFiducialEta(-0.9,0.9);
212 // Define reader and set its header
213 er = new AliJetReader();
214 er->SetReaderHeader(jrh);
217 AliJetReaderHeader *jrh = new AliJetReaderHeader(kDetectorType);
218 jrh->SetDataType("AODextra");
219 jrh->SetComment("AOD Reader with extra branch");
221 jrh->SetPtCut(ptCut);
222 jrh->SetTestFilterMask(32); // Change this one for a different set of cuts
223 if(filterMask>0)jrh->SetTestFilterMask(filterMask);
224 // Define reader and set its header
225 er = new AliJetReader();
226 er->SetReaderHeader(jrh);
229 AliJetReaderHeader *jrh = new AliJetReaderHeader(kDetectorType);
230 jrh->SetDataType("AODextraonly");
231 jrh->SetComment("AOD Reader with extra branch");
233 jrh->SetPtCut(ptCut);
234 jrh->SetTestFilterMask(32); // Change this one for a different set of cuts
235 if(filterMask>0)jrh->SetTestFilterMask(filterMask);
236 // Define reader and set its header
237 er = new AliJetReader();
238 er->SetReaderHeader(jrh);
242 AliJetKineReaderHeader *jrh = new AliJetKineReaderHeader();
243 jrh->SetDataType("MC");
244 jrh->SetComment("MC full Kinematics");
246 jrh->SetFastSimTPC(kFALSE);
247 jrh->SetFastSimEMCAL(kFALSE);
248 jrh->SetPtCut(ptCut);
249 jrh->SetFiducialEta(-2.1,2.1); // to take all MC particles default is 0.9
250 // Define reader and set its header
251 er = new AliJetReader();
252 er->SetReaderHeader(jrh);
255 AliJetKineReaderHeader *jrh = new AliJetKineReaderHeader();
256 jrh->SetDataType("MC2");
257 jrh->SetComment("MC full Kinematics spearate config charged only");
259 jrh->SetFastSimTPC(kFALSE);
260 jrh->SetFastSimEMCAL(kFALSE);
261 jrh->SetChargedOnly(kTRUE);
262 jrh->SetPtCut(ptCut);
263 jrh->SetFiducialEta(-2.1,2.1); // to take all MC particles default is 0 .9
264 // Define reader and set its header
265 er = new AliJetReader();
266 er->SetReaderHeader(jrh);
270 ::Error("AddTaskJetsReader", Form("Wrong jet reader selected: %s\n",jr));