#include "AliAnalysisNucleiMass.h" // ROOT includes #include #include "TChain.h" // AliRoot includes #include "AliInputEventHandler.h" #include "AliAODEvent.h" #include "AliESDEvent.h" #include "AliVEvent.h" #include "AliAODTrack.h" #include "AliAODPid.h" #include "AliCentrality.h" #include "TH2F.h" #include "TH2D.h" #include "TH1F.h" #include "TF1.h" #include "TGraph.h" #include "TProfile.h" #include "AliESDtrackCuts.h" #include "AliAnalysisManager.h" ClassImp(AliAnalysisNucleiMass) //_____________________________________________________________________________ AliAnalysisNucleiMass::AliAnalysisNucleiMass(): AliAnalysisTaskSE(), fMC(kFALSE), FilterBit(16), NminTPCcluster(0), DCAzCUT(100), DCAxyCUT(0.1), kTPCcut(kTRUE), kTPC(0), kTOF(0), iBconf(0), isSignalCheck(kTRUE), NsigmaTPCCut(2.0), fAOD(NULL), fESD(NULL), fEvent(NULL), fPIDResponse(NULL) { // Default constructor (should not be used) fList1[0]=new TList(); fList1[0]->SetName("results"); fList1[1]=new TList(); fList1[1]->SetName("results2"); } //______________________________________________________________________________ AliAnalysisNucleiMass::AliAnalysisNucleiMass(const char *name): AliAnalysisTaskSE(name), fMC(kFALSE), FilterBit(16), NminTPCcluster(0), DCAzCUT(100), DCAxyCUT(0.1), kTPCcut(kTRUE), kTPC(0), kTOF(0), iBconf(0), isSignalCheck(kTRUE), NsigmaTPCCut(2.0), fAOD(NULL), fESD(NULL), fEvent(NULL), fPIDResponse(NULL) { fList1[0]=new TList(); DefineOutput(1, TList::Class()); fList1[0]->SetName("results"); fList1[1]=new TList(); DefineOutput(2, TList::Class()); fList1[1]->SetName("results2"); } //_____________________________________________________________________________ AliAnalysisNucleiMass::~AliAnalysisNucleiMass() { if(fList1[0]) delete fList1[0]; if(fList1[1]) delete fList1[1]; } //______________________________________________________________________________ void AliAnalysisNucleiMass::UserCreateOutputObjects() { for(Int_t iB=0;iB<2;iB++) { hNevent[iB] = new TH1F("hNevent_Analyzed","Centrality(analyzed)",20,0,100); hNeventSelected[iB] = new TH1F("hNevent_Selected","Centrality(selected)",20,0,100); hZvertex[iB] = new TH1F("hZvertex","Vertex distribution of selected events; z vertex (cm)",240,-30,30); hTOFSignalPion[iB] = new TH1F("hTOFSignalPion","TOF signal 0.9GetYaxis()->CenterTitle(); fNsigmaTOF[iB][i] = new TH2F(namePart_par_TOF[i],namePart_title_TOF[i],125,0,5,100,-5,5); fNsigmaTOF[iB][i]->GetYaxis()->CenterTitle(); hDeDxExp[iB][i] = new TProfile(namePart_par_ProfileTPC[i],namePart_title_ProfileTPC[i],500,0,5,0,1000,""); hBetaExp[iB][i] = new TProfile(namePart_par_ProfileTOF[i],namePart_title_ProfileTOF[i],400,0,5,0.4,1.05,""); } for(Int_t iS=0;iS<18;iS++) { fNsigmaTPCvsP_kTOFtrue[iB][iS] = new TH2F(namePart_par_TPCvsP_kTOFtrue[iS],namePart_title_TPCvsP_kTOFtrue[iS],125,0,5,100,-5,5); fNsigmaTPCvsP_kTOFtrue[iB][iS]->GetYaxis()->CenterTitle(); } for (Int_t i=0;i<18;i++) fM2vsP[iB][i] = new TH2F(name_par_MvsP[i],name_title_MvsP[i],8000,0,10,200,0,10); for (Int_t i=0;i<18;i++) fM2vsP_DCAxyCut[iB][i] = new TH2F(name_par_MvsP_DCAxyCut[i],name_title_MvsP_DCAxyCut[i],8000,0,10,200,0,10); } else{//IsSignalCheck is kFALSE fdEdxVSp[iB][0] = new TH2F("fdEdxVSp","dE/dx vs p; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",1,0,5,1,0,1000); fdEdxVSp[iB][1] = new TH2F("fdEdxVSp_pos","dE/dx vs p positive charge; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",1,0,5,1,0,1000); fdEdxVSp[iB][2] = new TH2F("fdEdxVSp_neg","dE/dx vs p negative charge; p/|Z| (GeV/c); dE/dx_{TPC} (a.u.)",1,0,5,1,0,1000); fBetaTofVSp[iB] = new TH2F("fBetaTofVSp","#beta_{TOF} vs p; p(GeV/c); #beta_{TOF}",1,0,5,1,0.4,1.05); fM2vsP_NoTpcCut[iB][0] = new TH2F("fM2vsP_NoTpcCut","M_{TOF}^{2} vs p; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1250,0,10,80,0,8); fM2vsP_NoTpcCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive","M_{TOF}^{2} vs p Pos Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1250,0,10,80,0,8); fM2vsP_NoTpcCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative","M_{TOF}^{2} vs p Neg Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1250,0,10,80,0,8); fM2vsP_NoTpcCut_DCAxyCut[iB][0] = new TH2F("fM2vsP_NoTpcCut_DCAxycut","M_{TOF}^{2} vs p with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1250,0,10,80,0,8); fM2vsP_NoTpcCut_DCAxyCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive_DCAxycut","M_{TOF}^{2} vs p Pos Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1250,0,10,80,0,8); fM2vsP_NoTpcCut_DCAxyCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative_DCAxycut","M_{TOF}^{2} vs p Neg Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1250,0,10,80,0,8); /*fM2vsP_NoTpcCut[iB][0] = new TH2F("fM2vsP_NoTpcCut","M_{TOF}^{2} vs p; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10); fM2vsP_NoTpcCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive","M_{TOF}^{2} vs p Pos Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10); fM2vsP_NoTpcCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative","M_{TOF}^{2} vs p Neg Part; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10); fM2vsP_NoTpcCut_DCAxyCut[iB][0] = new TH2F("fM2vsP_NoTpcCut_DCAxycut","M_{TOF}^{2} vs p with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10); fM2vsP_NoTpcCut_DCAxyCut[iB][1] = new TH2F("fM2vsP_NoTpcCut_Positive_DCAxycut","M_{TOF}^{2} vs p Pos Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10); fM2vsP_NoTpcCut_DCAxyCut[iB][2] = new TH2F("fM2vsP_NoTpcCut_Negative_DCAxycut","M_{TOF}^{2} vs p Neg Part with DCAxy cut; M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4}); p/|Z| (GeV/c)",1,0,10,1,0,10);*/ fM2vsZ[iB][0] = new TH2F("fM2vsZ","M_{TOF}^{2} vs Z^{2} Integrated p_{T};Z;M_{TOF}^{2}/Z^{2} (GeV^{2}/c^{4})",1,-4,4,1,0,10); fM2vsZ[iB][1] = new TH2F("fM2vsZ_0.3pT0.5","M_{TOF}^{2} vs Z^{2} 0.3GetYaxis()->CenterTitle(); fNsigmaTOF[iB][i] = new TH2F(namePart_par_TOF[i],namePart_title_TOF[i],1,0,5,1,-5,5); fNsigmaTOF[iB][i]->GetYaxis()->CenterTitle(); hDeDxExp[iB][i] = new TProfile(namePart_par_ProfileTPC[i],namePart_title_ProfileTPC[i],1,0,5,0,1000,""); hBetaExp[iB][i] = new TProfile(namePart_par_ProfileTOF[i],namePart_title_ProfileTOF[i],1,0,5,0.4,1.05,""); } for(Int_t iS=0;iS<18;iS++) { fNsigmaTPCvsP_kTOFtrue[iB][iS] = new TH2F(namePart_par_TPCvsP_kTOFtrue[iS],namePart_title_TPCvsP_kTOFtrue[iS],1,0,5,1,-5,5); fNsigmaTPCvsP_kTOFtrue[iB][iS]->GetYaxis()->CenterTitle(); } /*for (Int_t i=0;i<18;i++) fM2vsP[iB][i] = new TH2F(name_par_MvsP[i],name_title_MvsP[i],1,0,10,1,0,10); for (Int_t i=0;i<18;i++) fM2vsP_DCAxyCut[iB][i] = new TH2F(name_par_MvsP_DCAxyCut[i],name_title_MvsP_DCAxyCut[i],1,0,10,1,0,10);*/ for (Int_t i=0;i<18;i++) fM2vsP[iB][i] = new TH2F(name_par_MvsP[i],name_title_MvsP[i],1250,0,10,80,0,8); for (Int_t i=0;i<18;i++) fM2vsP_DCAxyCut[iB][i] = new TH2F(name_par_MvsP_DCAxyCut[i],name_title_MvsP_DCAxyCut[i],1250,0,10,80,0,8); } Char_t par_name_nbin[nbin][30]; snprintf(par_name_nbin[0],30,"0.4GetXaxis()->CenterTitle(); hDCAz[iB][iS][j] = new TH1D(nameDCAz[iS][j],titleDCAz[iS][j],875,-3.5,3.5);//125 bins hDCAz[iB][iS][j]->GetXaxis()->CenterTitle(); } } //for e,#mu,#pi and antiparticle (e and #mu will not be drawn) //the binning is chosen for #pi distribution: for(Int_t iSp=0;iSp<3;iSp++) { for(Int_t j=0;jAdd(hNeventSelected[iB]); fList1[iB]->Add(hNevent[iB]); fList1[iB]->Add(hZvertex[iB]); fList1[iB]->Add(hTOFSignalPion[iB]); for(Int_t iS=0;iS<18;iS++) fList1[iB]->Add(fNsigmaTPCvsP_kTOFtrue[iB][iS]); for(Int_t i=0;i<3;i++) fList1[iB]->Add(fdEdxVSp[iB][i]); for(Int_t i=0;i<9;i++) fList1[iB]->Add(hDeDxExp[iB][i]); fList1[iB]->Add(fBetaTofVSp[iB]); for(Int_t i=0;i<9;i++) fList1[iB]->Add(hBetaExp[iB][i]); for(Int_t i=0;i<9;i++) fList1[iB]->Add(fNsigmaTPC[iB][i]); for(Int_t i=0;i<9;i++) fList1[iB]->Add(fNsigmaTOF[iB][i]); for(Int_t i=0;i<15;i++) fList1[iB]->Add(fM2vsZ[iB][i]); for(Int_t i=0;i<15;i++) fList1[iB]->Add(fM2vsZwithTPC[iB][i]); for(Int_t i=0;i<3;i++) fList1[iB]->Add(fM2vsP_NoTpcCut[iB][i]); for(Int_t i=0;i<18;i++) fList1[iB]->Add(fM2vsP[iB][i]); for(Int_t i=0;i<3;i++) fList1[iB]->Add(fM2vsP_NoTpcCut_DCAxyCut[iB][i]); for(Int_t i=0;i<18;i++) fList1[iB]->Add(fM2vsP_DCAxyCut[iB][i]); /* for(Int_t j=0;jAdd(hDCAxy[iB][0][j]); fList1[iB]->Add(hDCAz[iB][0][j]); fList1[iB]->Add(hM2CutDCAxy[iB][0][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][0][j]); fList1[iB]->Add(hDCAxy[iB][9][j]); fList1[iB]->Add(hDCAz[iB][9][j]); fList1[iB]->Add(hM2CutDCAxy[iB][9][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][9][j]); } for(Int_t j=0;jAdd(hDCAxy[iB][1][j]); fList1[iB]->Add(hDCAz[iB][1][j]); fList1[iB]->Add(hM2CutDCAxy[iB][1][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][1][j]); fList1[iB]->Add(hDCAxy[iB][10][j]); fList1[iB]->Add(hDCAz[iB][10][j]); fList1[iB]->Add(hM2CutDCAxy[iB][10][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][10][j]); } */ for(Int_t j=0;jAdd(hDCAxy[iB][2][j]); fList1[iB]->Add(hDCAz[iB][2][j]); fList1[iB]->Add(hM2CutDCAxy[iB][2][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][2][j]); fList1[iB]->Add(hDCAxy[iB][11][j]); fList1[iB]->Add(hDCAz[iB][11][j]); fList1[iB]->Add(hM2CutDCAxy[iB][11][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][11][j]); } for(Int_t j=0;jAdd(hDCAxy[iB][3][j]); fList1[iB]->Add(hDCAz[iB][3][j]); fList1[iB]->Add(hM2CutDCAxy[iB][3][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][3][j]); fList1[iB]->Add(hDCAxy[iB][12][j]); fList1[iB]->Add(hDCAz[iB][12][j]); fList1[iB]->Add(hM2CutDCAxy[iB][12][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][12][j]); } for(Int_t j=0;jAdd(hDCAxy[iB][4][j]); fList1[iB]->Add(hDCAz[iB][4][j]); fList1[iB]->Add(hM2CutDCAxy[iB][4][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][4][j]); fList1[iB]->Add(hDCAxy[iB][13][j]); fList1[iB]->Add(hDCAz[iB][13][j]); fList1[iB]->Add(hM2CutDCAxy[iB][13][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][13][j]); } for(Int_t j=0;jAdd(hDCAxy[iB][5][j]); fList1[iB]->Add(hDCAz[iB][5][j]); fList1[iB]->Add(hM2CutDCAxy[iB][5][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][5][j]); fList1[iB]->Add(hDCAxy[iB][14][j]); fList1[iB]->Add(hDCAz[iB][14][j]); fList1[iB]->Add(hM2CutDCAxy[iB][14][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][14][j]); } /* for(Int_t j=0;jAdd(hDCAxy[iB][6][j]); fList1[iB]->Add(hDCAz[iB][6][j]); fList1[iB]->Add(hM2CutDCAxy[iB][6][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][6][j]); fList1[iB]->Add(hDCAxy[iB][15][j]); fList1[iB]->Add(hDCAz[iB][15][j]); fList1[iB]->Add(hM2CutDCAxy[iB][15][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][15][j]); } */ for(Int_t j=0;jAdd(hDCAxy[iB][7][j]); fList1[iB]->Add(hDCAz[iB][7][j]); fList1[iB]->Add(hM2CutDCAxy[iB][7][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][7][j]); fList1[iB]->Add(hDCAxy[iB][16][j]); fList1[iB]->Add(hDCAz[iB][16][j]); fList1[iB]->Add(hM2CutDCAxy[iB][16][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][16][j]); } /* for(Int_t j=0;jAdd(hDCAxy[iB][8][j]); fList1[iB]->Add(hDCAz[iB][8][j]); fList1[iB]->Add(hM2CutDCAxy[iB][8][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][8][j]); fList1[iB]->Add(hDCAxy[iB][17][j]); fList1[iB]->Add(hDCAz[iB][17][j]); fList1[iB]->Add(hM2CutDCAxy[iB][17][j]); fList1[iB]->Add(hM2CutGroundDCAxy[iB][17][j]); } */ // Post output data. PostData(1, fList1[0]); PostData(2, fList1[1]); }//close the iB loop } //______________________________________________________________________________ void AliAnalysisNucleiMass::UserExec(Option_t *) { // Main loop // Called for each event fAOD = dynamic_cast(InputEvent()); fESD = dynamic_cast(InputEvent()); if(!fAOD && !fESD){ Printf("%s:%d AODEvent and ESDEvent not found in Input Manager",(char*)__FILE__,__LINE__); return; } if(fESD) fEvent = fESD; else fEvent = fAOD; AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager(); AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler()); fPIDResponse=inputHandler->GetPIDResponse(); // data member di tipo "const AliPIDResponse *fPIDResponse;" //Centrality Float_t v0Centr = -10.; //Float_t trkCentr = -10.; AliCentrality *centrality = fEvent->GetCentrality(); if (centrality){ v0Centr = centrality->GetCentralityPercentile("V0M"); // VZERO //trkCentr = centrality->GetCentralityPercentile("TRK"); // TPC } Double_t fBfield=fEvent->GetMagneticField(); if(fBfield<0.0) iBconf=0;//B-- else iBconf=1;//B++ hNeventSelected[iBconf]->Fill(v0Centr);//selected events //const AliAODVertex* vtxEVENT = (AliAODVertex*) fEvent->GetPrimaryVertex(); const AliVVertex* vtxEVENT = fEvent->GetPrimaryVertex(); Float_t zvtx = 10000.0; if(vtxEVENT->GetNContributors()>0) zvtx = vtxEVENT->GetZ(); hZvertex[iBconf]->Fill(zvtx); if(TMath::Abs(zvtx) < 10.0){ // consistency cut on centrality selection AND d(zPrimaryVertez;NominalPointInteraction)<10cm //Bool_t isTrack=1; Int_t nTracks = fEvent->GetNumberOfTracks(); if(v0Centr>=fCentrality[0] && v0Centr<=fCentrality[1]) {//window cut centrality open hNevent[iBconf]->Fill(v0Centr);//analyzed events for(Int_t iT = 0; iT < nTracks; iT++) { // loop on the tracks AliVTrack* track = (AliVTrack *) fEvent->GetTrack(iT); if (!track){ continue; } Bool_t trkFlag = 0; trkFlag = ((AliAODTrack *) track)->TestFilterBit(FilterBit); //TestFilterBit(16) -- Standard Cuts with very loose DCA: GetStandardITSTPCTrackCuts2011(kFALSE) && SetMaxDCAToVertexXY(2.4) && SetMaxDCAToVertexZ(3.2) && SetDCaToVertex2D(kTRUE) //TestFilterBit(32) (STARDARD) -- Standard Cuts with very tight DCA cut ( 7sigma^primaries: 7*(0.0015+0.0050/pt^1.1) ) : GetStandardITSTPCTrackCuts2011(). Int_t NTpcCls=track->GetTPCNcls(); if(NTpcCls>NminTPCcluster) kTPC=kTRUE; else kTPC=kFALSE; if ((TMath::Abs(track->Eta()) > 0.8) || (track->Pt() < 0.2) || !trkFlag || !kTPC){ continue; } Double_t b[2] = {-99., -99.}; Double_t bCov[3] = {-99., -99., -99.}; if (!track->PropagateToDCA(fEvent->GetPrimaryVertex(), fEvent->GetMagneticField(), 100., b, bCov)) continue; // Float_t Eta = TMath::Abs(track->Eta()); Float_t charge = (Float_t)track->Charge(); Float_t p = track->P(); Float_t pt = track->Pt(); Float_t dedx = track->GetTPCsignal(); Float_t tof = track->GetTOFsignal()-fPIDResponse->GetTOFResponse().GetStartTime(p); Float_t pTPC = track->GetTPCmomentum(); Float_t beta = 0.0; Float_t M2 = 1000.0; Float_t M = 1000.0; Float_t Z2 = 1000.0; Float_t DCAxy = b[0]; Float_t DCAz = b[1]; if(TMath::Abs(DCAz)>DCAzCUT)//CUT ON DCAz continue; Bool_t kTpcPure; kTpcPure = track->GetTPCsignal()>10; if(kTpcPure==kFALSE) continue; kTOF = (track->GetStatus() & AliVTrack::kTOFout) && (track->GetStatus() & AliVTrack::kTIME); Float_t nsigmaTPC[9]; Float_t nsigmaTOF[9]; Double_t expdedx[9]; for(Int_t iS=0;iS < 9;iS++){ //TPC expected signal expdedx[iS] = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, (AliPID::EParticleType) iS, AliTPCPIDResponse::kdEdxDefault, kTRUE); } for(Int_t iS=0;iS < 9;iS++){ nsigmaTPC[iS] = fPIDResponse->NumberOfSigmasTPC(track,(AliPID::EParticleType) iS); fNsigmaTPC[iBconf][iS]->Fill(pt,nsigmaTPC[iS]); hDeDxExp[iBconf][iS]->Fill(pTPC,expdedx[iS]); } fdEdxVSp[iBconf][0]->Fill(pTPC,dedx); if(charge>0) fdEdxVSp[iBconf][1]->Fill(pTPC,dedx); else fdEdxVSp[iBconf][2]->Fill(pTPC,dedx); Float_t massOverZ[9] = {0.000511,0.105658,0.139570,0.493677,0.938272,1.877837,2.817402,1.408701,1.877837}; Double_t exptimes[9]; // TOF expected times track->GetIntegratedTimes(exptimes); exptimes[5] = exptimes[0] / p * massOverZ[5] * TMath::Sqrt(1+p*p/massOverZ[5]/massOverZ[5]); exptimes[6] = exptimes[0] / p * massOverZ[6] * TMath::Sqrt(1+p*p/massOverZ[6]/massOverZ[6]); exptimes[7] = exptimes[0] / p * massOverZ[7] * TMath::Sqrt(1+p*p/massOverZ[7]/massOverZ[7]); exptimes[8] = exptimes[0] / p * massOverZ[8] * TMath::Sqrt(1+p*p/massOverZ[8]/massOverZ[8]); beta=exptimes[0];//expected times of the electron (it will be diveded for the T.o.f.) if(kTOF) { for(Int_t iS=0;iS < 9;iS++){ nsigmaTOF[iS] = fPIDResponse->NumberOfSigmasTOF(track,(AliPID::EParticleType) iS); fNsigmaTOF[iBconf][iS]->Fill(pt,nsigmaTOF[iS]); hBetaExp[iBconf][iS]->Fill(p,beta/exptimes[iS]); } if(pt>0.9 && pt<1.0) hTOFSignalPion[iBconf]->Fill(tof-exptimes[2]); beta=beta/tof; fBetaTofVSp[iBconf]->Fill(p,beta); } Int_t stdFlagPid[9] = {1,2,4,8,16,32,64,128,256};//e,#mu,#pi,K,p,d,t,3He,4He Int_t FlagPid = 0; Float_t binPt[nbin+1]; for(Int_t i=0;iFill(M2,p); if(TMath::Abs(DCAxy)Fill(M2,p); if(M2>0.0) { M=TMath::Sqrt(M2); Z2 = TMath::Power(dedx/fPIDResponse->GetTPCResponse().GetExpectedSignal(pTPC*massOverZ[4]/M, AliPID::kProton),0.862); fM2vsZ[iBconf][0]->Fill(charge*TMath::Sqrt(Z2),M2); for(Int_t i=0;i<9;i++) { if(pt>binCutPt[i] && ptFill(charge*TMath::Sqrt(Z2),M2); break; } } for(Int_t i=0;i<5;i++) { if(pt>binCutLargePt[i] && ptFill(charge*TMath::Sqrt(Z2),M2); break; } } } if(charge>0) { fM2vsP_NoTpcCut[iBconf][1]->Fill(M2,p); if(TMath::Abs(DCAxy)Fill(M2,p); for(Int_t iS=0;iS<9;iS++){ fNsigmaTPCvsP_kTOFtrue[iBconf][iS]->Fill(p,nsigmaTPC[iS]); } } else {//else charge<0 fM2vsP_NoTpcCut[iBconf][2]->Fill(M2,p); if(TMath::Abs(DCAxy)Fill(M2,p); for(Int_t iS=0;iS < 9;iS++){ fNsigmaTPCvsP_kTOFtrue[iBconf][iS+9]->Fill(p,nsigmaTPC[iS]); } } for(Int_t iS=0;iS<9;iS++) { if(TMath::Abs(nsigmaTPC[iS])0.0) { for(Int_t iS=0;iS<9;iS++) { if(FlagPid & stdFlagPid[iS]) { fM2vsZwithTPC[iBconf][0]->Fill(charge*TMath::Sqrt(Z2),M2); for(Int_t i=0;i<9;i++) { if(pt>binCutPt[i] && ptFill(charge*TMath::Sqrt(Z2),M2); break; } } for(Int_t i=0;i<5;i++) { if(pt>binCutLargePt[i] && ptFill(charge*TMath::Sqrt(Z2),M2); break; } } } } } for(Int_t iS=0;iS<9;iS++) { if(FlagPid & stdFlagPid[iS] || !kTPCcut) { if(charge>0) { fM2vsP[iBconf][iS]->Fill(M2,p); if(TMath::Abs(DCAxy)Fill(M2,p); } for(Int_t j=0;jbinPt[j] && ptFill(DCAxy); hDCAxy[iBconf][iS][j]->Fill(-DCAxy); hDCAz[iBconf][iS][j]->Fill(DCAz); hDCAz[iBconf][iS][j]->Fill(-DCAz); if(TMath::Abs(DCAxy)Fill(M2); } if(TMath::Abs(DCAxy+0.5)Fill(M2); break; } } } else {//if(charge<0) fM2vsP[iBconf][iS+9]->Fill(M2,p); if(TMath::Abs(DCAxy)Fill(M2,p); } for(Int_t j=0;jbinPt[j] && ptFill(DCAxy); hDCAxy[iBconf][iS+9][j]->Fill(-DCAxy); hDCAz[iBconf][iS+9][j]->Fill(DCAz); hDCAz[iBconf][iS+9][j]->Fill(-DCAz); if(TMath::Abs(DCAxy)Fill(M2); } if(TMath::Abs(DCAxy+0.5)Fill(M2); break; } } } } } }// close (KTOF request) } // end track loop } //window cut centrality close } } //_____________________________________________________________________________ void AliAnalysisNucleiMass::Terminate(Option_t *) { // Terminate loop Printf("Terminate()"); }