#include "AliCopyHeaderTask.h"
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliCentrality.h"
#include "AliInputEventHandler.h"
#include "TFile.h"
#include "AliEventplane.h"
#include "AliESDVertex.h"
#include "AliAODVertex.h"
ClassImp(AliCopyHeaderTask)
#if 0
;
#endif
void
AliCopyHeaderTask::UserExec(Option_t*)
{
AliESDEvent* esd = dynamic_cast<AliESDEvent*>(InputEvent());
AliAODEvent* aod = dynamic_cast<AliAODEvent*>(AODEvent());
if (!esd) {
AliWarning("Missing ESD event");
return;
}
if (!aod) {
AliWarning("Missing AOD event");
return;
}
LoadBranches();
AliAODHeader* aodHeader = dynamic_cast<AliAODHeader*>(aod->GetHeader());
if(!aodHeader) AliFatal("Not a standard AOD");
if (!aodHeader) {
AliWarning("Missing AOD header");
aodHeader = new AliAODHeader(esd->GetRunNumber(),
esd->GetBunchCrossNumber(),
esd->GetOrbitNumber(),
esd->GetPeriodNumber());
aod->AddHeader(aodHeader);
}
aodHeader->SetRunNumber(esd->GetRunNumber());
aodHeader->SetOfflineTrigger(fInputHandler->IsEventSelected());
aodHeader->SetBunchCrossNumber(esd->GetBunchCrossNumber());
aodHeader->SetOrbitNumber(esd->GetOrbitNumber());
aodHeader->SetPeriodNumber(esd->GetPeriodNumber());
aodHeader->SetEventType(esd->GetEventType());
aodHeader->SetEventNumberESDFile(esd->GetHeader()->GetEventNumberInFile());
if(esd->GetCentrality())
aodHeader->SetCentrality(esd->GetCentrality());
else
aodHeader->SetCentrality(0);
aodHeader->SetFiredTriggerClasses(esd->GetFiredTriggerClasses());
aodHeader->SetTriggerMask(esd->GetTriggerMask());
aodHeader->SetTriggerCluster(esd->GetTriggerCluster());
aodHeader->SetL0TriggerInputs(esd->GetHeader()->GetL0TriggerInputs());
aodHeader->SetL1TriggerInputs(esd->GetHeader()->GetL1TriggerInputs());
aodHeader->SetL2TriggerInputs(esd->GetHeader()->GetL2TriggerInputs());
aodHeader->SetMagneticField(esd->GetMagneticField());
aodHeader->SetMuonMagFieldScale(esd->GetCurrentDip()/6000.);
aodHeader->SetZDCN1Energy(esd->GetZDCN1Energy());
aodHeader->SetZDCP1Energy(esd->GetZDCP1Energy());
aodHeader->SetZDCN2Energy(esd->GetZDCN2Energy());
aodHeader->SetZDCP2Energy(esd->GetZDCP2Energy());
aodHeader->SetZDCEMEnergy(esd->GetZDCEMEnergy(0),esd->GetZDCEMEnergy(1));
AliESDHeader* esdHeader = esd->GetHeader();
if (esdHeader) {
aodHeader->SetIRInt2InteractionMap(esdHeader->GetIRInt2InteractionMap());
aodHeader->SetIRInt1InteractionMap(esdHeader->GetIRInt1InteractionMap());
}
TTree* tree = fInputHandler->GetTree();
if (tree) {
TFile* file = tree->GetCurrentFile();
if (file) aodHeader->SetESDFileName(file->GetName());
}
AliEventplane* ep = esd->GetEventplane();
if (ep) aodHeader->SetEventplane(ep);
CopyVertex(*aod, esd->GetPrimaryVertex(), AliAODVertex::kPrimary);
CopyVertex(*aod, esd->GetPrimaryVertexSPD(), AliAODVertex::kMainSPD);
CopyVertex(*aod, esd->GetPrimaryVertexTPC(), AliAODVertex::kMainTPC);
for (Int_t i = 0; i < esd->GetNumberOfPileupVerticesSPD(); i++)
CopyVertex(*aod, esd->GetPileupVertexSPD(i), AliAODVertex::kPileupSPD);
for (Int_t i = 0; i < esd->GetNumberOfPileupVerticesTracks(); i++)
CopyVertex(*aod, esd->GetPileupVertexTracks(i),AliAODVertex::kPileupTracks);
}
void
AliCopyHeaderTask::CopyVertex(AliAODEvent& aod,
const AliESDVertex* vtx,
Int_t type)
{
if (!vtx) return;
TClonesArray* arr = aod.GetVertices();
if (!arr) return;
Int_t n = arr->GetEntriesFast();
Double_t pos[] = { 0., 0., 0. };
Double_t cov[] = { 0., 0., 0., 0., 0., 0. };
Double_t chi2 = vtx->GetChi2toNDF();
vtx->GetXYZ(pos);
vtx->GetCovMatrix(cov);
AliAODVertex* out = new((*arr)[n]) AliAODVertex(pos, cov, chi2, 0, -1, type);
out->SetName(vtx->GetName());
out->SetTitle(vtx->GetTitle());
out->SetBC(vtx->GetBC());
TString tit(out->GetTitle());
if (!tit.Contains("VertexerTracks"))
out->SetNContributors(vtx->GetNContributors());
}
void
AliCopyHeaderTask::Terminate(Option_t*)
{
}
AliCopyHeaderTask.cxx:100 AliCopyHeaderTask.cxx:101 AliCopyHeaderTask.cxx:102 AliCopyHeaderTask.cxx:103 AliCopyHeaderTask.cxx:104 AliCopyHeaderTask.cxx:105 AliCopyHeaderTask.cxx:106 AliCopyHeaderTask.cxx:107 AliCopyHeaderTask.cxx:108 AliCopyHeaderTask.cxx:109 AliCopyHeaderTask.cxx:110 AliCopyHeaderTask.cxx:111 AliCopyHeaderTask.cxx:112 AliCopyHeaderTask.cxx:113 AliCopyHeaderTask.cxx:114 AliCopyHeaderTask.cxx:115 AliCopyHeaderTask.cxx:116 AliCopyHeaderTask.cxx:117 AliCopyHeaderTask.cxx:118 AliCopyHeaderTask.cxx:119 AliCopyHeaderTask.cxx:120 AliCopyHeaderTask.cxx:121 AliCopyHeaderTask.cxx:122 AliCopyHeaderTask.cxx:123 AliCopyHeaderTask.cxx:124 AliCopyHeaderTask.cxx:125 AliCopyHeaderTask.cxx:126 AliCopyHeaderTask.cxx:127 AliCopyHeaderTask.cxx:128 AliCopyHeaderTask.cxx:129 AliCopyHeaderTask.cxx:130 AliCopyHeaderTask.cxx:131 AliCopyHeaderTask.cxx:132 AliCopyHeaderTask.cxx:133 AliCopyHeaderTask.cxx:134 AliCopyHeaderTask.cxx:135 AliCopyHeaderTask.cxx:136 AliCopyHeaderTask.cxx:137 AliCopyHeaderTask.cxx:138 AliCopyHeaderTask.cxx:139 AliCopyHeaderTask.cxx:140 AliCopyHeaderTask.cxx:141 AliCopyHeaderTask.cxx:142 AliCopyHeaderTask.cxx:143 AliCopyHeaderTask.cxx:144 AliCopyHeaderTask.cxx:145 AliCopyHeaderTask.cxx:146 AliCopyHeaderTask.cxx:147 AliCopyHeaderTask.cxx:148 AliCopyHeaderTask.cxx:149