From 03372fd16f3a3249873b3c4d7465ebe1b2fca8f1 Mon Sep 17 00:00:00 2001 From: kleinb Date: Wed, 19 Sep 2012 13:18:01 +0000 Subject: [PATCH] AliAnachargedJetResponseMaker: more utilities HighPtSpectra: possibility to only select Hijing particles Add task macros Spectra and TrackQA: new function to add all relevant wagons for LHC11h pass3 QA (M. Verweij) --- PWGJE/AliAnaChargedJetResponseMaker.cxx | 136 +++++++++++-- PWGJE/AliAnaChargedJetResponseMaker.h | 5 +- PWGJE/AliPWG4HighPtSpectra.cxx | 74 ++++++++ PWGJE/AliPWG4HighPtSpectra.h | 10 + PWGJE/macros/AddTaskPWG4HighPtSpectra.C | 241 ++++++++++++++++++------ PWGJE/macros/AddTaskPWG4HighPtTrackQA.C | 77 +++++++- 6 files changed, 464 insertions(+), 79 deletions(-) diff --git a/PWGJE/AliAnaChargedJetResponseMaker.cxx b/PWGJE/AliAnaChargedJetResponseMaker.cxx index a71d5b76fe1..10b2dd6059f 100644 --- a/PWGJE/AliAnaChargedJetResponseMaker.cxx +++ b/PWGJE/AliAnaChargedJetResponseMaker.cxx @@ -299,10 +299,9 @@ void AliAnaChargedJetResponseMaker::InitializeResponseMatrix() { if(fbVariableBinning) binWidthUnfLowPt = binWidthUnf*0.5; - if(fExtraBinsUnfolded>0) { - fPtMaxUnfolded = fPtMax+(double)(fExtraBinsUnfolded)*binWidthUnf; - nbins[fDimGen]+=fExtraBinsUnfolded; - } + fPtMaxUnfolded = fPtMax+(double)(fExtraBinsUnfolded)*binWidthUnf; + nbins[fDimGen]+=fExtraBinsUnfolded; + printf("fPtMinMeas: %f fPtMaxMeas: %f\n",fPtMin,fPtMax); printf("binWidthMeas: %f binWidthUnf: %f fBinWidthFactorUnfolded: %d\n",binWidthMeas,binWidthUnf,fBinWidthFactorUnfolded); @@ -716,16 +715,18 @@ void AliAnaChargedJetResponseMaker::FillResponseMatrixFineAndMerge() { } //-------------------------------------------------------------------------------------------------------------------------------------------------- -TH2* AliAnaChargedJetResponseMaker::MakeResponseMatrixRebin(TH2 *hRMFine, TH2 *hRM) { +TH2* AliAnaChargedJetResponseMaker::MakeResponseMatrixRebin(TH2 *hRMFine, TH2 *hRM, Bool_t useFunctionWeight) { // // Rebin matrix hRMFine to dimensions of hRM - // function returns matrix in TH2D format with dimensions from hRM + // function returns matrix in TH2D format (hRM2) with dimensions from hRM // TH2 *hRM2 = (TH2*)hRM->Clone("hRM2"); hRM2->Reset(); + if(useFunctionWeight) cout << "Use function to do weighting" << endl; + //First normalize columns of input const Int_t nbinsNorm = hRM2->GetNbinsX(); cout << "nbinsNorm: " << nbinsNorm << endl; @@ -739,8 +740,11 @@ TH2* AliAnaChargedJetResponseMaker::MakeResponseMatrixRebin(TH2 *hRMFine, TH2 *h Int_t binxLowFine = hRMFine->GetXaxis()->FindBin(xLow); Int_t binxUpFine = hRMFine->GetXaxis()->FindBin(xUp)-1; //cout << "xLowFine: " << hRMFine->GetXaxis()->GetBinLowEdge(binxLowFine) << "\txUpFine: " << hRMFine->GetXaxis()->GetBinUpEdge(binxUpFine) << endl; - normVector->SetAt(hRMFine->Integral(binxLowFine,binxUpFine,1,hRMFine->GetYaxis()->GetNbins()),ix-1); - // if(fDebug) cout << "ix norm: " << normVector->At(ix-1) << endl; + if(useFunctionWeight) + normVector->SetAt(f1MergeFunction->Integral(xLow,xUp),ix-1); + else + normVector->SetAt(hRMFine->Integral(binxLowFine,binxUpFine,1,hRMFine->GetYaxis()->GetNbins()),ix-1); + if(fDebug) cout << "ix norm: " << normVector->At(ix-1) << endl; } Double_t content, oldcontent = 0.; @@ -766,7 +770,12 @@ TH2* AliAnaChargedJetResponseMaker::MakeResponseMatrixRebin(TH2 *hRMFine, TH2 *h //if(fDebug) cout << "ixNew: " << ixNew << " " << xvalLo << " iyNew: " << iyNew << " " << yvalLo << " content: " << content << " oldContent: " << oldcontent << " newContent: " << oldcontent+content << endl; Double_t weight = 1.; - if(normVector->At(ixNew-1)>0.) weight = 1./normVector->At(ixNew-1); + if(normVector->At(ixNew-1)>0.) { + if(useFunctionWeight) + weight = f1MergeFunction->Integral(xvalLo,xvalUp)/normVector->At(ixNew-1); + else + weight = 1./normVector->At(ixNew-1); + } hRM2->SetBinContent(ixNew,iyNew,oldcontent+content*weight); } } @@ -777,6 +786,101 @@ TH2* AliAnaChargedJetResponseMaker::MakeResponseMatrixRebin(TH2 *hRMFine, TH2 *h } +//-------------------------------------------------------------------------------------------------------------------------------------------------- +TH2* AliAnaChargedJetResponseMaker::CreateTruncated2DHisto(TH2 *h2, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax) { + + // + // Limit axis range of 2D histogram + // + + Int_t binMinXh2 = h2->GetXaxis()->FindBin(xmin); + if(h2->GetXaxis()->GetBinLowEdge(binMinXh2) < xmin ) binMinXh2++; + if(h2->GetXaxis()->GetBinLowEdge(binMinXh2) > xmin ) binMinXh2--; + + Int_t binMinYh2 = h2->GetYaxis()->FindBin(ymin); + if(h2->GetYaxis()->GetBinLowEdge(binMinYh2) < ymin ) binMinYh2++; + if(h2->GetYaxis()->GetBinLowEdge(binMinYh2) > ymin ) binMinYh2--; + + Int_t binMaxXh2 = h2->GetXaxis()->FindBin(xmax); + if(h2->GetXaxis()->GetBinUpEdge(binMaxXh2) < xmax ) binMaxXh2++; + if(h2->GetXaxis()->GetBinUpEdge(binMaxXh2) > xmax ) binMaxXh2--; + + Int_t binMaxYh2 = h2->GetYaxis()->FindBin(ymax); + if(h2->GetYaxis()->GetBinUpEdge(binMaxYh2) < ymax ) binMaxYh2++; + if(h2->GetYaxis()->GetBinUpEdge(binMaxYh2) > ymax ) binMaxYh2--; + + Int_t nbinsX = binMaxXh2-binMinXh2; + Int_t nbinsY = binMaxYh2-binMinYh2; + + Double_t *binsX = new Double_t[nbinsX+1]; + Double_t *binsY = new Double_t[nbinsY+1]; + + for(int ix=1; ix<=nbinsX; ix++) + binsX[ix-1] = h2->GetXaxis()->GetBinLowEdge(binMinXh2+ix-1); + binsX[nbinsX] = h2->GetXaxis()->GetBinUpEdge(binMaxXh2); + + for(int iy=1; iy<=nbinsY; iy++) + binsY[iy-1] = h2->GetYaxis()->GetBinLowEdge(binMinYh2+iy-1); + binsY[nbinsY] = h2->GetYaxis()->GetBinUpEdge(binMaxYh2); + + TH2 *h2Lim = new TH2D("h2Lim","h2Lim",nbinsX,binsX,nbinsY,binsY); + + for(int ix=1; ix<=nbinsX; ix++) { + // cout << "ix: " << ix << " " << binsX[ix] << endl; + for(int iy=1; iy<=nbinsY; iy++) { + cout << "ix: " << ix << " " << binsX[ix] << "\tiy: " << iy << " " << binsY[iy] << endl; + + double content = h2->GetBinContent(binMinXh2+ix-1,binMinYh2+iy-1); + double error = h2->GetBinContent(binMinXh2+ix-1,binMinYh2+iy-1); + h2Lim->SetBinContent(ix,iy,content); + h2Lim->SetBinError(ix,iy,error); + + } + } + + + + return h2Lim; +} + +//-------------------------------------------------------------------------------------------------------------------------------------------------- +TH2* AliAnaChargedJetResponseMaker::TruncateAxisRangeResponseMatrix(TH2 *hRMOrig, Double_t xmin, Double_t xmax, Double_t ymin, Double_t ymax) { + + // + // Limit axis range of response matrix without changing normalization + // + + //TH2 *hRMLimit + //TH2 *hRMLimit2 = (TH2*)hRMLimit->Clone("hRMLimit2"); + + TH2 *hRMLimit2 = CreateTruncated2DHisto(hRMOrig, xmin, xmax, ymin, ymax); + hRMLimit2->Reset(); + + double binCent[2] = {0.,0.}; + double content = 0.; + double error = 0.; + Int_t binOrig[2] = {0}; + for(int ix=1; ix<=hRMLimit2->GetXaxis()->GetNbins(); ix++) { + binCent[0] = hRMLimit2->GetXaxis()->GetBinCenter(ix); + binOrig[0] = hRMOrig->GetXaxis()->FindBin(binCent[0]); + for(int iy=1; iy<=hRMLimit2->GetYaxis()->GetNbins(); iy++) { + binCent[1] = hRMLimit2->GetYaxis()->GetBinCenter(iy); + binOrig[1] = hRMOrig->GetYaxis()->FindBin(binCent[1]); + + content = hRMOrig->GetBinContent(binOrig[0],binOrig[1]); + error = hRMOrig->GetBinError(binOrig[0],binOrig[1]); + + hRMLimit2->SetBinContent(ix,iy,content); + hRMLimit2->SetBinError(ix,iy,error); + + } + } + + + return hRMLimit2; + +} + //-------------------------------------------------------------------------------------------------------------------------------------------------- TH2* AliAnaChargedJetResponseMaker::MultiplityResponseMatrices(TH2 *h2RMDeltaPt, TH2 *h2RMDetector) { @@ -789,7 +893,7 @@ TH2* AliAnaChargedJetResponseMaker::MultiplityResponseMatrices(TH2 *h2RMDeltaPt, // Function assumes that generated/unfolded axis is x-axis and reconstructed is on y-axis on both respone matrices - TH2D *h2ResponseMatrixCombined = (TH2D*)h2RMDeltaPt->Clone("h2ResponseMatrixCombined"); //h2ResponseMatrix is the bkg fluctuations RM which has the dimensions we want for the combined response matrix + TH2D *h2ResponseMatrixCombined = (TH2D*)h2RMDeltaPt->Clone("h2ResponseMatrixCombined"); //h2RMDeltaPt is the bkg fluctuations RM which has the dimensions we want for the combined response matrix h2ResponseMatrixCombined->SetTitle("h2ResponseMatrixCombined"); h2ResponseMatrixCombined->SetName("h2ResponseMatrixCombined"); @@ -803,18 +907,20 @@ TH2* AliAnaChargedJetResponseMaker::MultiplityResponseMatrices(TH2 *h2RMDeltaPt, // RM_comb(m,t) = Sum_d RM_deltaPt(m,d)*RM_DetEffects(d,t) if(fDebug) { - printf("Nt=%d",h2ResponseMatrixCombined->GetNbinsX()); - printf("Nm=%d",h2ResponseMatrixCombined->GetNbinsY()); - printf("Nd=%d",h2RMDetector->GetNbinsX()); + printf("Nt=%d\n",h2ResponseMatrixCombined->GetNbinsX()); + printf("Nm=%d\n",h2ResponseMatrixCombined->GetNbinsY()); + printf("Nd=%d\n",h2RMDeltaPt->GetNbinsX()); } + for(Int_t t=1; t<=h2ResponseMatrixCombined->GetNbinsX();t++) { for(Int_t m=1; m<=h2ResponseMatrixCombined->GetNbinsY();m++) { Double_t valueSum = 0.; for(Int_t d=1; d<=h2RMDeltaPt->GetNbinsX();d++) { valueSum += h2RMDeltaPt->GetBinContent(d,m) * h2RMDetector->GetBinContent(t,d); + // if(t==10 && m==10) cout << "sum m,d=" << m << "," << d << endl; }//d-loop - // cout << "t,m = " << t << "," << m << endl; + // if(t==10) cout << "t,m = " << t << "," << m << "\tvalueSum: " << valueSum << endl; h2ResponseMatrixCombined->SetBinContent(t,m,valueSum); } //m-loop }//t-loop @@ -858,7 +964,7 @@ TH2* AliAnaChargedJetResponseMaker::NormalizeResponsMatrixYaxisWithPrior(TH2 *h2 // Normalize such that the Y projection is the prior // - TH1D *hProjRespY = (TH1D*)h2RM->ProjectionY("hProjRespY"); + // TH1D *hProjRespY = (TH1D*)h2RM->ProjectionY("hProjRespY"); double intPrior = hPrior->Integral();//"width"); for (Int_t jbin = 1; jbin <= h2RM->GetNbinsY(); jbin++) { // double corr = hPrior->GetBinContent(jbin)/hProjRespY->GetBinContent(jbin); diff --git a/PWGJE/AliAnaChargedJetResponseMaker.h b/PWGJE/AliAnaChargedJetResponseMaker.h index 6f8cb52bb7c..eb19cf70aff 100644 --- a/PWGJE/AliAnaChargedJetResponseMaker.h +++ b/PWGJE/AliAnaChargedJetResponseMaker.h @@ -82,7 +82,10 @@ class AliAnaChargedJetResponseMaker { virtual void FillResponseMatrixFineAndMerge(); - virtual TH2* MakeResponseMatrixRebin(TH2 *hRMFine, TH2 *hRM); + virtual TH2* MakeResponseMatrixRebin(TH2 *hRMFine = 0, TH2 *hRM = 0, Bool_t useFunctionWeight = kFALSE); + + virtual TH2* CreateTruncated2DHisto(TH2 *h2=0, Double_t xmin=-1, Double_t xmax=-1, Double_t ymin=-1, Double_t ymax=-1); + virtual TH2* TruncateAxisRangeResponseMatrix(TH2 *hRMOrig=0, Double_t xmin=-1, Double_t xmax=-1, Double_t ymin=-1, Double_t ymax=-1); virtual TH2* MultiplityResponseMatrices(TH2 *h2RMDeltaPt, TH2 *h2RMDetector); diff --git a/PWGJE/AliPWG4HighPtSpectra.cxx b/PWGJE/AliPWG4HighPtSpectra.cxx index 1372d50a824..787d009e71e 100644 --- a/PWGJE/AliPWG4HighPtSpectra.cxx +++ b/PWGJE/AliPWG4HighPtSpectra.cxx @@ -54,6 +54,7 @@ #include "AliMCEventHandler.h" #include "AliCFContainer.h" #include "AliGenPythiaEventHeader.h" +#include "AliGenHijingEventHeader.h" #include "AliGenCocktailEventHeader.h" //#include "$ALICE_ROOT/PWG4/JetTasks/AliAnalysisHelperJetTasks.h" @@ -77,6 +78,7 @@ AliPWG4HighPtSpectra::AliPWG4HighPtSpectra() : AliAnalysisTask("AliPWG4HighPtSpe fTrackType(0), fTrackCuts(0x0), fTrackCutsReject(0x0), + fbSelectHIJING(kFALSE), fSigmaConstrainedMax(100.), fAvgTrials(1), fHistList(0), @@ -111,6 +113,7 @@ AliPWG4HighPtSpectra::AliPWG4HighPtSpectra(const Char_t* name) : fTrackType(0), fTrackCuts(0x0), fTrackCutsReject(0x0), + fbSelectHIJING(kFALSE), fSigmaConstrainedMax(100.), fAvgTrials(1), fHistList(0), @@ -421,6 +424,14 @@ void AliPWG4HighPtSpectra::Exec(Option_t *) delete track; continue; } + //Only select particles generated by HIJING if requested + if(fbSelectHIJING) { + if(!IsHIJINGParticle(label)) { + if(fTrackType==1 || fTrackType==2 || fTrackType==7) + delete track; + continue; + } + } TParticle *particle = fStack->Particle(label) ; if(!particle) { if(fTrackType==1 || fTrackType==2 || fTrackType==7) @@ -473,6 +484,12 @@ void AliPWG4HighPtSpectra::Exec(Option_t *) AliMCParticle *mcPart = (AliMCParticle*)fMC->GetTrack(iPart); if(!mcPart) continue; + //Only select particles generated by HIJING if requested + if(fbSelectHIJING) { + if(!IsHIJINGParticle(iPart)) + continue; + } + Int_t pdg = mcPart->PdgCode(); // select charged pions, protons, kaons , electrons, muons @@ -624,6 +641,36 @@ AliGenPythiaEventHeader* AliPWG4HighPtSpectra::GetPythiaEventHeader(AliMCEvent } +//________________________________________________________________________ +AliGenHijingEventHeader* AliPWG4HighPtSpectra::GetHijingEventHeader(AliMCEvent *mcEvent){ + + if(!mcEvent)return 0; + AliGenEventHeader* genHeader = mcEvent->GenEventHeader(); + AliGenHijingEventHeader* hijingGenHeader = dynamic_cast(genHeader); + if(!hijingGenHeader){ + // cocktail ?? + AliGenCocktailEventHeader* genCocktailHeader = dynamic_cast(genHeader); + + if (!genCocktailHeader) { + // AliWarningGeneral(Form(" %s:%d",(char*)__FILE__,__LINE__),"Unknown header type (not Pythia or Cocktail)"); + // AliWarning(Form("%s %d: Unknown header type (not Pythia or Cocktail)",(char*)__FILE__,__LINE__)); + return 0; + } + TList* headerList = genCocktailHeader->GetHeaders(); + for (Int_t i=0; iGetEntries(); i++) { + hijingGenHeader = dynamic_cast(headerList->At(i)); + if (hijingGenHeader) + break; + } + if(!hijingGenHeader){ + AliWarningGeneral(Form(" %s:%d",(char*)__FILE__,__LINE__),"Hijing event header not found"); + return 0; + } + } + return hijingGenHeader; + +} + //___________________________________________________________________________ void AliPWG4HighPtSpectra::Terminate(Option_t*) @@ -712,4 +759,31 @@ void AliPWG4HighPtSpectra::CreateOutputObjects() { } +//________________________________________________________________________ +Bool_t AliPWG4HighPtSpectra::IsHIJINGParticle(Int_t label) { + // + // Return kTRUE in case particle is from HIJING event + // + + AliGenHijingEventHeader* hijingHeader = GetHijingEventHeader(fMC); + + Int_t nproduced = hijingHeader->NProduced(); + + TParticle * mom = fStack->Particle(label); + Int_t iMom = label; + Int_t iParent = mom->GetFirstMother(); + while(iParent!=-1){ + iMom = iParent; + mom = fStack->Particle(iMom); + iParent = mom->GetFirstMother(); + } + + if(iMom120 recommended in 2011 + trackCuts = CreateTrackCutsPWGJE(10001008); + } + if(trackType==0 && cuts==2) { //Cuts global tracks with ITSrefit requirement but without SPD if (!strcmp(prodType,"LHC12a15e")) @@ -192,37 +259,43 @@ AliPWG4HighPtSpectra* ConfigureTaskPWG4HighPtSpectra(char *prodType = "LHC10e14" } if(trackType==7 && cuts==0) { // no requirements on SPD and ITSrefit failed - if (!strcmp(prodType,"LHC12a15e")){ - trackCuts = CreateTrackCutsPWGJE(10041008); //no ITSrefit requirement - trackCutsReject = CreateTrackCutsPWGJE(1008); //ITSrefit requirement - } - else { - trackCuts = CreateTrackCutsPWGJE(10041006); //no ITSrefit requirement - trackCutsReject = CreateTrackCutsPWGJE(1006); //ITSrefit requirement - } + trackCuts = CreateTrackCutsPWGJE(10041006); //no ITSrefit requirement + trackCutsReject = CreateTrackCutsPWGJE(1006); //ITSrefit requirement trackCutsReject->SetEtaRange(etamin,etamax); trackCutsReject->SetPtRange(0.15, 1e10); } + if(trackType==7 && cuts==4) { + // tight global tracks + NCrossedRowsCut>120 recommended in 2011 + trackCuts = CreateTrackCutsPWGJE(10041008); + trackCutsReject = CreateTrackCutsPWGJE(1008); + trackCutsReject->SetEtaRange(-0.9,0.9); + trackCutsReject->SetPtRange(0.15, 1e10); + } if(trackType==7 && cuts==1) { //Cuts global tracks with ITSrefit requirement but without SPD - if (!strcmp(prodType,"LHC12a15e")) - trackCuts = CreateTrackCutsPWGJE(10011008); - else - trackCuts = CreateTrackCutsPWGJE(10011006); + trackCuts = CreateTrackCutsPWGJE(10011006); + } + if(trackType==7 && cuts==5) { + // tight global tracks + NCrossedRowsCut>120 recommended in 2011 + trackCuts = CreateTrackCutsPWGJE(10011008); } + if(trackType==7 && cuts==2) { // no requirements on SPD and ITSrefit failed - if (!strcmp(prodType,"LHC12a15e")){ - trackCuts = CreateTrackCutsPWGJE(10041008); //no ITSrefit requirement filter 256 - trackCutsReject = CreateTrackCutsPWGJE(10001008); //ITSrefit requirement filter 16 - } - else { - trackCuts = CreateTrackCutsPWGJE(10041006); //no ITSrefit requirement filter 256 - trackCutsReject = CreateTrackCutsPWGJE(10001006); //ITSrefit requirement filter 16 - } + trackCuts = CreateTrackCutsPWGJE(10041006); //no ITSrefit requirement filter 256 + trackCutsReject = CreateTrackCutsPWGJE(10001006); //ITSrefit requirement filter 16 trackCutsReject->SetEtaRange(etamin,etamax); trackCutsReject->SetPtRange(0.15, 1e10); } + if(trackType==7 && cuts==6) { + // no requirements on SPD and ITSrefit failed + trackCuts = CreateTrackCutsPWGJE(10041008); //no ITSrefit requirement filter 256 + trackCutsReject = CreateTrackCutsPWGJE(10001008); //ITSrefit requirement filter 16 + trackCutsReject->SetEtaRange(-0.9,0.9); + trackCutsReject->SetPtRange(0.15, 1e10); + } + + if(trackType==1 && cuts==0) { //Set track cuts for TPConly tracks @@ -272,13 +345,14 @@ AliPWG4HighPtSpectra* ConfigureTaskPWG4HighPtSpectra(char *prodType = "LHC10e14" manNeg->SetParticleCutsList(kStepMCAcceptance,mcList); - AliPWG4HighPtSpectra *taskPWG4HighPtSpectra = new AliPWG4HighPtSpectra(Form("AliPWG4HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts)); + AliPWG4HighPtSpectra *taskPWG4HighPtSpectra = new AliPWG4HighPtSpectra(Form("AliPWG4HighPtSpectraCent%dTrackType%dCuts%dPSF%d",centClass,trackType,cuts,triggerMask)); taskPWG4HighPtSpectra->SetTrackType(trackType); taskPWG4HighPtSpectra->SetCuts(trackCuts); taskPWG4HighPtSpectra->SetCutsReject(trackCutsReject); taskPWG4HighPtSpectra->SetCFManagerPos(manPos); //here is set the CF manager + taskPWG4HighPtSpectra->SetCFManagerNeg(manNeg); //here is set the CF manager - taskPWG4HighPtSpectra->SetTriggerMask(triggerMask); + taskPWG4HighPtSpectra->SelectHIJINGOnly(bSelectHijingParticles); if(isPbPb) { taskPWG4HighPtSpectra->SetIsPbPb(kTRUE); @@ -293,12 +367,61 @@ AliPWG4HighPtSpectra* ConfigureTaskPWG4HighPtSpectra(char *prodType = "LHC10e14" //------ output containers ------ TString outputfile = AliAnalysisManager::GetCommonFileName(); - outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts); - - AliAnalysisDataContainer *coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); - AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); - AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%d",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); - AliAnalysisDataContainer *cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%d",centClass,trackType,cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile); + if(triggerMask == AliVEvent::kMB) + outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%dkMB",centClass,trackType,cuts); + else if(triggerMask == AliVEvent::kCentral) + outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%dkCentral",centClass,trackType,cuts); + else if(triggerMask == AliVEvent::kSemiCentral) + outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%dkSemiCentral",centClass,trackType,cuts); + else if(triggerMask == AliVEvent::kEMCEJE) + outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%dkEMCEJE",centClass,trackType,cuts); + else if(triggerMask == AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral) + outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%dkMBkCentralkSemiCentral",centClass,trackType,cuts); + else + outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%dPSF%d",centClass,trackType,cuts,triggerMask); + + + AliAnalysisDataContainer *coutput0 = 0x0; + AliAnalysisDataContainer *coutput1 = 0x0; + AliAnalysisDataContainer *coutput2 = 0x0; + AliAnalysisDataContainer *cout_cuts0 = 0x0; + + if(triggerMask == AliVEvent::kMB) { + coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%dkMB",centClass,trackType,cuts), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%dkMB",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%dkMB",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%dkMB",centClass,trackType,cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile); + } + else if(triggerMask == AliVEvent::kCentral) { + coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%dkCentral",centClass,trackType,cuts), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%dkCentral",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%dkCentral",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%dkCentral",centClass,trackType,cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile); + } + else if(triggerMask == AliVEvent::kSemiCentral) { + coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%dkSemiCentral",centClass,trackType,cuts), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%dkSemiCentral",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%dkSemiCentral",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%dkSemiCentral",centClass,trackType,cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile); + } + else if(triggerMask == AliVEvent::kEMCEJE) { + coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%dkEMCEJE",centClass,trackType,cuts), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%dkEMCEJE",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%dkEMCEJE",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%dkEMCEJE",centClass,trackType,cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile); + } + else if(triggerMask == AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral) { + coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%dkMBkCentralkSemiCentral",centClass,trackType,cuts), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%dkMBkCentralkSemiCentral",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%dkMBkCentralkSemiCentral",centClass,trackType,cuts), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%dkMBkCentralkSemiCentral",centClass,trackType,cuts), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile); + } + else { + coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%dPSF%d",centClass,trackType,cuts,triggerMask), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%dPSF%d",centClass,trackType,cuts,triggerMask), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%dPSF%d",centClass,trackType,cuts,triggerMask), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile); + cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%dPSF%d",centClass,trackType,cuts,triggerMask), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile); + } mgr->AddTask(taskPWG4HighPtSpectra); diff --git a/PWGJE/macros/AddTaskPWG4HighPtTrackQA.C b/PWGJE/macros/AddTaskPWG4HighPtTrackQA.C index 472a59416ea..5d1ed305f54 100644 --- a/PWGJE/macros/AddTaskPWG4HighPtTrackQA.C +++ b/PWGJE/macros/AddTaskPWG4HighPtTrackQA.C @@ -62,7 +62,7 @@ void AddTaskPWG4HighPtTrackQAAll(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, } -void AddTaskPWG4HighPtTrackQAAll2011(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) +void AddTaskPWG4HighPtTrackQAAll2011(char *prodType = "LHC11h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) { Int_t cent = 10; @@ -118,7 +118,7 @@ void AddTaskPWG4HighPtTrackQAAll2011(char *prodType = "LHC10h",Bool_t isPbPb=kTR } -void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) +void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC11h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) { int cent = 10; @@ -135,6 +135,66 @@ void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb= } + +void AddTaskPWG4HighPtTrackQALHC11hLTS(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) +{ + + Int_t cent = 10; + UInt_t iPhysicsSelectionFlag = AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral; + UInt_t iPhysicsSelectionFlagEMCEJE = AliVEvent::kEMCEJE; + + cout << "Add cent10 AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral" << endl; + AliPWG4HighPtTrackQA *taskTrackQA00cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA01cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA70cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA71cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA72cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA05cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA74cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA75cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA20cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0,iPhysicsSelectionFlag); + + cout << "Add cent10 AliVEvent::kEMCEJE" << endl; + AliPWG4HighPtTrackQA *taskTrackQAEMCJE00cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE01cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE70cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE71cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE72cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE05cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE74cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE75cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE20cent10 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0,iPhysicsSelectionFlagEMCEJE); + + if(isPbPb) { + for(cent=0; cent<4; cent++) { + cout << "Add Cent " << cent << endl; + AliPWG4HighPtTrackQA *taskTrackQA00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA05 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA74 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA75 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlag); + AliPWG4HighPtTrackQA *taskTrackQA20 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0,iPhysicsSelectionFlag); + + AliPWG4HighPtTrackQA *taskTrackQAEMCJE00 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE01 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE70 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE71 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE72 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE05 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,5,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE74 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,4,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE75 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,5,iPhysicsSelectionFlagEMCEJE); + AliPWG4HighPtTrackQA *taskTrackQAEMCJE20 = ConfigureTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0,iPhysicsSelectionFlagEMCEJE); + } + } + +} + + + + void AddTaskPWG4HighPtTrackQAAllReduced2011(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) { @@ -313,11 +373,11 @@ AliPWG4HighPtTrackQA* ConfigureTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14" } if(trackType==2 && cuts==0) { - // Set track cuts for TPConly constrained tracks + //Set track cuts for TPConly constrained tracks trackCuts = CreateTrackCutsPWGJE(2001); } if(trackType==2 && cuts==1) { - //Set track cuts for TPConly constrained tracks + //Set track cuts for TPConly constrained tracks w/o cut on NClusters or NCrossedRows trackCuts = CreateTrackCutsPWGJE(10032001); } @@ -370,6 +430,7 @@ AliPWG4HighPtTrackQA* ConfigureTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14" } // taskPWG4TrackQA->SetSigmaConstrainedMax(5.); + cout << "iPhysicsSelectionFlag: " << iPhysicsSelectionFlag << endl; taskPWG4TrackQA->SelectCollisionCandidates(iPhysicsSelectionFlag); @@ -383,6 +444,10 @@ AliPWG4HighPtTrackQA* ConfigureTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14" outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dkCentral",centClass,trackType,cuts); else if(iPhysicsSelectionFlag == AliVEvent::kSemiCentral) outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dkSemiCentral",centClass,trackType,cuts); + else if(iPhysicsSelectionFlag == AliVEvent::kEMCEJE) + outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dkEMCEJE",centClass,trackType,cuts); + else if(iPhysicsSelectionFlag == AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral) + outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dkMBkCentralkSemiCentral",centClass,trackType,cuts); else outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%dPSF%d",centClass,trackType,cuts,iPhysicsSelectionFlag); @@ -393,6 +458,10 @@ AliPWG4HighPtTrackQA* ConfigureTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14" cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dkCentral",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile); else if(iPhysicsSelectionFlag == AliVEvent::kSemiCentral) cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dkSemiCentral",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile); + else if(iPhysicsSelectionFlag == AliVEvent::kEMCEJE) + cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dkEMCEJE",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile); + else if(iPhysicsSelectionFlag == AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral) + cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dkMBkCentralSemiCentral",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile); else cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%dPSF%d",centClass,trackType,cuts,iPhysicsSelectionFlag), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile); -- 2.43.0