]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskBFPsi.cxx
coverity fix
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliAnalysisTaskBFPsi.cxx
index ebf87668b003a41997043020f25ab784edfe7b93..c0c8f8fbba47aa715c058738fa18e99dabd9d15f 100755 (executable)
@@ -11,6 +11,7 @@
 #include "TArrayF.h"
 #include "TF1.h"
 #include "TRandom.h"
+#include "TROOT.h"
 
 #include "AliAnalysisTaskSE.h"
 #include "AliAnalysisManager.h"
@@ -159,7 +160,7 @@ AliAnalysisTaskBFPsi::AliAnalysisTaskBFPsi(const char *name)
   fPtMin(0.3),
   fPtMax(1.5),
   fEtaMin(-0.8),
-  fEtaMax(-0.8),
+  fEtaMax(0.8),
   fPhiMin(0.),
   fPhiMax(360.),
   fDCAxyCut(-1),
@@ -514,6 +515,7 @@ void AliAnalysisTaskBFPsi::UserCreateOutputObjects() {
     if(centbins) delete [] centbins; 
     if(multbins) delete [] multbins; 
     if(vtxbins)  delete [] vtxbins; 
+    if(psibins)  delete [] psibins; 
     
     // check pool manager
     if(!fPoolMgr){
@@ -695,7 +697,7 @@ void AliAnalysisTaskBFPsi::UserExec(Option_t *) {
     return;
   }
   // get the reaction plane
-  if(fEventClass != "Multiplicity") {
+  if(fEventClass != "Multiplicity" && gAnalysisLevel!="AODnano") {
     gReactionPlane = GetEventPlane(eventMain);
     fHistEventPlane->Fill(gReactionPlane,lMultiplicityVar);
     if(gReactionPlane < 0){
@@ -932,7 +934,7 @@ Double_t AliAnalysisTaskBFPsi::IsEventAccepted(AliVEvent *event){
 Double_t AliAnalysisTaskBFPsi::GetRefMultiOrCentrality(AliVEvent *event){
     // Checks the Event cuts
     // Fills Event statistics histograms
-  
+
   Float_t gCentrality = -1.;
   Double_t gMultiplicity = -1.;
   TString gAnalysisLevel = fBalance->GetAnalysisLevel();
@@ -978,6 +980,19 @@ Double_t AliAnalysisTaskBFPsi::GetRefMultiOrCentrality(AliVEvent *event){
 
     }//AOD header
   }//AOD
+
+  // calculate centrality always (not only in centrality mode)
+  else if(gAnalysisLevel == "AODnano" ) { //centrality via JF workaround
+    
+    AliAODHeader *header = (AliAODHeader*) event->GetHeader();
+    if(header){
+      gCentrality = (Float_t) gROOT->ProcessLine(Form("100.0 + 100.0 * ((AliNanoAODHeader*) %p)->GetCentrality(\"%s\")", header,fCentralityEstimator.Data())) / 100 - 1.0;
+      
+      // QA histogram
+      fHistCentStatsUsed->Fill(0.,gCentrality);
+
+    }//AOD header
+  }//AODnano
   
   else if(gAnalysisLevel == "ESD" || gAnalysisLevel == "MCESD"){ // centrality class for ESDs or MC-ESDs
     AliCentrality *centrality = event->GetCentrality();
@@ -1543,6 +1558,53 @@ TObjArray* AliAnalysisTaskBFPsi::GetAcceptedTracks(AliVEvent *event, Double_t gC
     }//track loop
   }// AOD analysis
 
+
+  // nano AODs
+  else if(gAnalysisLevel == "AODnano") { // not fully supported yet (PID missing)
+    // Loop over tracks in event
+    
+    for (Int_t iTracks = 0; iTracks < event->GetNumberOfTracks(); iTracks++) {
+      AliVTrack* aodTrack = dynamic_cast<AliVTrack *>(event->GetTrack(iTracks));
+      if (!aodTrack) {
+       AliError(Form("Could not receive track %d", iTracks));
+       continue;
+      }
+      
+      // AOD track cuts (not needed)
+      //if(!aodTrack->TestFilterBit(fnAODtrackCutBit)) continue;
+     
+      vCharge = aodTrack->Charge();
+      vEta    = aodTrack->Eta();
+      vY      = -999.;
+      vPhi    = aodTrack->Phi();// * TMath::RadToDeg();
+      vPt     = aodTrack->Pt();
+           
+      
+      // Kinematics cuts from ESD track cuts
+      if( vPt < fPtMin || vPt > fPtMax)      continue;
+      if( vEta < fEtaMin || vEta > fEtaMax)  continue;
+      
+       
+      // fill QA histograms
+      fHistPt->Fill(vPt,gCentrality);
+      fHistEta->Fill(vEta,gCentrality);
+      fHistRapidity->Fill(vY,gCentrality);
+      if(vCharge > 0) fHistPhiPos->Fill(vPhi,gCentrality);
+      else if(vCharge < 0) fHistPhiNeg->Fill(vPhi,gCentrality);
+      fHistPhi->Fill(vPhi,gCentrality);
+      if(vCharge > 0)      fHistEtaPhiPos->Fill(vEta,vPhi,gCentrality);                 
+      else if(vCharge < 0) fHistEtaPhiNeg->Fill(vEta,vPhi,gCentrality);
+      
+      //=======================================correction
+      Double_t correction = GetTrackbyTrackCorrectionMatrix(vEta, vPhi, vPt, vCharge, gCentrality);  
+      //Printf("CORRECTIONminus: %.2f | Centrality %lf",correction,gCentrality);
+      
+      // add the track to the TObjArray
+      tracksAccepted->Add(new AliBFBasicParticle(vEta, vPhi, vPt, vCharge, correction));  
+    }//track loop
+  }// AOD nano analysis
+
+
   //==============================================================================================================
   else if(gAnalysisLevel == "MCAOD") {