From: miweber Date: Mon, 14 Jan 2013 14:45:12 +0000 (+0000) Subject: Net Particle updates (Jochen Thaeder ) X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=8c6128b71eea83b6ee9f8bfe1de1c4f37915c233;p=u%2Fmrichter%2FAliRoot.git Net Particle updates (Jochen Thaeder ) --- diff --git a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.cxx b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.cxx index e6535fbb5a9..fe3b0a71f0c 100644 --- a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.cxx +++ b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.cxx @@ -78,11 +78,11 @@ void AliAnalysisNetParticleDCA::Initialize(AliESDtrackCuts *cuts, AliESDtrackCut fLabelsRec = new Int_t*[2]; for (Int_t ii = 0; ii < 2 ; ++ii) fLabelsRec[ii] = NULL; - +#endif // -- Create THnSparse Histograms // -------------------------------- CreateHistograms(); -#endif + return; } @@ -148,6 +148,10 @@ void AliAnalysisNetParticleDCA::ResetEvent() { void AliAnalysisNetParticleDCA::Process() { // -- Process event + + + + // -- Setup (clean, create and fill) MC labels // --------------------------------------------- // FillMCLabels(); @@ -164,7 +168,7 @@ void AliAnalysisNetParticleDCA::Process() { * Private Methods * --------------------------------------------------------------------------------- */ -#if 0 + //________________________________________________________________________ void AliAnalysisNetParticleDCA::CreateHistograms() { // -- Create histograms @@ -190,23 +194,33 @@ void AliAnalysisNetParticleDCA::CreateHistograms() { // ------------------------------------------------------------------ // -- Create THnSparseF - DCA // ------------------------------------------------------------------ + // DCAr, DCAz, eta phi centrality + + // > Type : + // Primary MC p + ContMiss p + // 2nd Material + // 2nd Weak Decays + + // IsAcceptedDCA - // cent: etaMC: yMC: phiMC: ptMC: sign:contPart:DCArAccepted:DCAr - Int_t binHnDCA[9] = { iCent, iEta, iRap, iPhi, iPt, iSign, 4, 2, 50 }; - Double_t minHnDCA[9] = {dCent[0], dEta[0], dRap[0], dPhi[0], dPt[0], dSign[0], 0.5, -0.5, -10.}; - Double_t maxHnDCA[9] = {dCent[1], dEta[1], dRap[1], dPhi[1], dPt[1], dSign[1], 4.5, 1.5, 10.}; - fHnDCA = new THnSparseF("fHnDCA", "cent:etaMC:yMC:phiMC:ptMC:sign:contPart:contSign:DCArAccepted:DCAr", 9, binHnDCA, minHnDCA, maxHnDCA); + // cent: etaMC: yMC: phiMC: ptMC: sign:contPart:DCArAccepted: DCAr: DCAz + Int_t binHnDCA[10] = { iCent, iEta, iRap, iPhi, iPt, iSign, 4, 2, 50 , 50 }; + Double_t minHnDCA[10] = {dCent[0], dEta[0], dRap[0], dPhi[0], dPt[0], dSign[0], 0.5, -0.5, -10.,-10.}; + Double_t maxHnDCA[19] = {dCent[1], dEta[1], dRap[1], dPhi[1], dPt[1], dSign[1], 4.5, 1.5, 10., 10.}; + fHnDCA = new THnSparseF("fHnDCA", "cent:etaMC:yMC:phiMC:ptMC:sign:contPart:contSign:DCArAccepted:DCAr:DCAz", 10, binHnDCA, minHnDCA, maxHnDCA); fHnDCA->Sumw2(); fHnDCA->GetAxis(0)->SetTitle("centrality"); // 0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90 --> 10 bins - fHnDCA->GetAxis(1)->SetTitle("#eta_{MC}"); // eta [-0.9,0.9] - fHnDCA->GetAxis(2)->SetTitle("#it{y}_{MC}"); // rapidity [-0.5, 0.5] - fHnDCA->GetAxis(3)->SetTitle("#varphi_{MC} (rad)"); // phi [ 0. ,2Pi] - fHnDCA->GetAxis(4)->SetTitle("#it{p}_{T,MC} (GeV/#it{c})"); // pT [ 0.1,1.3] + fHnDCA->GetAxis(1)->SetTitle("#eta_{Rec}"); // eta [-0.9,0.9] + fHnDCA->GetAxis(2)->SetTitle("#it{y}_{Rec}"); // rapidity [-0.5, 0.5] + fHnDCA->GetAxis(3)->SetTitle("#varphi_{Rec} (rad)"); // phi [ 0. ,2Pi] + fHnDCA->GetAxis(4)->SetTitle("#it{p}_{T,Rec} (GeV/#it{c})"); // pT [ 0.1,1.3] fHnDCA->GetAxis(5)->SetTitle("sign"); // -1 | 0 | +1 + fHnDCA->GetAxis(6)->SetTitle("contPart"); // 1 primary | 2 missId | 3 from WeakDecay | 4 p from Material fHnDCA->GetAxis(7)->SetTitle("DCArAccepted"); // 0 not accepted | 1 accepted fHnDCA->GetAxis(8)->SetTitle("DCAr"); // DCAr [-10,10] + fHnDCA->GetAxis(9)->SetTitle("DCAz"); // DCAz [-10,10] // ------------------------------------------------------------------ @@ -214,14 +228,14 @@ void AliAnalysisNetParticleDCA::CreateHistograms() { } //________________________________________________________________________ -void AliAnalysisNetParticleDCA::FillMCDCA() { +void AliAnalysisNetParticleDCA::FillDCA() { // Fill MC labels // Loop over ESD tracks and fill arrays with MC lables // fLabelsRec[0] : all Tracks // fLabelsRec[1] : all Tracks accepted by PID of TPC // Check every accepted track if correctly identified // otherwise check for contamination - +#if 0 for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) { AliESDtrack *track = fESD->GetTrack(idxTrack); @@ -230,7 +244,7 @@ void AliAnalysisNetParticleDCA::FillMCDCA() { continue; // -- Check if accepted - if (!fESDTrackCuts->AcceptTrack(track)) + if (!fESDTrackCutsBkg->AcceptTrack(track)) continue; // -- Check if accepted in rapidity window @@ -238,36 +252,44 @@ void AliAnalysisNetParticleDCA::FillMCDCA() { if (!fHelper->IsTrackAcceptedRapidity(track, yP)) continue; - // -- Check if accepted with thighter DCA cuts - if (!fHelper->IsTrackAcceptedDCA(track)) - continue; - - Int_t label = TMath::Abs(track->GetLabel()); - - // -- Fill Label of all reconstructed - fLabelsRec[0][idxTrack] = label; - // -- Check if accepted by PID from TPC or TPC+TOF Double_t pid[2]; if (!fHelper->IsTrackAcceptedPID(track, pid)) continue; - // -- Fill Label of all reconstructed && recPid_TPC+TOF - fLabelsRec[1][idxTrack] = label; + + Bool_t isDCArAccepted = kTRUE; + + // -- Check if accepted with thighter DCA cuts + if (!fHelper->IsTrackAcceptedDCA(track)) + isDCArAccepted = kFALSE; + + if (!fESDTrackCuts->AcceptTrack(track)) + isDCArAccepted = kFALSE; + + + // ? Int_t label = ); + // -- Check for contamination and fill contamination THnSparse - CheckContTrack(label, track->GetSign(), idxTrack); + Int_t contIdx = CheckContTrack(TMath::Abs(track->GetLabel()); + + Double_t hnDCA[10] = {fCentralityBin, track->Eta(), yP, track->Phi(), track->Pt(), sign, contIdx, isDCArAccepted, dcar, dcaz}; + fHnDCA->Fill(hnContDCA); } // for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) { - +#endif return; } //________________________________________________________________________ -void AliAnalysisNetParticleDCA::CheckDCATrack(Int_t label, Float_t sign, Float_t isDCArAccepted, Float_t dcar) { + Int_t AliAnalysisNetParticleDCA::CheckDCATrack(Int_t /*label*/) { // Check if DCA of contamination or correctly identified // Fill contamination DCA THnSparse + // return 1 primary | 2 missId | 3 from WeakDecay | 4 p from Material | -1 unknown + Int_t contIdx = -1; +#if 0 TParticle* particle = fStack->Particle(label); if (!particle) return; @@ -275,30 +297,27 @@ void AliAnalysisNetParticleDCA::CheckDCATrack(Int_t label, Float_t sign, Float_t Bool_t isSecondaryFromWeakDecay = kFALSE; Bool_t isSecondaryFromMaterial = kFALSE; - Int_t contPart = 0; - - // -- Check if correctly identified - if (particle->GetPdgCode() == (sign*fPdgCode)) { - + //// // Check if is physical primary -> all ok + if (fStack->IsPhysicalPrimary(label)) { + + // -- Check if correctly identified // Check if is physical primary -> all ok - if (fStack->IsPhysicalPrimary(label)) - contPart = 1; - // -- Check if secondaries from weak decay - else if(isSecondaryFromWeakDecay = fStack->IsSecondaryFromWeakDecay(label)) - contPart = 3; - // -- Check if secondaries from material decay - else if (isSecondaryFromMaterial = fStack->IsSecondaryFromMaterial(label)) - contPart = 4; + if (particle->GetPdgCode() == (sign*fPdgCode)) + contIdx = 1; + // -- MissIdentification + else + contIdx = 2; + } + // -- Check if secondaries from weak decay + else if(isSecondaryFromWeakDecay = fStack->IsSecondaryFromWeakDecay(label)) + contIdx = 3; + // -- Check if secondaries from material decay + else if (isSecondaryFromMaterial = fStack->IsSecondaryFromMaterial(label)) + contIdx = 4; } - // -- MissIdentification - else - contPart = 2; - - Double_t hnDCA[9] = {fCentralityBin, particle->Eta(), particle->Y(), particle->Phi(), particle->Pt(), sign, contPart, isDCArAccepted, dcar}; - fHnDCA->Fill(hnContDCA); - - return; +#endif + return contIdx; } -#endif + diff --git a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.h b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.h index d6d63d67da6..310a21667e3 100644 --- a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.h +++ b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDCA.h @@ -66,7 +66,7 @@ class AliAnalysisNetParticleDCA : public TNamed { AliAnalysisNetParticleDCA& operator=(const AliAnalysisNetParticleDCA&); // not implemented -#if 0 + /* * --------------------------------------------------------------------------------- * Methods - private @@ -80,8 +80,9 @@ class AliAnalysisNetParticleDCA : public TNamed { void FillDCA(); /** Check if particle is contamination */ - void CheckDCATrack(Int_t label, Float_t sign, Int_t idxTrack); - + Int_t CheckDCATrack(Int_t label); + // void CheckDCATrack(Int_t label, Float_t sign, Int_t idxTrack); +#if 0 /* * --------------------------------------------------------------------------------- * Members - private diff --git a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDistribution.cxx b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDistribution.cxx index fe3a9a1f0f1..62bcc633086 100644 --- a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDistribution.cxx +++ b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleDistribution.cxx @@ -152,9 +152,9 @@ void AliAnalysisNetParticleDistribution::CreateHistograms(TList* outList) { if (fIsMC) { AddHistSet("fHMCrapidity", "MC primary in |y| < 0.5"); - AddHistSet("fHMCptMin", "MC primary in |y| + #it{p}_{T} > 0.1"); - AddHistSet("fHMCpt", Form("MC primary in |y| < 0.5 + #it{p}_{T} [%.1f,%.1f]", fPtRange[0], fPtRange[1])); - AddHistSet("fHMCeta", Form("MC primary in |y| < 0.5 + |#eta| < %.1f", fEtaMax)); + // AddHistSet("fHMCptMin", "MC primary in |y| + #it{p}_{T} > 0.1"); + // AddHistSet("fHMCpt", Form("MC primary in |y| < 0.5 + #it{p}_{T} [%.1f,%.1f]", fPtRange[0], fPtRange[1])); + // AddHistSet("fHMCeta", Form("MC primary in |y| < 0.5 + |#eta| < %.1f", fEtaMax)); AddHistSet("fHMCetapt", Form("MC primary in |y| < 0.5 + |#eta| < %.1f + #it{p}_{T} [%.1f,%.1f]", fEtaMax, fPtRange[0], fPtRange[1])); // AddHistSet("fHControlMCLambdarapidity", "Control MC Lambda primary in |y| < 0.5"); @@ -472,6 +472,8 @@ Int_t AliAnalysisNetParticleDistribution::ProcessStackParticles() { // -- Check rapidity window Double_t yMC; + if (!fHelper->GetUsePID()) + yMC = fEtaMax; if (!fHelper->IsParticleAcceptedRapidity(particle, yMC)) continue; @@ -497,9 +499,9 @@ Int_t AliAnalysisNetParticleDistribution::ProcessStackParticles() { // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- FillHistSet("fHMCrapidity", fMCNp[0]); - FillHistSet("fHMCptMin", fMCNp[1]); - FillHistSet("fHMCpt", fMCNp[2]); - FillHistSet("fHMCeta", fMCNp[3]); + // FillHistSet("fHMCptMin", fMCNp[1]); + // FillHistSet("fHMCpt", fMCNp[2]); + // FillHistSet("fHMCeta", fMCNp[3]); FillHistSet("fHMCetapt", fMCNp[4]); return 0; @@ -511,7 +513,7 @@ Int_t AliAnalysisNetParticleDistribution::ProcessStackControlParticles() { Int_t pdgCode = fHelper->GetControlParticleCode(); Bool_t isNeutral = fHelper->IsControlParticleNeutral(); - //const Char_t* name = fHelper->GetControlParticleName().Data(); + // const Char_t* name = fHelper->GetControlParticleName().Data(); for (Int_t idxMC = 0; idxMC < fStack->GetNprimary(); ++idxMC) { TParticle* particle = fStack->Particle(idxMC); @@ -540,6 +542,8 @@ Int_t AliAnalysisNetParticleDistribution::ProcessStackControlParticles() { // -- Check rapidity window Double_t yMC; + if (!fHelper->GetUsePID()) + yMC = fEtaMax; if (!fHelper->IsParticleAcceptedRapidity(particle, yMC)) continue; @@ -597,12 +601,12 @@ void AliAnalysisNetParticleDistribution::AddHistSet(const Char_t *name, const C list->Add(new TH2F(Form("%s%s", name, fHelper->GetParticleName(idxPart).Data()), Form("%s %s Dist %s;Centrality;N_{%s}", title, fHelper->GetParticleTitle(idxPart).Data(), sPtTitle.Data(), fHelper->GetParticleTitleLatex(idxPart).Data()), - 24, -0.5, 11.5, 501, -0.5, 500.49)); + 24, -0.5, 11.5, 2601, -0.5, 2600.49)); } // for (Int_t idxPart = 0; idxPart < 2; ++idxPart) { list->Add(new TH2F(Form("%sNet%s", name, fHelper->GetParticleName(1).Data()), Form("%s Net %s Dist %s;Centrality;N_{%s} - N_{%s}", title, fHelper->GetParticleTitle(1).Data(), sPtTitle.Data(), - fHelper->GetParticleTitleLatex(1).Data(),fHelper->GetParticleTitleLatex(0).Data()), 24, -0.5, 11.5, 201, -100.5, 100.49)); + fHelper->GetParticleTitleLatex(1).Data(),fHelper->GetParticleTitleLatex(0).Data()), 24, -0.5, 11.5, 601, -300.5, 300.49)); list->Add(new TProfile(Form("%sNet%sM", name, fHelper->GetParticleName(1).Data()), Form("%s Net %s Dist %s;Centrality;N_{%s} - N_{%s}", title, fHelper->GetParticleTitle(1).Data(), sPtTitle.Data(), @@ -627,7 +631,7 @@ void AliAnalysisNetParticleDistribution::AddHistSet(const Char_t *name, const C Form("%s (Net %s)/ Sum Dist %s;Centrality;(N_{%s} - N_{%s})/(N_{%s} + N_{%s})", title, fHelper->GetParticleTitle(1).Data(), sPtTitle.Data(), fHelper->GetParticleTitleLatex(1).Data(),fHelper->GetParticleTitleLatex(0).Data(),fHelper->GetParticleTitleLatex(1).Data(), fHelper->GetParticleTitleLatex(0).Data()), - 24, -0.5, 11.5, 801, -50.5, 50.49)); + 24, -0.5, 11.5, 801, -20.5, 20.49)); if (sName.Contains("fHControlMC")) { for (Int_t idxPart = 0; idxPart < 2; ++idxPart) { diff --git a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleEffCont.cxx b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleEffCont.cxx index a3c9aba405d..5766840cd82 100644 --- a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleEffCont.cxx +++ b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleEffCont.cxx @@ -60,15 +60,13 @@ AliAnalysisNetParticleEffCont::AliAnalysisNetParticleEffCont() : AliAnalysisNetParticleEffCont::~AliAnalysisNetParticleEffCont() { // Destructor - if (fLabelsRec){ - + if (fLabelsRec) { if (fLabelsRec[0]) delete[] (fLabelsRec[0]); - if (fLabelsRec[1]) delete[] (fLabelsRec[1]); - - delete[] fLabelsRec; + if (fLabelsRec) + delete[] fLabelsRec; } } @@ -345,11 +343,11 @@ void AliAnalysisNetParticleEffCont::FillMCLabels() { // -- Check if accepted - AOD if (fAOD){ - if(!(dynamic_cast(track))){ + if(!(dynamic_cast(track))) { AliError("Pointer to dynamic_cast(track) = ZERO"); continue; } - if(!((dynamic_cast(track))->TestFilterBit(fAODtrackCutBit))) + if(!((dynamic_cast(track))->TestFilterBit(fAODtrackCutBit))) continue; } @@ -499,7 +497,7 @@ void AliAnalysisNetParticleEffCont::CheckContTrackAOD(Int_t label, Float_t sign, // -- If no PID is required // > only check for Primaries and Secondaries else { - // Check if is physical primary -> all ok + // Check if is physical primary -> all ok if (particle->IsPhysicalPrimary()) return; @@ -510,13 +508,9 @@ void AliAnalysisNetParticleEffCont::CheckContTrackAOD(Int_t label, Float_t sign, // -- Get PDG Charge Float_t contSign = 0.; - // Crashing (MW)? --> why do we need the PDG charge? - // if ((TDatabasePDG::Instance()->GetParticle(particle->PdgCode()))->Charge() == 0.) contSign = 0.; - // else if ((TDatabasePDG::Instance()->GetParticle(particle->PdgCode()))->Charge() < 0.) contSign = -1.; - // else if ((TDatabasePDG::Instance()->GetParticle(particle->PdgCode()))->Charge() > 0.) contSign = 1.; - if (particle->Charge() == 0.) contSign = 0.; - else if (particle->Charge() < 0.) contSign = -1.; - else if (particle->Charge() > 0.) contSign = 1.; + if (particle->Charge() == 0.) contSign = 0.; + else if (particle->Charge() < 0.) contSign = -1.; + else if (particle->Charge() > 0.) contSign = 1.; // -- Get contaminating particle Float_t contPart = 0; @@ -582,6 +576,7 @@ void AliAnalysisNetParticleEffCont::FillMCEffHist() { // > skip check if PID is not required if (fHelper->GetUsePID() && TMath::Abs(particle->GetPdgCode()) != fPdgCode){ printf("SHOULD NOT HAPPEN !!!\n"); // JMT + printf("%d %d !!!\n", particle->GetPdgCode(), fPdgCode ); // JMT continue; } @@ -638,6 +633,8 @@ void AliAnalysisNetParticleEffCont::FillMCEffHistAOD() { // Fill efficiency THnSparse for AODs Int_t nPart = fArrayMC->GetEntriesFast(); + Float_t etaRange[2]; + fESDTrackCuts->GetEtaRange(etaRange[0],etaRange[1]); for (Int_t idxMC = 0; idxMC < nPart; ++idxMC) { @@ -649,7 +646,9 @@ void AliAnalysisNetParticleEffCont::FillMCEffHistAOD() { // -- Check rapidity window Double_t yMC; - if (!fHelper->IsParticleAcceptedRapidity((TParticle*)particle, yMC)) // MW : das geht? wenn ja use c++ cast + if (!fHelper->GetUsePID()) + yMC = etaRange[1]; + if (!fHelper->IsParticleAcceptedRapidity(particle, yMC)) continue; // -- Check if probeParticle / anti-probeParticle diff --git a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.cxx b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.cxx index f7530c71934..eb6d91a2fc2 100644 --- a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.cxx +++ b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.cxx @@ -150,8 +150,8 @@ AliAnalysisNetParticleHelper::~AliAnalysisNetParticleHelper() { //________________________________________________________________________ void AliAnalysisNetParticleHelper::SetParticleSpecies(AliPID::EParticleType pid) { // -- Set particle species (ID, Name, Title, Title LATEX) - - if ( Int_t(pid) < 0 || Int_t(pid) >= AliPID::kSPECIES) { + + if ( Int_t(pid) < 0 || Int_t(pid) >= AliPID::kSPECIES) { AliWarning("Particle ID not in AliPID::kSPECIES --> Set to protons"); pid = AliPID::kProton; } @@ -288,24 +288,20 @@ Int_t AliAnalysisNetParticleHelper::SetupEvent(AliESDInputHandler *esdHandler, A if(esdHandler){ fInputEventHandler = static_cast(esdHandler); fESD = dynamic_cast(fInputEventHandler->GetEvent()); - if (!fESD) { AliError("ESD event handler not available"); return -1; } - } // -- Get AOD objects else if(aodHandler){ fInputEventHandler = static_cast(aodHandler); fAOD = dynamic_cast(fInputEventHandler->GetEvent()); - if (!fAOD) { AliError("AOD event handler not available"); return -1; } - } // -- Get Common objects @@ -331,7 +327,7 @@ Int_t AliAnalysisNetParticleHelper::SetupEvent(AliESDInputHandler *esdHandler, A AliError("Centrality not available"); return -1; } - + Int_t centBin = centrality->GetCentralityClass10("V0M"); if (centBin == 0) fCentralityBin = centrality->GetCentralityClass5("V0M"); @@ -548,6 +544,7 @@ Bool_t AliAnalysisNetParticleHelper::IsParticleAcceptedBasicNeutral(AliAODMCPart return kTRUE; } + //________________________________________________________________________ Bool_t AliAnalysisNetParticleHelper::IsParticleAcceptedRapidity(TParticle *particle, Double_t &yP) { // -- Check if particle is accepted @@ -580,6 +577,38 @@ Bool_t AliAnalysisNetParticleHelper::IsParticleAcceptedRapidity(TParticle *parti return kTRUE; } +//________________________________________________________________________ +Bool_t AliAnalysisNetParticleHelper::IsParticleAcceptedRapidity(AliAODMCParticle *particle, Double_t &yP) { + // -- Check if AOD particle is accepted + // > in rapidity + // > if no pid : + // > use yP as input for the pseudo-rapdity_MAX to be checked + // > return 0 if not accepted + + if (!fUsePID) { + Bool_t isAccepted = kFALSE; + if (TMath::Abs(particle->Eta()) < yP) + isAccepted = kTRUE; + yP = particle->Eta(); + return isAccepted; + } + + Double_t mP = AliPID::ParticleMass(fParticleSpecies); + + // -- Calculate rapidities and kinematics + Double_t p = particle->P(); + Double_t pz = particle->Pz(); + + Double_t eP = TMath::Sqrt(p*p + mP*mP); + yP = 0.5 * TMath::Log((eP + pz) / (eP - pz)); + + // -- Check Rapidity window + if (TMath::Abs(yP) > fRapidityMax) + return kFALSE; + + return kTRUE; +} + //_____________________________________________________________________________ Bool_t AliAnalysisNetParticleHelper::IsParticleFindable(Int_t label) { // -- Check if MC particle is findable tracks diff --git a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.h b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.h index 6ef0c3e765e..353f9a7f5e9 100644 --- a/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.h +++ b/PWGCF/EBYE/NetParticle/AliAnalysisNetParticleHelper.h @@ -133,6 +133,7 @@ class AliAnalysisNetParticleHelper : public TNamed { /** Check if MC particle is accepted for Rapidity */ Bool_t IsParticleAcceptedRapidity(TParticle *particle, Double_t &yP); + Bool_t IsParticleAcceptedRapidity(AliAODMCParticle *particle, Double_t &yP); /** Check if MC particle is findable tracks */ Bool_t IsParticleFindable(Int_t label); diff --git a/PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.cxx b/PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.cxx index 9b8e202a8af..8ede77098eb 100644 --- a/PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.cxx +++ b/PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.cxx @@ -81,7 +81,8 @@ AliAnalysisTaskNetParticle::AliAnalysisTaskNetParticle(const char *name) : fHnQA(NULL), - fEtaMax(0.9), + fEtaMax(0.8), + fEtaMaxEff(0.9), fPtRange(), fPtRangeEff(), @@ -327,6 +328,7 @@ Int_t AliAnalysisTaskNetParticle::Initialize() { fESDTrackCutsEff = static_cast(fESDTrackCuts->Clone()); fESDTrackCutsEff->SetName(Form("NetParticleCuts2010_%s_Eff",sModeName.Data())); fESDTrackCutsEff->SetPtRange(fPtRangeEff[0],fPtRangeEff[1]); // Acceptance + fESDTrackCutsBase->SetEtaRange(-1.*fEtaMaxEff, fEtaMaxEff); // Acceptance // ------------------------------------------------------------------ // -- Initialize Helper @@ -517,12 +519,12 @@ Int_t AliAnalysisTaskNetParticle::SetupMCEvent() { AliMCEventHandler *mcH = dynamic_cast (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()); - + if (!mcH) { AliError("MC event handler not available"); return -1; } - + fMCEvent = mcH->MCEvent(); if (!fMCEvent) { AliError("MC event not available"); diff --git a/PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.h b/PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.h index 651e260fa55..434e52320bd 100644 --- a/PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.h +++ b/PWGCF/EBYE/NetParticle/AliAnalysisTaskNetParticle.h @@ -75,6 +75,7 @@ class AliAnalysisTaskNetParticle : public AliAnalysisTaskSE { void SetModeQACreation(Int_t i) {fModeQACreation = i;} void SetEtaMax(Float_t f) {fEtaMax = f;} + void SetEtaMaxEff(Float_t f) {fEtaMaxEff = f;} void SetPtRange(Float_t f1, Float_t f2) {fPtRange[0] = f1; fPtRange[1] = f2;} void SetPtRangeEff(Float_t f1, Float_t f2) {fPtRangeEff[0] = f1; fPtRangeEff[1] = f2;} @@ -131,7 +132,7 @@ class AliAnalysisTaskNetParticle : public AliAnalysisTaskSE { * --------------------------------------------------------------------------------- */ - AliAnalysisNetParticleHelper *fHelper; // Helper class + AliAnalysisNetParticleHelper *fHelper; // Helper class AliAnalysisNetParticleEffCont *fEffCont; //! Efficiency and Contamination class AliAnalysisNetParticleDCA *fDCA; //! DCA class AliAnalysisNetParticleDistribution *fDist; //! Distributions class @@ -181,6 +182,7 @@ class AliAnalysisTaskNetParticle : public AliAnalysisTaskSE { // ----------------------------------------------------------------------- Float_t fEtaMax; // Max, absolut eta + Float_t fEtaMaxEff; // Max, absolut eta for efficiency Float_t fPtRange[2]; // Array of pt [min,max] Float_t fPtRangeEff[2]; // Array of pt [min,max] for efficiency diff --git a/PWGCF/EBYE/NetParticle/eff/effectiveCorrection.root b/PWGCF/EBYE/NetParticle/eff/effectiveCorrection.root index 3a0889e986e..28d9bbad3fd 100644 Binary files a/PWGCF/EBYE/NetParticle/eff/effectiveCorrection.root and b/PWGCF/EBYE/NetParticle/eff/effectiveCorrection.root differ diff --git a/PWGCF/EBYE/NetParticle/macros/AddTaskNetParticle.C b/PWGCF/EBYE/NetParticle/macros/AddTaskNetParticle.C index 5f79e624fba..5f0ef532a6f 100644 --- a/PWGCF/EBYE/NetParticle/macros/AddTaskNetParticle.C +++ b/PWGCF/EBYE/NetParticle/macros/AddTaskNetParticle.C @@ -13,9 +13,7 @@ * isCreateCSC -> Prepare for CrossSectionCorrection * - requires isModeEff to be set * - Proton only - -* JMT add mode isModeAOD - + * isModeAOD -> Use AOD input * * - OUTPUT CONTAINER : #N = 5 * (1) - Standard Output, Distributions @@ -104,7 +102,7 @@ AliAnalysisTask *AddTaskNetParticle(const Char_t * name = "jthaeder_NetProton", if (sName.Contains("Proton")) { helper->SetParticleSpecies(AliPID::kProton); helper->SetControlParticleSpecies(3122, kTRUE, "Lambda"); - minPt = 0.4; maxPt = 2.2; + minPt = 0.4; maxPt = 0.8; minPtEff = 0.2; maxPtEff = 2.6; minPtForTOF = 0.8; nSigmaTPC = 2.5; nSigmaTOF = 2.5; @@ -114,21 +112,21 @@ AliAnalysisTask *AddTaskNetParticle(const Char_t * name = "jthaeder_NetProton", } else if (sName.Contains("Pion")) { helper->SetParticleSpecies(AliPID::kPion); - minPt = 0.3; maxPt = 0.9; + minPt = 0.25; maxPt = 0.7; minPtEff = 0.2; maxPtEff = 1.2; minPtForTOF = 0.8; nSigmaTPC = 2.5; nSigmaTOF = 2.5; } else if (sName.Contains("Kaon")) { helper->SetParticleSpecies(AliPID::kKaon); - minPt = 0.5; maxPt = 0.8; + minPt = 0.5; maxPt = 1.4; minPtEff = 0.1; maxPtEff = 2.5; minPtForTOF = 0.5; nSigmaTPC = 2.5; nSigmaTOF = 2.5; } else if (sName.Contains("Charge")) { helper->SetUsePID(kFALSE); - minPt = 0.2; maxPt = 2.8; + minPt = 0.3; maxPt = 2.5; minPtEff = 0.1; maxPtEff = 3.0; minPtForTOF = -1.; nSigmaTPC = -1.; nSigmaTOF = -1.; @@ -144,10 +142,11 @@ AliAnalysisTask *AddTaskNetParticle(const Char_t * name = "jthaeder_NetProton", // ---------------------------------------------- // -- Set cut flags ... - task->SetESDTrackCutMode(0); // => 0 = clean | 1 = dirty + task->SetESDTrackCutMode(0); // => 0 = clean | 1 = dirty // -- Set analysis ranges - task->SetEtaMax(0.9); + task->SetEtaMax(0.8); // eta cut + task->SetEtaMaxEff(0.9); // eta cut for efficiency task->SetPtRange(minPt, maxPt); // pt cut range for the analysis task->SetPtRangeEff(minPtEff, maxPtEff); // pt cut range for the correction / efficiency / contamination creation