**************************************************************************/
/* $Id$ */
-
+/*
+ Analysis Task
+ for Dijet Analysis
+ based on AOD
+*/
+
#include "AliAnalysisTaskDiJets.h"
#include "AliAODEvent.h"
#include "AliAODJet.h"
AliAnalysisTaskSE(),
fDiJets(0),
fDiJetsIn(0),
+ fUseAODInput(kFALSE),
fFillAOD(kFALSE),
+ fJetBranch("jets"),
+ fAOD(0),
fHistList(0),
fH1DeltaPt(0),
fH1DeltaPhi(0),
AliAnalysisTaskSE(name),
fDiJets(0),
fDiJetsIn(0),
+ fUseAODInput(kFALSE),
fFillAOD(kFALSE),
+ fJetBranch("jets"),
+ fAOD(0),
fHistList(0),
fH1DeltaPt(0),
fH1DeltaPhi(0),
{
// 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);
void AliAnalysisTaskDiJets::Init()
{
// Initialization
- if (fDebug > 1) printf("AnalysisTaskDiJets::Init() \n");
+ if (fDebug) printf("AnalysisTaskDiJets::Init() \n");
}
//----------------------------------------------------------------------
{
// 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;
}
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);
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());
{
// Terminate analysis
//
- if (fDebug > 1) printf("AnalysisDiJets: Terminate() \n");
+ if (fDebug) printf("AnalysisDiJets: Terminate() \n");
}