#include <TFile.h>
#include <TMath.h>
#include <TH1.h>
+#include <TH2.h>
+#include <TH3.h>
#include <TTree.h>
#include <TRandom.h>
#include <THnSparse.h>
#include "AliLeadingV0Correlation.h"
-#define CorrBinsX 24
-#define CorrBinsY 26
+#define CorrBinsX 240
+#define CorrBinsY 260
Double_t PI =TMath::Pi();
fMassCutLa (0),
fTriglow (0),
fTrighigh (0),
+ fTPCClusters (0),
+ fTPCfindratio (0),
fUseChargeHadrons (kTRUE),
fPtMin (0.15),
fOutputList (0),
fHistMCGenK0 (0),
fHistMCGenLAM (0),
fHistMCGenALAM (0),
+ fHistMCGenLAMXIPLS (0),
+ fHistMCGenLAMXI (0),
fHistReconstK0 (0),
fHistReconstLA (0),
fHistReconstALA (0),
fHistMCAssoK0 (0),
fHistMCAssoLA (0),
fHistMCAssoALA (0),
+ fHistMCAssoLAXI (0),
+ fHistMCAssoALAXiPlus (0),
fHistReconstSib (0),
fHistReconstMix (0),
+ fHistReconstSibGEN (0),
+ fHistReconstMixGEN (0),
+ fHistReconstSibASO (0),
+ fHistReconstMixASO (0),
+ fHistReconstSibFEED (0),
+ fHistReconstMixFEED (0),
fHistTriggerSib (0),
- fHistTriggerMix (0)
+ fHistTriggerMix (0),
+ fHistTriggerSibGEN (0),
+ fHistTriggerMixGEN (0),
+ fHistTriggerSibASO (0),
+ fHistTriggerMixASO (0)
{
for(Int_t iBin = 0; iBin < 100; iBin++){
fMassCutLa (0),
fTriglow (0),
fTrighigh (0),
+ fTPCClusters (0),
+ fTPCfindratio (0),
fUseChargeHadrons (kTRUE),
fPtMin (0.15),
fOutputList (0),
fHistMCGenK0 (0),
fHistMCGenLAM (0),
fHistMCGenALAM (0),
+ fHistMCGenLAMXIPLS (0),
+ fHistMCGenLAMXI (0),
fHistReconstK0 (0),
fHistReconstLA (0),
fHistReconstALA (0),
fHistMCAssoK0 (0),
fHistMCAssoLA (0),
fHistMCAssoALA (0),
+ fHistMCAssoLAXI (0),
+ fHistMCAssoALAXiPlus (0),
fHistReconstSib (0),
fHistReconstMix (0),
+ fHistReconstSibGEN (0),
+ fHistReconstMixGEN (0),
+ fHistReconstSibASO (0),
+ fHistReconstMixASO (0),
+ fHistReconstSibFEED (0),
+ fHistReconstMixFEED (0),
fHistTriggerSib (0),
- fHistTriggerMix (0)
+ fHistTriggerMix (0),
+ fHistTriggerSibGEN (0),
+ fHistTriggerMixGEN (0),
+ fHistTriggerSibASO (0),
+ fHistTriggerMixASO (0)
+
{
for(Int_t iBin = 0; iBin < 100; iBin++){
fOutputList = new TList();
fOutputList->SetOwner();
- fHist_Mult_B4_Trg_Sel = new TH1F("fHist_Mult_B4_Trg_Sel","Tracks per event;Nbr of Tracks;Events", 1000, 0, 10000);
+ fHist_Mult_B4_Trg_Sel = new TH2F("fHist_Mult_B4_Trg_Sel","Tracks per event;Nbr of Tracks;Events", 1000, 0, 10000, 1000, 0, 10000);
fOutputList->Add(fHist_Mult_B4_Trg_Sel);
- fHist_Mult_Af_Trg_Sel = new TH1F("fHist_Mult_Af_Trg_Sel","Tracks per event;Nbr of Tracks;Events",1000, 0, 10000);
+ fHist_Mult_Af_Trg_Sel = new TH2F("fHist_Mult_Af_Trg_Sel","Tracks per event;Nbr of Tracks;Events",1000, 0, 10000, 1000, 0, 10000);
fOutputList->Add(fHist_Mult_Af_Trg_Sel);
- fHist_Mult_PVz_Cut = new TH1F("fHist_Mult_PVz_Cut","Tracks per event;Nbr of Tracks;Events",1000, 0, 10000);
+ fHist_Mult_PVz_Cut = new TH2F("fHist_Mult_PVz_Cut","Tracks per event;Nbr of Tracks;Events",1000, 0, 10000, 1000, 0, 10000);
fOutputList->Add(fHist_Mult_PVz_Cut);
- fHist_Mult_SPD_PVz = new TH1F("fHist_Mult_SPD_PVz","Tracks per event;Nbr of Tracks;Events",1000, 0, 10000);
+ fHist_Mult_SPD_PVz = new TH2F("fHist_Mult_SPD_PVz","Tracks per event;Nbr of Tracks;Events",1000, 0, 10000, 1000, 0, 10000);
fOutputList->Add(fHist_Mult_SPD_PVz);
- fHist_Mult_SPD_PVz_Pileup = new TH1F("fHist_Mult_SPD_PVz_Pileup","Tracks per event;Nbr of Tracks;Events",1000, 0, 10000);
+ fHist_Mult_SPD_PVz_Pileup = new TH2F("fHist_Mult_SPD_PVz_Pileup","Tracks per event;Nbr of Tracks;Events",1000, 0, 10000, 1000, 0, 10000);
fOutputList->Add(fHist_Mult_SPD_PVz_Pileup);
fHistPVx = new TH1F("fHistPVx","PV x position;Nbr of Evts;x", 200, -0.5, 0.5);
fOutputList->Add(fHistPVzAnalysis);
//---------------------------------------------- Events histograms -----------------------------------------------------//
- //0-PVx,1-PVy,2-PVz,3-MULT,4-CENT
- const Int_t ndimsEV = 3;
- Int_t binsEV[ndimsEV] = { 200, 100,100};
- Double_t xminEV[ndimsEV] = {-20 , 0, 0};
- Double_t xmaxEV[ndimsEV] = { 20 , 300,100};
- fHistEventViceGen= new THnSparseD("fHistEventViceGen", "fHistEventViceGen", ndimsEV, binsEV, xminEV, xmaxEV);
+ fHistEventViceGen= new TH2F("fHistEventViceGen", "fHistEventViceGen", 200, -20, 20, 10,0,1000);
fOutputList->Add(fHistEventViceGen);
- fHistEventViceReconst= new THnSparseD("fHistEventViceReconst", "fHistEventViceReconst", ndimsEV, binsEV, xminEV, xmaxEV);
+ fHistEventViceReconst= new TH2F("fHistEventViceReconst", "fHistEventViceReconst", 200, -20, 20, 10,0,1000);
fOutputList->Add(fHistEventViceReconst);
- //0-YK0,1-Pt
- const Int_t ndimsGenMC = 3;
- Int_t binsGenMCLA[ndimsGenMC] = {120, 140,100};
- Double_t xminGenMCLA[ndimsGenMC] = { 0,1.06, 0};
- Double_t xmaxGenMCLA[ndimsGenMC] = { 6, 1.2,100};
-
- Int_t binsGenMCK0[ndimsGenMC] = {120, 200,100};
- Double_t xminGenMCK0[ndimsGenMC] = { 0, 0.4, 0};
- Double_t xmaxGenMCK0[ndimsGenMC] = { 6, 0.6,100};
-
- fHistMCGenLAM = new THnSparseD("fHistMCGenLAM" , "fHistMCGenLAM" , ndimsGenMC, binsGenMCLA, xminGenMCLA, xmaxGenMCLA);
+ fHistMCGenLAM = new TH2F("fHistMCGenLAM" , "fHistMCGenLAM" ,140,1.06,1.2, 120, 0, fTriglow);
fOutputList->Add(fHistMCGenLAM);
- fHistMCGenALAM = new THnSparseD("fHistMCGenALAM", "fHistMCGenALAM", ndimsGenMC, binsGenMCLA, xminGenMCLA, xmaxGenMCLA);
+ fHistMCGenALAM = new TH2F("fHistMCGenALAM", "fHistMCGenALAM",140,1.06,1.2, 120, 0, fTriglow);
fOutputList->Add(fHistMCGenALAM);
- fHistMCGenK0 = new THnSparseD("fHistMCGenK0" , "fHistMCGenK0" , ndimsGenMC, binsGenMCK0, xminGenMCK0, xmaxGenMCK0);
+ fHistMCGenK0 = new TH2F("fHistMCGenK0" , "fHistMCGenK0" ,200,0.4,0.6, 120, 0, fTriglow);
fOutputList->Add(fHistMCGenK0);
- const Int_t ndims=3; //MK0 mLA MALA PT cent
- Int_t binsK0[ndims] = { 200, 120 ,100};
- Double_t xminK0[ndims] = { 0.4, 0 , 0};
- Double_t xmaxK0[ndims] = { 0.6, 6 ,100};
-
- Int_t binsLA[ndims] = { 140, 120 ,100};
- Double_t xminLA[ndims] = { 1.06, 0 , 0};
- Double_t xmaxLA[ndims] = { 1.2, 6 ,100};
+ fHistMCGenLAMXIPLS = new TH2F("fHistMCGenLAMXIPLS", "fHistMCGenLAMXIPLS",140,1.06,1.2, 120, 0, fTriglow);
+ fOutputList->Add(fHistMCGenLAMXIPLS);
+
+ fHistMCGenLAMXI = new TH2F("fHistMCGenLAMXI" , "fHistMCGenLAMXI" ,140,1.06,1.2, 120, 0, fTriglow);
+ fOutputList->Add(fHistMCGenLAMXI);
+ //New dimension for feed down corection
- fHistReconstK0= new THnSparseD("fHistReconstK0" , "fHistReconstK0", ndims, binsK0, xminK0, xmaxK0);
+ const Int_t ndimsK0 = 4;
+ Int_t binsK0[ndimsK0] = {200, 120,500,1000};
+ Double_t xminK0[ndimsK0] = {0.4, 0, 0,0.99};
+ Double_t xmaxK0[ndimsK0] = {0.6, fTriglow, 10, 1};
+
+ const Int_t ndimsLA = 4;
+ Int_t binsLA[ndimsLA] = { 140, 120,500,1000};
+ Double_t xminLA[ndimsLA] = {1.06, 0, 0,0.99};
+ Double_t xmaxLA[ndimsLA] = { 1.2, fTriglow, 10, 1};
+
+ fHistReconstK0= new THnSparseD("fHistReconstK0" , "fHistReconstK0",ndimsK0,binsK0,xminK0,xmaxK0);
fHistReconstK0->Sumw2();
fOutputList->Add(fHistReconstK0);
- fHistReconstLA= new THnSparseD("fHistReconstLA" , "fHistReconstLA", ndims, binsLA, xminLA, xmaxLA);
+ fHistReconstLA= new THnSparseD("fHistReconstLA" , "fHistReconstLA",ndimsLA,binsLA,xminLA,xmaxLA);
fHistReconstLA->Sumw2();
fOutputList->Add(fHistReconstLA);
- fHistReconstALA= new THnSparseD("fHistReconstALA", "fHistReconstALA", ndims, binsLA, xminLA, xmaxLA);
+ fHistReconstALA= new THnSparseD("fHistReconstALA", "fHistReconstALA",ndimsLA,binsLA,xminLA,xmaxLA);
fHistReconstALA->Sumw2();
fOutputList->Add(fHistReconstALA);
- fHistMCAssoK0= new THnSparseD("fHistMCAssoK0" , "fHistMCAssoK0" , ndims, binsK0, xminK0, xmaxK0);
+ fHistMCAssoK0= new THnSparseD("fHistMCAssoK0" , "fHistMCAssoK0" ,ndimsK0,binsK0,xminK0,xmaxK0);
fHistMCAssoK0->Sumw2();
fOutputList->Add(fHistMCAssoK0);
- fHistMCAssoLA= new THnSparseD("fHistMCAssoLA" , "fHistMCAssoLA" , ndims, binsLA, xminLA, xmaxLA);
+ fHistMCAssoLA= new THnSparseD("fHistMCAssoLA" , "fHistMCAssoLA" ,ndimsLA,binsLA,xminLA,xmaxLA);
fHistMCAssoLA->Sumw2();
fOutputList->Add(fHistMCAssoLA);
- fHistMCAssoALA= new THnSparseD("fHistMCAssoALA" , "fHistMCAssoALA" , ndims, binsLA, xminLA, xmaxLA);
+ fHistMCAssoALA= new THnSparseD("fHistMCAssoALA" , "fHistMCAssoALA" , ndimsLA,binsLA,xminLA,xmaxLA);
fHistMCAssoALA->Sumw2();
fOutputList->Add(fHistMCAssoALA);
+ fHistMCAssoLAXI= new THnSparseD("fHistMCAssoLAXI" , "fHistMCAssoLAXI" , ndimsLA,binsLA,xminLA,xmaxLA);
+ fHistMCAssoLAXI->Sumw2();
+ fOutputList->Add(fHistMCAssoLAXI);
+
+ fHistMCAssoALAXiPlus= new THnSparseD("fHistMCAssoALAXiPlus" , "fHistMCAssoALAXiPlus" , ndimsLA,binsLA,xminLA,xmaxLA);
+ fHistMCAssoALAXiPlus->Sumw2();
+ fOutputList->Add(fHistMCAssoALAXiPlus);
+
//--------------------------------------------Correlation Histos -----------------------------------------------------//
//0-pTK0,1-PhiK0,2-EtaK0,3-DPhiK0,4-DEtaK0,5-TYPE,6-CutSet
- const Int_t ndimsv0CORR = 7;
- Int_t binsv0CORR[ndimsv0CORR] = {120, 200, 200,CorrBinsX, CorrBinsY,4,100};
+ const Int_t ndimsv0CORR = 8;
+ Int_t binsv0CORR[ndimsv0CORR] = {120, 200, 200,CorrBinsX, CorrBinsY,4,500,1000};
- Double_t xminv0CORR[ndimsv0CORR] = { 0, 0,-fTrackEtaCut, -PI/2,-2*fTrackEtaCut,0,0};
+ Double_t xminv0CORR[ndimsv0CORR] = { 0, 0,-fTrackEtaCut, -PI/2,-2*fTrackEtaCut,0, 0,0.99};
- Double_t xmaxv0CORR[ndimsv0CORR] = { 6,2*PI, fTrackEtaCut, 3*PI/2, 2*fTrackEtaCut,4,100};
+ Double_t xmaxv0CORR[ndimsv0CORR] = { fTriglow,2*PI, fTrackEtaCut, 3*PI/2, 2*fTrackEtaCut,4, 10, 1};
fHistReconstSib= new THnSparseD("fHistReconstSib", "fHistReconstSib", ndimsv0CORR, binsv0CORR, xminv0CORR, xmaxv0CORR);
fHistReconstSib->Sumw2();
fHistReconstMix->Sumw2();
fOutputList->Add(fHistReconstMix);
- //0-pt,1-PHI,2-Eta
- const Int_t triggerdims =2;
- Int_t binsTrig[triggerdims] ={ 100, 100};
- Double_t xminTrig[triggerdims]={ fTriglow, 0};
- Double_t xmaxTrig[triggerdims]={ fTrighigh, 100};
+ fHistReconstSibGEN= new THnSparseD("fHistReconstSibGEN", "fHistReconstSibGEN", ndimsv0CORR, binsv0CORR, xminv0CORR, xmaxv0CORR);
+ fHistReconstSibGEN->Sumw2();
+ fOutputList->Add(fHistReconstSibGEN);
- fHistTriggerSib= new THnSparseD("fHistTriggerSib", "fHistTriggerSib", triggerdims, binsTrig, xminTrig, xmaxTrig);
+ fHistReconstMixGEN= new THnSparseD("fHistReconstMixGEN", "fHistReconstMixGEN", ndimsv0CORR, binsv0CORR, xminv0CORR, xmaxv0CORR);
+ fHistReconstMixGEN->Sumw2();
+ fOutputList->Add(fHistReconstMixGEN);
+
+ fHistReconstSibASO= new THnSparseD("fHistReconstSibASO", "fHistReconstSibASO", ndimsv0CORR, binsv0CORR, xminv0CORR, xmaxv0CORR);
+ fHistReconstSibASO->Sumw2();
+ fOutputList->Add(fHistReconstSibASO);
+
+ fHistReconstMixASO= new THnSparseD("fHistReconstMixASO", "fHistReconstMixASO", ndimsv0CORR, binsv0CORR, xminv0CORR, xmaxv0CORR);
+ fHistReconstMixASO->Sumw2();
+ fOutputList->Add(fHistReconstMixASO);
+
+ fHistReconstSibFEED= new THnSparseD("fHistReconstSibFEED", "fHistReconstSibFEED", ndimsv0CORR, binsv0CORR, xminv0CORR, xmaxv0CORR);
+ fHistReconstSibFEED->Sumw2();
+ fOutputList->Add(fHistReconstSibFEED);
+
+ fHistReconstMixFEED= new THnSparseD("fHistReconstMixFEED", "fHistReconstMixFEED", ndimsv0CORR, binsv0CORR, xminv0CORR, xmaxv0CORR);
+ fHistReconstMixFEED->Sumw2();
+ fOutputList->Add(fHistReconstMixFEED);
+
+
+ fHistTriggerSib= new TH3F("fHistTriggerSib", "fHistTriggerSib", 100, fTriglow, fTrighigh,200,0,2*PI,200,-fTrackEtaCut,fTrackEtaCut);
fHistTriggerSib->Sumw2();
fOutputList->Add(fHistTriggerSib);
- fHistTriggerMix= new THnSparseD("fHistTriggerMix", "fHistTriggerMix", triggerdims, binsTrig, xminTrig, xmaxTrig);
+ fHistTriggerMix= new TH1F("fHistTriggerMix", "fHistTriggerMix", 100, fTriglow, fTrighigh);
fHistTriggerMix->Sumw2();
fOutputList->Add(fHistTriggerMix);
+ fHistTriggerSibGEN= new TH3F("fHistTriggerSibGEN", "fHistTriggerSibGEN", 100, fTriglow, fTrighigh,200,0,2*PI,200,-fTrackEtaCut,fTrackEtaCut);
+ fHistTriggerSibGEN->Sumw2();
+ fOutputList->Add(fHistTriggerSibGEN);
+
+ fHistTriggerMixGEN= new TH1F("fHistTriggerMixGEN", "fHistTriggerMixGEN", 100, fTriglow, fTrighigh);
+ fHistTriggerMixGEN->Sumw2();
+ fOutputList->Add(fHistTriggerMixGEN);
+
+ fHistTriggerSibASO= new TH3F("fHistTriggerSibASO", "fHistTriggerSibASO", 100, fTriglow, fTrighigh,200,0,2*PI,200,-fTrackEtaCut,fTrackEtaCut);
+ fHistTriggerSibASO->Sumw2();
+ fOutputList->Add(fHistTriggerSibASO);
+
+ fHistTriggerMixASO= new TH1F("fHistTriggerMixASO", "fHistTriggerMixASO", 100, fTriglow, fTrighigh);
+ fHistTriggerMixASO->Sumw2();
+ fOutputList->Add(fHistTriggerMixASO);
//----------------------------------------------Event Pool-----------------------------------------------------//
fPoolMgr = new AliEventPoolManager(fPoolMaxNEvents, fPoolMinNTracks, fNCentBins, fCentBins, fNzVtxBins, fZvtxBins);
fAODEvent = dynamic_cast<AliAODEvent*>(inEvMain->GetEvent());
if(!fAODEvent) return;
- Int_t multiplicity = -1;
- Int_t multiplicityMC = -1;
- Double_t MultipOrCent = -1;
- Double_t CentPecentMC = -1;
- Double_t CentPecentAfterPhySel = -1;
- Int_t nTrackMultiplicity = -1;
- Float_t lPrimaryTrackMultiplicity = 0;
-
- nTrackMultiplicity = (InputEvent())->GetNumberOfTracks();
- for (Int_t itrack = 0; itrack<nTrackMultiplicity; itrack++) {
- AliAODTrack* track = fAODEvent->GetTrack(itrack);
- if(!fAnalysisMC) if (track->TestFilterBit(fFilterBit)) lPrimaryTrackMultiplicity++;
- lPrimaryTrackMultiplicity++;
- }
+ Int_t ltrackMultiplicity = 0;
+ Int_t lrefMultiplicity = 0;
- fHist_Mult_B4_Trg_Sel->Fill(lPrimaryTrackMultiplicity);
+ //------------------------------------------------
+ // Before Physics Selection
+ //------------------------------------------------
+ ltrackMultiplicity = (InputEvent())->GetNumberOfTracks();
+ AliAODHeader * header = dynamic_cast<AliAODHeader*>(fAODEvent->GetHeader());
+ if(!header) AliFatal("Not a standard AOD");
+ lrefMultiplicity = header->GetRefMultiplicity();
- if(fcollidingSys=="PbPb"){
- AliCentrality *centralityObjMC = fAODEvent->GetHeader()->GetCentralityP();
- CentPecentMC = centralityObjMC->GetCentralityPercentileUnchecked("V0M");
- if ((CentPecentMC < 0.)||(CentPecentMC > 90)) return;
- }
+ fHist_Mult_B4_Trg_Sel->Fill(ltrackMultiplicity,lrefMultiplicity);
Double_t * CentBins = fCentBins;
Double_t poolmin = CentBins[0];
// Efficency denomenator comes before the physics selection
//----------------------------------------------------------
- Double_t dimEventviceMC[3];
+ Double_t dimEventviceMC[2];
if(fAnalysisMC) //Efficency denomenator comes before the physics selection
{
AliAODMCHeader *aodMCheader = (AliAODMCHeader*)fAODEvent->FindListObject(AliAODMCHeader::StdBranchName());
+ if(!aodMCheader) return;
Float_t mcZv = aodMCheader->GetVtxZ();
if (TMath::Abs(mcZv) >= fpvzcut) return;
Int_t nMCTracks = mcArray->GetEntriesFast();
- if(fcollidingSys=="PbPb") multiplicityMC=CentPecentMC;
- if(fcollidingSys=="PP") multiplicityMC=nMCTracks;
-
dimEventviceMC[1]=nMCTracks;
- dimEventviceMC[2]=CentPecentMC;
- fHistEventViceGen->Fill(dimEventviceMC);
+ fHistEventViceGen->Fill(dimEventviceMC[0],dimEventviceMC[1]);
+
+ TObjArray *selectedTracksLeadingMC=fAnalyseUE->FindLeadingObjects(mcArray);
+ if(!selectedTracksLeadingMC) return;
+ selectedTracksLeadingMC->SetOwner(kTRUE);
+
+ TObjArray * selectedV0sMC =new TObjArray;
+ selectedV0sMC->SetOwner(kTRUE);
+
+ TObjArray * selectedV0sMCXI =new TObjArray;
+ selectedV0sMCXI->SetOwner(kTRUE);
for (Int_t iMC = 0; iMC<nMCTracks; iMC++)
{
if (!mcTrack) continue;
// Charged track Generated level
Double_t mcTrackPt = mcTrack->Pt();
- if ((mcTrackPt<fPtMin)||(mcTrackPt>6.0)) continue;
+ if ((mcTrackPt<fPtMin)||(mcTrackPt>fTriglow)) continue;
+ Double_t mcTrackEta = mcTrack->Eta();
+ Double_t mcTrackPhi = mcTrack->Phi();
Bool_t TrIsPrime = mcTrack->IsPhysicalPrimary();
Bool_t TrPtMin = mcTrackPt>fPtMin;
Bool_t TrCharge = (mcTrack->Charge())!=0;
Double_t mcRapidity = mcTrack->Y();
Bool_t V0RapMax = TMath::Abs(mcRapidity)<fRapidityCut;
+ Bool_t V0EtaMax = TMath::Abs(mcTrackEta)<fTrackEtaCut;
Double_t mcMass = mcTrack->M();
- Double_t mcK0[3] = {mcTrackPt,mcMass,multiplicityMC};
- Double_t mcLa[3] = {mcTrackPt,mcMass,multiplicityMC};
- Double_t mcAl[3] = {mcTrackPt,mcMass,multiplicityMC};
+ Double_t mcK0[3] = {mcMass,mcTrackPt,static_cast<Double_t>(nMCTracks)};
+ Double_t mcLa[3] = {mcMass,mcTrackPt,static_cast<Double_t>(nMCTracks)};
+ Double_t mcAl[3] = {mcMass,mcTrackPt,static_cast<Double_t>(nMCTracks)};
+ Int_t myTrackMotherLabel = mcTrack->GetMother();
- Bool_t IsK0 = mcPartPdg==310;
- if (IsK0 && V0RapMax && TrIsPrime)
- {
- fHistMCGenK0->Fill(mcK0);
- }
+ AliAODMCParticle *mcMother = (AliAODMCParticle*)mcArray->At(myTrackMotherLabel);
+ if (!mcMother) continue;
+ Int_t MotherPdg = mcMother->GetPdgCode();
+ Bool_t IsK0 = mcPartPdg==310;
+ Bool_t IsLambda = mcPartPdg==3122;
+ Bool_t IsAntiLambda = mcPartPdg==-3122;
- Bool_t IsLambda = mcPartPdg==3122;
- if (IsLambda && V0RapMax && TrIsPrime)
- {
- fHistMCGenLAM->Fill(mcLa);
- }
+ Bool_t IsXImin =MotherPdg== 3312;
+ Bool_t IsXIPlus =MotherPdg==-3312;
+ Bool_t IsXizero =MotherPdg== 3322;
+ Bool_t IsOmega =MotherPdg== 3334;
- Bool_t IsAntiLambda = mcPartPdg==-3122;
- if (IsAntiLambda && V0RapMax && TrIsPrime)
- {
- fHistMCGenALAM->Fill(mcAl);
- }
+ switch (fCase) {
+ case 1:
+
+ if (IsK0)
+ {
+ fHistMCGenK0->Fill(mcK0[0],mcK0[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,1,0,0));
+ }
+
+ if (IsLambda)
+ {
+ fHistMCGenLAM->Fill(mcLa[0],mcLa[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,2,0,0));
+ }
+
+ if (IsAntiLambda)
+ {
+ fHistMCGenALAM->Fill(mcAl[0],mcAl[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,3,0,0));
+ }
+
+ if (IsLambda && (IsXizero || IsXImin))
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,1,0,0));
+ fHistMCGenLAMXI->Fill(mcLa[0],mcLa[1]);
+ }
+
+ if (IsLambda && IsOmega)
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,2,0,0));
+ }
+
+ if (IsAntiLambda && IsXIPlus)
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,3,0,0));
+ fHistMCGenLAMXIPLS->Fill(mcAl[0],mcAl[1]);
+ }
+
+ break;
+
+ case 2:
+
+ if (IsK0 && V0RapMax && TrIsPrime)
+ {
+ fHistMCGenK0->Fill(mcK0[0],mcK0[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,1,0,0));
+ }
+
+ if (IsLambda && V0RapMax && TrIsPrime)
+ {
+ fHistMCGenLAM->Fill(mcLa[0],mcLa[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,2,0,0));
+ }
+
+ if (IsAntiLambda && V0RapMax && TrIsPrime)
+ {
+ fHistMCGenALAM->Fill(mcAl[0],mcAl[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,3,0,0));
+ }
+
+ if (IsLambda && V0RapMax && (IsXizero || IsXImin))
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,1,0,0));
+ fHistMCGenLAMXI->Fill(mcLa[0],mcLa[1]);
+ }
+
+ if (IsLambda && V0RapMax && IsOmega)
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,2,0,0));
+ }
+
+ if (IsAntiLambda && V0RapMax && IsXIPlus)
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,3,0,0));
+ fHistMCGenLAMXIPLS->Fill(mcAl[0],mcAl[1]);
+ }
+
+ break;
+
+ case 3:
+
+ if (IsK0 && V0EtaMax && TrIsPrime)
+ {
+ fHistMCGenK0->Fill(mcK0[0],mcK0[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,1,0,0));
+ }
+
+ if (IsLambda && V0EtaMax && TrIsPrime)
+ {
+ fHistMCGenLAM->Fill(mcLa[0],mcLa[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,2,0,0));
+ }
+
+ if (IsAntiLambda && V0EtaMax && TrIsPrime)
+ {
+ fHistMCGenALAM->Fill(mcAl[0],mcAl[1]);
+ selectedV0sMC->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,3,0,0));
+ }
+
+ if (IsLambda && V0EtaMax && (IsXizero || IsXImin))
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,1,0,0));
+ fHistMCGenLAMXI->Fill(mcLa[0],mcLa[1]);
+ }
+
+ if (IsLambda && V0EtaMax && IsOmega)
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,2,0,0));
+ }
+
+ if (IsAntiLambda && V0EtaMax && IsXIPlus)
+ {
+ selectedV0sMCXI->Add(new V0Correlationparticle(mcTrackEta,mcTrackPhi,mcTrackPt,3,0,0));
+ fHistMCGenLAMXIPLS->Fill(mcAl[0],mcAl[1]);
+ }
+ break;
+
+ default:
+ AliInfo(Form("No case selected"));
+ break;
+ }
}
+
+ FillCorrelationSibling(nMCTracks,selectedTracksLeadingMC,selectedV0sMC,fHistTriggerSibGEN,fHistReconstSibGEN);
+ FillCorrelationMixing(nMCTracks,mcZv,poolmax,poolmin,selectedTracksLeadingMC,selectedV0sMC,fHistTriggerMixGEN,fHistReconstMixGEN);
+
+ FillCorrelationSibling(nMCTracks,selectedTracksLeadingMC,selectedV0sMCXI,0,fHistReconstSibFEED);
+ FillCorrelationMixing(nMCTracks,mcZv,poolmax,poolmin,selectedTracksLeadingMC,selectedV0sMCXI,0,fHistReconstMixFEED);
}
// End Loop over MC condition
// Physics Selection
//------------------------------------------------
UInt_t maskIsSelected = inEvMain->IsEventSelected();
- Bool_t isSelected = ((maskIsSelected & AliVEvent::kMB)== AliVEvent::kMB
- || (maskIsSelected & AliVEvent::kCentral)== AliVEvent::kCentral
- || (maskIsSelected & AliVEvent::kSemiCentral)== AliVEvent::kSemiCentral);
+ Bool_t isSelected = ((maskIsSelected & AliVEvent::kMB)== AliVEvent::kMB);
if (!isSelected) return;
//------------------------------------------------
// After Trigger Selection
//------------------------------------------------
- fHist_Mult_Af_Trg_Sel->Fill(lPrimaryTrackMultiplicity);
+ fHist_Mult_Af_Trg_Sel->Fill(ltrackMultiplicity,lrefMultiplicity);
//------------------------------------------------
// Getting: Primary Vertex + MagField Info
Double_t tPrimaryVtxPosition[3];
Double_t lV0Position[3];
-
- if(fcollidingSys=="PbPb"){ //
- AliCentrality *centralityObj = fAODEvent->GetHeader()->GetCentralityP();
- CentPecentAfterPhySel = centralityObj->GetCentralityPercentileUnchecked("V0M");
- if ((CentPecentAfterPhySel < 0.)||(CentPecentAfterPhySel > 90)) return;
- } //
-
AliAODVertex *lPrimaryBestAODVtx = fAODEvent->GetPrimaryVertex();
if (!lPrimaryBestAODVtx) return;
// get the best primary vertex available for the event
lPrimaryBestAODVtx->GetXYZ(lBestPrimaryVtxPos);
const AliVVertex *primaryVtx = fAODEvent->GetPrimaryVertex();
+ if(!primaryVtx)return;
tPrimaryVtxPosition[0] = primaryVtx->GetX();
tPrimaryVtxPosition[1] = primaryVtx->GetY();
tPrimaryVtxPosition[2] = primaryVtx->GetZ();
if ((TMath::Abs(lPVz)) >= fpvzcut) return ;
if (TMath::Abs(lPVx)<10e-5 && TMath::Abs(lPVy)<10e-5 && TMath::Abs(lPVz)<10e-5) return;
- fHist_Mult_PVz_Cut->Fill(lPrimaryTrackMultiplicity);
+ fHist_Mult_PVz_Cut->Fill(ltrackMultiplicity,lrefMultiplicity);
//------------------------------------------------
// Only look at events with well-established PV
const AliAODVertex *lPrimarySPDVtx = fAODEvent->GetPrimaryVertexSPD();
if (!lPrimarySPDVtx && !lPrimaryTrackingAODVtxCheck )return;
- fHist_Mult_SPD_PVz->Fill(lPrimaryTrackMultiplicity);
-
-
+ fHist_Mult_SPD_PVz->Fill(ltrackMultiplicity,lrefMultiplicity);
//------------------------------------------------
// Pileup Rejection
//------------------------------------------------
// FIXME : quality selection regarding pile-up rejection
if(fAODEvent->IsPileupFromSPD()) return;
- fHist_Mult_SPD_PVz_Pileup->Fill(lPrimaryTrackMultiplicity);
+ fHist_Mult_SPD_PVz_Pileup->Fill(ltrackMultiplicity,lrefMultiplicity);
fHistPVxAnalysis->Fill(tPrimaryVtxPosition[0]);
fHistPVyAnalysis->Fill(tPrimaryVtxPosition[1]);
fHistPVzAnalysis->Fill(tPrimaryVtxPosition[2]);
dimEventviceReal[0]=tPrimaryVtxPosition[2];
- multiplicity = fAODEvent->GetNTracks();
-
- dimEventviceReal[1]=multiplicity;
- dimEventviceReal[2]=CentPecentAfterPhySel;
-
- fHistEventViceReconst->Fill(dimEventviceReal);
+ dimEventviceReal[1]=ltrackMultiplicity;
- if(fcollidingSys=="PP")MultipOrCent=multiplicity;
- if(fcollidingSys=="PbPb")MultipOrCent=CentPecentAfterPhySel;
+ fHistEventViceReconst->Fill(dimEventviceReal[0],dimEventviceReal[1]);
//---------------------------------------------------------------------------------------------
Double_t lDcaPosToPrimVertex = 0;Double_t lDcaNegToPrimVertex = 0;Double_t lDcaV0Daughters = 0;
Double_t lV0cosPointAngle = 0;Double_t lV0DecayLength = 0;Double_t lV0Radius = 0;
Double_t lcTauLambda = 0;Double_t lcTauAntiLambda = 0;
- Double_t lcTauK0s = 0;
+ Double_t lcTauK0s = 0;
+ Double_t lDCAV0PVz = 0;
Double_t lInvMassK0 = 0, lInvMassLambda = 0, lInvMassAntiLambda = 0;
Double_t lPtV0s = 0; Double_t lPhiV0s = 0; Double_t lEtaV0s = 0;
- Double_t lRapK0s = 0, lRapLambda = 0, lRapAntiLambda = 0;
- Double_t lPzV0s = 0; Double_t lAlphaV0 = 0, lPtArmV0 = 0;
+ Double_t lRapK0 = 0, lRapLambda = 0, lRapAntiLambda = 0;
+ Double_t lPzV0s = 0;
Double_t lPV0s = 0;
TObjArray *selectedTracksLeading=0;
TObjArray * selectedV0s = new TObjArray;
selectedV0s->SetOwner(kTRUE);
+ TObjArray * selectedV0sAssoc = new TObjArray;
+ selectedV0sAssoc->SetOwner(kTRUE);
+
Int_t nV0s = fAODEvent->GetNumberOfV0s();
for (Int_t i = 0; i < nV0s; i++)
AliAODv0* aodV0 = dynamic_cast<AliAODv0 *>(fAODEvent->GetV0(i));
if (!aodV0) continue;
- if (((aodV0->Pt())<fPtMin)||((aodV0->Pt())>6.0)) continue;
+ if (((aodV0->Pt())<fPtMin)||((aodV0->Pt())>fTriglow)) continue;
// get daughters
AliAODTrack *myTrackPos=(AliAODTrack *)(aodV0->GetDaughter(0));
// DCA between daughter and Primary Vertex:
if (myTrackPos) lDcaPosToPrimVertex = aodV0->DcaPosToPrimVertex();
- if (myTrackNeg) lDcaNegToPrimVertex = aodV0->DcaNegToPrimVertex();
+ if (myTrackNeg) lDcaNegToPrimVertex = aodV0->DcaNegToPrimVertex();
+ lDCAV0PVz = aodV0->DcaV0ToPrimVertex();
// Quality tracks cuts:
if ( !(IsAcseptedDaughterTrack(myTrackPos)) || !(IsAcseptedDaughterTrack(myTrackNeg)) ) { continue;}
- // Armenteros variables:
- lAlphaV0 = aodV0->AlphaV0();
- lPtArmV0 = aodV0->PtArmV0();
-
// Invariant mass
lInvMassK0 = aodV0->MassK0Short();
lInvMassLambda = aodV0->MassLambda();
lPzV0s = aodV0->Pz();
// Rapidity:
- lRapK0s = aodV0->RapK0Short();
+ lRapK0 = aodV0->RapK0Short();
lRapLambda = aodV0->RapLambda();
- lRapAntiLambda = aodV0->Y(-3122);
+ lRapAntiLambda = aodV0->Y(-3122);
if (lPtV0s==0) {continue;}
Bool_t k0ctcut = (lcTauK0s < fCutCTK0);
Bool_t lactcut = (lcTauLambda < fCutCTLa);
Bool_t alactcut= (lcTauAntiLambda < fCutCTLa);
-
- Bool_t k0APcut = (lPtArmV0>(TMath::Abs(0.2*lAlphaV0)));
- Bool_t k0Rapcut = (TMath::Abs(lRapK0s) < fRapidityCut);
+ Bool_t k0Rapcut = (TMath::Abs(lRapK0) < fRapidityCut);
Bool_t laRapcut = (TMath::Abs(lRapLambda) < fRapidityCut);
Bool_t alaRapcut= (TMath::Abs(lRapAntiLambda) < fRapidityCut);
- if(fcollidingSys=="PbPb")if(lV0Radius>=100) continue;
+ Bool_t V0EtaMax= (TMath::Abs(lEtaV0s) < fTrackEtaCut);
Bool_t k0cutset = IsAcseptedK0(lV0Radius,lDcaPosToPrimVertex,lDcaNegToPrimVertex,lDcaV0Daughters,lV0cosPointAngle,lInvMassLambda,lInvMassAntiLambda);
Bool_t lacutset = IsAcseptedLA(lV0Radius,lDcaPosToPrimVertex,lDcaNegToPrimVertex,lDcaV0Daughters,lV0cosPointAngle,lInvMassK0);
Bool_t alacutset= IsAcseptedLA(lV0Radius,lDcaNegToPrimVertex,lDcaPosToPrimVertex,lDcaV0Daughters,lV0cosPointAngle,lInvMassK0);
- Double_t spK0[3] = {lInvMassK0, lPtV0s,MultipOrCent};
- Double_t spLa[3] = {lInvMassLambda,lPtV0s,MultipOrCent};
- Double_t spAl[3] = {lInvMassAntiLambda,lPtV0s,MultipOrCent};
+ Double_t spK0[4] = {lInvMassK0,lPtV0s,lDCAV0PVz,lV0cosPointAngle};
+ Double_t spLa[4] = {lInvMassLambda,lPtV0s,lDCAV0PVz,lV0cosPointAngle};
+ Double_t spAl[4] = {lInvMassAntiLambda,lPtV0s,lDCAV0PVz,lV0cosPointAngle};
switch (fCase) {
case 1:
fHistReconstK0->Fill(spK0);
- if(IsK0InvMass(lInvMassK0))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1));
+ if(IsK0InvMass(lInvMassK0))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1,lDCAV0PVz,lV0cosPointAngle));
fHistReconstLA->Fill(spLa);
- if(IsLambdaInvMass(lInvMassLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2));
+ if(IsLambdaInvMass(lInvMassLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2,lDCAV0PVz,lV0cosPointAngle));
fHistReconstALA->Fill(spAl);
- if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3));
+ if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3,lDCAV0PVz,lV0cosPointAngle));
break;
if(k0ctcut && k0Rapcut && k0cutset && cutK0Pid)
{
fHistReconstK0->Fill(spK0);
- if(IsK0InvMass(lInvMassK0))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1));
+ if(IsK0InvMass(lInvMassK0))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1,lDCAV0PVz,lV0cosPointAngle));
}
if (lactcut && laRapcut && lacutset && cutLambdaPid)
{
fHistReconstLA->Fill(spLa);
- if(IsLambdaInvMass(lInvMassLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2));
+ if(IsLambdaInvMass(lInvMassLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2,lDCAV0PVz,lV0cosPointAngle));
}
if (alactcut && alaRapcut && alacutset && cutAntiLambdaPid)
{
fHistReconstALA->Fill(spAl);
- if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3));
+ if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3,lDCAV0PVz,lV0cosPointAngle));
}
break;
case 3:
- if(k0ctcut && k0Rapcut && k0cutset && cutK0Pid && k0APcut)
+ if(k0ctcut && V0EtaMax && k0cutset && cutK0Pid)
{
fHistReconstK0->Fill(spK0);
- if(IsK0InvMass(lInvMassK0))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1));
+ if(IsK0InvMass(lInvMassK0))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1,lDCAV0PVz,lV0cosPointAngle));
}
- if (lactcut && laRapcut && lacutset && cutLambdaPid)
+ if (lactcut && V0EtaMax && lacutset && cutLambdaPid)
{
fHistReconstLA->Fill(spLa);
- if(IsLambdaInvMass(lInvMassLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2));
+ if(IsLambdaInvMass(lInvMassLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2,lDCAV0PVz,lV0cosPointAngle));
}
- if (alactcut && alaRapcut && alacutset && cutAntiLambdaPid)
+ if (alactcut && V0EtaMax && alacutset && cutAntiLambdaPid)
{
fHistReconstALA->Fill(spAl);
- if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3));
+ if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0s->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3,lDCAV0PVz,lV0cosPointAngle));
}
break;
Int_t myTrackNegLabel = TMath::Abs(myTrackNeg->GetLabel());
AliAODMCParticle *mcPosTrack = (AliAODMCParticle*)mcArray->At(myTrackPosLabel);
+ if(!mcPosTrack)continue;
AliAODMCParticle *mcNegTrack = (AliAODMCParticle*)mcArray->At(myTrackNegLabel);
+ if(!mcNegTrack)continue;
Int_t PosDaughterPdg = mcPosTrack->GetPdgCode();
Int_t NegDaughterPdg = mcNegTrack->GetPdgCode();
if (myTrackPosMotherLabel!=myTrackNegMotherLabel) continue;
AliAODMCParticle *mcPosMother = (AliAODMCParticle*)mcArray->At(myTrackPosMotherLabel);
+ if(!mcPosMother)continue;
Int_t MotherPdg = mcPosMother->GetPdgCode();
Bool_t IsPrime = mcPosMother->IsPhysicalPrimary();
- Double_t rcK0[3] = {lInvMassK0, lPtV0s,MultipOrCent};
- Double_t rcLa[3] = {lInvMassLambda,lPtV0s,MultipOrCent};
- Double_t rcAl[3] = {lInvMassAntiLambda,lPtV0s,MultipOrCent};
+ Int_t myGrandMotherLabel = mcPosMother->GetMother();
+ AliAODMCParticle *mcGrandMother = (AliAODMCParticle*)mcArray->At(myGrandMotherLabel);
+ Int_t GrandMotherPdg = mcGrandMother->GetPdgCode();
+
+ Double_t rcK0[4] = {lInvMassK0,lPtV0s,lDCAV0PVz,lV0cosPointAngle};
+ Double_t rcLa[4] = {lInvMassLambda,lPtV0s,lDCAV0PVz,lV0cosPointAngle};
+ Double_t rcAl[4] = {lInvMassAntiLambda,lPtV0s,lDCAV0PVz,lV0cosPointAngle};
switch (fCase) {
case 1:
- fHistMCAssoK0->Fill(rcK0);
+ fHistMCAssoK0->Fill(rcK0);
+ if(IsK0InvMass(lInvMassK0))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1,lDCAV0PVz,lV0cosPointAngle));
+
fHistMCAssoLA->Fill(rcLa);
+ if(IsLambdaInvMass(lInvMassLambda))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2,lDCAV0PVz,lV0cosPointAngle));
+
fHistMCAssoALA->Fill(rcAl);
+ if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3,lDCAV0PVz,lV0cosPointAngle));
break;
NegDaughterPdg== -211 &&
IsPrime))
{
- fHistMCAssoK0->Fill(rcK0);
+ fHistMCAssoK0->Fill(rcK0);
+ if(IsK0InvMass(lInvMassK0))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1,lDCAV0PVz,lV0cosPointAngle));
}
if ((lactcut && laRapcut && lacutset)&&(MotherPdg == 3122 &&
IsPrime))
{
fHistMCAssoLA->Fill(rcLa);
+ if(IsLambdaInvMass(lInvMassLambda))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2,lDCAV0PVz,lV0cosPointAngle));
}
if ((alactcut && alaRapcut && alacutset)&&(MotherPdg == -3122 &&
IsPrime))
{
fHistMCAssoALA->Fill(rcAl);
+ if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3,lDCAV0PVz,lV0cosPointAngle));
+ }
+
+ if ((lactcut && laRapcut && lacutset)&&(MotherPdg == 3122 &&
+ PosDaughterPdg== 2212 &&
+ NegDaughterPdg== -211 &&
+ (GrandMotherPdg==3322 ||GrandMotherPdg==3312)))
+ {
+ fHistMCAssoLAXI->Fill(rcLa);
+ }
+
+ if ((alactcut && alaRapcut && alacutset)&&(MotherPdg == -3122 &&
+ PosDaughterPdg== 211 &&
+ NegDaughterPdg== -2212 &&
+ GrandMotherPdg== -3312))
+ {
+ fHistMCAssoALAXiPlus->Fill(rcAl);
}
break;
case 3:
- if ((k0ctcut && k0Rapcut && k0cutset && k0APcut)&&(MotherPdg == 310 &&
+ if ((k0ctcut && V0EtaMax && k0cutset)&&(MotherPdg == 310 &&
PosDaughterPdg== 211 &&
NegDaughterPdg== -211 &&
IsPrime))
{
fHistMCAssoK0->Fill(rcK0);
+ if(IsK0InvMass(lInvMassK0))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,1,lDCAV0PVz,lV0cosPointAngle));
}
- if ((lactcut && laRapcut && lacutset)&&(MotherPdg == 3122 &&
+ if ((lactcut && V0EtaMax && lacutset)&&(MotherPdg == 3122 &&
PosDaughterPdg== 2212 &&
NegDaughterPdg== -211 &&
IsPrime))
{
fHistMCAssoLA->Fill(rcLa);
+ if(IsLambdaInvMass(lInvMassLambda))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,2,lDCAV0PVz,lV0cosPointAngle));
}
- if ((alactcut && alaRapcut && alacutset)&&(MotherPdg == -3122 &&
+ if ((alactcut && V0EtaMax && alacutset)&&(MotherPdg == -3122 &&
PosDaughterPdg== 211 &&
NegDaughterPdg== -2212 &&
IsPrime))
{
fHistMCAssoALA->Fill(rcAl);
+ if(IsLambdaInvMass(lInvMassAntiLambda))selectedV0sAssoc->Add(new V0Correlationparticle(lEtaV0s,lPhiV0s,lPtV0s,3,lDCAV0PVz,lV0cosPointAngle));
+ }
+
+ if ((lactcut && V0EtaMax && lacutset)&&(MotherPdg == 3122 &&
+ PosDaughterPdg== 2212 &&
+ NegDaughterPdg== -211 &&
+ (GrandMotherPdg==3322 ||GrandMotherPdg==3312)))
+ {
+ fHistMCAssoLAXI->Fill(rcLa);
+ }
+
+ if ((alactcut && V0EtaMax && alacutset)&&(MotherPdg == -3122 &&
+ PosDaughterPdg== 211 &&
+ NegDaughterPdg== -2212 &&
+ GrandMotherPdg== -3312))
+ {
+ fHistMCAssoALAXiPlus->Fill(rcAl);
}
break;
}
}
- FillCorrelationSibling(MultipOrCent,selectedTracksLeading,selectedV0s,fHistTriggerSib,fHistReconstSib);
- FillCorrelationMixing(MultipOrCent,tPrimaryVtxPosition[2],poolmax,poolmin,selectedTracksLeading,selectedV0s,fHistTriggerMix,fHistReconstMix);
+ FillCorrelationSibling(ltrackMultiplicity,selectedTracksLeading,selectedV0s,fHistTriggerSib,fHistReconstSib);
+ FillCorrelationMixing(ltrackMultiplicity,tPrimaryVtxPosition[2],poolmax,poolmin,selectedTracksLeading,selectedV0s,fHistTriggerMix,fHistReconstMix);
+
+ FillCorrelationSibling(ltrackMultiplicity,selectedTracksLeading,selectedV0sAssoc,fHistTriggerSibASO,fHistReconstSibASO);
+ FillCorrelationMixing(ltrackMultiplicity,lPVz,poolmax,poolmin,selectedTracksLeading,selectedV0sAssoc,fHistTriggerMixASO,fHistReconstMixASO);
PostData(1,fOutputList);
}
}
//---------------------------------------------------------------------------------------
Bool_t AliLeadingV0Correlation::IsAcseptedDaughterTrack(const AliAODTrack *itrack)
-{
+{
+ if(fCase==1 || fCase==2)
if(TMath::Abs(itrack->Eta())>fTrackEtaCut)return kFALSE;
if (!itrack->IsOn(AliAODTrack::kTPCrefit)) return kFALSE;
Float_t nCrossedRowsTPC = itrack->GetTPCClusterInfo(2,1);
- if (nCrossedRowsTPC < 70) return kFALSE;
+ if (nCrossedRowsTPC < fTPCClusters) return kFALSE;
Int_t findable=itrack->GetTPCNclsF();
if (findable <= 0) return kFALSE;
- if (nCrossedRowsTPC/findable < 0.8) return kFALSE;
+ if (nCrossedRowsTPC/findable < fTPCfindratio) return kFALSE;
return kTRUE;
}
//---------------------------------------------------------------------------------------
void AliLeadingV0Correlation::FillCorrelationSibling(Double_t MultipOrCent,
TObjArray*triggerArray,
TObjArray*selectedV0Array,
- THnSparse*triggerHist,
+ TH3F*triggerHist,
THnSparse*associateHist)
{
- Double_t binsv0CORR[7];
+ Double_t binsv0CORR[8];
Double_t binsTrigSib[2];
Int_t counterSibMCA=0;
binsTrigSib[0]=triggerPt;
binsTrigSib[1]=MultipOrCent;
- if(triggerHist)triggerHist->Fill(binsTrigSib);
+ if(triggerHist)triggerHist->Fill(binsTrigSib[0],triggerPhi,triggerEta);
for (Int_t j=0; j<selectedV0Array->GetEntriesFast(); j++){
binsv0CORR[3]=RangePhi(triggerPhi-binsv0CORR[1]);
binsv0CORR[4]=triggerEta-binsv0CORR[2];
binsv0CORR[5]= associate->WhichCandidate();
- binsv0CORR[6]= MultipOrCent;
+ binsv0CORR[6]= associate->DCAPostoP();
+ binsv0CORR[7]= associate->DCANegtoP();
associateHist->Fill(binsv0CORR);
}
Double_t poolmin,
TObjArray*triggerArray,
TObjArray*selectedV0Array,
- THnSparse*triggerHist,
+ TH1F*triggerHist,
THnSparse*associateHist)
{
if(TMath::Abs(pvxMix)>=fpvzcut || MultipOrCentMix>poolmax || MultipOrCentMix < poolmin)
{
if(fcollidingSys=="PP")AliInfo(Form("pp Event with Zvertex = %.2f cm and multiplicity = %.0f out of pool bounds, SKIPPING",pvxMix,MultipOrCentMix));
- if(fcollidingSys=="PbPb") AliInfo(Form("PbPb Event with Zvertex = %.2f cm and centrality = %.1f out of pool bounds, SKIPPING",pvxMix,MultipOrCentMix));
return;
}
- Double_t binsv0CORRMix[7];
+ Double_t binsv0CORRMix[8];
Double_t binsTrigMix[2];
Double_t counterMix=0;
binsTrigMix[0]=trigPt;
binsTrigMix[1]=MultipOrCentMix;
- if(triggerHist)triggerHist->Fill(binsTrigMix);
+ if(triggerHist)triggerHist->Fill(binsTrigMix[0]);
for (Int_t j=0; j<mixEvents->GetEntriesFast(); j++){
binsv0CORRMix[3]=RangePhi(trigPhi-binsv0CORRMix[1]);
binsv0CORRMix[4]=trigEta-binsv0CORRMix[2];
binsv0CORRMix[5]=associate->WhichCandidate();
- binsv0CORRMix[6]=MultipOrCentMix;
+ binsv0CORRMix[6]=associate->DCAPostoP();
+ binsv0CORRMix[7]=associate->DCANegtoP();
associateHist->Fill(binsv0CORRMix);
}
tracksClone->Add(new V0Correlationparticle(particle->Eta(),
particle->Phi(),
particle->Pt(),
- particle->WhichCandidate()));
+ particle->WhichCandidate(),
+ particle->DCAPostoP(),
+ particle->DCANegtoP()));
};
pool->UpdatePool(tracksClone);
}