/************************************************************************** * Contributors are not mentioned at all. * * * * Permission to use, copy, modify and distribute this software and its * * documentation strictly for non-commercial purposes is hereby granted * * without fee, provided that the above copyright noticxse appears in all * * copies and that both the copyright notice and this permission notice * * appear in the supporting documentation. The authors make no claims * * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ //----------------------------------------------------------------- // AliAnalysisTaskNucleiv2SP class //----------------------------------------------------------------- class TTree; class TParticle; class TVector3; #include "AliAnalysisManager.h" #include #include #include class AliESDVertex; class AliAODVertex; class AliESDv0; class AliAODv0; #include #include "TList.h" #include "TH1.h" #include "TH2.h" #include "TH3.h" #include "TNtuple.h" #include "TGraph.h" #include "TF1.h" #include "TCanvas.h" #include "TMath.h" #include "TChain.h" #include "Riostream.h" #include "AliLog.h" #include "AliCascadeVertexer.h" #include "AliESDEvent.h" #include "AliESDtrack.h" #include "AliExternalTrackParam.h" #include "AliAODEvent.h" #include "AliInputEventHandler.h" #include "AliESDcascade.h" #include "AliAODcascade.h" #include "AliAnalysisTaskNucleiv2SP.h" #include "AliESDtrackCuts.h" #include "AliCentrality.h" ClassImp(AliAnalysisTaskNucleiv2SP) using std::cout; using std::endl; //________________________________________________________________________ AliAnalysisTaskNucleiv2SP::AliAnalysisTaskNucleiv2SP() : AliAnalysisTaskSE(), fListHist(0), fHistEventMultiplicity(0), fHistTrackMultiplicity(0), fHistTrackMultiplicityCentral(0), fHistTrackMultiplicitySemiCentral(0), fHistTrackMultiplicityMB(0), fhBB(0), fhBBDeu(0), fhPtDeu(0), fhTOF(0), fhMassTOF(0), EPVzAvsCentrality(0), EPVzCvsCentrality(0), EPTPCvsCentrality(0), EPVzvsCentrality(0), EPTPCpvsCentrality(0), EPTPCnvsCentrality(0), hEvPlaneTPCvsEvPVz05(0), hEvPlaneTPCvsEvPVz075(0), hEvPlaneTPCvsEvPVz1530(0), hEvPlaneTPCvsEvPVz3050(0), hEvPlaneTPCvsEvPVz2040(0), hEvPlaneTPCvsEvPVz4060(0), hCos2DeltaTPCVzAvsCentrality(0), hCos2DeltaTPCVzCvsCentrality(0), hCos2DeltaVzAVzCvsCentrality(0), hCos2DeltaVzMVzAvsCentrality(0), hCos2DeltaVzMVzCvsCentrality(0), hCos2DeltaVzATPCvsCentrality(0), hCos2DeltaVzCTPCvsCentrality(0), hCos2DeltaVzCVzAvsCentrality(0), hQVzAQVzCvsCentrality(0), fHistRealTracks(0), fESDtrackCuts(0), fESDtrackCutsEP(0), fPIDResponse(0) { // Dummy Constructor fESDtrackCuts = new AliESDtrackCuts("AliESDtrackCuts","AliESDtrackCuts"); // Initialize(); } //________________________________________________________________________ AliAnalysisTaskNucleiv2SP::AliAnalysisTaskNucleiv2SP(const char *name) : AliAnalysisTaskSE(name), fListHist(0), fHistEventMultiplicity(0), fHistTrackMultiplicity(0), fHistTrackMultiplicityCentral(0), fHistTrackMultiplicitySemiCentral(0), fHistTrackMultiplicityMB(0), fhBB(0), fhBBDeu(0), fhPtDeu(0), fhTOF(0), fhMassTOF(0), EPVzAvsCentrality(0), EPVzCvsCentrality(0), EPTPCvsCentrality(0), EPVzvsCentrality(0), EPTPCpvsCentrality(0), EPTPCnvsCentrality(0), hEvPlaneTPCvsEvPVz05(0), hEvPlaneTPCvsEvPVz075(0), hEvPlaneTPCvsEvPVz1530(0), hEvPlaneTPCvsEvPVz3050(0), hEvPlaneTPCvsEvPVz2040(0), hEvPlaneTPCvsEvPVz4060(0), hCos2DeltaTPCVzAvsCentrality(0), hCos2DeltaTPCVzCvsCentrality(0), hCos2DeltaVzAVzCvsCentrality(0), hCos2DeltaVzMVzAvsCentrality(0), hCos2DeltaVzMVzCvsCentrality(0), hCos2DeltaVzATPCvsCentrality(0), hCos2DeltaVzCTPCvsCentrality(0), hCos2DeltaVzCVzAvsCentrality(0), hQVzAQVzCvsCentrality(0), fHistRealTracks(0), fESDtrackCuts(0), fESDtrackCutsEP(0), fPIDResponse(0) { // Define input and output slots here // Input slot #0 works with a TChain //DefineInput(0, TChain::Class()); // Output slot #0 writes into a TList container () // // create track cuts // fESDtrackCuts = new AliESDtrackCuts("AliESDtrackCuts","AliESDtrackCuts"); fESDtrackCutsEP = new AliESDtrackCuts("AliESDtrackCutsEP","AliESDtrackCutsEP"); // Initialize(); DefineInput(0, TChain::Class()); DefineOutput(1, TList::Class()); } void AliAnalysisTaskNucleiv2SP::Initialize() { // // updating parameters in case of changes // fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kTRUE,kTRUE); fESDtrackCuts->SetMaxDCAToVertexXY(3); fESDtrackCuts->SetMaxDCAToVertexZ(2); fESDtrackCuts->SetEtaRange(-0.8,0.8); fESDtrackCutsEP = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); // Printf("Initizialize\n"); } //________________________________________________________________________ Float_t AliAnalysisTaskNucleiv2SP::GetEventPlaneForCandidate(AliESDtrack* track0, const TVector2* q,AliEventplane *pl){ // remove autocorrelations TArrayF* qx = 0x0; TArrayF* qy = 0x0; TVector2 qcopy; // if(!fEtaGap){ qx = pl->GetQContributionXArray(); qy = pl->GetQContributionYArray(); qcopy = *q; TVector2 q0; if((track0->GetID()) < qx->fN){ q0.Set(qx->At(track0->GetID()),qy->At(track0->GetID())); } qcopy = qcopy - q0; return qcopy.Phi()/2.; } //________________________________________________________________________ Float_t AliAnalysisTaskNucleiv2SP::GetPhi0Pi(Float_t phi){ // Sets the phi angle in the range 0-pi Float_t result=phi; while(result<0){ result=result+TMath::Pi(); } while(result>TMath::Pi()){ result=result-TMath::Pi(); } return result; } //==================DEFINITION OF OUTPUT OBJECTS============================== void AliAnalysisTaskNucleiv2SP::UserCreateOutputObjects() { //------------------------------------------------------- fListHist = new TList(); fListHist->SetOwner(); // IMPORTANT! if(! fHistEventMultiplicity ){ fHistEventMultiplicity = new TH1F( "fHistEventMultiplicity" , "Nb of Events" , 12 , -0.5,11.5); fHistEventMultiplicity->GetXaxis()->SetBinLabel(1,"All Events"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(2,"Events w/PV"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(3,"Events w/|Vz|<10cm"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(4,"Central Events"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(5,"Semi-Central Events"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(6,"MB Events"); //from HF fHistEventMultiplicity->GetXaxis()->SetBinLabel(7,"nEventsAnal"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(8,"nEvSelected"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(9,"nCandidatesSelected"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(10,"out of pt bounds"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(11,"mismatch lab"); fHistEventMultiplicity->GetXaxis()->SetBinLabel(12,"non valid TPC EP"); fListHist->Add(fHistEventMultiplicity); } if(! fHistTrackMultiplicity ){ fHistTrackMultiplicity = new TH2F( "fHistTrackMultiplicity", "Nb of Tracks MB Events |Vz| < 10", 25000,0, 25000,105,-0.5,104.5); fHistTrackMultiplicity->GetXaxis()->SetTitle("Number of tracks"); fHistTrackMultiplicity->GetYaxis()->SetTitle("Percentile"); fListHist->Add(fHistTrackMultiplicity); } if(! fHistTrackMultiplicityCentral ){ fHistTrackMultiplicityCentral = new TH2F( "fHistTrackMultiplicityCentral", "Nb of Tracks MB Events |Vz| < 10", 25000,0, 25000,105,-0.5,104.5); fHistTrackMultiplicityCentral->GetXaxis()->SetTitle("Number of tracks"); fHistTrackMultiplicityCentral->GetYaxis()->SetTitle("Percentile"); fListHist->Add(fHistTrackMultiplicityCentral); } if(! fHistTrackMultiplicitySemiCentral ){ fHistTrackMultiplicitySemiCentral = new TH2F( "fHistTrackMultiplicitySemiCentral", "Nb of Tracks MB Events |Vz| < 10", 25000,0, 25000,105,-0.5,104.5); fHistTrackMultiplicitySemiCentral->GetXaxis()->SetTitle("Number of tracks"); fHistTrackMultiplicitySemiCentral->GetYaxis()->SetTitle("Percentile"); fListHist->Add(fHistTrackMultiplicitySemiCentral); } if(! fHistTrackMultiplicityMB ){ fHistTrackMultiplicityMB = new TH2F( "fHistTrackMultiplicityMB", "Nb of Tracks MB Events |Vz| < 10", 25000,0, 25000,105,-0.5,104.5); fHistTrackMultiplicityMB->GetXaxis()->SetTitle("Number of tracks"); fHistTrackMultiplicityMB->GetYaxis()->SetTitle("Percentile"); fListHist->Add(fHistTrackMultiplicityMB); } if(! fhBB ){ fhBB = new TH2F( "fhBB" , "BetheBlochTPC" , 240,-6,6,1000,0,1000); fListHist->Add(fhBB); } if(! fhBBDeu ){ fhBBDeu = new TH2F( "fhBBDeu" , "BetheBlochTPC - Deuteron" , 240,-6,6,1000,0,1000); fListHist->Add(fhBBDeu); } if(!fhPtDeu ){ fhPtDeu = new TH2F( "fhPtDeu" , "pt corretto vs pt track - Deuteron" , 120,0,6,120,0,6); fListHist->Add(fhPtDeu); } if(! fhTOF ){ fhTOF = new TH2F( "fhTOF" , "Scatter Plot TOF" , 240,-6,6,1000,0,1.2); fListHist->Add(fhTOF); } if(! fhMassTOF){ fhMassTOF=new TH1F ("fhMassTOF","Particle Mass - TOF", 300,-5 ,5); fListHist->Add(fhMassTOF); } EPVzAvsCentrality = new TH2D("EPVzAvsCentrality" , "EPVzAvsCentrality" , 80, -2, 2,105,-0.5,105.5); EPVzCvsCentrality = new TH2D("EPVzCvsCentrality" , "EPVzCvsCentrality" , 80, -2, 2,105,-0.5,105.5); EPTPCvsCentrality = new TH2D("EPTPCvsCentrality" , "EPTPCvsCentrality" , 80, -2, 2,105,-0.5,105.5); EPVzvsCentrality = new TH2D("EPVzvsCentrality" , "EPVzvsCentrality" , 80, -2, 2,105,-0.5,105.5); EPTPCpvsCentrality = new TH2D("EPTPCpvsCentrality", "EPTPCpvsCentrality", 80, -2, 2,105,-0.5,105.5); EPTPCnvsCentrality = new TH2D("EPTPCnvsCentrality", "EPTPCnvsCentrality", 80, -2, 2,105,-0.5,105.5); fListHist->Add(EPVzAvsCentrality); fListHist->Add(EPVzCvsCentrality); fListHist->Add(EPTPCvsCentrality); fListHist->Add(EPVzvsCentrality); fListHist->Add(EPTPCpvsCentrality); fListHist->Add(EPTPCnvsCentrality); hEvPlaneTPCvsEvPVz05 = new TH2F("hEvPlaneTPCvsEvPVz05" ,"hEvPlaneTPCvsEvPVz05" ,100,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi()); hEvPlaneTPCvsEvPVz075 = new TH2F("hEvPlaneTPCvsEvPVz075" ,"hEvPlaneTPCvsEvPVz075" ,100,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi()); hEvPlaneTPCvsEvPVz1530 = new TH2F("hEvPlaneTPCvsEvPVz1530","hEvPlaneTPCvsEvPVz1530",100,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi()); hEvPlaneTPCvsEvPVz3050 = new TH2F("hEvPlaneTPCvsEvPVz3050","hEvPlaneTPCvsEvPVz3050",100,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi()); hEvPlaneTPCvsEvPVz2040 = new TH2F("hEvPlaneTPCvsEvPVz2040","hEvPlaneTPCvsEvPVz2040",100,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi()); hEvPlaneTPCvsEvPVz4060 = new TH2F("hEvPlaneTPCvsEvPVz4060","hEvPlaneTPCvsEvPVz4060",100,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi()); fListHist->Add(hEvPlaneTPCvsEvPVz05); fListHist->Add(hEvPlaneTPCvsEvPVz075); fListHist->Add(hEvPlaneTPCvsEvPVz1530); fListHist->Add(hEvPlaneTPCvsEvPVz3050); fListHist->Add(hEvPlaneTPCvsEvPVz2040); fListHist->Add(hEvPlaneTPCvsEvPVz4060); hCos2DeltaTPCVzAvsCentrality = new TH2F("hCos2DeltaTPCVzAvsCentrality","hCos2DeltaTPCVzAvsCentrality",100,-1.1,1.1,105,-0.5,105.5); hCos2DeltaTPCVzCvsCentrality = new TH2F("hCos2DeltaTPCVzCvsCentrality","hCos2DeltaTPCVzCvsCentrality",100,-1.1,1.1,105,-0.5,105.5); hCos2DeltaVzAVzCvsCentrality = new TH2F("hCos2DeltaVzAVzCvsCentrality","hCos2DeltaVzAVzCvsCentrality",100,-1.1,1.1,105,-0.5,105.5); hCos2DeltaVzMVzAvsCentrality = new TH2F("hCos2DeltaVzMVzAvsCentrality","hCos2DeltaVzMVzAvsCentrality",100,-1.1,1.1,105,-0.5,105.5); hCos2DeltaVzMVzCvsCentrality = new TH2F("hCos2DeltaVzMVzCvsCentrality","hCos2DeltaVzMVzCvsCentrality",100,-1.1,1.1,105,-0.5,105.5); hCos2DeltaVzATPCvsCentrality = new TH2F("hCos2DeltaVzATPCvsCentrality","hCos2DeltaVzATPCvsCentrality",100,-1.1,1.1,105,-0.5,105.5); hCos2DeltaVzCTPCvsCentrality = new TH2F("hCos2DeltaVzCTPCvsCentrality","hCos2DeltaVzCTPCvsCentrality",100,-1.1,1.1,105,-0.5,105.5); hCos2DeltaVzCVzAvsCentrality = new TH2F("hCos2DeltaVzCVzAvsCentrality","hCos2DeltaVzCVzAvsCentrality",100,-1.1,1.1,105,-0.5,105.5); fListHist->Add(hCos2DeltaTPCVzAvsCentrality); fListHist->Add(hCos2DeltaTPCVzCvsCentrality); fListHist->Add(hCos2DeltaVzAVzCvsCentrality); fListHist->Add(hCos2DeltaVzMVzAvsCentrality); fListHist->Add(hCos2DeltaVzMVzCvsCentrality); fListHist->Add(hCos2DeltaVzATPCvsCentrality); fListHist->Add(hCos2DeltaVzCTPCvsCentrality); fListHist->Add(hCos2DeltaVzCVzAvsCentrality); hQVzAQVzCvsCentrality = new TH2F("hQVzAQVzCvsCentrality","hQVzAQVzCvsCentrality",1000,-5,5,105,-0.5,105.5); fListHist->Add(hQVzAQVzCvsCentrality); Int_t binsHistReal[11] = { 105 , 120 , 100 , 100, 100 , 6 , 110 , 110 , 110 , 110 , 100}; Double_t xminHistReal[11] = {-0.5 , 0 ,-0.6 , -10, -10 , -2.5 , 0 , 0 , 0 , 0 , -3}; Double_t xmaxHistReal[11] = { 105.5, 6 , 0.6 , 10, 10 , 2.5 , TMath::Pi() , TMath::Pi(),TMath::Pi() ,TMath::Pi() , 3}; fHistRealTracks = new THnSparseF("fHistRealTracks","real tracks",11,binsHistReal,xminHistReal,xmaxHistReal); fListHist->Add(fHistRealTracks); PostData(1, fListHist); }// end UserCreateOutputObjects //====================== USER EXEC ======================== void AliAnalysisTaskNucleiv2SP::UserExec(Option_t *) { // Main loop // Called for EACH event // cout<<"AliAnalysisTaskNucleiv2SP Starting UserExec"<(event); if (!lESDevent) { AliError("Cannot get the ESD event"); return; } fHistEventMultiplicity->Fill(1); fHistEventMultiplicity->Fill(7); //_____________________________________________________ // Centrality AliCentrality *centrality = lESDevent->GetCentrality(); Float_t percentile=centrality->GetCentralityPercentile("V0M"); Int_t TrackNumber = lESDevent->GetNumberOfTracks(); fHistTrackMultiplicity->Fill(TrackNumber,percentile); //tracce per evento //______________________________________________________ // PID AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager(); AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler()); fPIDResponse=inputHandler->GetPIDResponse(); //================================================================= Float_t impactXY=-999., impactZ=-999.; Double_t pinTPC=0.,poutTPC=0.,TPCSignal=0.; ULong_t status=0; Bool_t isTPC=kFALSE; // Primary vertex cut const AliESDVertex *vtx = lESDevent->GetPrimaryVertexTracks(); if(vtx->GetNContributors()<1) { // SPD vertex cut vtx = lESDevent->GetPrimaryVertexSPD(); if(vtx->GetNContributors()<1) { Info("AliAnalysisTaskHelium3Pi","No good vertex, skip event"); return; // NO GOOD VERTEX, SKIP EVENT } } fHistEventMultiplicity->Fill(2); // analyzed events with PV if(TMath::Abs(vtx->GetZv())>10) return; fHistEventMultiplicity->Fill(3); Bool_t isSelectedCentral = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kCentral); Bool_t isSelectedSemiCentral = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kSemiCentral); Bool_t isSelectedMB = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB); fHistTrackMultiplicity->Fill(TrackNumber,percentile); Int_t eventtype = -999; // cout<<"ET 1: "<Fill(4); fHistTrackMultiplicityCentral->Fill(TrackNumber,percentile); eventtype =1; } if(isSelectedSemiCentral){ fHistEventMultiplicity->Fill(5); fHistTrackMultiplicitySemiCentral->Fill(TrackNumber,percentile); eventtype =2; } if(isSelectedMB){ if(percentile<0)return; if(percentile>=80)return; fHistEventMultiplicity->Fill(6); fHistTrackMultiplicityMB->Fill(TrackNumber,percentile); eventtype =3; } // cout<<"ET 2: "<GetEventplane(); if(!pl ){ AliError("AliAnalysisTaskSENucleiv2SP::UserExec:no eventplane! v2 analysis without eventplane not possible!\n"); fHistEventMultiplicity->Fill(12); } //Event plane from FLOW Double_t qxEPa = 0, qyEPa = 0; Double_t qxEPc = 0, qyEPc = 0; Double_t qxEP = 0, qyEP = 0; Double_t evPlAngV0A = pl->CalculateVZEROEventPlane(lESDevent, 8, 2, qxEPa, qyEPa); Double_t evPlAngV0C = pl->CalculateVZEROEventPlane(lESDevent, 9, 2, qxEPc, qyEPc); Double_t evPlAngV0 = pl->CalculateVZEROEventPlane(lESDevent,10, 2, qxEP, qyEP); Double_t Qx2 = 0, Qy2 = 0; Double_t Qx2p = 0, Qy2p = 0; Double_t Qx2n = 0, Qy2n = 0; for (Int_t iT = 0; iT < TrackNumber; iT++){ AliESDtrack* track = lESDevent->GetTrack(iT); if (!track) continue; if ((TMath::Abs(track->Eta()) > 0.8) || (track->Pt() < 0.2) || (track->GetTPCNcls() < 70) || (track->Pt() >= 20.0)) continue; if(!fESDtrackCutsEP->AcceptTrack(track)) continue; if(track->Eta()>0 && track->Eta()<0.8){ Qx2p += TMath::Cos(2*track->Phi()); Qy2p += TMath::Sin(2*track->Phi()); } if(track->Eta()<0 && track->Eta()> -0.8){ Qx2n += TMath::Cos(2*track->Phi()); Qy2n += TMath::Sin(2*track->Phi()); } Qx2 += TMath::Cos(2*track->Phi()); Qy2 += TMath::Sin(2*track->Phi()); } Double_t evPlAngTPC = TMath::ATan2(Qy2, Qx2)/2.; Double_t evPlAngTPCn = TMath::ATan2(Qy2n, Qx2n)/2.; Double_t evPlAngTPCp = TMath::ATan2(Qy2p, Qx2p)/2.; EPVzAvsCentrality ->Fill(evPlAngV0A , percentile); EPVzCvsCentrality ->Fill(evPlAngV0C , percentile); EPVzvsCentrality ->Fill(evPlAngV0 , percentile); EPTPCvsCentrality ->Fill(evPlAngTPC , percentile); EPTPCpvsCentrality ->Fill(evPlAngTPCp , percentile); EPTPCnvsCentrality ->Fill(evPlAngTPCn , percentile); if(percentile>=0 && percentile<=5){ hEvPlaneTPCvsEvPVz05 ->Fill(evPlAngTPC,evPlAngV0); cout<<"Centrality "<=0 && percentile<=7.5) hEvPlaneTPCvsEvPVz075 ->Fill(evPlAngTPC,evPlAngV0); if(percentile>=15 && percentile<=30) hEvPlaneTPCvsEvPVz1530->Fill(evPlAngTPC,evPlAngV0); if(percentile>=30 && percentile<50) hEvPlaneTPCvsEvPVz3050->Fill(evPlAngTPC,evPlAngV0); if(percentile>=20 && percentile<=40) hEvPlaneTPCvsEvPVz2040->Fill(evPlAngTPC,evPlAngV0); if(percentile>=40 && percentile<=60) hEvPlaneTPCvsEvPVz4060->Fill(evPlAngTPC,evPlAngV0); // For TPC, V0M, V0c and V0A resolution hCos2DeltaTPCVzAvsCentrality->Fill(TMath::Cos(2.*(evPlAngTPC-evPlAngV0A)), percentile); hCos2DeltaTPCVzCvsCentrality->Fill(TMath::Cos(2.*(evPlAngTPC-evPlAngV0C)), percentile); hCos2DeltaVzAVzCvsCentrality->Fill(TMath::Cos(2.*(evPlAngV0A-evPlAngV0C)), percentile); hCos2DeltaVzMVzAvsCentrality->Fill(TMath::Cos(2.*(evPlAngV0 -evPlAngV0A)), percentile); hCos2DeltaVzMVzCvsCentrality->Fill(TMath::Cos(2.*(evPlAngV0 -evPlAngV0C)), percentile); hCos2DeltaVzATPCvsCentrality->Fill(TMath::Cos(2.*(evPlAngV0A-evPlAngTPC)), percentile); hCos2DeltaVzCTPCvsCentrality->Fill(TMath::Cos(2.*(evPlAngV0C-evPlAngTPC)), percentile); hCos2DeltaVzCVzAvsCentrality->Fill(TMath::Cos(2.*(evPlAngV0C-evPlAngV0A)), percentile); //Scalar Product Double_t QV0AQV0C = qxEPa * qxEPc + qyEPa*qyEPc; hQVzAQVzCvsCentrality->Fill(QV0AQV0C,percentile); //==================================================================================================================== // To remove auto-correlation TVector2 *q = 0x0; q = pl->GetQVector(); Int_t isTOF=0; Int_t isoutTPC=0; Float_t deutExp = -999; Double_t pullTPC = -999; Float_t deltaphiTPC = -3; Float_t deltaphiV0 = -3; Float_t deltaphiV0A = -3; Float_t deltaphiV0C = -3; Float_t uqV0A = -999; Float_t uqV0C = -999; for (Int_t j=0; jGetTrack(j); if (!fESDtrackCuts->AcceptTrack(esdtrack)) continue; status = (ULong_t)esdtrack->GetStatus(); isTPC = (((status) & AliESDtrack::kTPCin) != 0); isTOF = ((((status) & AliESDtrack::kTOFout) != 0) && (((status) & AliESDtrack::kTIME) != 0)); isoutTPC = (((status) & AliESDtrack::kTPCout) != 0); TPCSignal=esdtrack->GetTPCsignal(); if (TPCSignal<10)continue; if (TPCSignal>1000)continue; if (!isTPC)continue; if(!esdtrack->GetTPCInnerParam())continue; AliExternalTrackParam trackIn(*esdtrack->GetInnerParam()); pinTPC= trackIn.GetP(); fhBB->Fill(pinTPC*esdtrack->GetSign(),TPCSignal); if(isTOF){ if(!esdtrack->GetOuterParam())continue; AliExternalTrackParam trackOut(*esdtrack->GetOuterParam()); poutTPC = trackOut.GetP(); fhTOF->Fill(poutTPC*esdtrack->GetSign(),(esdtrack->GetIntegratedLength()/esdtrack->GetTOFsignal())/2.99792458e-2); } esdtrack->GetImpactParameters(impactXY, impactZ); deutExp = -999; deutExp = AliExternalTrackParam::BetheBlochAleph(pinTPC/(0.938*2),1.45802,27.4992,4.00313e-15,2.48485,8.31768); pullTPC = (TPCSignal - deutExp)/(0.07*deutExp); Double_t p = esdtrack->P(); Double_t tof = esdtrack->GetTOFsignal()-fPIDResponse->GetTOFResponse().GetStartTime(p); Double_t tPhi = esdtrack->Phi(); Float_t beta = 0; Float_t gamma = 0; Float_t deltaMass = 0; if(TMath::Abs(pinTPC) < 6 && TMath::Abs(pullTPC) < 3){ fhBBDeu->Fill(pinTPC*esdtrack->GetSign(),TPCSignal); deltaMass = 0; if(tof > 0 && pinTPC > 1.){ beta = esdtrack->GetIntegratedLength()/(tof * 2.99792457999999984e-02); gamma = 1/TMath::Sqrt(1 - beta*beta); deltaMass = poutTPC/TMath::Sqrt(gamma*gamma - 1) - 1.8756; fhMassTOF->Fill(deltaMass); } // Event Plane //Remove AutoCorrelation evPlAngTPC = GetEventPlaneForCandidate(esdtrack,q,pl); deltaphiTPC=2*GetPhi0Pi(tPhi-evPlAngTPC); deltaphiV0 =2*GetPhi0Pi(tPhi-evPlAngV0); deltaphiV0A=2*GetPhi0Pi(tPhi-evPlAngV0A); deltaphiV0C=2*GetPhi0Pi(tPhi-evPlAngV0C); // SP uqV0A = TMath::Cos(2*tPhi)*qxEPa+TMath::Sin(2*tPhi)*qyEPa; uqV0C = TMath::Cos(2*tPhi)*qxEPc+TMath::Sin(2*tPhi)*qyEPc; Double_t vecHistReal[11] = {percentile, esdtrack->Pt(), deltaMass , uqV0A , uqV0C , esdtrack->GetSign(),deltaphiTPC,deltaphiV0,deltaphiV0A,deltaphiV0C , impactXY}; fHistRealTracks->Fill(vecHistReal); } } //track PostData(1, fListHist); } //end userexec //________________________________________________________________________ void AliAnalysisTaskNucleiv2SP::Terminate(Option_t *) { // Draw result to the screen // Called once at the end of the query }