]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBF.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliAnalysisTaskBF.cxx
index de7105cfda41d299ac68625aabe519c52fa0de29..139b313e6b7485b9b3437c1df1a82b9001e5e6eb 100755 (executable)
@@ -24,6 +24,7 @@
 #include "AliMCEvent.h"
 #include "AliStack.h"
 #include "AliESDtrackCuts.h"
+#include "AliLog.h"
 
 #include "TH2D.h"                  
 #include "AliPID.h"                
@@ -161,6 +162,12 @@ AliAnalysisTaskBF::~AliAnalysisTaskBF() {
 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");
@@ -236,7 +243,7 @@ void AliAnalysisTaskBF::UserCreateOutputObjects() {
   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
@@ -374,6 +381,9 @@ void AliAnalysisTaskBF::UserCreateOutputObjects() {
   PostData(2, fListBF);
   if(fRunShuffling) PostData(3, fListBFS);
   if(fUsePID) PostData(4, fHistListPIDQA);       //PID
+
+  TH1::AddDirectory(oldStatus);
+
 }
 
 //________________________________________________________________________
@@ -415,7 +425,7 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
   if(gAnalysisLevel == "ESD") {
     AliESDEvent* gESD = dynamic_cast<AliESDEvent*>(InputEvent()); // from TaskSE
     if (!gESD) {
-      Printf("ERROR: gESD not available");
+      AliError("ERROR: gESD not available");
       return;
     }
 
@@ -453,19 +463,19 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
        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;
                    }   
                    
@@ -637,8 +647,9 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
                    }
                    
                    delete trackTPC;
-                   
+                   gNumberOfAcceptedTracks += 1;
                  } //track loop
+                 // cout<<"Centrality: "<<fCentrality<<" - Accepted tracks: "<<gNumberOfAcceptedTracks<<endl;
                }//Vz cut
              }//Vy cut
            }//Vx cut
@@ -652,14 +663,15 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
   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());
@@ -735,7 +747,7 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
                  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();
@@ -749,7 +761,7 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
                  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;
                    }
                    
@@ -761,7 +773,8 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
                    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());
                     //===========================================//
 
@@ -962,13 +975,13 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
   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;
     }
 
@@ -1005,19 +1018,19 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
        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;
                    }   
                    
@@ -1099,6 +1112,7 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
                    gNumberOfAcceptedTracks += 1;
                    
                  } //track loop
+                 //cout<<"Centrality: "<<fCentrality<<" - Accepted tracks: "<<gNumberOfAcceptedTracks<<endl;
                }//Vz cut
              }//Vy cut
            }//Vx cut
@@ -1112,7 +1126,7 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
   else if(gAnalysisLevel == "MC") {
     AliMCEvent*  mcEvent = MCEvent(); 
     if (!mcEvent) {
-      Printf("ERROR: mcEvent not available");
+      AliError("ERROR: mcEvent not available");
       return;
     }
 
@@ -1160,11 +1174,11 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
          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;
            }
            
@@ -1301,7 +1315,7 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
     if((gNumberOfAcceptedTracks < fNumberOfAcceptedTracksMin)||(gNumberOfAcceptedTracks > fNumberOfAcceptedTracksMax))
       return;
   }
-  fHistNumberOfAcceptedTracks->Fill(gNumberOfAcceptedTracks);
+  fHistNumberOfAcceptedTracks->Fill(gNumberOfAcceptedTracks, fCentrality);
 
   // calculate balance function
   if(fUseMultiplicity) 
@@ -1324,12 +1338,12 @@ void  AliAnalysisTaskBF::FinishTaskOutput(){
   //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;
     }
   }