]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliAnalysisTaskDiJets.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskDiJets.cxx
index da46c6796b2ad46254317b1cbc844a45a395fd93..f1df281af29997a933beb446b84082f2910abb98 100644 (file)
  **************************************************************************/
 
 /* $Id$ */
+/*
+ Analysis Task 
+ for Dijet Analysis
+ based on AOD
+*/
+
 #include "AliAnalysisTaskDiJets.h"
 #include "AliAODEvent.h"
 #include "AliAODJet.h"
@@ -32,7 +37,10 @@ AliAnalysisTaskDiJets::AliAnalysisTaskDiJets():
     AliAnalysisTaskSE(),
     fDiJets(0),
     fDiJetsIn(0),
+    fUseAODInput(kFALSE),
     fFillAOD(kFALSE),
+    fJetBranch("jets"),
+    fAOD(0),
     fHistList(0),
     fH1DeltaPt(0),
     fH1DeltaPhi(0),
@@ -49,7 +57,10 @@ AliAnalysisTaskDiJets::AliAnalysisTaskDiJets(const char* name):
     AliAnalysisTaskSE(name),
     fDiJets(0),
     fDiJetsIn(0),
+    fUseAODInput(kFALSE),
     fFillAOD(kFALSE),
+    fJetBranch("jets"),
+    fAOD(0),
     fHistList(0),
     fH1DeltaPt(0),
     fH1DeltaPhi(0),
@@ -67,14 +78,15 @@ void AliAnalysisTaskDiJets::UserCreateOutputObjects()
 {
 // Create the output container
 //
-    if (fDebug > 1) printf("AnalysisTaskDiJets::CreateOutPutData() \n");
+    if (fDebug) printf("AnalysisTaskDiJets::CreateOutPutData() \n");
     fDiJets = new TClonesArray("AliAODDiJet", 0);
     if (fFillAOD){
-      fDiJets->SetName("dijets");
+      fDiJets->SetName(Form("dijets_%s",fJetBranch.Data()));
       AddAODBranch("TClonesArray", &fDiJets);
        }
 
     if (!fHistList) fHistList = new TList();
+    fHistList->SetOwner();
     Float_t pi=TMath::Pi();
     gStyle->SetPalette(1);
 
@@ -120,7 +132,7 @@ void AliAnalysisTaskDiJets::UserCreateOutputObjects()
 void AliAnalysisTaskDiJets::Init()
 {
     // Initialization
-    if (fDebug > 1) printf("AnalysisTaskDiJets::Init() \n");
+    if (fDebug) printf("AnalysisTaskDiJets::Init() \n");
 }
 
 //----------------------------------------------------------------------
@@ -128,26 +140,30 @@ void AliAnalysisTaskDiJets::UserExec(Option_t */*option*/)
 {
 // Execute analysis for current event
 //
-    fDiJets->Delete();
-    AliAODEvent* aod   = dynamic_cast<AliAODEvent*> (InputEvent());
-
-    if(!aod){
-      // We do not have an input AOD, look in the output
-      aod = AODEvent();
-      if(!aod){
-        if (fDebug >1) printf("%s:%d AODEvent not found in the Output",(char*)__FILE__,__LINE__);
+    if (fDiJets) fDiJets->Delete();
+
+    if(fUseAODInput){
+      fAOD = dynamic_cast<AliAODEvent*> (InputEvent());
+      if(!fAOD){
+        // We do not have an input AOD, look in the output
+        if (fDebug) printf("%s:%d No AOD event in the input\n",(char*)__FILE__,__LINE__);
+        return;
+      }
+    } else {
+      fAOD = AODEvent();
+      if(!fAOD){
+        if (fDebug) printf("%s:%d AODEvent not found in the Output",(char*)__FILE__,__LINE__);
         return;
       }
     }
 
-    TClonesArray* jets = aod->GetJets();
-
+    TClonesArray* jets = (TClonesArray*) fAOD->FindListObject(fJetBranch.Data());
     // N.B. if we take the aod from the output this is always
     // empty and since it is the same as fDiJets 
-    fDiJetsIn = (TClonesArray*) (aod->GetList()->FindObject("dijets"));
+    fDiJetsIn = (TClonesArray*) (fAOD->GetList()->FindObject("dijets"));
 
     if (fDiJetsIn) {
-      if (fDebug >1) printf("Found %d dijets in old list \n", fDiJetsIn->GetEntries());
+      if (fDebug) printf("Found %d dijets in old list \n", fDiJetsIn->GetEntries());
       AliAODJet* jj1, *jj2;
       AliAODDiJet* testJ;
 
@@ -161,7 +177,7 @@ void AliAnalysisTaskDiJets::UserExec(Option_t */*option*/)
     }
 
     Int_t nj = jets->GetEntriesFast();
-    if (fDebug >1) printf("There are %5d jets in the event \n", nj);
+    if (fDebug) printf("There are %5d jets in the event \n", nj);
 
     if (nj < 2){
       PostData(1, fHistList);
@@ -172,15 +188,18 @@ void AliAnalysisTaskDiJets::UserExec(Option_t */*option*/)
     AliAODJet* jet2 = (AliAODJet*) (jets->At(1));
     TLorentzVector v2 = *(jet2->MomentumVector());
     TLorentzVector v = v1 + v2;
-    Int_t ndi = fDiJets->GetEntriesFast();
-    TClonesArray &lref = *fDiJets;
-    new(lref[ndi]) AliAODDiJet(v);
-    AliAODDiJet* dijet = (AliAODDiJet*) (fDiJets->At(ndi));
-    dijet->SetJetRefs(jet1, jet2);
+    if (fDiJets) {
+       Int_t ndi = fDiJets->GetEntriesFast();
+       TClonesArray &lref = *fDiJets;
+       new(lref[ndi]) AliAODDiJet(v);
+       AliAODDiJet* dijet = (AliAODDiJet*) (fDiJets->At(ndi));
+       dijet->SetJetRefs(jet1, jet2);
+       fH1DeltaPhi->Fill(dijet->DeltaPhi());
+       fH1PhiImbal->Fill(dijet->PhiImbalance());
 
+    }
+    
     fH1DeltaPt->Fill(jet1->Pt()-jet2->Pt());
-    fH1DeltaPhi->Fill(dijet->DeltaPhi());
-    fH1PhiImbal->Fill(dijet->PhiImbalance());
     fH1Asym->Fill((jet1->Pt()-jet2->Pt())/(jet1->Pt()+jet2->Pt()));
     fH2Pt2vsPt1->Fill(jet1->Pt(),jet2->Pt());
     fH2DifvsSum->Fill(jet1->Pt()+jet2->Pt(),jet1->Pt()-jet2->Pt());
@@ -194,6 +213,6 @@ void AliAnalysisTaskDiJets::Terminate(Option_t */*option*/)
 {
 // Terminate analysis
 //
-    if (fDebug > 1) printf("AnalysisDiJets: Terminate() \n");
+    if (fDebug) printf("AnalysisDiJets: Terminate() \n");
 }