From e234ec3f38809896ac1137584a0d9a29b65e26d2 Mon Sep 17 00:00:00 2001 From: mcolocci Date: Fri, 29 Aug 2014 17:53:05 +0200 Subject: [PATCH] fix coverity and rebinning --- .../Nuclei/masses/AliAnalysisNucleiMass.cxx | 323 +++++++++--------- .../Nuclei/masses/AliAnalysisNucleiMass.h | 26 +- 2 files changed, 184 insertions(+), 165 deletions(-) diff --git a/PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.cxx b/PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.cxx index ef88aaaa511..9a6f5972308 100644 --- a/PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.cxx +++ b/PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.cxx @@ -40,7 +40,8 @@ AliAnalysisNucleiMass::AliAnalysisNucleiMass(): iMtof(1), kPvtxCorr(1), iBconf(0), - kTOF(0), + kTOF(0), +//iTriggerSel(-99), fAOD(NULL), fESD(NULL), fEvent(NULL), @@ -48,10 +49,10 @@ AliAnalysisNucleiMass::AliAnalysisNucleiMass(): { Centrality[0]=0.0; Centrality[1]=100.0; - + EtaLimit[0]=-99.0; EtaLimit[1]=99.0; - + fList[0]=new TList(); fList[0]->SetName("results"); @@ -73,7 +74,8 @@ AliAnalysisNucleiMass::AliAnalysisNucleiMass(const char *name): iMtof(1), kPvtxCorr(1), iBconf(0), - kTOF(0), + kTOF(0), + //iTriggerSel(-99), fAOD(NULL), fESD(NULL), fEvent(NULL), @@ -148,8 +150,12 @@ void AliAnalysisNucleiMass::UserCreateOutputObjects() htemp[iB] = new TH1F("htemp","htemp (avoid the problem with the empty list...);B field",20,-10,10); - hCentrality[iB][0] = new TH1F("hCentrality_Selected","Centrality (selected events);centrality(%)",20,0,100); - hCentrality[iB][1] = new TH1F("hCentrality_Analyzed","Centrality (analyzed events);centrality (%)",20,0,100); + //htriggerbits[iB] = new TH1I("htriggerbits","htriggerbits; bits",10,-5,5); + htriggerbits[iB][0] = new TH1I("htriggerbits_0","trigger mask; bits",45,-5,40); + htriggerbits[iB][1] = new TH1I("htriggerbits_1","trigger bits (exclusive); bits",45,-5,40); + + hCentrality[iB][0] = new TH1F("hCentrality_Selected","Centrality (selected events);centrality(%)",20,0,100);//20,0,100 + hCentrality[iB][1] = new TH1F("hCentrality_Analyzed","Centrality (analyzed events);centrality (%)",20,0,100);//20,0,100 hZvertex[iB][0] = new TH1F("hZvertex_Selected","Vertex distribution of selected events;z vertex (cm)",240,-30,30); hZvertex[iB][1] = new TH1F("hZvertex_Analyzed","Vertex distribution of analyzed events;z vertex (cm)",240,-30,30); @@ -197,7 +203,7 @@ void AliAnalysisNucleiMass::UserCreateOutputObjects() Char_t title_fNsigmaTpc_kTOF[nSpec][200]; for(Int_t i=0;ipTrue for nuclei);m^{2}/z^{2}_{TOF} (GeV^{2}/c^{4});p/|z| (GeV/c)",name[i]); - snprintf(name_fM2vsP[1][i],300,"fM2vsPc_%s_DCACut",name[i]); - snprintf(title_fM2vsP[1][i],300,"m^{2}/z^{2}_{TOF} vs p/|z| of %s with a NsigmaTpcCut and with the DCA cut (pReco->pTrue for nuclei);m^{2}/z^{2}_{TOF} (GeV^{2}/c^{4});p/|z| (GeV/c)",name[i]); - if(kSignalCheck==1) {hbins[0]=8000; hbins[1]=100;} else {hbins[0]=1; hbins[1]=1;} fM2vsP[iB][0][i] = new TH2F(name_fM2vsP[0][i],title_fM2vsP[0][i],hbins[0],0,10,hbins[1],0,5); - - if(kSignalCheck==1) {hbins[0]=8000; hbins[1]=100;} - else if(kSignalCheck==0) {hbins[0]=1; hbins[1]=1;} - else if(kSignalCheck==2) {hbins[0]=1; hbins[1]=1;}//{hbins[0]=1000 oppure 500; hbins[1]=100;} toram - fM2vsP[iB][1][i] = new TH2F(name_fM2vsP[1][i],title_fM2vsP[1][i],hbins[0],0,6,hbins[1],0,5);//hbins[0],0,10,hbins[1],0,5 } if(kSignalCheck==1) {hbins[0]=4000; hbins[1]=1000;} - else {hbins[0]=1; hbins[1]=1;} + else if(kSignalCheck==0) {hbins[0]=1; hbins[1]=1;} + else if(kSignalCheck==2) {hbins[0]=1; hbins[1]=1;}//{hbins[0]=1000 oppure 500; hbins[1]=100;} toram fM2vsZ[iB][0] = new TH2F("fM2vsZ","m^{2}/z^{2}_{TOF} vs z_{TPC} Integrated p_{T};z_{TPC};m^{2}/z^{2}_{TOF} (GeV^{2}/c^{4})",hbins[0],-4,4,hbins[1],0,10); fM2vsZ[iB][1] = new TH2F("fM2vsZ_0.5pT1.0","m^{2}/z^{2}_{TOF} vs z_{TPC} 0.5/p_{vtx} vs #beta#gamma of %s (in DCAxyCut);p_{vtx}/m_{%s};

_{%s}/p_{vtx}",name[iS],name[iS],name[iS]); + snprintf(title_fPmeanVsBetaGamma[iS],200,"

/p_{vtx} vs #beta#gamma of %s;p_{vtx}/m_{%s};

_{%s}/p_{vtx}",name[iS],name[iS],name[iS]); fPmeanVsBetaGamma[iB][iS]=new TH2F(name_fPmeanVsBetaGamma[iS],title_fPmeanVsBetaGamma[iS],hbins[0],0,10,hbins[1],0.8,1.2); } Char_t name_prPmeanVsBetaGamma[18][200]; Char_t title_prPmeanVsBetaGamma[18][200]; - if(iMtof==2) {hbins[0]=200; hbins[1]=200;} + if(iMtof==2) {hbins[0]=1; hbins[1]=1;}//if(iMtof==2) {hbins[0]=200; hbins[1]=200;} else {hbins[0]=1; hbins[1]=1;} for(Int_t iS=0;iS/p_{vtx} vs #beta#gamma of %s (in DCAxyCut);p_{vtx}/m_{%s};

_{%s}/p_{vtx}",name[iS],name[iS],name[iS]); + snprintf(title_prPmeanVsBetaGamma[iS],200,"

/p_{vtx} vs #beta#gamma of %s;p_{vtx}/m_{%s};

_{%s}/p_{vtx}",name[iS],name[iS],name[iS]); prPmeanVsBetaGamma[iB][iS]=new TProfile(name_prPmeanVsBetaGamma[iS],title_prPmeanVsBetaGamma[iS],hbins[0],0,10,0.8,1.2,""); } SetPvtxCorrections(); - prPvtxTrueVsReco[iB][0]=new TProfile("prPvtxTrueVsReco_d","p_{true} vs p_{reco} of d and dbar;p_{reco} (GeV/c); p_{true}/p_{reco} (d)",100,0,10); - prPvtxTrueVsReco[iB][1]=new TProfile("prPvtxTrueVsReco_t","p_{true} vs p_{reco} of t and tbar;p_{reco} (GeV/c);p_{true}/p_{reco} (t)",100,0,10); - prPvtxTrueVsReco[iB][2]=new TProfile("prPvtxTrueVsReco_He3","p_{true} vs p_{reco} of He3 and He3bar;p_{reco} (GeV/c);p_{true}/p_{reco} (He3)",100,0,10); - prPvtxTrueVsReco[iB][3]=new TProfile("prPvtxTrueVsReco_He4","p_{true} vs p_{reco} of He4 and He4bar;p_{reco} (GeV/c);p_{true}/p_{reco} (He4)",100,0,10); + prPvtxTrueVsReco[iB][0]=new TProfile("prPvtxTrueVsReco_d","p_{true} vs p_{reco} of d and dbar;p_{reco} (GeV/c); p_{true}/p_{reco} (d)",1,0,10);//,100,0,10 + prPvtxTrueVsReco[iB][1]=new TProfile("prPvtxTrueVsReco_t","p_{true} vs p_{reco} of t and tbar;p_{reco} (GeV/c);p_{true}/p_{reco} (t)",1,0,10);//,100,0,10 + prPvtxTrueVsReco[iB][2]=new TProfile("prPvtxTrueVsReco_He3","p_{true} vs p_{reco} of He3 and He3bar;p_{reco} (GeV/c);p_{true}/p_{reco} (He3)",1,0,10);//,100,0,10 + prPvtxTrueVsReco[iB][3]=new TProfile("prPvtxTrueVsReco_He4","p_{true} vs p_{reco} of He4 and He4bar;p_{reco} (GeV/c);p_{true}/p_{reco} (He4)",1,0,10);//,100,0,10 SetPmeanCorrections(); @@ -397,11 +372,12 @@ void AliAnalysisNucleiMass::UserCreateOutputObjects() hbins[0]=200; for(Int_t iS=0;iS<14;iS++) { snprintf(name_prPmeanVsBGcorr[iS],200,"prPmeanVsBGcorr_%s",nameTemp[iS]); - snprintf(title_prPmeanVsBGcorr[iS],200,"

/p_{vtx} vs #beta#gamma of %s as parameterized in input TF1 (in DCAxyCut);p_{vtx}/m_{%s};

_{%s}/p_{vtx}",nameTemp[iS],nameTemp[iS],nameTemp[iS]); + snprintf(title_prPmeanVsBGcorr[iS],200,"

/p_{vtx} vs #beta#gamma of %s as parameterized in input TF1;p_{vtx}/m_{%s};

_{%s}/p_{vtx}",nameTemp[iS],nameTemp[iS],nameTemp[iS]); prPmeanVsBGcorr[iB][iS]=new TProfile(name_prPmeanVsBGcorr[iS],title_prPmeanVsBGcorr[iS],hbins[0],0,20,0.8,1.2,""); } fList[iB]->Add(htemp[iB]); + for(Int_t i=0;i<2;i++) fList[iB]->Add(htriggerbits[iB][i]); for(Int_t i=0;i<2;i++) fList[iB]->Add(hCentrality[iB][i]); for(Int_t i=0;i<2;i++) fList[iB]->Add(hZvertex[iB][i]); fList[iB]->Add(hEta[iB]); @@ -421,41 +397,29 @@ void AliAnalysisNucleiMass::UserCreateOutputObjects() //for(Int_t i=0;i<2;i++) fList[iB]->Add(fBetaTofVSp[iB][i]); //for(Int_t i=0;iAdd(hBetaExp[iB][i]); //for(Int_t i=0;iAdd(fNsigmaTof[iB][i]); - for(Int_t i=0;iAdd(fNsigmaTof_DcaCut[iB][i]); - //fList[iB]->Add(fNsigmaTof_DcaCut[iB][i+nPart]); - } //for(Int_t i=0;i<2;i++) fList[iB]->Add(fM2vsP_NoTpcCut[iB][0][i]); - //for(Int_t i=0;i<2;i++) fList[iB]->Add(fM2vsP_NoTpcCut[iB][1][i]); for(Int_t i=0;iAdd(fM2vsP[iB][0][i]); //fList[iB]->Add(fM2vsP[iB][0][i+nPart]); } - for(Int_t i=0;iAdd(fM2vsP[iB][1][i]); - //fList[iB]->Add(fM2vsP[iB][1][i+nPart]); - } + for(Int_t i=0;i<2;i++){ //fList[iB]->Add(fPvtxTrueVsReco[i]); - fList[iB]->Add(prPvtxTrueVsReco[iB][i]); + //fList[iB]->Add(prPvtxTrueVsReco[iB][i]); } if(iMtof==2) { for(Int_t i=0;iAdd(fPmeanVsBetaGamma[iB][i]); - fList[iB]->Add(prPmeanVsBetaGamma[iB][i]); - fList[iB]->Add(fPmeanVsBetaGamma[iB][i+nPart]); - fList[iB]->Add(prPmeanVsBetaGamma[iB][i+nPart]); + //fList[iB]->Add(fPmeanVsBetaGamma[iB][i]); + //fList[iB]->Add(prPmeanVsBetaGamma[iB][i]); + //fList[iB]->Add(fPmeanVsBetaGamma[iB][i+nPart]); + //fList[iB]->Add(prPmeanVsBetaGamma[iB][i+nPart]); } } if(iMtof>2) { //for(Int_t i=0;i<14;i++)fList[iB]->Add(fPmeanVsBGcorr[i]); - for(Int_t i=0;i<14;i++)fList[iB]->Add(prPmeanVsBGcorr[iB][i]); + //for(Int_t i=0;i<14;i++)fList[iB]->Add(prPmeanVsBGcorr[iB][i]); } for(Int_t i=0;iAdd(hDCAxy[iB][i][j]); fList[iB]->Add(hDCAz[iB][i][j]); fList[iB]->Add(hM2CutDCAxy[iB][i][j]); - //fList[iB]->Add(hM2CutGroundDCAxy[iB][i][j]); fList[iB]->Add(hDCAxy[iB][i+nPart][j]); fList[iB]->Add(hDCAz[iB][i+nPart][j]); fList[iB]->Add(hM2CutDCAxy[iB][i+nPart][j]); - //fList[iB]->Add(hM2CutGroundDCAxy[iB][i+nPart][j]); } } @@ -537,6 +499,27 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) //---------------------------EVENT CUTS----------------------------- if(TMath::Abs(zvtx) < 10.0 && v0Centr>Centrality[0] && v0CentrIsEventSelected() & AliVEvent::kMB) iTrigger = 0; + if(inputHandler->IsEventSelected() & AliVEvent::kCentral) iTrigger = 16; + if(inputHandler->IsEventSelected() & AliVEvent::kSemiCentral) iTrigger = 17; + //if((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected()) & AliVEvent::kAny) iTrigger = 35; + + if(iTriggerSel!=-99) {//if a dedicated trigger is required + if(iTrigger!=iTriggerSel) return; + } + + for(Int_t i=0;i<32;i++) { + Int_t bit=(1<IsEventSelected() & bit) htriggerbits[iBconf][0]->Fill(i); + } + if(inputHandler->IsEventSelected() & AliVEvent::kAny) htriggerbits[iBconf][0]->Fill(35); + if(inputHandler->IsEventSelected() & AliVEvent::kAnyINT) htriggerbits[iBconf][0]->Fill(36); + + htriggerbits[iBconf][1]->Fill(iTrigger); + hCentrality[iBconf][1]->Fill(v0Centr); hZvertex[iBconf][1]->Fill(zvtx); @@ -564,24 +547,10 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) nTpcCluster=track->GetTPCNcls(); if(nTpcCluster>NminTpcCluster) isMinTpcCluster=kTRUE; - //-------------------------------------start TRACK CUTS---------------------------------- + //-------------------------------------start TRACK CUTS (I): for (II) see below-------- if ((track->Pt() < 0.2) || (etaEtaLimit[1]) || !trkFlag || !isMinTpcCluster) continue; - //Vertex determination - Double_t b[2] = {-99., -99.}; - Double_t bCov[3] = {-99., -99., -99.}; - if (!track->PropagateToDCA(fEvent->GetPrimaryVertex(), fEvent->GetMagneticField(), 100., b, bCov)) - continue; - - Double_t DCAxy = b[0]; - Double_t DCAz = b[1]; - - //Cut on the DCAz - //Bool_t isDCAzCut=kFALSE; - //if(DCAzGetTPCsignal(); if(dedx<10) continue; @@ -590,17 +559,10 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) if(nTrdSlices<2 && iTrdCut==1) continue; if(nTrdSlices>0 && iTrdCut==2) continue; - //-------------------------------------end TRACK CUTS---------------------------------- + //-------------------------------------end TRACK CUTS (I)---------------------------------- //-------------------------------------Track info-------------------------------------- Double_t phi= track->Phi(); - - hEta[iBconf]->Fill(eta); - hPhi[iBconf]->Fill(phi); - fEtaPhi[iBconf]->Fill(eta,phi); - hNTpcCluster[iBconf]->Fill(nTpcCluster); - hNTrdSlices[iBconf]->Fill(nTrdSlices); - Double_t charge = (Double_t)track->Charge(); Double_t p = track->P(); Double_t pt = track->Pt(); @@ -609,7 +571,16 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) Double_t beta = 0.0; Double_t M2 = 999.9; Double_t Z2 = 999.9; - + + //Vertex determination + Double_t b[2] = {-99., -99.}; + Double_t bCov[3] = {-99., -99., -99.}; + if (!track->PropagateToDCA(fEvent->GetPrimaryVertex(), fEvent->GetMagneticField(), 100., b, bCov)) + continue; + + Double_t DCAxy = b[0]; + Double_t DCAz = b[1]; + kTOF = (track->GetStatus() & AliVTrack::kTOFout) && (track->GetStatus() & AliVTrack::kTIME); //-----------------------------TPC info------------------------------ @@ -630,7 +601,28 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) Double_t pC[9]; for(Int_t iS=0;iS<9;iS++) pC[iS]=p; this->MomVertexCorrection(p,pC,eta,FlagPid); - + + this->FillDCAdist(DCAxy,DCAz,charge,FlagPid,stdFlagPid,pC); + + //-------------------------------------start TRACK CUTS (II)------------------------------------- + //Cut on the DCAxy + Bool_t isDCAxyCut=kFALSE; + if(DCAxyFill(eta); + hPhi[iBconf]->Fill(phi); + fEtaPhi[iBconf]->Fill(eta,phi); + hNTpcCluster[iBconf]->Fill(nTpcCluster); + hNTrdSlices[iBconf]->Fill(nTrdSlices); + //More TPC info: for(Int_t iS=0;iS<9;iS++){ expdedx[iS] = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, (AliPID::EParticleType) iS, AliTPCPIDResponse::kdEdxDefault, kTRUE); @@ -639,11 +631,11 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) //fNsigmaTpc[iBconf][iS]->Fill(pTPC,nsigmaTPC[iS]); if(charge>0) {//positive particle fNsigmaTpc[iBconf][iS]->Fill(pTPC,nsigmaTPC[iS]); - if(kTOF && (TMath::Abs(DCAxy)Fill(p,nsigmaTPC[iS]); + if(kTOF) fNsigmaTpc_kTOF[iBconf][iS]->Fill(p,nsigmaTPC[iS]); } else {//negative particle fNsigmaTpc[iBconf][iS+nPart]->Fill(pTPC,nsigmaTPC[iS]); - if(kTOF && (TMath::Abs(DCAxy)Fill(p,nsigmaTPC[iS]); + if(kTOF) fNsigmaTpc_kTOF[iBconf][iS+nPart]->Fill(p,nsigmaTPC[iS]); } /* if(TMath::Abs(nsigmaTPC[iS])Fill(pt,nsigmaTOF[iS]); if(charge>0) { hBetaExp[iBconf][iS]->Fill(p,exptimes[0]/exptimes[iS]); - if(TMath::Abs(DCAxy)Fill(pt,nsigmaTOF[iS]); } else { hBetaExp[iBconf][iS+nPart]->Fill(p,exptimes[0]/exptimes[iS]); - if(TMath::Abs(DCAxy)Fill(pt,nsigmaTOF[iS]); } //TOF identification: @@ -704,19 +694,18 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) //-----------------------------M2 as a function of momentum to the primary vertex if iMtof==1--------------------------------- if(iMtof==1) this->GetMassFromPvertexCorrected(beta,pC,Mass2); - if(iMtof==2) this->GetPmeanVsBetaGamma(exptimes,pC,FlagPid,FlagPidTof,charge,DCAxy); + if(iMtof==2) this->GetPmeanVsBetaGamma(exptimes,pC,FlagPid,FlagPidTof,charge); //-----------------------------M2 as a function of expected times--------------------------------- if(iMtof==2) this->GetMassFromExpTimes(beta,exptimes,Mass2); //-----------------------------M2 as a function of mean momentum calculated from expected time and extrapolated to the (anti)nuclei--------------------------------- - if(iMtof>2) this->GetMassFromMeanMom(beta,exptimes,pC,eta,charge,Mass2,FlagPid,FlagPidTof,DCAxy); + if(iMtof>2) this->GetMassFromMeanMom(beta,exptimes,pC,eta,charge,Mass2,FlagPid,FlagPidTof); //-------------------------------Squared Mass TH2 distributions----------------------- if(charge>0) { //without TPC fM2vsP_NoTpcCut[iBconf][0][0]->Fill(M2,p); - if(TMath::Abs(DCAxy)Fill(M2,p); //with TPC for(Int_t iS=0;iS<9;iS++) { M2=999.9; @@ -724,27 +713,24 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) //----------------- if(FlagPid & stdFlagPid[iS]) { fM2vsP[iBconf][0][iS]->Fill(M2,pC[iS]); - if(TMath::Abs(DCAxy)Fill(M2,pC[iS]); } } } else {//charge<0 //without TPC fM2vsP_NoTpcCut[iBconf][0][1]->Fill(M2,p); - if(TMath::Abs(DCAxy)Fill(M2,p); - //with TPC + //with TPC for(Int_t iS=0;iS<9;iS++) { M2=999.9; M2=Mass2[iS]; //----------------- if(FlagPid & stdFlagPid[iS]) { fM2vsP[iBconf][0][iS+nPart]->Fill(M2,pC[iS]); - if(TMath::Abs(DCAxy)Fill(M2,pC[iS]); } } } - //------------------------------start DCA and Squared Mass TH1 distributions------------------------- + //------------------------------start Squared Mass TH1 distributions------------------------- Double_t binP[nbin+1]; for(Int_t i=0;iFill(DCAxy,DCAz); - h2DCAap[iBconf][iS]->Fill(-DCAxy,-DCAz); - } for(Int_t j=0;jbinP[j] && pC[iS]Fill(DCAxy); - hDCAxy[iBconf][iS][j]->Fill(-DCAxy); - hDCAz[iBconf][iS][j]->Fill(DCAz); - hDCAz[iBconf][iS][j]->Fill(-DCAz); - //h2DCA[iBconf][iS][j]->Fill(DCAxy,DCAz); - //h2DCA[iBconf][iS][j]->Fill(-DCAxy,-DCAz); - if(TMath::Abs(DCAxy)Fill(M2); - } - if(TMath::Abs(DCAxy+0.5)Fill(M2); - } + hM2CutDCAxy[iBconf][iS][j]->Fill(M2); break; } }//end loop on the p bins (j) @@ -786,24 +757,9 @@ void AliAnalysisNucleiMass::UserExec(Option_t *) M2=Mass2[iS]; if(FlagPid & stdFlagPid[iS]) { - if(pC[iS]<1.5) { - h2DCAap[iBconf][iS+nPart]->Fill(DCAxy,DCAz); - h2DCAap[iBconf][iS+nPart]->Fill(-DCAxy,-DCAz); - } for(Int_t j=0;jbinP[j] && pC[iS]Fill(DCAxy); - hDCAxy[iBconf][iS+nPart][j]->Fill(-DCAxy); - hDCAz[iBconf][iS+nPart][j]->Fill(DCAz); - hDCAz[iBconf][iS+nPart][j]->Fill(-DCAz); - //h2DCA[iBconf][iS+nPart][j]->Fill(DCAxy,DCAz); - //h2DCA[iBconf][iS+nPart][j]->Fill(-DCAxy,-DCAz); - if(TMath::Abs(DCAxy)Fill(M2); - } - if(TMath::Abs(DCAxy+0.5)Fill(M2); - } + hM2CutDCAxy[iBconf][iS+nPart][j]->Fill(M2); break; } }//end loop on the p bins (j) @@ -866,6 +822,67 @@ void AliAnalysisNucleiMass::MomVertexCorrection(Double_t p, Double_t *pC, Double return; } +//__________________________________________________________________________________________________ +void AliAnalysisNucleiMass::FillDCAdist(Double_t DCAxy, Double_t DCAz, Double_t charge, Int_t FlagPid, Int_t stdFlagPid[9], Double_t *pC){ + + Double_t binP[nbin+1]; + for(Int_t i=0;i0) { + for(Int_t iS=0;iS<9;iS++) { + if(FlagPid & stdFlagPid[iS]) { + if(pC[iS]<1.5) { + h2DCAap[iBconf][iS]->Fill(DCAxy,DCAz); + h2DCAap[iBconf][iS]->Fill(-DCAxy,-DCAz); + } + for(Int_t j=0;jbinP[j] && pC[iS]Fill(DCAxy); + hDCAxy[iBconf][iS][j]->Fill(-DCAxy); + } + if(DCAxyFill(DCAz); + hDCAz[iBconf][iS][j]->Fill(-DCAz); + } + //h2DCA[iBconf][iS][j]->Fill(DCAxy,DCAz); + //h2DCA[iBconf][iS][j]->Fill(-DCAxy,-DCAz); + break; + } + }//end loop on the p bins (j) + } + }//end loop on the particle species (iS) + } + else {//charge<0 + for(Int_t iS=0;iS<9;iS++) { + if(FlagPid & stdFlagPid[iS]) { + if(pC[iS]<1.5) { + h2DCAap[iBconf][iS+nPart]->Fill(DCAxy,DCAz); + h2DCAap[iBconf][iS+nPart]->Fill(-DCAxy,-DCAz); + } + for(Int_t j=0;jbinP[j] && pC[iS]Fill(DCAxy); + hDCAxy[iBconf][iS+nPart][j]->Fill(-DCAxy); + } + if(DCAxyFill(DCAz); + hDCAz[iBconf][iS+nPart][j]->Fill(-DCAz); + } + //h2DCA[iBconf][iS+nPart][j]->Fill(DCAxy,DCAz); + //h2DCA[iBconf][iS+nPart][j]->Fill(-DCAxy,-DCAz); + break; + } + }//end loop on the p bins (j) + } + }//end loop on the particle species (iS) + } + + return; +} //_____________________________________________________________________________ void AliAnalysisNucleiMass::GetMassFromPvertex(Double_t beta, Double_t p, Double_t &M2) { @@ -938,7 +955,7 @@ void AliAnalysisNucleiMass::GetMassFromExpTimes(Double_t beta, Double_t *IntTime return; } //____________________________________________________________________________________________________________ -void AliAnalysisNucleiMass::GetPmeanVsBetaGamma(Double_t *IntTimes, Double_t *pVtx, Int_t FlagPid, Int_t FlagPidTof, Double_t charge, Double_t DCAxy) { +void AliAnalysisNucleiMass::GetPmeanVsBetaGamma(Double_t *IntTimes, Double_t *pVtx, Int_t FlagPid, Int_t FlagPidTof, Double_t charge) { // m = p_exp/beta/gamma where p_exp = mPDG*beta_exp*gamma_exp; beta_exp = L/t_exp/c = t_e/t_exp ; beta=L/tof/c = t_e/tof // In this way m_tof = mPDG only if tof=t_exp @@ -966,7 +983,6 @@ void AliAnalysisNucleiMass::GetPmeanVsBetaGamma(Double_t *IntTimes, Double_t *pV pExp[iS]=TMath::Sqrt(p2Exp[iS]); if((FlagPid & stdFlagPid[iS]) && (FlagPidTof & stdFlagPid[iS])) { - if(TMath::Abs(DCAxy)>DCAxyCut) continue; if(charge>0){ fPmeanVsBetaGamma[iBconf][iS]->Fill(pVtx[iS]/massOverZ[iS],pExp[iS]/pVtx[iS]); prPmeanVsBetaGamma[iBconf][iS]->Fill(pVtx[iS]/massOverZ[iS],pExp[iS]/pVtx[iS]); @@ -982,7 +998,7 @@ void AliAnalysisNucleiMass::GetPmeanVsBetaGamma(Double_t *IntTimes, Double_t *pV } //____________________________________________________________________________________________________________ -void AliAnalysisNucleiMass::GetMassFromMeanMom(Double_t beta, Double_t *IntTimes, Double_t *pVtx, Double_t eta, Double_t charge, Double_t *Mass2, Int_t FlagPid, Int_t FlagPidTof, Double_t DCAxy) {//Double_t *Mass2, Int_t iCorr +void AliAnalysisNucleiMass::GetMassFromMeanMom(Double_t beta, Double_t *IntTimes, Double_t *pVtx, Double_t eta, Double_t charge, Double_t *Mass2, Int_t FlagPid, Int_t FlagPidTof) {//Double_t *Mass2, Int_t iCorr // m = p_exp/beta/gamma where p_exp = mPDG*beta_exp*gamma_exp; beta_exp = L/t_exp/c = t_e/t_exp ; beta=L/tof/c = t_e/tof // In this way m_tof = mPDG only if tof=t_exp @@ -1021,7 +1037,6 @@ void AliAnalysisNucleiMass::GetMassFromMeanMom(Double_t beta, Double_t *IntTimes Mass2[iS]=p2Exp[iS]*(1-beta*beta)/(beta*beta); //----------- - if(TMath::Abs(DCAxy)>DCAxyCut) continue; if(iS>1) { if((FlagPid & stdFlagPid[iS]) && (FlagPidTof & stdFlagPid[iS])) { diff --git a/PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.h b/PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.h index dbe516dfaf9..e4addbe0f98 100644 --- a/PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.h +++ b/PWGLF/SPECTRA/Nuclei/masses/AliAnalysisNucleiMass.h @@ -51,7 +51,8 @@ class AliAnalysisNucleiMass : public AliAnalysisTaskSE { void SetisSignalCheck(Int_t IsSignalCheck=2) {kSignalCheck=IsSignalCheck;} void SetMtofMethod(Int_t iMtofMethod=1) {iMtof=iMtofMethod;} void SetPvtxNucleiCorrection(Int_t kMomVtxCorr=1) {kPvtxCorr=kMomVtxCorr;} - + //void SetiTriggerSel(Int_t ItriggerSel=-99) {iTriggerSel=ItriggerSel;} + private: AliAnalysisNucleiMass(const AliAnalysisNucleiMass &old); AliAnalysisNucleiMass& operator=(const AliAnalysisNucleiMass &source); @@ -78,12 +79,15 @@ class AliAnalysisNucleiMass : public AliAnalysisTaskSE { Int_t iBconf; //! If Magnetic Field configuration is down or up Bool_t kTOF; //! kTOFout and kTIME required + static const Int_t iTriggerSel=-99; // -99->no trigger required ; 0-> if kMB ; 16-> if kCentral ; 17-> if kSemiCentral ; -2 -> No MB, No Central and No SemiCentral + AliAODEvent* fAOD; //! AOD object AliESDEvent* fESD; //! ESD object AliVEvent* fEvent; //! general object AliPIDResponse *fPIDResponse; //! pointer to PID response TList *fList[nBconf]; //! lists for slot + TH1I *htriggerbits[nBconf][2]; //! Trigger bits distribution TH1F *htemp[nBconf]; //! Temp. plot: avoid a problem with the merge of the output when a TList is empty (of the opposite magnetic field configuration) TH1F *hCentrality[nBconf][2]; //! Centrality of the selected and analyzed events TH1F *hZvertex[nBconf][2]; //! z-vertex distribution before and after the cuts on the event @@ -98,17 +102,16 @@ class AliAnalysisNucleiMass : public AliAnalysisTaskSE { TH2F *fdEdxVSp[nBconf][2]; //! dedx vs pTpc TProfile *hDeDxExp[nBconf][9]; //! TPC spline used TH2F *fNsigmaTpc[nBconf][18]; //! NsigmaTPC vs. pTpc - TH2F *fNsigmaTpc_kTOF[nBconf][18]; //! NsigmaTPC vs. pt when kTOF is required and in DCAxyCut + TH2F *fNsigmaTpc_kTOF[nBconf][18]; //! NsigmaTPC vs. pt when kTOF is required //TOF info: TH2F *fBetaTofVSp[nBconf][2]; //! beta vs pVtx TProfile *hBetaExp[nBconf][9]; //! TOF expected beta TH2F *fNsigmaTof[nBconf][9]; //! NsigmaTOF vs. pT - TH2F *fNsigmaTof_DcaCut[nBconf][18]; //! NsigmaTOF vs. pT - + //TPC and TOF conbined - TH2F *fM2vsP_NoTpcCut[nBconf][2][2]; //! M2 vs. P w/o the DCAxyCut - TH2F *fM2vsP[nBconf][2][18]; //! M2 vs. P with NsigmaTpcCut for each particle species, w/o the DCAxyCut + TH2F *fM2vsP_NoTpcCut[nBconf][1][2]; //! M2 vs. P + TH2F *fM2vsP[nBconf][1][18]; //! M2 vs. P with NsigmaTpcCut for each particle species TH2F *fM2vsZ[nBconf][10]; //! M2 vs. Z in various pT bins //DCA distributions @@ -118,9 +121,8 @@ class AliAnalysisNucleiMass : public AliAnalysisTaskSE { TH2F *h2DCAap[nBconf][18]; //! DCAxy vs DCAz with NsigmaTpcCut for each particle species //TOF mass distributions - TH1D *hM2CutDCAxy[nBconf][18][nbin]; //! Tof m2 distribution in DCAxyCut and with NsigmaTpcCut - TH1D *hM2CutGroundDCAxy[nBconf][18][nbin]; //! Tof m2 distribution in the background of DCAxyCut (secondary nuclei selection) and with NsigmaTpcCut - + TH1D *hM2CutDCAxy[nBconf][18][nbin]; //! Tof m2 distribution with NsigmaTpcCut + //... TH2F *fPmeanVsBetaGamma[nBconf][18]; //!

/p vs beta*gamma for pi,K,p TProfile *prPmeanVsBetaGamma[nBconf][18]; //!

/p vs beta*gamma for pi,K,p (profile) @@ -135,15 +137,17 @@ class AliAnalysisNucleiMass : public AliAnalysisTaskSE { //------------------------------Methods---------------------------------------- void MomVertexCorrection(Double_t p, Double_t *pC, Double_t eta, Int_t FlagPid); + void FillDCAdist(Double_t DCAxy, Double_t DCAz, Double_t charge, Int_t FlagPid, Int_t stdFlagPid[9], Double_t *pC); + void GetMassFromPvertex(Double_t beta, Double_t p, Double_t &M2); void GetZTpc(Double_t dedx, Double_t pTPC, Double_t M2, Double_t &Z2); void GetMassFromPvertexCorrected(Double_t beta, Double_t *pC, Double_t *Mass2); void GetMassFromExpTimes(Double_t beta, Double_t *IntTimes, Double_t *Mass2); - void GetPmeanVsBetaGamma(Double_t *IntTimes, Double_t *pVtx, Int_t FlagPid, Int_t FlagPidTof, Double_t charge, Double_t DCAxy); + void GetPmeanVsBetaGamma(Double_t *IntTimes, Double_t *pVtx, Int_t FlagPid, Int_t FlagPidTof, Double_t charge); - void GetMassFromMeanMom(Double_t beta, Double_t *IntTimes, Double_t *pVtx, Double_t eta, Double_t charge, Double_t *Mass2, Int_t FlagPid, Int_t FlagPidTof, Double_t DCAxy); + void GetMassFromMeanMom(Double_t beta, Double_t *IntTimes, Double_t *pVtx, Double_t eta, Double_t charge, Double_t *Mass2, Int_t FlagPid, Int_t FlagPidTof); void SetPvtxCorrections(); void SetPmeanCorrections(); -- 2.39.3