Included the possibility to set a non standard jet branch
authordperrino <dperrino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 27 May 2010 11:30:04 +0000 (11:30 +0000)
committerdperrino <dperrino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 27 May 2010 11:30:04 +0000 (11:30 +0000)
JETAN/AliAnalysisTaskDiJets.cxx
JETAN/AliAnalysisTaskDiJets.h
PWG4/macros/AddTaskDiJets.C

index da46c67..f58afb7 100644 (file)
@@ -32,7 +32,10 @@ AliAnalysisTaskDiJets::AliAnalysisTaskDiJets():
     AliAnalysisTaskSE(),
     fDiJets(0),
     fDiJetsIn(0),
+    fUseAODInput(kFALSE),
     fFillAOD(kFALSE),
+    fJetBranch("jets"),
+    fAOD(0),
     fHistList(0),
     fH1DeltaPt(0),
     fH1DeltaPhi(0),
@@ -49,7 +52,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,10 +73,10 @@ 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);
        }
 
@@ -120,7 +126,7 @@ void AliAnalysisTaskDiJets::UserCreateOutputObjects()
 void AliAnalysisTaskDiJets::Init()
 {
     // Initialization
-    if (fDebug > 1) printf("AnalysisTaskDiJets::Init() \n");
+    if (fDebug) printf("AnalysisTaskDiJets::Init() \n");
 }
 
 //----------------------------------------------------------------------
@@ -128,26 +134,29 @@ 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){
+      AliAODEvent* fAOD   = dynamic_cast<AliAODEvent*> (InputEvent());
+      if(!fAOD && fDebug){
+        // We do not have an input AOD, look in the output
+        printf("%s:%d No AOD event in the input\n",(char*)__FILE__,__LINE__);
+        return;
+      }
+    } else {
+      fAOD = AODEvent();
+      if(!fAOD && 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 +170,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);
@@ -194,6 +203,6 @@ void AliAnalysisTaskDiJets::Terminate(Option_t */*option*/)
 {
 // Terminate analysis
 //
-    if (fDebug > 1) printf("AnalysisDiJets: Terminate() \n");
+    if (fDebug) printf("AnalysisDiJets: Terminate() \n");
 }
 
index 717c4b3..cfcf5e3 100644 (file)
@@ -23,7 +23,9 @@ class AliAnalysisTaskDiJets : public AliAnalysisTaskSE
     virtual void UserExec(Option_t *option);
     virtual void Terminate(Option_t *option);
 
+    void SetAODInput(Bool_t b)   {fUseAODInput = b;}
     void SetFillAOD(Bool_t fill) { fFillAOD=fill; }
+    void SetJetBranch(const Char_t *br){ fJetBranch=br; }
 
  private:
   AliAnalysisTaskDiJets(const AliAnalysisTaskDiJets &det);
@@ -33,8 +35,11 @@ class AliAnalysisTaskDiJets : public AliAnalysisTaskSE
   TClonesArray* fDiJets;    // Array of dijets
   TClonesArray* fDiJetsIn;  // Array of dijets
 
+  Bool_t        fUseAODInput; // read jets from input AOD
   Bool_t        fFillAOD;   // option to fill AOD branch
+  TString       fJetBranch; // jet branch to read
 
+  AliAODEvent  *fAOD;       // AOD event
   TList        *fHistList;  // Output list
 
   TH1F         *fH1DeltaPt;  // Pt difference
index 6172141..85977e6 100644 (file)
@@ -1,4 +1,4 @@
-AliAnalysisTaskDiJets *AddTaskDiJets()\r
+AliAnalysisTaskDiJets *AddTaskDiJets(Char_t *jb="dijets")\r
 {\r
 // Creates a dijet task, configures it and adds it to the analysis manager.\r
 \r
@@ -20,12 +20,18 @@ AliAnalysisTaskDiJets *AddTaskDiJets()
    // Create the task and configure it.\r
    //===========================================================================\r
 \r
-   AliAnalysisTaskDiJets *dijetana = new AliAnalysisTaskDiJets("DiJetAnalysis");\r
-   dijetana->SetDebugLevel(0);\r
+   AliAnalysisTaskDiJets *dijetana = new AliAnalysisTaskDiJets(Form("DiJetAnalysis_%s",jb));\r
+   dijetana->SetDebugLevel(1);\r
+   dijetana->SetFillAOD(kTRUE);\r
+   dijetana->SetJetBranch(jb);\r
    mgr->AddTask(dijetana);\r
+   \r
+   TString jbOut(jb);\r
+   if (jbOut.Sizeof() > 6) jbOut = jbOut(4,jbOut.Sizeof());\r
+   jbOut.ToLower();\r
 \r
-   AliAnalysisDataContainer *cout_dijet = mgr->CreateContainer("DiJet", TList::Class(),AliAnalysisManager::kOutputContainer,\r
-     Form("%s:PWG4_DiJet",AliAnalysisManager::GetCommonFileName()));\r
+   AliAnalysisDataContainer *cout_dijet = mgr->CreateContainer(Form("dijets_%s",jbOut.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,\r
+     Form("%s:PWG4_DiJets_%s",AliAnalysisManager::GetCommonFileName(),jbOut.Data()));\r
 \r
    // Create ONLY the output containers for the data produced by the task.\r
    // Get and connect other common input/output containers via the manager as below\r