From 37eb26ea5437a6267b01f7043585e4adbcdeb8cc Mon Sep 17 00:00:00 2001 From: kleinb Date: Sat, 12 Feb 2011 10:22:55 +0000 Subject: [PATCH] clean up in spectrum task, added area histograms and deltaAOD running --- PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.cxx | 201 ++++++++++++------ PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.h | 40 ++-- PWG4/macros/AddTaskJetSpectrum2.C | 53 ++--- PWG4/macros/AnalysisTrainPWG4Jets.C | 104 +++++---- 4 files changed, 242 insertions(+), 156 deletions(-) diff --git a/PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.cxx b/PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.cxx index cf4dcc38230..0d1b5e0d485 100644 --- a/PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.cxx +++ b/PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.cxx @@ -1,4 +1,3 @@ - // ************************************** // Task used for the correction of determiantion of reconstructed jet spectra // Compares input (gen) and output (rec) jets @@ -35,6 +34,7 @@ #include #include #include +#include #include "TDatabasePDG.h" #include "AliAnalysisTaskJetSpectrum2.h" @@ -64,7 +64,8 @@ ClassImp(AliAnalysisTaskJetSpectrum2) -AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(): AliAnalysisTaskSE(), +AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(): + AliAnalysisTaskSE(), fJetHeaderRec(0x0), fJetHeaderGen(0x0), fAODIn(0x0), @@ -75,7 +76,8 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(): AliAnalysisTaskSE(), f1PtScale(0x0), fBranchRec("jets"), fBranchGen(""), - fBranchBkg(""), + fBranchBkgRec(""), + fBranchBkgGen(""), fNonStdFile(""), fUseAODJetInput(kFALSE), fUseAODTrackInput(kFALSE), @@ -83,9 +85,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(): AliAnalysisTaskSE(), fUseGlobalSelection(kFALSE), fUseExternalWeightOnly(kFALSE), fLimitGenJetEta(kFALSE), - fBkgSubtraction(kFALSE), fNMatchJets(5), - fFillCorrBkg(0), fFilterMask(0), fEventSelectionMask(0), fAnalysisType(0), @@ -99,6 +99,8 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(): AliAnalysisTaskSE(), fMinJetPt(0), fMinTrackPt(0.15), fDeltaPhiWindow(90./180.*TMath::Pi()), + fMultRec(0), + fMultGen(0), fh1Xsec(0x0), fh1Trials(0x0), fh1PtHard(0x0), @@ -106,6 +108,8 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(): AliAnalysisTaskSE(), fh1PtHardTrials(0x0), fh1ZVtx(0x0), fh1TmpRho(0x0), + fh2MultRec(0x0), + fh2MultGen(0x0), fh2PtFGen(0x0), fh2RelPtFGen(0x0), fHistList(0x0) @@ -120,13 +124,15 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(): AliAnalysisTaskSE(), fh1PtJetsIn[ij] = 0; fh1PtTracksIn[ij] = 0; fh1PtTracksLeadingIn[ij] = 0; + fh2MultJetPt[ij] = 0; fh2NJetsPt[ij] = 0; fh2NTracksPt[ij] = 0; - fh2LeadingJetPtJetPhi[ij] = 0; fh2LeadingTrackPtTrackPhi[ij] = 0; - for(int i = 0;i < kMaxJets;++i){ + for(int i = 0;i <= kMaxJets;++i){ fh2PhiPt[ij][i] = 0; fh2EtaPt[ij][i] = 0; + fh2AreaPt[ij][i] = 0; + fh2EtaArea[ij][i] = 0; fh2PhiEta[ij][i] = 0; fh1PtIn[ij][i] = 0; @@ -155,7 +161,8 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name): f1PtScale(0x0), fBranchRec("jets"), fBranchGen(""), - fBranchBkg(""), + fBranchBkgRec(""), + fBranchBkgGen(""), fNonStdFile(""), fUseAODJetInput(kFALSE), fUseAODTrackInput(kFALSE), @@ -163,9 +170,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name): fUseGlobalSelection(kFALSE), fUseExternalWeightOnly(kFALSE), fLimitGenJetEta(kFALSE), - fBkgSubtraction(kFALSE), fNMatchJets(5), - fFillCorrBkg(0), fFilterMask(0), fEventSelectionMask(0), fAnalysisType(0), @@ -179,6 +184,8 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name): fMinJetPt(0), fMinTrackPt(0.15), fDeltaPhiWindow(90./180.*TMath::Pi()), + fMultRec(0), + fMultGen(0), fh1Xsec(0x0), fh1Trials(0x0), fh1PtHard(0x0), @@ -186,6 +193,8 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name): fh1PtHardTrials(0x0), fh1ZVtx(0x0), fh1TmpRho(0x0), + fh2MultRec(0x0), + fh2MultGen(0x0), fh2PtFGen(0x0), fh2RelPtFGen(0x0), fHistList(0x0) @@ -201,13 +210,15 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name): fh1PtJetsIn[ij] = 0; fh1PtTracksIn[ij] = 0; fh1PtTracksLeadingIn[ij] = 0; + fh2MultJetPt[ij] = 0; fh2NJetsPt[ij] = 0; fh2NTracksPt[ij] = 0; - fh2LeadingJetPtJetPhi[ij] = 0; fh2LeadingTrackPtTrackPhi[ij] = 0; - for(int i = 0;i < kMaxJets;++i){ + for(int i = 0;i <= kMaxJets;++i){ fh2PhiPt[ij][i] = 0; fh2EtaPt[ij][i] = 0; + fh2AreaPt[ij][i] = 0; + fh2EtaArea[ij][i] = 0; fh2PhiEta[ij][i] = 0; fh1PtIn[ij][i] = 0; @@ -222,7 +233,7 @@ AliAnalysisTaskJetSpectrum2::AliAnalysisTaskJetSpectrum2(const char* name): fh2DijetDifvsSum[ij] = 0; } - DefineOutput(1, TList::Class()); + DefineOutput(1, TList::Class()); } @@ -288,14 +299,12 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects() // Connect the AOD if (fDebug > 1) printf("AnalysisTaskJetSpectrum2::UserCreateOutputObjects() \n"); - OpenFile(1); - if(!fHistList)fHistList = new TList(); + if(!fHistList)fHistList = new TList(); fHistList->SetOwner(kTRUE); - Bool_t oldStatus = TH1::AddDirectoryStatus(); + Bool_t oldStatus = TH1::AddDirectoryStatus(); TH1::AddDirectory(kFALSE); - MakeJetContainer(); fHistList->Add(fhnCorrelation); fHistList->Add(fhnCorrelationPhiZRec); @@ -314,30 +323,17 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects() binLimitsPt[iPt] = binLimitsPt[iPt-1] + 1.0; } } - const Int_t nBinPhi = 90; Double_t binLimitsPhi[nBinPhi+1]; for(Int_t iPhi = 0;iPhi<=nBinPhi;iPhi++){ if(iPhi==0){ - binLimitsPhi[iPhi] = -1.*TMath::Pi(); + binLimitsPhi[iPhi] = 0; } else{ binLimitsPhi[iPhi] = binLimitsPhi[iPhi-1] + 1/(Float_t)nBinPhi * TMath::Pi()*2; } } - - const Int_t nBinPhi2 = 360; - Double_t binLimitsPhi2[nBinPhi2+1]; - for(Int_t iPhi2 = 0;iPhi2<=nBinPhi2;iPhi2++){ - if(iPhi2==0){ - binLimitsPhi2[iPhi2] = 0.; - } - else{ - binLimitsPhi2[iPhi2] = binLimitsPhi2[iPhi2-1] + 1/(Float_t)nBinPhi2 * TMath::Pi()*2; - } - } - const Int_t nBinEta = 40; Double_t binLimitsEta[nBinEta+1]; for(Int_t iEta = 0;iEta<=nBinEta;iEta++){ @@ -353,23 +349,22 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects() fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1); fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>"); fHistList->Add(fh1Xsec); - fh1Trials = new TH1F("fh1Trials","trials root file",1,0,1); fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}"); fHistList->Add(fh1Trials); - fh1PtHard = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",nBinPt,binLimitsPt); fHistList->Add(fh1PtHard); - fh1PtHardNoW = new TH1F("fh1PtHardNoW","PYTHIA Pt hard no weight;p_{T,hard}",nBinPt,binLimitsPt); fHistList->Add(fh1PtHardNoW); - fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",nBinPt,binLimitsPt); fHistList->Add(fh1PtHardTrials); - fh1ZVtx = new TH1F("fh1ZVtx","z vtx;z_{vtx} (cm)",400,-20,20); fHistList->Add(fh1ZVtx); + fh2MultRec = new TH2F("fh2MultRec","multiplicity rec;# tracks;# jetrefs",400,-0.5,4000,400,0.,4000); + fHistList->Add(fh2MultRec); + fh2MultGen = new TH2F("fh2MultGen","multiplicity gen;# tracks;# jetrefs",400,-0.5,4000,400,0.,4000); + fHistList->Add(fh2MultGen); fh2PtFGen = new TH2F("fh2PtFGen",Form("%s vs. %s;p_{T,gen};p_{T,rec}",fBranchRec.Data(),fBranchGen.Data()),nBinPt,binLimitsPt,nBinPt,binLimitsPt); fHistList->Add(fh2PtFGen); @@ -377,7 +372,6 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects() fh2RelPtFGen = new TH2F("fh2RelPtFGen",";p_{T,gen};p_{T,rec}-p_{T,gen}/p_{T,Gen}",nBinPt,binLimitsPt,241,-2.41,2.41); fHistList->Add(fh2RelPtFGen); - for(int ij = 0;ij Add(fh1SumPtTrack[ij]); + fh2MultJetPt[ij] = new TH2F(Form("fh2MultJetPt%s",cAdd.Data()),Form("%s jets p_T;# tracks;;p_{T} (GeV/c)",cAdd.Data()),400,0,4000,nBinPt,binLimitsPt); + fHistList->Add(fh2MultJetPt[ij]); + fh2NJetsPt[ij] = new TH2F(Form("fh2N%sJetsPt",cAdd.Data()),Form("Number of %s jets above threshhold;p_{T,cut} (GeV/c);N_{jets}",cAdd.Data()),nBinPt,binLimitsPt,50,-0.5,49.5); fHistList->Add(fh2NJetsPt[ij]); fh2NTracksPt[ij] = new TH2F(Form("fh2N%sTracksPt",cAdd.Data()),Form("Number of %s tracks above threshhold;p_{T,cut} (GeV/c);N_{tracks}",cAdd.Data()),nBinPt,binLimitsPt,1000,0.,4000); fHistList->Add(fh2NTracksPt[ij]); - fh2LeadingJetPtJetPhi[ij] = new TH2F(Form("fh2Leading%sJetPtJetPhi",cAdd.Data()),Form("phi of leading %s jet;p_{T};#phi;",cAdd.Data()), - nBinPt,binLimitsPt,nBinPhi,binLimitsPhi); - fHistList->Add(fh2LeadingJetPtJetPhi[ij]); - fh2LeadingTrackPtTrackPhi[ij] = new TH2F(Form("fh2Leading%sTrackPtTrackPhi",cAdd.Data()),Form("phi of leading %s track;p_{T};#phi;",cAdd.Data()), nBinPt,binLimitsPt,nBinPhi,binLimitsPhi); fHistList->Add(fh2LeadingTrackPtTrackPhi[ij]); - - for(int i = 0;i < kMaxJets;++i){ + for(int i = 0;i <= kMaxJets;++i){ fh1PtIn[ij][i] = new TH1F(Form("fh1Pt%sIn_j%d",cAdd.Data(),i),Form("%s p_T input ;p_{T}",cAdd.Data()),nBinPt,binLimitsPt); fHistList->Add(fh1PtIn[ij][i]); @@ -436,22 +428,29 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects() 40,0.,2.,nBinPt,binLimitsPt); fHistList->Add(fh2RhoPt[ij][i]); if(!fh1TmpRho)fh1TmpRho = new TH1F("fh1TmpRho","tmp histo for jet shape",40,0.,2); - - fh2PsiPt[ij][i] = new TH2F(Form("fh2PsiPt%s_j%d",cAdd.Data(),i),Form("jet shape #psi for %s jets;r;p_{T};",cAdd.Data()), 40,0.,2.,nBinPt,binLimitsPt); fHistList->Add(fh2PsiPt[ij][i]); - - fh2PhiPt[ij][i] = new TH2F(Form("fh2PhiPt%s_j%d",cAdd.Data(),i),Form("pt vs phi %s;phi;p_{T};",cAdd.Data()), + fh2PhiPt[ij][i] = new TH2F(Form("fh2PhiPt%s_j%d",cAdd.Data(),i),Form("pt vs phi %s;#phi;p_{T};",cAdd.Data()), nBinPhi,binLimitsPhi,nBinPt,binLimitsPt); fHistList->Add(fh2PhiPt[ij][i]); - fh2EtaPt[ij][i] = new TH2F(Form("fh2EtaPt%s_j%d",cAdd.Data(),i),Form("pt vs phi %s;phi;p_{T};",cAdd.Data()), - 20,-1.,1.,nBinPt,binLimitsPt); + fh2EtaPt[ij][i] = new TH2F(Form("fh2EtaPt%s_j%d",cAdd.Data(),i),Form("pt vs eta %s;#eta;p_{T};",cAdd.Data()), + 50,-1.,1.,nBinPt,binLimitsPt); fHistList->Add(fh2EtaPt[ij][i]); + fh2AreaPt[ij][i] = new TH2F(Form("fh2AreaPt%s_j%d",cAdd.Data(),i), + Form("pt vs area %s;area;p_{T};", + cAdd.Data()), + 50,0.,1.,nBinPt,binLimitsPt); + fHistList->Add(fh2AreaPt[ij][i]); + fh2EtaArea[ij][i] = new TH2F(Form("fh2EtaArea%s_j%d",cAdd.Data(),i), + Form("area vs eta %s;#eta;area;", + cAdd.Data()), + 50,-1.,1.,50,0,1.); + fHistList->Add(fh2EtaArea[ij][i]); + fh2PhiEta[ij][i] = new TH2F(Form("fh2PhiEta%s_j%d",cAdd.Data(),i),Form("phi vs eta %s ;phi;p_{T};",cAdd.Data()), nBinPhi,binLimitsPhi,20,-1.,1.); fHistList->Add(fh2PhiEta[ij][i]); - } @@ -466,11 +465,9 @@ void AliAnalysisTaskJetSpectrum2::UserCreateOutputObjects() fh2DijetPt2vsPt1[ij] = new TH2F(Form("fh2Dijet%sPt2vsPt1",cAdd.Data()),"Pt2 versus Pt1;p_{T,1} (GeV/c);p_{T,2} (GeV/c)",250,0.,250.,250,0.,250.); fHistList->Add(fh2DijetPt2vsPt1[ij]); - fh2DijetDifvsSum[ij] = new TH2F(Form("fh2Dijet%sDifvsSum",cAdd.Data()),"Pt difference vs Pt sum;p_{T,1}+p_{T,2} (GeV/c);#Deltap_{T} (GeV/c)",400,0.,400.,150,0.,150.); fHistList->Add( fh2DijetDifvsSum[ij]); } - // =========== Switch on Sumw2 for all histos =========== for (Int_t i=0; iGetEntries(); ++i) { TH1 *h1 = dynamic_cast(fHistList->At(i)); @@ -575,6 +572,44 @@ void AliAnalysisTaskJetSpectrum2::UserExec(Option_t */*option*/){ } } + TClonesArray *aodBackRecJets = 0; + if(fBranchBkgRec.Length()>0){ + if(fAODOut&&!aodBackRecJets){ + aodBackRecJets = dynamic_cast(fAODOut->FindListObject(fBranchBkgRec.Data())); + } + if(fAODExtension&&!aodBackRecJets){ + aodBackRecJets = dynamic_cast(fAODExtension->GetAOD()->FindListObject(fBranchBkgRec.Data())); + } + if(fAODIn&&!aodBackRecJets){ + aodBackRecJets = dynamic_cast(fAODIn->FindListObject(fBranchBkgRec.Data())); + } + + if(!aodBackRecJets){ + Printf("%s:%d no background rec Jet array with name %s in AOD",(char*)__FILE__,__LINE__,fBranchBkgRec.Data()); + return; + } + } + + + TClonesArray *aodBackGenJets = 0; + + if(fBranchBkgGen.Length()>0){ + if(fAODOut&&!aodBackGenJets){ + aodBackGenJets = dynamic_cast(fAODOut->FindListObject(fBranchBkgGen.Data())); + } + if(fAODExtension&&!aodBackGenJets){ + aodBackGenJets = dynamic_cast(fAODExtension->GetAOD()->FindListObject(fBranchBkgGen.Data())); + } + if(fAODIn&&!aodBackGenJets){ + aodBackGenJets = dynamic_cast(fAODIn->FindListObject(fBranchBkgGen.Data())); + } + + if(!aodBackGenJets){ + Printf("%s:%d no background rec Jet array with name %s in AOD",(char*)__FILE__,__LINE__,fBranchBkgGen.Data()); + return; + } + } + // new Scheme // first fill all the pure histograms, i.e. full jets @@ -654,8 +689,19 @@ void AliAnalysisTaskJetSpectrum2::UserExec(Option_t */*option*/){ fh1ZVtx->Fill(aod->GetPrimaryVertex()->GetZ()); } - + Int_t recMult1 = recParticles.GetEntries(); + Int_t genMult1 = genParticles.GetEntries(); + + Int_t recMult2 = MultFromJetRefs(aodBackRecJets); + Int_t genMult2 = MultFromJetRefs(aodBackGenJets); + + fh2MultRec->Fill(recMult1,recMult2); + fh2MultGen->Fill(genMult1,genMult2); + fMultRec = recMult1; + if(fMultRec<=0)fMultRec = recMult2; + fMultGen = genMult1; + if(fMultGen<=0)fMultGen = genMult2; // the loops for rec and gen should be indentical... pass it to a separate // function ... @@ -687,6 +733,11 @@ void AliAnalysisTaskJetSpectrum2::FillJetHistos(TList &jetsList,TList &particles return; } + Int_t refMult = fMultRec; + if(iType==kJetGen||iType==kJetGenFull){ + refMult = fMultGen; + } + Int_t nJets = jetsList.GetEntries(); fh1NJets[iType]->Fill(nJets); @@ -705,6 +756,7 @@ void AliAnalysisTaskJetSpectrum2::FillJetHistos(TList &jetsList,TList &particles AliAODJet *jet = (AliAODJet*)jetsList.At(ij); Float_t ptJet = jet->Pt(); fh1PtJetsIn[iType]->Fill(ptJet); + fh2MultJetPt[iType]->Fill(refMult,ptJet); if(ptJet>ptOld){ Printf("%s:%d Jets Type %d Not Sorted !! %d:%.3E %d:%.3E",(char*)__FILE__,__LINE__,iType,ij,ptJet,ij-1,ptOld); } @@ -730,24 +782,32 @@ void AliAnalysisTaskJetSpectrum2::FillJetHistos(TList &jetsList,TList &particles } } // fill jet histos for kmax jets - if(ijPhi(); Float_t etaJet = jet->Eta(); if(phiJet<0)phiJet+=TMath::Pi()*2.; fh1TmpRho->Reset(); - fh1PtIn[iType][ij]->Fill(ptJet); + if(ijFill(ptJet); + fh1PtIn[iType][kMaxJets]->Fill(ptJet); // fill leading jets... - if(ptJet>10)fh2PhiEta[iType][ij]->Fill(phiJet,etaJet); - fh2PhiPt[iType][ij]->Fill(phiJet,ptJet); - fh2EtaPt[iType][ij]->Fill(etaJet,ptJet); - if(ij==0){ - fh2LeadingJetPtJetPhi[iType]->Fill(ptJet,phiJet); - if(ij==0&&iType==0&&fDebug>1){ - Printf("%d %3.3f %p %s",iType,ptJet,jet,fBranchRec.Data()); + if(ptJet>10){ + if(ijFill(phiJet,etaJet); + fh2AreaPt[iType][ij]->Fill(jet->EffectiveAreaCharged(),ptJet); + fh2EtaArea[iType][ij]->Fill(etaJet,jet->EffectiveAreaCharged()); } + fh2PhiEta[iType][kMaxJets]->Fill(phiJet,etaJet); + fh2AreaPt[iType][kMaxJets]->Fill(jet->EffectiveAreaCharged(),ptJet); + fh2EtaArea[iType][kMaxJets]->Fill(etaJet,jet->EffectiveAreaCharged()); + } + if(ijFill(phiJet,ptJet); + fh2EtaPt[iType][ij]->Fill(etaJet,ptJet); } - if(particlesList.GetSize()){ + fh2PhiPt[iType][kMaxJets]->Fill(phiJet,ptJet); + fh2EtaPt[iType][kMaxJets]->Fill(etaJet,ptJet); + if(particlesList.GetSize()&&ijFill(r,ptJet,rhoSum); } }// if we have particles - }// ij < kMaxJets }// Jet Loop @@ -1227,3 +1286,17 @@ Int_t AliAnalysisTaskJetSpectrum2::GetListOfJets(TList *list,TClonesArray* jarr } +Int_t AliAnalysisTaskJetSpectrum2::MultFromJetRefs(TClonesArray* jets){ + if(!jets)return 0; + + Int_t refMult = 0; + for(int ij = 0;ij < jets->GetEntries();++ij){ + AliAODJet* jet = (AliAODJet*)jets->At(ij); + if(!jet)continue; + TRefArray *refs = jet->GetRefTracks(); + if(!refs)continue; + refMult += refs->GetEntries(); + } + return refMult; + +} diff --git a/PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.h b/PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.h index 458b692755d..9be9563a871 100644 --- a/PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.h +++ b/PWG4/JetTasks/AliAnalysisTaskJetSpectrum2.h @@ -53,8 +53,6 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE virtual void SetAODTrackInput(Bool_t b){fUseAODTrackInput = b;} virtual void SetAODMCInput(Bool_t b){fUseAODMCInput = b;} virtual void SetLimitGenJetEta(Bool_t b){fLimitGenJetEta = b;} - virtual void SetBkgSubtraction(Bool_t b){fBkgSubtraction = b;} - virtual void SetFillCorrBkg(Int_t i){fFillCorrBkg = i;} virtual void SetJetEtaWindow(Float_t f){fJetRecEtaWindow = f;} virtual void SetTrackEtaWindow(Float_t f){fTrackRecEtaWindow = f;} virtual void SetNMatchJets(Short_t f){fNMatchJets = f;} @@ -64,7 +62,8 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE virtual void SetAnalysisType(Int_t i){fAnalysisType = i;} virtual void SetBranchGen(const char* c){fBranchGen = c;} virtual void SetBranchRec(const char* c){fBranchRec = c;} - virtual void SetBranchBkg(const char* c){fBranchBkg = c;} + virtual void SetBranchBkgRec(const char* c){fBranchBkgRec = c;} + virtual void SetBranchBkgGen(const char* c){fBranchBkgGen = c;} virtual void SetTrackTypeGen(Int_t i){fTrackTypeGen = i;} virtual void SetTrackTypeRec(Int_t i){fTrackTypeRec = i;} virtual void SetFilterMask(UInt_t i){fFilterMask = i;} @@ -81,7 +80,7 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE // this has to match with our selection of input events enum {kTrackUndef = 0, kTrackAOD, kTrackKineAll,kTrackKineCharged, kTrackAODMCAll, kTrackAODMCCharged, kTrackAODMCChargedAcceptance}; enum {kAnaMC = 0x1, kAnaMCESD = 0x2}; - enum {kMaxJets = 4}; + enum {kMaxJets = 3}; enum {kJetRec = 0, kJetGen, kJetRecFull, kJetGenFull, kJetTypes}; // enum {kMaxCorrelation = 3}; @@ -109,6 +108,8 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE void FillMatchHistos(TList &recJetsList,TList &genJetsList); Bool_t JetSelected(AliAODJet *jet); + Int_t MultFromJetRefs(TClonesArray *jets); + AliJetHeader *fJetHeaderRec;//! The jet header that can be fetched from the userinfo AliJetHeader *fJetHeaderGen;//! The jet header that can fetched from the userinfo AliAODEvent *fAODIn; //! where we take the jets from @@ -122,7 +123,8 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE TString fBranchRec; // AOD branch name for reconstructed TString fBranchGen; // AOD brnach for genereated - TString fBranchBkg; //AOD branch for background + TString fBranchBkgRec; //AOD branch for background + TString fBranchBkgGen; //AOD branch for background TString fNonStdFile; // name of delta aod file to catch the extension Bool_t fUseAODJetInput; // take jet from input AOD not from ouptu AOD @@ -131,9 +133,7 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE Bool_t fUseGlobalSelection; // Limit the eta of the generated jets Bool_t fUseExternalWeightOnly; // use only external weight Bool_t fLimitGenJetEta; // Limit the eta of the generated jets - Bool_t fBkgSubtraction; // flag for bckg subtraction Short_t fNMatchJets; // number of leading jets considered from the list - Int_t fFillCorrBkg; // flag for filling bckg response matrix UInt_t fFilterMask; // filter bit for slecected tracks UInt_t fEventSelectionMask; // Selection information used to filter events Int_t fAnalysisType; // Analysis type @@ -147,7 +147,8 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE Float_t fMinJetPt; // limits the jet p_T in addition to what already is done in the jet finder, this is important for jet matching for JF with lo threshold Float_t fMinTrackPt; // limits the track p_T Float_t fDeltaPhiWindow; // minium angle between dijets - + Int_t fMultRec; // ! reconstructed track multiplicity + Int_t fMultGen; // ! generated track multiplicity TProfile* fh1Xsec; //! pythia cross section and trials TH1F* fh1Trials; //! trials are added @@ -155,30 +156,35 @@ class AliAnalysisTaskJetSpectrum2 : public AliAnalysisTaskSE TH1F* fh1PtHardNoW; //! Pt har of the event without weigt TH1F* fh1PtHardTrials; //! Number of trials TH1F* fh1ZVtx; //! z-vtx distribution - TH1F* fh1TmpRho; //! just temporary histo for calculation + TH1F* fh1TmpRho; //! just temporary histo for calculation + TH2F* fh2MultRec; //! reconstructed track multiplicity + TH2F* fh2MultGen; //! generated track multiplicity + TH2F* fh2PtFGen; //! found vs generated TH2F* fh2RelPtFGen; //! relative difference between generated and found + // Jet histos second go TH1F* fh1NJets[kJetTypes]; //! nr of gen jets TH1F* fh1SumPtTrack[kJetTypes]; //! sum over all track pT - TH1F* fh1PtIn[kJetTypes][kMaxJets]; //! Jet pt + TH1F* fh1PtIn[kJetTypes][kMaxJets+1]; //! Jet pt TH1F* fh1PtJetsIn[kJetTypes]; //! Jet pt for all jets TH1F* fh1PtTracksIn[kJetTypes]; //! track pt for all tracks TH1F* fh1PtTracksLeadingIn[kJetTypes]; //! track pt for all tracks + TH2F* fh2MultJetPt[kJetTypes]; //! jet pt vs. mult TH2F* fh2NJetsPt[kJetTypes]; //! Number of found jets above threshold TH2F* fh2NTracksPt[kJetTypes]; //! Number of tracks above threshold - TH2F* fh2LeadingJetPtJetPhi[kJetTypes]; //! Phi distribution of accepted leading jets TH2F* fh2LeadingTrackPtTrackPhi[kJetTypes]; //! phi distribution of accepted leading tracks - TH2F* fh2RhoPt[kJetTypes][kMaxJets]; //! jet shape variable rho - TH2F* fh2PsiPt[kJetTypes][kMaxJets]; //! jet shape variable psi - TH2F* fh2PhiPt[kJetTypes][kMaxJets]; //! phi distribution correlation of jets - TH2F* fh2EtaPt[kJetTypes][kMaxJets]; //! phi distribution correlation of jets - TH2F* fh2PhiEta[kJetTypes][kMaxJets]; //! eta phi distribution of jet - + TH2F* fh2RhoPt[kJetTypes][kMaxJets+1]; //! jet shape variable rho + TH2F* fh2PsiPt[kJetTypes][kMaxJets+1]; //! jet shape variable psi + TH2F* fh2PhiPt[kJetTypes][kMaxJets+1]; //! phi of jets + TH2F* fh2EtaPt[kJetTypes][kMaxJets+1]; //! eta of jets + TH2F* fh2AreaPt[kJetTypes][kMaxJets+1]; //! area distribution + TH2F* fh2EtaArea[kJetTypes][kMaxJets+1]; //! area vs eta distribution + TH2F* fh2PhiEta[kJetTypes][kMaxJets+1]; //! eta phi distribution of jet TH1F* fh1DijetMinv[kJetTypes]; //! dijet inv mass diff --git a/PWG4/macros/AddTaskJetSpectrum2.C b/PWG4/macros/AddTaskJetSpectrum2.C index b6e4d1ca5cb..51ab0bc93df 100644 --- a/PWG4/macros/AddTaskJetSpectrum2.C +++ b/PWG4/macros/AddTaskJetSpectrum2.C @@ -1,51 +1,51 @@ -AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec = "jets",const char* bGen = "jetsAODMC_UA104",const char* bBkg="",UInt_t filterMask = 32, Int_t iPhysicsSelectionFlag = AliVEvent::kMB,UInt_t iEventSelectionMask = 0,Bool_t kBackground=kTRUE,Int_t iFillCorrBkg = 0,Int_t iCl = 0); +AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec = "jets",const char* bGen = "jetsAODMC_UA104",const char* bBkg="",UInt_t filterMask = 32, Int_t iPhysicsSelectionFlag = AliVEvent::kMB,UInt_t iEventSelectionMask = 0,Int_t iCl = 0); -AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2Delta(UInt_t filterMask = 32,Bool_t kUseAODMC = kFALSE,Int_t iPhysicsSelectionFlag = AliVEvent::kMB,UInt_t iFlag = 0xfffffff, UInt_t iEventSelectionMask = 0,Bool_t kBackground = kTRUE,char* back = ""){ +AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2Delta(UInt_t filterMask = 32,Bool_t kUseAODMC = kFALSE,Int_t iPhysicsSelectionFlag = AliVEvent::kMB,UInt_t iFlag = 0xfffffff, UInt_t iEventSelectionMask = 0,char* back = ""){ TString cBack = back; AliAnalysisTaskJetSpectrum2 *js = 0; if(kUseAODMC){ if(iFlag&(1<<0)){ // UA104 - js = AddTaskJetSpectrum2("jets","jetsAODMC_UA104",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground); - js = AddTaskJetSpectrum2("jets","jetsAODMC2_UA104",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground); + js = AddTaskJetSpectrum2("jets","jetsAODMC_UA104",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); + js = AddTaskJetSpectrum2("jets","jetsAODMC2_UA104",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); } if(iFlag&(1<<1)){ // ANTIKT 04 - js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground); - js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC2_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground); + js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); + js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","jetsAODMC2_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); // cross check MC only background subtration - js = AddTaskJetSpectrum2("jetsAODMC2_FASTJET04","jetsAODMC_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground); + js = AddTaskJetSpectrum2("jetsAODMC2_FASTJET04","jetsAODMC_FASTJET04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); } if(iFlag&(1<<2)){ // KT 04 - js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC_FASTKT04",cBack.Data(),filterMask,iPhysicsSelectionFlag,iEventSelectionMask,kBackground); - js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC2_FASTKT04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground); + js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC_FASTKT04",cBack.Data(),filterMask,iPhysicsSelectionFlag,iEventSelectionMask); + js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","jetsAODMC2_FASTKT04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); } if(iFlag&(1<<3)){ // SISCONE 04 - js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","jetsAODMC_SISCONE04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground); - js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","jetsAODMC2_SISCONE04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground); + js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","jetsAODMC_SISCONE04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); + js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","jetsAODMC2_SISCONE04",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); } // here can go other radii } else { // only the data ... no MC if(iFlag&(1<<0)){ // UA104 - js = AddTaskJetSpectrum2("jets","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground,1); + js = AddTaskJetSpectrum2("jets","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,1); } if(iFlag&(1<<1)){ // ANTIKT 04 - js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground,1); + js = AddTaskJetSpectrum2("jetsAOD_FASTJET04","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); } if(iFlag&(1<<2)){ // KT 04 - js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","",cBack.Data(),filterMask,iPhysicsSelectionFlag,iEventSelectionMask,kBackground,1); + js = AddTaskJetSpectrum2("jetsAOD_FASTKT04","",cBack.Data(),filterMask,iPhysicsSelectionFlag,iEventSelectionMask); } if(iFlag&(1<<3)){ // SISCONE 04 - js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask,kBackground,1); + js = AddTaskJetSpectrum2("jetsAOD_SISCONE04","",cBack.Data(),filterMask,iPhysicsSelectionFlag, iEventSelectionMask); } } return js; } -AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bGen ,const char* bBkg,UInt_t filterMask,Int_t iPhysicsSelectionFlag,UInt_t iEventSelectionMask,Bool_t kBackground,Int_t iFillCorrBkg,Int_t iCl) +AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bGen ,const char* bBkg,UInt_t filterMask,Int_t iPhysicsSelectionFlag,UInt_t iEventSelectionMask,Int_t iCl) { // Creates a jet fider task, configures it and adds it to the analysis manager. // Get the pointer to the existing analysis manager via the static access method. @@ -69,19 +69,11 @@ AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bG typeGen.ToUpper(); typeRec.ToUpper(); - TString bBkgName = bBkg; - if(kBackground&&bBkgName.Length()==0){ - // default - if(typeRec.Contains("AODMC2"))bBkgName = "jeteventbackground_clustersAODMC2_KT06"; - else bBkgName = "jeteventbackground_clustersAOD_KT06"; - } // Create the task and configure it. //=========================================================================== - if(iFillCorrBkg)bGen = Form("SubBkg%d",iFillCorrBkg); AliAnalysisTaskJetSpectrum2* pwg4spec = new AliAnalysisTaskJetSpectrum2(Form("JetSpectrum2%s-%s_%010d_Class%02d",bRec,bGen,iEventSelectionMask,iCl)); - pwg4spec->SetFillCorrBkg(iFillCorrBkg); if(iCl)pwg4spec->SetEventClass(iCl); // add the filter mask for non default jets branches @@ -89,23 +81,18 @@ AliAnalysisTaskJetSpectrum2 *AddTaskJetSpectrum2(const char* bRec,const char* bG cAdd += Form("_Filter%05d",filterMask); - if(iFillCorrBkg)pwg4spec->SetBranchGen(""); - else { - pwg4spec->SetBranchGen(bGen); - // if(typeGen.Contains("JETSAOD")&&!typeGen.Contains("MC"))pwg4spec->SetBranchGen(Form("%s%s",bGen,cAdd.Data())); - } + + pwg4spec->SetBranchGen(bGen); + // if(typeGen.Contains("JETSAOD")&&!typeGen.Contains("MC"))pwg4spec->SetBranchGen(Form("%s%s",bGen,cAdd.Data())); + pwg4spec->SetBranchRec(bRec); // if(typeRec.Contains("JETSAOD")&&!typeRec.Contains("MC")) pwg4spec->SetBranchRec(Form("%s%s",bRec,cAdd.Data())); - if(bBkgName.Length()>0)pwg4spec->SetBranchBkg(bBkgName.Data()); - pwg4spec->SetFilterMask(filterMask); pwg4spec->SetUseGlobalSelection(kTRUE); pwg4spec->SetMinJetPt(5.); pwg4spec->SetJetEtaWindow(0.4); - pwg4spec->SetBkgSubtraction(kBackground); - if(type == "AOD"){ // Assume all jet are produced already diff --git a/PWG4/macros/AnalysisTrainPWG4Jets.C b/PWG4/macros/AnalysisTrainPWG4Jets.C index 191b1a2ba56..3f2ead7603e 100644 --- a/PWG4/macros/AnalysisTrainPWG4Jets.C +++ b/PWG4/macros/AnalysisTrainPWG4Jets.C @@ -83,8 +83,8 @@ Bool_t kIsPbPb = kFALSE; // Pb+Pb Int_t iJETAN = 1; // Jet analysis (PWG4) // 1 write standard 2 write non-standard jets, 3 wrtie both Int_t iJETSUBTRACT = 1; // Jet background subtration TString kDefaultJetBranch = ""; // is currently set when filled (iJETAN or clusters) or from config macro -TString kDefaultJetBackgroundBranch = ""; // is currently set when filled (jet clsuters -TString kDefaultJetBackgroundBranch_extra = ""; // is currently set when filled (jet clsuters +TString kDefaultJetBackgroundBranch = ""; // is currently set when filled (jet clsuters +TString kDefaultJetBackgroundBranch_extra = ""; // is currently set when filled (jet clsuters) TString kJetSubtractBranches = ""; // is currently set when filled (jet clsuters TString kJetSubtractBranches_extra = ""; // is currently set when filled (jet clsuters @@ -570,11 +570,10 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", taskCl->SetGhostEtamax(0.9); } - taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,0,1,kDeltaAODJetName.Data(),0.15); + taskCl = AddTaskJetCluster("AOD","",kHighPtFilterMask,iPhysicsSelectionFlag,"ANTIKT",0.4,2,1,kDeltaAODJetName.Data(),0.15); taskCl->SetCentralityCut(fCenLo,fCenUp); if(kIsPbPb)taskCl->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data()); taskCl->SetNRandomCones(10); - taskCl->SetNSkipLeadingRan(2); kDefaultJetBranch = taskCl->GetJetOutputBranch(); if(kDeltaAODJetName.Length()==0&&kFilterAOD){ if(kIsPbPb)taskCl->SetJetTriggerPtCut(40.); @@ -629,40 +628,41 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", } } - if(iJETSUBTRACT){ - gROOT->LoadMacro("$ALICE_ROOT_SRC/PWG4/macros/AddTaskJetBackgroundSubtract.C"); - AliAnalysisTaskJetBackgroundSubtract *taskSubtract = 0; - if(kJetSubtractBranches.Length()){ - - taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches,3,kJetSubtractMask1.Data(),kJetSubtractMask2.Data()); - taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data()); - if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data()); - - taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches,2,kJetSubtractMask1.Data(),kJetSubtractMask2.Data()); - taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data()); taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag); - if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data()); - // taskSubtract->SetDebugLevel(3); + if(iJETSUBTRACT){ + gROOT->LoadMacro("$ALICE_ROOT_SRC/PWG4/macros/AddTaskJetBackgroundSubtract.C"); + AliAnalysisTaskJetBackgroundSubtract *taskSubtract = 0; + if(kJetSubtractBranches.Length()){ - taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches,1,kJetSubtractMask1.Data(),kJetSubtractMask2.Data()); - taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data()); taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag); - if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data()); + taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches,3,kJetSubtractMask1.Data(),kJetSubtractMask2.Data()); + taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data()); + if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data()); - if(kJetSubtractBranches.Contains(kDefaultJetBranch.Data())&&kIsPbPb){ - kDefaultJetBranch.ReplaceAll(taskSubtract->GetToReplace(),Form(taskSubtract->GetReplacementMask(),taskSubtract->GetSubtractionMethod())); - } - } - if(kJetSubtractBranches_extra.Length()){ - taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches_extra,1,kJetSubtractMask1.Data(),kJetSubtractMask2.Data(),"extra"); - taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch_extra.Data()); - taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag); - //taskSubtract->SetDebugLevel(3); - if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data()); - if(kJetSubtractBranches_extra.Contains(kDefaultJetBranch.Data())){ - kDefaultJetBranch.ReplaceAll(taskSubtract->GetToReplace(),Form(taskSubtract->GetReplacementMask(),taskSubtract->GetSubtractionMethod())); - } - } - if (!taskSubtract) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetBackgroundSubtrac cannot run for this train conditions - EXCLUDED"); + taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches,2,kJetSubtractMask1.Data(),kJetSubtractMask2.Data()); + taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data()); taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag); + if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data()); + + // taskSubtract->SetDebugLevel(3); + + taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches,1,kJetSubtractMask1.Data(),kJetSubtractMask2.Data()); + taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch.Data()); taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag); + if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data()); + + if(kJetSubtractBranches.Contains(kDefaultJetBranch.Data())&&kIsPbPb){ + kDefaultJetBranch.ReplaceAll(taskSubtract->GetToReplace(),Form(taskSubtract->GetReplacementMask(),taskSubtract->GetSubtractionMethod())); + } + } + if(kJetSubtractBranches_extra.Length()){ + taskSubtract = AddTaskJetBackgroundSubtract(kJetSubtractBranches_extra,1,kJetSubtractMask1.Data(),kJetSubtractMask2.Data(),"extra"); + taskSubtract->SetBackgroundBranch(kDefaultJetBackgroundBranch_extra.Data()); + taskSubtract->SelectCollisionCandidates(iPhysicsSelectionFlag); + //taskSubtract->SetDebugLevel(3); + if(kDeltaAODJetName.Length()>0)taskSubtract->SetNonStdOutputFile(kDeltaAODJetName.Data()); + if(kJetSubtractBranches_extra.Contains(kDefaultJetBranch.Data())){ + kDefaultJetBranch.ReplaceAll(taskSubtract->GetToReplace(),Form(taskSubtract->GetReplacementMask(),taskSubtract->GetSubtractionMethod())); + } + } + if (!taskSubtract) ::Warning("AnalysisTrainPWG4Jets", "AliAnalysisTaskJetBackgroundSubtrac cannot run for this train conditions - EXCLUDED"); } if (iDIJETAN) { @@ -718,7 +718,7 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", } } - if(iPWG4JetSpectrum){ +if(iPWG4JetSpectrum){ gROOT->LoadMacro("$ALICE_ROOT_SRC/PWG4/macros/AddTaskJetSpectrum2.C"); AliAnalysisTaskJetSpectrum2 *taskjetSpectrum = 0; if(iPWG4JetSpectrum&1){ @@ -728,7 +728,13 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", // tmp.ReplaceAll(Form(kJetSubtractMask2.Data(),1),kJetSubtractMask1.Data()); // tmp.ReplaceAll(Form(kJetSubtractMask2.Data(),1),kJetSubtractMask1.Data()); tmp.ReplaceAll(Form(kJetSubtractMask2.Data(),1),Form(kJetSubtractMask1.Data(),0)); - taskjetSpectrum = AddTaskJetSpectrum2(kDefaultJetBranch.Data(),tmp.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,kFALSE,0,i); + + TString bkgClusters = kDefaultJetBackgroundBranch.Data(); + bkgClusters.ReplaceAll(Form("%s_",AliAODJetEventBackground::StdBranchName()),""); + taskjetSpectrum = AddTaskJetSpectrum2(kDefaultJetBranch.Data(),tmp.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,i); + taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data()); + taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data()); + // taskjetSpectrum->SetDebugLevel(3); // taskjetSpectrum->SetMinJetPt(10); taskjetSpectrum->SetTrackEtaWindow(0.8); @@ -739,7 +745,9 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", // check the old subtracted vs. the new subtracted TString tmp2(kDefaultJetBranch.Data()); tmp2.ReplaceAll(Form(kJetSubtractMask2.Data(),1),Form(kJetSubtractMask2.Data(),2)); - taskjetSpectrum = AddTaskJetSpectrum2(tmp2.Data(),kDefaultJetBranch.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,kFALSE,0,i); + taskjetSpectrum = AddTaskJetSpectrum2(tmp2.Data(),kDefaultJetBranch.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,i); + taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data()); + taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data()); // taskjetSpectrum->SetDebugLevel(3); // taskjetSpectrum->SetMinJetPt(10); taskjetSpectrum->SetTrackEtaWindow(0.8); @@ -750,19 +758,23 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", TString tmp3(kDefaultJetBranch.Data()); tmp3.ReplaceAll(Form(kJetSubtractMask2.Data(),1),Form(kJetSubtractMask2.Data(),3)); - taskjetSpectrum = AddTaskJetSpectrum2(tmp3.Data(),kDefaultJetBranch.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,kFALSE,0,i); + taskjetSpectrum = AddTaskJetSpectrum2(tmp3.Data(),kDefaultJetBranch.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,i); // taskjetSpectrum->SetDebugLevel(3); // taskjetSpectrum->SetMinJetPt(10); + taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data()); + taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data()); taskjetSpectrum->SetTrackEtaWindow(0.8); taskjetSpectrum->SetJetEtaWindow(0.4); if(iAODanalysis)SetAODInput(taskjetSpectrum); - taskjetSpectrum = AddTaskJetSpectrum2(Form("jetsAOD_UA104_B2_Filter%05d_Cut01000",kHighPtFilterMask),kDefaultJetBranch.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,kFALSE,0,i); + taskjetSpectrum = AddTaskJetSpectrum2(Form("jetsAOD_UA104_B2_Filter%05d_Cut01000",kHighPtFilterMask),kDefaultJetBranch.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,i); // taskjetSpectrum->SetDebugLevel(3); // taskjetSpectrum->SetMinJetPt(10); taskjetSpectrum->SetTrackEtaWindow(0.8); taskjetSpectrum->SetJetEtaWindow(0.4); + taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data()); + taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data()); if(iAODanalysis)SetAODInput(taskjetSpectrum); } @@ -778,6 +790,8 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", // taskjetSpectrum->SetMinJetPt(10); taskjetSpectrum->SetTrackEtaWindow(0.8); taskjetSpectrum->SetJetEtaWindow(0.4); + taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data()); + taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data()); if(iAODanalysis)SetAODInput(taskjetSpectrum); @@ -786,7 +800,9 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", taskjetSpectrum = AddTaskJetSpectrum2(tmp2.Data(),kDefaultJetBranch.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,kFALSE,0,i); // taskjetSpectrum->SetDebugLevel(3); // taskjetSpectrum->SetMinJetPt(10); - taskjetSpectrum->SetTrackEtaWindow(0.8); + taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data()); + taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data()); +x taskjetSpectrum->SetTrackEtaWindow(0.8); taskjetSpectrum->SetJetEtaWindow(0.4); // check the old subtracted vs. the new subtracted @@ -795,6 +811,8 @@ void AnalysisTrainPWG4Jets(const char *analysis_mode="local", taskjetSpectrum = AddTaskJetSpectrum2(tmp3.Data(),kDefaultJetBranch.Data(),"",kHighPtFilterMask,AliVEvent::kMB,0,kFALSE,0,i); // taskjetSpectrum->SetDebugLevel(3); // taskjetSpectrum->SetMinJetPt(10); + taskjetSpectrum->SetBranchBkgRec(bkgClusters.Data()); + taskjetSpectrum->SetBranchBkgGen(bkgClusters.Data()); taskjetSpectrum->SetTrackEtaWindow(0.8); taskjetSpectrum->SetJetEtaWindow(0.4); if(iAODanalysis)SetAODInput(taskjetSpectrum); @@ -1674,11 +1692,13 @@ TChain *CreateChain(const char *mode, const char *plugin_mode) TString line; ifstream in; in.open(kLocalDataList.Data()); + Int_t ic = 0; while (in.good()) { in >> line; if (line.Length() == 0) continue; - // cout << " line = " << line << endl; + Printf("%d adding %s",ic,line.Data()); chain->Add(line.Data()); + ic++; } } else { // Interactive AOD -- 2.43.0