]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/JetTasks/AliAnalysisTaskUE.cxx
New book-keeping class
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskUE.cxx
index eafee42ce0f374f8006a7d182fa9b723fbf4a2ed..e5c479928c349316cb8900675aeff418fe727d9b 100644 (file)
@@ -43,6 +43,7 @@
 #include "AliAODJet.h"
 #include "AliAODTrack.h"
 #include "AliAODMCParticle.h"
+#include "AliKFVertex.h"
 
 #include "AliGenPythiaEventHeader.h"
 #include "AliAnalysisHelperJetTasks.h"
@@ -78,15 +79,13 @@ ClassImp( AliAnalysisTaskUE)
 //____________________________________________________________________
 AliAnalysisTaskUE:: AliAnalysisTaskUE(const char* name):
 AliAnalysisTask(name, ""),
-fDebug(kFALSE),
+fTrigger(0),
+fDebug(0),
 fDeltaAOD(kFALSE),
 fDeltaAODBranch(""),
-  fArrayJets(0x0),           
+fArrayJets(0x0),           
 fAOD(0x0),            
 fAODjets(0x0),
-//fArrayJets(0x0),
-//fDeltaAOD(kFALSE),
-//fDeltaAODBranch("jetsAOD"),
 fListOfHistos(0x0),  
 fBinsPtInHist(30),     
 fMinJetPtInHist(0.),
@@ -173,7 +172,7 @@ Bool_t AliAnalysisTaskUE::Notify()
     fh1Xsec->Fill("<#sigma>",xsection);
    // construct average trials
    Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
-   if(ftrials>=nEntries)fAvgTrials = ftrials/nEntries;
+   if(ftrials>=nEntries && nEntries>0.)fAvgTrials = ftrials/nEntries;
   }
   
   return kTRUE;
@@ -235,7 +234,7 @@ void  AliAnalysisTaskUE::CreateOutputObjects()
   //
   //  Histograms
 
-  OpenFile(0);
+  // OpenFile(0);
   CreateHistos();
   //  fListOfHistos->SetOwner(kTRUE);  
 
@@ -246,6 +245,26 @@ void  AliAnalysisTaskUE::CreateOutputObjects()
 //____________________________________________________________________
 void  AliAnalysisTaskUE::Exec(Option_t */*option*/)
 {
+  //Trigger selection ************************************************
+  AliAnalysisHelperJetTasks::Trigger trig;
+  trig = (const enum AliAnalysisHelperJetTasks::Trigger)fTrigger;
+  if (AliAnalysisHelperJetTasks::IsTriggerFired(fAOD,trig)){
+       if (fDebug > 1) AliInfo(" Trigger Selection: event ACCEPTED ... ");
+  }else{
+       if (fDebug > 1) AliInfo(" Trigger Selection: event REJECTED ... ");
+       return;
+  }
+  //Event selection (vertex) *****************************************
+  AliKFVertex primVtx(*(fAOD->GetPrimaryVertex()));
+  Int_t nTracksPrim=primVtx.GetNContributors();
+  if (fDebug > 1) AliInfo(Form(" Primary-vertex Selection: %d",nTracksPrim));
+  if(!nTracksPrim){
+       if (fDebug > 1) AliInfo(" Primary-vertex Selection: event REJECTED ...");
+       return; 
+       }
+  if (fDebug > 1) AliInfo(" Primary-vertex Selection: event ACCEPTED ...");
+  
   // Execute analysis for current event
   //
   if ( fDebug > 3 ) AliInfo( " Processing event..." );
@@ -334,7 +353,7 @@ void  AliAnalysisTaskUE::AnalyseUE()
       }else{
        jet = fAODjets->GetJet(index1);
       }
-      jetVect[0].SetXYZ(jet->Px(), jet->Py(), jet->Pz());
+      if(jet)jetVect[0].SetXYZ(jet->Px(), jet->Py(), jet->Pz());
     }
     if( index2 != -1 ) {
       AliAODJet* jet = 0;
@@ -343,16 +362,16 @@ void  AliAnalysisTaskUE::AnalyseUE()
        }else{
        jet= fAODjets->GetJet(index2);
        }
-      jetVect[1].SetXYZ(jet->Px(), jet->Py(), jet->Pz());
+      if(jet)jetVect[1].SetXYZ(jet->Px(), jet->Py(), jet->Pz());
     }
     if( index3 != -1 ) {
       AliAODJet* jet = 0;
       if (fDeltaAOD) {
        jet= (AliAODJet*) fArrayJets->At(index3);
-     }else{
+      }else{
        fAODjets->GetJet(index3);
-     }
-     jetVect[2].SetXYZ(jet->Px(), jet->Py(), jet->Pz());
+      }
+      if(jet)jetVect[2].SetXYZ(jet->Px(), jet->Py(), jet->Pz());
     }
     
   } else {
@@ -1119,6 +1138,7 @@ void  AliAnalysisTaskUE::CreateHistos()
   fListOfHistos->Add( fh1Trials ); //At(22)
   
   fSettingsTree   = new TTree("UEAnalysisSettings","Analysis Settings in UE estimation");
+  fSettingsTree->Branch("fTrigger", &fTrigger,"TriggerFlag/I");
   fSettingsTree->Branch("fConeRadius", &fConeRadius,"Rad/D");
   fSettingsTree->Branch("fJet1EtaCut", &fJet1EtaCut, "LeadJetEtaCut/D");
   fSettingsTree->Branch("fJet2DeltaPhiCut", &fJet2DeltaPhiCut, "DeltaPhi/D");
@@ -1239,7 +1259,7 @@ void  AliAnalysisTaskUE::Terminate(Option_t */*option*/)
     Double_t xsec = fh1Xsec->GetBinContent(1);
     Double_t ntrials = fh1Trials->GetBinContent(1);
     Double_t normFactor = xsec/ntrials;
-    Printf("xSec %f nTrials %f Norm %f \n",xsec,ntrials,normFactor);
+    if(fDebug > 1)Printf("xSec %f nTrials %f Norm %f \n",xsec,ntrials,normFactor);
     
     
     TCanvas* c2 = new TCanvas("c2","Jet Pt dist",160,160,1200,800);