X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=JETAN%2FAliAnalysisTaskDiJets.cxx;h=f1df281af29997a933beb446b84082f2910abb98;hb=8248a894a59d8e74dd8fca5119e20f3f3af69450;hp=278392258f7e6d588222fd915b6f49462fabb007;hpb=341bfe06d94c04df9972934f08c88020f96ff11a;p=u%2Fmrichter%2FAliRoot.git diff --git a/JETAN/AliAnalysisTaskDiJets.cxx b/JETAN/AliAnalysisTaskDiJets.cxx index 278392258f7..f1df281af29 100644 --- a/JETAN/AliAnalysisTaskDiJets.cxx +++ b/JETAN/AliAnalysisTaskDiJets.cxx @@ -14,13 +14,19 @@ **************************************************************************/ /* $Id$ */ - +/* + Analysis Task + for Dijet Analysis + based on AOD +*/ + #include "AliAnalysisTaskDiJets.h" #include "AliAODEvent.h" #include "AliAODJet.h" #include "AliAODDiJet.h" #include #include +#include ClassImp(AliAnalysisTaskDiJets) @@ -30,80 +36,183 @@ ClassImp(AliAnalysisTaskDiJets) AliAnalysisTaskDiJets::AliAnalysisTaskDiJets(): AliAnalysisTaskSE(), fDiJets(0), - fDiJetsIn(0) + fDiJetsIn(0), + fUseAODInput(kFALSE), + fFillAOD(kFALSE), + fJetBranch("jets"), + fAOD(0), + fHistList(0), + fH1DeltaPt(0), + fH1DeltaPhi(0), + fH1PhiImbal(0), + fH1Asym(0), + fH2Pt2vsPt1(0), + fH2DifvsSum(0) { // Default constructor } +//---------------------------------------------------------------------- AliAnalysisTaskDiJets::AliAnalysisTaskDiJets(const char* name): AliAnalysisTaskSE(name), fDiJets(0), - fDiJetsIn(0) + fDiJetsIn(0), + fUseAODInput(kFALSE), + fFillAOD(kFALSE), + fJetBranch("jets"), + fAOD(0), + fHistList(0), + fH1DeltaPt(0), + fH1DeltaPhi(0), + fH1PhiImbal(0), + fH1Asym(0), + fH2Pt2vsPt1(0), + fH2DifvsSum(0) { // Default constructor + DefineOutput(1, TList::Class()); } +//---------------------------------------------------------------------- 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); - fDiJets->SetName("Dijets"); - AddAODBranch("TClonesArray", &fDiJets); + if (fFillAOD){ + 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); + + fH1DeltaPt = new TH1F("DeltaPt","Difference between the jets' Pt;#Deltap_{T} (GeV/c);Entries",150,0.,150.); + fH1DeltaPt->SetMarkerSize(0.6); + fH1DeltaPt->SetMarkerColor(4); + fH1DeltaPt->SetMarkerStyle(21); + fH1DeltaPt->SetOption("E"); + + fH1DeltaPhi = new TH1F("DeltaPhi","Difference in the azimuthal angle;#Delta#phi;Entries",100,0.,pi); + fH1DeltaPhi->SetMarkerSize(0.6); + fH1DeltaPhi->SetMarkerColor(4); + fH1DeltaPhi->SetMarkerStyle(21); + fH1DeltaPhi->SetOption("E"); + + fH1PhiImbal = new TH1F("PhiImb","Phi imbalance;#phi;Entries",100,-pi,pi); + fH1PhiImbal->SetMarkerSize(0.6); + fH1PhiImbal->SetMarkerColor(4); + fH1PhiImbal->SetMarkerStyle(21); + fH1PhiImbal->SetOption("E"); + + fH1Asym = new TH1F("Asym","Pt asymmetry;#Deltap_{T}/(p_{T,1}+p_{T,2});Entries",50,0.,1.); + fH1Asym->SetMarkerSize(0.6); + fH1Asym->SetMarkerColor(4); + fH1Asym->SetMarkerStyle(21); + fH1Asym->SetOption("E"); + + fH2Pt2vsPt1 = new TH2F("Pt2vsPt1","Pt2 versus Pt1;p_{T,1} (GeV/c);p_{T,2} (GeV/c)",250,0.,250.,250,0.,250.); + fH2Pt2vsPt1->SetOption("cont0"); + + fH2DifvsSum = new TH2F("DifvsSum","Pt difference vs Pt sum;p_{T,1}+p_{T,2} (GeV/c);#Deltap_{T} (GeV/c)",400,0.,400.,150,0.,150.); + fH2DifvsSum->SetOption("cont0"); + + fHistList->Add(fH1DeltaPt); + fHistList->Add(fH1DeltaPhi); + fHistList->Add(fH1PhiImbal); + fHistList->Add(fH1Asym); + fHistList->Add(fH2Pt2vsPt1); + fHistList->Add(fH2DifvsSum); } +//---------------------------------------------------------------------- void AliAnalysisTaskDiJets::Init() { // Initialization - if (fDebug > 1) printf("AnalysisTaskDiJets::Init() \n"); + if (fDebug) printf("AnalysisTaskDiJets::Init() \n"); } +//---------------------------------------------------------------------- void AliAnalysisTaskDiJets::UserExec(Option_t */*option*/) { // Execute analysis for current event // - fDiJets->Delete(); - AliAODEvent* aod = dynamic_cast (InputEvent()); - TClonesArray* jets = aod->GetJets(); - fDiJetsIn = (TClonesArray*) (aod->GetList()->FindObject("Dijets")); - + if (fDiJets) fDiJets->Delete(); + + if(fUseAODInput){ + fAOD = dynamic_cast (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 = (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*) (fAOD->GetList()->FindObject("dijets")); + if (fDiJetsIn) { - printf("Found %d dijets in old list \n", fDiJetsIn->GetEntries()); - AliAODJet* jj1, *jj2; - AliAODDiJet* testJ; - - if (fDiJetsIn->GetEntries() > 0) { - testJ = (AliAODDiJet*) (fDiJetsIn->At(0)); - jj1 = testJ->Jet(0); - jj1->Print(""); - jj2 = testJ->Jet(1); - jj2->Print(""); - } + if (fDebug) printf("Found %d dijets in old list \n", fDiJetsIn->GetEntries()); + AliAODJet* jj1, *jj2; + AliAODDiJet* testJ; + + if (fDiJetsIn->GetEntries() > 0) { + testJ = (AliAODDiJet*) (fDiJetsIn->At(0)); + jj1 = testJ->Jet(0); + jj1->Print(""); + jj2 = testJ->Jet(1); + jj2->Print(""); + } } - - + Int_t nj = jets->GetEntriesFast(); - printf("There are %5d jets in the event \n", nj); - if (nj > 1) { - AliAODJet* jet1 = (AliAODJet*) (jets->At(0)); - TLorentzVector v1 = *(jet1->MomentumVector()); - AliAODJet* jet2 = (AliAODJet*) (jets->At(1)); - TLorentzVector v2 = *(jet2->MomentumVector()); - TLorentzVector v = v1 + v2; + if (fDebug) printf("There are %5d jets in the event \n", nj); + + if (nj < 2){ + PostData(1, fHistList); + return; + } + AliAODJet* jet1 = (AliAODJet*) (jets->At(0)); + TLorentzVector v1 = *(jet1->MomentumVector()); + AliAODJet* jet2 = (AliAODJet*) (jets->At(1)); + TLorentzVector v2 = *(jet2->MomentumVector()); + TLorentzVector v = v1 + v2; + if (fDiJets) { Int_t ndi = fDiJets->GetEntriesFast(); TClonesArray &lref = *fDiJets; - new(lref[ndi]) AliAODDiJet(v);; + 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()); + 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()); + + PostData(1, fHistList); + return; } +//---------------------------------------------------------------------- void AliAnalysisTaskDiJets::Terminate(Option_t */*option*/) { // Terminate analysis // - if (fDebug > 1) printf("AnalysisDiJets: Terminate() \n"); + if (fDebug) printf("AnalysisDiJets: Terminate() \n"); }