12 #include "AliESDEvent.h"
13 #include "AliAODEvent.h"
14 #include "AliCentrality.h"
15 #include "AliInputEventHandler.h"
17 #include "AliEventplane.h"
18 #include "AliESDVertex.h"
19 #include "AliAODVertex.h"
20 #include "AliESDtrackCuts.h"
21 #include "AliAnalysisManager.h"
22 #include "AliMultSelection.h"
23 #include "AliAODHandler.h"
35 if (
this == &other)
return *
this;
36 AliAnalysisTaskSE::operator=(other);
55 fCalculateRefMult(other.fCalculateRefMult),
56 fCopyCentrality(other.fCopyCentrality),
57 fCopyTracklets(other.fCopyTracklets),
58 fCopyV0(other.fCopyV0),
59 fCopyAD(other.fCopyAD),
60 fCopyZDC(other.fCopyZDC),
74 while ((token = next())) {
78 if (opt.BeginsWith(
"+")) { rem = 1; enable =
true; }
79 else if (opt.BeginsWith(
"-")) { rem = 1; enable =
false; }
80 if (rem > 0) opt.Remove(0,1);
86 else if (opt.BeginsWith(
"v0") || opt.BeginsWith(
"vzero"))
88 else if (opt.BeginsWith(
"ad"))
SetCopyAD(enable);
89 else if (opt.BeginsWith(
"zdc"))
SetCopyZDC(enable);
105 dynamic_cast<AliAODHandler*
>(am->GetOutputEventHandler());
107 AliWarning(
"No AOD output handler set in analysis manager");
128 AliWarning(
"Missing ESD event");
132 AliWarning(
"Missing AOD event");
140 AliAODHeader* aodHeader =
dynamic_cast<AliAODHeader*
>(aod->GetHeader());
141 if(!aodHeader) AliFatal(
"Not a standard AOD");
143 AliWarning(
"Missing AOD header");
144 aodHeader =
new AliAODHeader(esd->GetRunNumber(),
145 esd->GetBunchCrossNumber(),
146 esd->GetOrbitNumber(),
147 esd->GetPeriodNumber());
148 aod->AddHeader(aodHeader);
152 aodHeader->SetRunNumber(esd->GetRunNumber());
153 aodHeader->SetOfflineTrigger(fInputHandler->IsEventSelected());
154 aodHeader->SetBunchCrossNumber(esd->GetBunchCrossNumber());
155 aodHeader->SetOrbitNumber(esd->GetOrbitNumber());
156 aodHeader->SetPeriodNumber(esd->GetPeriodNumber());
157 aodHeader->SetEventType(esd->GetEventType());
158 aodHeader->SetEventNumberESDFile(esd->GetHeader()->GetEventNumberInFile());
161 if(esd->GetCentrality())
162 aodHeader->SetCentrality(esd->GetCentrality());
164 aodHeader->SetCentrality(0);
167 aodHeader->SetFiredTriggerClasses(esd->GetFiredTriggerClasses());
168 aodHeader->SetTriggerMask(esd->GetTriggerMask());
169 aodHeader->SetTriggerCluster(esd->GetTriggerCluster());
170 aodHeader->SetL0TriggerInputs(esd->GetHeader()->GetL0TriggerInputs());
171 aodHeader->SetL1TriggerInputs(esd->GetHeader()->GetL1TriggerInputs());
172 aodHeader->SetL2TriggerInputs(esd->GetHeader()->GetL2TriggerInputs());
175 aodHeader->SetMagneticField(esd->GetMagneticField());
176 aodHeader->SetMuonMagFieldScale(esd->GetCurrentDip()/6000.);
177 aodHeader->SetZDCN1Energy(esd->GetZDCN1Energy());
178 aodHeader->SetZDCP1Energy(esd->GetZDCP1Energy());
179 aodHeader->SetZDCN2Energy(esd->GetZDCN2Energy());
180 aodHeader->SetZDCP2Energy(esd->GetZDCP2Energy());
181 aodHeader->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));
184 aodHeader->SetVZEROEqFactors(esd->GetVZEROEqFactors());
188 AliESDHeader* esdHeader = esd->GetHeader();
190 aodHeader->SetIRInt2InteractionMap(esdHeader->GetIRInt2InteractionMap());
191 aodHeader->SetIRInt1InteractionMap(esdHeader->GetIRInt1InteractionMap());
195 TTree* tree = fInputHandler->GetTree();
197 TFile*
file = tree->GetCurrentFile();
198 if (file) aodHeader->SetESDFileName(file->GetName());
202 AliEventplane* ep = esd->GetEventplane();
203 if (ep) aodHeader->SetEventplane(ep);
206 CopyVertex(*aod, esd->GetPrimaryVertex(), AliAODVertex::kPrimary);
207 CopyVertex(*aod, esd->GetPrimaryVertexSPD(), AliAODVertex::kMainSPD);
208 CopyVertex(*aod, esd->GetPrimaryVertexTPC(), AliAODVertex::kMainTPC);
211 for (
Int_t i = 0; i < esd->GetNumberOfPileupVerticesSPD(); i++)
212 CopyVertex(*aod, esd->GetPileupVertexSPD(i), AliAODVertex::kPileupSPD);
213 for (
Int_t i = 0; i < esd->GetNumberOfPileupVerticesTracks(); i++)
214 CopyVertex(*aod, esd->GetPileupVertexTracks(i),AliAODVertex::kPileupTracks);
219 AliESDtrackCuts::MultEstTrackType estType =
220 esd->GetPrimaryVertexTracks()->GetStatus()
221 ? AliESDtrackCuts::kTrackletsITSTPC
222 : AliESDtrackCuts::kTracklets;
223 Int_t mult05 = AliESDtrackCuts::GetReferenceMultiplicity(esd,estType,0.5);
224 Int_t mult08 = AliESDtrackCuts::GetReferenceMultiplicity(esd,estType,0.8);
225 aodHeader->SetRefMultiplicityComb05(mult05);
226 aodHeader->SetRefMultiplicityComb08(mult08);
231 AliMultiplicity* mul = esd->GetMultiplicity();
232 AliAODTracklets* tracklets = (aod->GetTracklets());
233 if (mul && mul->GetNumberOfTracklets() > 0 && tracklets) {
234 Int_t nTracklets = mul->GetNumberOfTracklets();
235 tracklets->CreateContainer(nTracklets);
236 for (
Int_t i = 0; i < nTracklets; i++) {
237 tracklets->SetTracklet(i,
242 mul->GetLabel(i, 1));
244 tracklets->SetFiredChipMap (mul->GetFiredChipMap());
245 tracklets->SetFastOrFiredChipMap(mul->GetFastOrFiredChipMap());
246 tracklets->SetFiredChips (0, mul->GetNumberOfFiredChips(0));
247 tracklets->SetFiredChips (1, mul->GetNumberOfFiredChips(1));
253 AliAODVZERO* vzeroData = aod->GetVZEROData();
254 *vzeroData = *(esd->GetVZEROData());
258 AliAODAD* adData = aod->GetADData();
259 *adData = *(esd->GetADData());
263 AliESDZDC* esdZDC = esd->GetZDCData();
264 AliAODZDC* zdcAOD = aod->GetZDCData();
265 zdcAOD->SetZEM1Energy(esdZDC->GetZEM1Energy());
266 zdcAOD->SetZEM2Energy(esdZDC->GetZEM2Energy());
267 zdcAOD->SetZNCTowers(esdZDC->GetZNCTowerEnergy(),
268 esdZDC->GetZNCTowerEnergyLR());
269 zdcAOD->SetZNATowers(esdZDC->GetZNATowerEnergy(),
270 esdZDC->GetZNATowerEnergyLR());
271 zdcAOD->SetZPCTowers(esdZDC->GetZPCTowerEnergy(),
272 esdZDC->GetZPCTowerEnergyLR());
273 zdcAOD->SetZPATowers(esdZDC->GetZPATowerEnergy(),
274 esdZDC->GetZPATowerEnergyLR());
275 zdcAOD->SetZDCParticipants(esdZDC->GetZDCParticipants(),
276 esdZDC->GetZDCPartSideA(),
277 esdZDC->GetZDCPartSideC());
278 zdcAOD->SetZDCImpactParameter(esdZDC->GetImpactParameter(),
279 esdZDC->GetImpactParamSideA(),
280 esdZDC->GetImpactParamSideC());
281 zdcAOD->SetZDCTDCSum(esdZDC->GetZNTDCSum(0));
282 zdcAOD->SetZDCTDCDiff(esdZDC->GetZNTDCDiff(0));
283 if(esdZDC->IsZNChit()){
285 if(esdZDC->IsZDCTDCcablingSet()){
286 if(esdZDC->GetZNCTDCChannel()>0)
287 cable = esdZDC->GetZNCTDCChannel();
291 zdcAOD->SetZNCTDC(esdZDC->GetZDCTDCCorrected(cable, 0));
293 if(esdZDC->IsZNAhit()){
295 if(esdZDC->IsZDCTDCcablingSet()){
296 if(esdZDC->GetZNATDCChannel()>0)
297 cable = esdZDC->GetZNATDCChannel();
301 zdcAOD->SetZNATDC(esdZDC->GetZDCTDCCorrected(cable, 0));
303 if(esdZDC->IsZPChit()){
305 if(esdZDC->IsZDCTDCcablingSet()){
306 if(esdZDC->GetZPCTDCChannel()>0)
307 cable = esdZDC->GetZPCTDCChannel();
311 zdcAOD->SetZPCTDC(esdZDC->GetZDCTDCCorrected(cable, 0));
313 if(esdZDC->IsZPAhit()){
315 if(esdZDC->IsZDCTDCcablingSet()){
316 if(esdZDC->GetZPATDCChannel()>0)
317 cable = esdZDC->GetZPATDCChannel();
321 zdcAOD->SetZPATDC(esdZDC->GetZDCTDCCorrected(cable, 0));
326 TObject* outO = InputEvent()->FindListObject(
"MultSelection");
328 AliMultSelection* outS =
static_cast<AliMultSelection*
>(outO);
337 const AliESDVertex* vtx,
343 TClonesArray* arr = aod.GetVertices();
347 Int_t n = arr->GetEntriesFast();
349 Double_t cov[] = { 0., 0., 0., 0., 0., 0. };
350 Double_t chi2 = vtx->GetChi2toNDF();
352 vtx->GetCovMatrix(cov);
355 AliAODVertex* out =
new((*arr)[n]) AliAODVertex(pos, cov, chi2, 0, -1, type);
356 out->SetName(vtx->GetName());
357 out->SetTitle(vtx->GetTitle());
358 out->SetBC(vtx->GetBC());
362 if (!tit.Contains(
"VertexerTracks"))
363 out->SetNContributors(vtx->GetNContributors());
379 Error(
"Connect",
"No analysis manager to connect to.");
387 mgr->ConnectInput(
this, 0, mgr->GetCommonInputContainer());
TFile * file
TList with histograms for a given trigger.