#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");
fHistTrackStats = new TH1F("fHistTrackStats","Event statistics;TrackFilterBit;N_{events}",130,0,130);
fList->Add(fHistTrackStats);
- fHistNumberOfAcceptedTracks = new TH1F("fHistNumberOfAcceptedTracks",";N_{acc.};Entries",4001,-0.5,4000.5);
+ fHistNumberOfAcceptedTracks = new TH2D("fHistNumberOfAcceptedTracks",";N_{acc.};;Centrality",4001,-0.5,4000.5,100,0,100);
fList->Add(fHistNumberOfAcceptedTracks);
// Vertex distributions
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;
}
}
delete trackTPC;
-
+ gNumberOfAcceptedTracks += 1;
} //track loop
+ // cout<<"Centrality: "<<fCentrality<<" - Accepted tracks: "<<gNumberOfAcceptedTracks<<endl;
}//Vz cut
}//Vy cut
}//Vx cut
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;
}
gNumberOfAcceptedTracks += 1;
} //track loop
+ //cout<<"Centrality: "<<fCentrality<<" - Accepted tracks: "<<gNumberOfAcceptedTracks<<endl;
}//Vz cut
}//Vy cut
}//Vx cut
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;
}
if((gNumberOfAcceptedTracks < fNumberOfAcceptedTracksMin)||(gNumberOfAcceptedTracks > fNumberOfAcceptedTracksMax))
return;
}
- fHistNumberOfAcceptedTracks->Fill(gNumberOfAcceptedTracks);
+ fHistNumberOfAcceptedTracks->Fill(gNumberOfAcceptedTracks, fCentrality);
// calculate balance function
if(fUseMultiplicity)
//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;
}
}