#include "AliMCEvent.h"
#include "AliStack.h"
#include "AliESDtrackCuts.h"
+#include "AliLog.h"
#include "TH2D.h"
#include "AliPID.h"
void AliAnalysisTaskBF::UserCreateOutputObjects() {
// Create histograms
// Called once
+
+ // global switch disabling the reference
+ // (to avoid "Replacing existing TH1" if several wagons are created in train)
+ Bool_t oldStatus = TH1::AddDirectoryStatus();
+ TH1::AddDirectory(kFALSE);
+
if(!fBalance) {
fBalance = new AliBalance();
fBalance->SetAnalysisLevel("ESD");
PostData(2, fListBF);
if(fRunShuffling) PostData(3, fListBFS);
if(fUsePID) PostData(4, fHistListPIDQA); //PID
+
+ TH1::AddDirectory(oldStatus);
+
}
//________________________________________________________________________
if(gAnalysisLevel == "ESD") {
AliESDEvent* gESD = dynamic_cast<AliESDEvent*>(InputEvent()); // from TaskSE
if (!gESD) {
- Printf("ERROR: gESD not available");
+ AliError("ERROR: gESD not available");
return;
}
if(vertex->GetNContributors() > 0) {
if(vertex->GetZRes() != 0) {
fHistEventStats->Fill(3,fCentrality); //events with a proper vertex
- if(TMath::Abs(vertex->GetXv()) < fVxMax) {
- if(TMath::Abs(vertex->GetYv()) < fVyMax) {
- if(TMath::Abs(vertex->GetZv()) < fVzMax) {
+ if(TMath::Abs(vertex->GetX()) < fVxMax) {
+ if(TMath::Abs(vertex->GetY()) < fVyMax) {
+ if(TMath::Abs(vertex->GetZ()) < fVzMax) {
fHistEventStats->Fill(4,fCentrality); //analayzed events
- fHistVx->Fill(vertex->GetXv());
- fHistVy->Fill(vertex->GetYv());
- fHistVz->Fill(vertex->GetZv());
+ fHistVx->Fill(vertex->GetX());
+ fHistVy->Fill(vertex->GetY());
+ fHistVz->Fill(vertex->GetZ());
//Printf("There are %d tracks in this event", gESD->GetNumberOfTracks());
for (Int_t iTracks = 0; iTracks < gESD->GetNumberOfTracks(); iTracks++) {
AliESDtrack* track = dynamic_cast<AliESDtrack *>(gESD->GetTrack(iTracks));
if (!track) {
- Printf("ERROR: Could not receive track %d", iTracks);
+ AliError(Form("ERROR: Could not receive track %d", iTracks));
continue;
}
else if(gAnalysisLevel == "AOD") {
AliAODEvent* gAOD = dynamic_cast<AliAODEvent*>(InputEvent()); // from TaskSE
if(!gAOD) {
- Printf("ERROR: gAOD not available");
+ AliError("ERROR: gAOD not available");
return;
}
// for HBT like cuts need magnetic field sign
bSign = (gAOD->GetMagneticField() > 0) ? 1 : -1;
- AliAODHeader *aodHeader = gAOD->GetHeader();
+ AliAODHeader *aodHeader = dynamic_cast<AliAODHeader*>(gAOD->GetHeader());
+ if(!aodHeader) AliFatal("Not a standard AOD");
// store offline trigger bits
fHistTriggerStats->Fill(aodHeader->GetOfflineTrigger());
for (Int_t iTracks = 0; iTracks < gAOD->GetNumberOfTracks(); iTracks++) {
AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(gAOD->GetTrack(iTracks));
if (!aodTrack) {
- Printf("ERROR: Could not receive track %d", iTracks);
+ AliError(Form("ERROR: Could not receive track %d", iTracks));
continue;
}
Int_t gID = aodTrack->GetID();
for (Int_t iTracks = 0; iTracks < gAOD->GetNumberOfTracks(); iTracks++) {
AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(gAOD->GetTrack(iTracks));
if (!aodTrack) {
- Printf("ERROR: Could not receive track %d", iTracks);
+ AliError(Form("ERROR: Could not receive track %d", iTracks));
continue;
}
if(!aodTrack->TestFilterBit(fAODtrackCutBit)) continue;
Int_t gID = aodTrack->GetID();
- newAodTrack = gID >= 0 ? aodTrack : gAOD->GetTrack(trackMap->GetValue(-1-gID));
+ newAodTrack = gID >= 0 ? aodTrack : dynamic_cast<AliAODTrack*>(gAOD->GetTrack(trackMap->GetValue(-1-gID)));
+ if(!newAodTrack) AliFatal("Not a standard AOD");
//Printf("Label: %d - Pt: %lf (old) - %d - Pt: %lf(new)",gID,aodTrack->Pt(), newAodTrack->GetID(), newAodTrack->Pt());
//===========================================//
if(gAnalysisLevel == "MCESD") {
AliMCEvent* mcEvent = MCEvent();
if (!mcEvent) {
- Printf("ERROR: mcEvent not available");
+ AliError("ERROR: mcEvent not available");
return;
}
AliESDEvent* gESD = dynamic_cast<AliESDEvent*>(InputEvent()); // from TaskSE
if (!gESD) {
- Printf("ERROR: gESD not available");
+ AliError("ERROR: gESD not available");
return;
}
if(vertex->GetNContributors() > 0) {
if(vertex->GetZRes() != 0) {
fHistEventStats->Fill(3,fCentrality); //events with a proper vertex
- if(TMath::Abs(vertex->GetXv()) < fVxMax) {
- if(TMath::Abs(vertex->GetYv()) < fVyMax) {
- if(TMath::Abs(vertex->GetZv()) < fVzMax) {
+ if(TMath::Abs(vertex->GetX()) < fVxMax) {
+ if(TMath::Abs(vertex->GetY()) < fVyMax) {
+ if(TMath::Abs(vertex->GetZ()) < fVzMax) {
fHistEventStats->Fill(4,fCentrality); //analayzed events
- fHistVx->Fill(vertex->GetXv());
- fHistVy->Fill(vertex->GetYv());
- fHistVz->Fill(vertex->GetZv());
+ fHistVx->Fill(vertex->GetX());
+ fHistVy->Fill(vertex->GetY());
+ fHistVz->Fill(vertex->GetZ());
//Printf("There are %d tracks in this event", gESD->GetNumberOfTracks());
for (Int_t iTracks = 0; iTracks < gESD->GetNumberOfTracks(); iTracks++) {
AliESDtrack* track = dynamic_cast<AliESDtrack *>(gESD->GetTrack(iTracks));
if (!track) {
- Printf("ERROR: Could not receive track %d", iTracks);
+ AliError(Form("ERROR: Could not receive track %d", iTracks));
continue;
}
else if(gAnalysisLevel == "MC") {
AliMCEvent* mcEvent = MCEvent();
if (!mcEvent) {
- Printf("ERROR: mcEvent not available");
+ AliError("ERROR: mcEvent not available");
return;
}
fHistVy->Fill(gVertexArray.At(1));
fHistVz->Fill(gVertexArray.At(2));
- Printf("There are %d tracks in this event", mcEvent->GetNumberOfPrimaries());
+ AliInfo(Form("There are %d tracks in this event", mcEvent->GetNumberOfPrimaries()));
for (Int_t iTracks = 0; iTracks < mcEvent->GetNumberOfPrimaries(); iTracks++) {
AliMCParticle* track = dynamic_cast<AliMCParticle *>(mcEvent->GetTrack(iTracks));
if (!track) {
- Printf("ERROR: Could not receive particle %d", iTracks);
+ AliError(Form("ERROR: Could not receive particle %d", iTracks));
continue;
}
//Printf("END BF");
if (!fBalance) {
- Printf("ERROR: fBalance not available");
+ AliError("ERROR: fBalance not available");
return;
}
if(fRunShuffling) {
if (!fShuffledBalance) {
- Printf("ERROR: fShuffledBalance not available");
+ AliError("ERROR: fShuffledBalance not available");
return;
}
}