X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG3%2FvertexingHF%2FAliCFHeavyFlavourTaskMultiVarMultiStep.cxx;h=2232c3c2fee1435194431484efa37b83f0c9e5c5;hb=cdac45d38392336d191ce5be290f7ef017b17d09;hp=d76d08caae54ea89c35a2031e6623a493ee128b2;hpb=6afbe9bff5c3b441930c151c25389bc55c4759f7;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG3/vertexingHF/AliCFHeavyFlavourTaskMultiVarMultiStep.cxx b/PWG3/vertexingHF/AliCFHeavyFlavourTaskMultiVarMultiStep.cxx index d76d08caae5..2232c3c2fee 100644 --- a/PWG3/vertexingHF/AliCFHeavyFlavourTaskMultiVarMultiStep.cxx +++ b/PWG3/vertexingHF/AliCFHeavyFlavourTaskMultiVarMultiStep.cxx @@ -17,8 +17,8 @@ // Class for HF corrections as a function of many variables // 6 Steps introduced: MC, MC Acc, Reco, Reco Acc, Reco Acc + ITS Cl, // Reco Acc + ITS Cl + PPR cuts -// 12 variables used: pt, y, cosThetaStar, ptPi, ptK, ct, -// dca, d0Pi, d0K, d0Pixd0K, cosPointingAngle, phi +// 13 variables used: pt, y, cosThetaStar, ptPi, ptK, ct, +// dca, d0Pi, d0K, d0Pixd0K, cosPointingAngle, phi, z // //----------------------------------------------------------------------- // Author : C. Zampolli, CERN @@ -41,15 +41,20 @@ #include "AliCFManager.h" #include "AliCFContainer.h" #include "AliLog.h" +#include "AliAnalysisManager.h" +#include "AliAODHandler.h" #include "AliAODEvent.h" #include "AliAODRecoDecay.h" #include "AliAODRecoDecayHF.h" #include "AliAODRecoDecayHF2Prong.h" #include "AliAODMCParticle.h" +#include "AliAODMCHeader.h" #include "AliESDtrack.h" +#include "AliRDHFCutsD0toKpi.h" #include "TChain.h" #include "THnSparse.h" #include "TH2D.h" + //__________________________________________________________________________ AliCFHeavyFlavourTaskMultiVarMultiStep::AliCFHeavyFlavourTaskMultiVarMultiStep() : AliAnalysisTaskSE(), @@ -65,17 +70,20 @@ AliCFHeavyFlavourTaskMultiVarMultiStep::AliCFHeavyFlavourTaskMultiVarMultiStep() fCountRecoAcc(0), fCountRecoITSClusters(0), fCountRecoPPR(0), + fCountRecoPID(0), fEvents(0), fFillFromGenerated(kFALSE), fMinITSClusters(5), - fAcceptanceUnf(kTRUE) + fAcceptanceUnf(kTRUE), + fKeepD0fromB(kFALSE), + fCuts(0) { // //Default ctor // } //___________________________________________________________________________ -AliCFHeavyFlavourTaskMultiVarMultiStep::AliCFHeavyFlavourTaskMultiVarMultiStep(const Char_t* name) : +AliCFHeavyFlavourTaskMultiVarMultiStep::AliCFHeavyFlavourTaskMultiVarMultiStep(const Char_t* name, AliRDHFCutsD0toKpi* cuts) : AliAnalysisTaskSE(name), fPDG(0), fCFManager(0x0), @@ -89,10 +97,13 @@ AliCFHeavyFlavourTaskMultiVarMultiStep::AliCFHeavyFlavourTaskMultiVarMultiStep(c fCountRecoAcc(0), fCountRecoITSClusters(0), fCountRecoPPR(0), + fCountRecoPID(0), fEvents(0), fFillFromGenerated(kFALSE), fMinITSClusters(5), - fAcceptanceUnf(kTRUE) + fAcceptanceUnf(kTRUE), + fKeepD0fromB(kFALSE), + fCuts(cuts) { // // Constructor. Initialization of Inputs and Outputs @@ -105,6 +116,8 @@ AliCFHeavyFlavourTaskMultiVarMultiStep::AliCFHeavyFlavourTaskMultiVarMultiStep(c DefineOutput(1,TH1I::Class()); DefineOutput(2,AliCFContainer::Class()); DefineOutput(3,THnSparseD::Class()); + + fCuts->PrintAll(); } //___________________________________________________________________________ @@ -118,6 +131,7 @@ AliCFHeavyFlavourTaskMultiVarMultiStep& AliCFHeavyFlavourTaskMultiVarMultiStep:: fPDG = c.fPDG; fCFManager = c.fCFManager; fHistEventsProcessed = c.fHistEventsProcessed; + fCuts = c.fCuts; } return *this; } @@ -137,10 +151,13 @@ AliCFHeavyFlavourTaskMultiVarMultiStep::AliCFHeavyFlavourTaskMultiVarMultiStep(c fCountRecoAcc(c.fCountRecoAcc), fCountRecoITSClusters(c.fCountRecoITSClusters), fCountRecoPPR(c.fCountRecoPPR), + fCountRecoPID(c.fCountRecoPID), fEvents(c.fEvents), fFillFromGenerated(c.fFillFromGenerated), fMinITSClusters(c.fMinITSClusters), - fAcceptanceUnf(c.fAcceptanceUnf) + fAcceptanceUnf(c.fAcceptanceUnf), + fKeepD0fromB(c.fKeepD0fromB), + fCuts(c.fCuts) { // // Copy Constructor @@ -155,6 +172,7 @@ AliCFHeavyFlavourTaskMultiVarMultiStep::~AliCFHeavyFlavourTaskMultiVarMultiStep( if (fCFManager) delete fCFManager ; if (fHistEventsProcessed) delete fHistEventsProcessed ; if (fCorrelation) delete fCorrelation ; + if (fCuts) delete fCuts ; } //_________________________________________________ @@ -164,6 +182,12 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) // Main loop function // + PostData(1,fHistEventsProcessed) ; + PostData(2,fCFManager->GetParticleContainer()) ; + PostData(3,fCorrelation) ; + + AliESDtrackCuts* trackCuts = fCuts->GetTrackCuts(); // track cuts + if (fFillFromGenerated){ AliWarning("Flag to fill container with generated value ON ---> dca, d0pi, d0K, d0xd0, cosPointingAngle will be set as dummy!"); } @@ -174,18 +198,49 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) } fEvents++; - if (fEvents%10000 ==0) AliInfo(Form("Event %d",fEvents)); + if (fEvents%10000 ==0) AliDebug(2,Form("Event %d",fEvents)); AliAODEvent* aodEvent = dynamic_cast(fInputEvent); - fCFManager->SetEventInfo(aodEvent); + + TClonesArray *arrayD0toKpi=0; + + if(!aodEvent && AODEvent() && IsStandardAOD()) { + // In case there is an AOD handler writing a standard AOD, use the AOD + // event in memory rather than the input (ESD) event. + aodEvent = dynamic_cast (AODEvent()); + // in this case the braches in the deltaAOD (AliAOD.VertexingHF.root) + // have to taken from the AOD event hold by the AliAODExtension + AliAODHandler* aodHandler = (AliAODHandler*) + ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()); + if(aodHandler->GetExtensions()) { + AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject("AliAOD.VertexingHF.root"); + AliAODEvent *aodFromExt = ext->GetAOD(); + arrayD0toKpi=(TClonesArray*)aodFromExt->GetList()->FindObject("D0toKpi"); + } + } else { + arrayD0toKpi=(TClonesArray*)aodEvent->GetList()->FindObject("D0toKpi"); + } + + + if (!arrayD0toKpi) { + AliError("Could not find array of HF vertices"); + return; + } + + + fCFManager->SetRecEventInfo(aodEvent); + fCFManager->SetMCEventInfo(aodEvent); // MC-event selection - Double_t containerInput[12] ; - Double_t containerInputMC[12] ; + Double_t containerInput[13] ; + Double_t containerInputMC[13] ; //loop on the MC event TClonesArray* mcArray = dynamic_cast(aodEvent->FindListObject(AliAODMCParticle::StdBranchName())); - if (!mcArray) AliError("Could not find Monte-Carlo in AOD"); + if (!mcArray) { + AliError("Could not find Monte-Carlo in AOD"); + return; + } Int_t icountMC = 0; Int_t icountAcc = 0; Int_t icountReco = 0; @@ -194,11 +249,20 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) Int_t icountRecoAcc = 0; Int_t icountRecoITSClusters = 0; Int_t icountRecoPPR = 0; + Int_t icountRecoPID = 0; + AliAODMCHeader *mcHeader = dynamic_cast(aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName())); + if (!mcHeader) { + AliError("Could not find MC Header in AOD"); + return; + } + Int_t cquarks = 0; // AOD primary vertex AliAODVertex *vtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex(); + Double_t zPrimVertex = vtx1->GetZ(); + Double_t zMCVertex = mcHeader->GetVtxZ(); Bool_t vtxFlag = kTRUE; TString title=vtx1->GetTitle(); if(!title.Contains("VertexerTracks")) vtxFlag=kFALSE; @@ -219,7 +283,7 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) Int_t abspdgGranma = TMath::Abs(pdgGranma); if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)) { AliDebug(2,Form("Particle has a b-meson, or b-baryon mother (pdg code mother = %d )--> not coming from a c-quark, skipping...", pdgGranma)); - continue; // skipping particles that don't come from c quark + if (!fKeepD0fromB) continue; // skipping particles that don't come from c quark } // if (TMath::Abs(pdgGranma)!=4) { @@ -239,6 +303,10 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) containerInputMC[9] = -100000.; // dummy value, meaningless in MC, in micron^2 containerInputMC[10] = 1.01; // dummy value, meaningless in MC containerInputMC[11] = vectorMC[6]; // dummy value, meaningless in MC + containerInputMC[12] = zMCVertex; // z of reconstructed of primary vertex + if (TMath::Abs(vectorMC[1]) < 0.5) { + fCFManager->GetParticleContainer()->Fill(containerInputMC,kStepGeneratedLimAcc); + } fCFManager->GetParticleContainer()->Fill(containerInputMC,kStepGenerated); icountMC++; @@ -273,27 +341,44 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) // checking whether the cuts implemented in the CF are equivalent - simply a cross-check AliDebug(2, "Daughter particles in acceptance"); if (!fCFManager->CheckParticleCuts(1, mcPartDaughter0)) { - AliInfo("Inconsistency with CF cut for daughter 0!"); + AliDebug(2,"Inconsistency with CF cut for daughter 0!"); } if (!fCFManager->CheckParticleCuts(1, mcPartDaughter1)) { - AliInfo("Inconsistency with CF cut for daughter 1!"); + AliDebug(2,"Inconsistency with CF cut for daughter 1!"); } fCFManager->GetParticleContainer()->Fill(containerInputMC,kStepAcceptance); icountAcc++; // check on the vertex - if (vtxFlag){ - printf("Vertex cut passed\n"); + if (fCuts->IsEventSelected(aodEvent)){ + AliDebug(2,"Vertex cut passed\n"); // filling the container if the vertex is ok fCFManager->GetParticleContainer()->Fill(containerInputMC,kStepVertex) ; - printf("Vertex cut passed 2\n"); icountVertex++; // check on the kTPCrefit and kITSrefit conditions of the daughters - Bool_t refitFlag = kFALSE; - for (Int_t iaod =0; iaodGetNumberOfTracks(); iaod++){ - AliAODTrack *track = (AliAODTrack*)aodEvent->GetTrack(iaod); - if ((track->GetLabel() == daughter0) || (track->GetLabel() == daughter1) && (((track->GetStatus()&AliESDtrack::kTPCrefit)==AliESDtrack::kTPCrefit) && ((track->GetStatus()&AliESDtrack::kITSrefit)==AliESDtrack::kITSrefit))){ - refitFlag = kTRUE; + Bool_t refitFlag = kTRUE; + if (trackCuts->GetRequireTPCRefit() || trackCuts->GetRequireITSRefit()){ + Int_t foundDaughters = 0; + for (Int_t iaod =0; iaodGetNumberOfTracks(); iaod++){ + AliAODTrack *track = (AliAODTrack*)aodEvent->GetTrack(iaod); + if ((track->GetLabel() == daughter0) || (track->GetLabel() == daughter1)) { + foundDaughters++; + if (trackCuts->GetRequireTPCRefit()) { + if(!(track->GetStatus()&AliESDtrack::kTPCrefit)){ + refitFlag = kFALSE; + break; + } + } + if (trackCuts->GetRequireITSRefit()) { + if(!(track->GetStatus()&AliESDtrack::kITSrefit)){ + refitFlag = kFALSE; + break; + } + } + } + if (foundDaughters == 2){ // both daughters have been checked + break; + } } } if (refitFlag){ @@ -321,18 +406,15 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) if (cquarks<2) AliDebug(2,Form("Event found with %d c-quarks", cquarks)); - AliInfo(Form("Found %i MC particles that are D0!!",icountMC)); - AliInfo(Form("Found %i MC particles that are D0 and satisfy Acc cuts!!",icountAcc)); - AliInfo(Form("Found %i MC particles that are D0 and satisfy Vertex cuts!!",icountVertex)); - AliInfo(Form("Found %i MC particles that are D0 and satisfy Refit cuts!!",icountRefit)); + AliDebug(2,Form("Found %i MC particles that are D0!!",icountMC)); + AliDebug(2,Form("Found %i MC particles that are D0 and satisfy Acc cuts!!",icountAcc)); + AliDebug(2,Form("Found %i MC particles that are D0 and satisfy Vertex cuts!!",icountVertex)); + AliDebug(2,Form("Found %i MC particles that are D0 and satisfy Refit cuts!!",icountRefit)); // Now go to rec level fCountMC += icountMC; fCountAcc += icountAcc; - // load heavy flavour vertices - TClonesArray *arrayD0toKpi = (TClonesArray*)((aodEvent->GetList())->FindObject("D0toKpi")); - if (!arrayD0toKpi) AliError("Could not find array of HF vertices"); AliDebug(2, Form("Found %d vertices",arrayD0toKpi->GetEntriesFast())); Int_t pdgDgD0toKpi[2]={321,211}; @@ -361,13 +443,14 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) // check whether the daughters have kTPCrefit and kITSrefit set AliAODTrack *track0 = (AliAODTrack*)d0tokpi->GetDaughter(0); AliAODTrack *track1 = (AliAODTrack*)d0tokpi->GetDaughter(1); - if((!(track0->GetStatus()&AliESDtrack::kTPCrefit)) || (!(track1->GetStatus()&AliESDtrack::kTPCrefit)) || (!(track0->GetStatus()&AliESDtrack::kITSrefit)) || (!(track1->GetStatus()&AliESDtrack::kITSrefit))) { - // skipping if at least one daughter does not have kTPCrefit or kITSrefit + if ((trackCuts->GetRequireTPCRefit() && (!(track0->GetStatus()&AliESDtrack::kTPCrefit) || !(track1->GetStatus()&AliESDtrack::kTPCrefit))) || + (trackCuts->GetRequireITSRefit() && (!(track0->GetStatus()&AliESDtrack::kITSrefit) || !(track1->GetStatus()&AliESDtrack::kITSrefit)))){ + // skipping if at least one daughter does not have kTPCrefit or kITSrefit, if they were required continue; } // check on the vertex -- could be moved outside the loop on the reconstructed D0... - if(!vtxFlag) { + if(!fCuts->IsEventSelected(aodEvent)) { // skipping cause vertex is not ok continue; } @@ -388,13 +471,13 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) Int_t abspdgGranma = TMath::Abs(pdgGranma); if ((abspdgGranma > 500 && abspdgGranma < 600) || (abspdgGranma > 5000 && abspdgGranma < 6000)) { AliDebug(2,Form("At Reco level, from MC info: Particle has a b-meson, or b-baryon mother (pdg code mother = %d )--> not coming from a c-quark, skipping...", pdgGranma)); - continue; // skipping particles that don't come from c quark + if (!fKeepD0fromB) continue; // skipping particles that don't come from c quark } // fill the container... Double_t pt = d0tokpi->Pt(); Double_t rapidity = d0tokpi->YD0(); - + Double_t invMass=0.; Double_t cosThetaStar = 9999.; Double_t pTpi = 0.; Double_t pTK = 0.; @@ -411,6 +494,7 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) pTK = d0tokpi->PtProng(1); d0pi = d0tokpi->Getd0Prong(0); d0K = d0tokpi->Getd0Prong(1); + invMass=d0tokpi->InvMassD0(); } else { cosThetaStar = d0tokpi->CosThetaStarD0bar(); @@ -418,6 +502,7 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) pTK = d0tokpi->PtProng(0); d0pi = d0tokpi->Getd0Prong(1); d0K = d0tokpi->Getd0Prong(0); + invMass=d0tokpi->InvMassD0bar(); } Double_t cT = d0tokpi->CtD0(); @@ -436,6 +521,7 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) containerInput[9] = d0xd0*1.E8; // in micron^2 containerInput[10] = cosPointingAngle; // in micron containerInput[11] = phi; + containerInput[12] = zPrimVertex; // z of reconstructed of primary vertex } else { // ... or with generated values @@ -453,19 +539,25 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) containerInput[9] = 100000.; // dummy value, meaningless in MC, in micron^2 containerInput[10] = 1.01; // dummy value, meaningless in MC containerInput[11] = vectorMC[6]; + containerInput[12] = zMCVertex; // z of reconstructed of primary vertex } else { AliDebug(3,"Problems in filling the container"); continue; } } + AliDebug(2, Form("Filling the container with pt = %f, rapidity = %f, cosThetaStar = %f, pTpi = %f, pTK = %f, cT = %f", containerInput[0], containerInput[1], containerInput[2], containerInput[3], containerInput[4], containerInput[5])); icountReco++; + printf("%d: filling RECO step\n",iD0toKpi); fCFManager->GetParticleContainer()->Fill(containerInput,kStepReconstructed) ; // cut in acceptance - Bool_t acceptanceProng0 = (TMath::Abs(d0tokpi->EtaProng(0))< 0.9 && d0tokpi->PtProng(0) > 0.1); - Bool_t acceptanceProng1 = (TMath::Abs(d0tokpi->EtaProng(1))< 0.9 && d0tokpi->PtProng(1) > 0.1); + Float_t etaCutMin, etaCutMax, ptCutMin, ptCutMax; + trackCuts->GetEtaRange(etaCutMin,etaCutMax); + trackCuts->GetPtRange(ptCutMin,ptCutMax); + Bool_t acceptanceProng0 = (d0tokpi->EtaProng(0)>etaCutMin && d0tokpi->EtaProng(0)PtProng(0) > ptCutMin && d0tokpi->PtProng(0) < ptCutMax); + Bool_t acceptanceProng1 = (d0tokpi->EtaProng(1)>etaCutMin && d0tokpi->EtaProng(1)PtProng(1) > ptCutMin && d0tokpi->PtProng(1) < ptCutMax); if (acceptanceProng0 && acceptanceProng1) { AliDebug(2,"D0 reco daughters in acceptance"); fCFManager->GetParticleContainer()->Fill(containerInput,kStepRecoAcceptance) ; @@ -490,67 +582,16 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) } // cut on the min n. of clusters in ITS - Int_t ncls0=0; - for(Int_t l=0;l<6;l++) if(TESTBIT(d0tokpi->GetITSClusterMap(),l)) ncls0++; - AliDebug(2, Form("n clusters = %d", ncls0)); - if (ncls0 >= fMinITSClusters){ + if (fCuts->IsSelected(d0tokpi,AliRDHFCuts::kTracks)){ fCFManager->GetParticleContainer()->Fill(containerInput,kStepRecoITSClusters) ; icountRecoITSClusters++; AliDebug(2,Form("pT = %f, dca = %f, cosThetaStar = %f, pTpi = %f, pTK = %f, d0pi = %f, d0K = %f, d0xd0 = %f, cosPointingAngle = %f", pt, dca, cosThetaStar,pTpi, pTK, d0pi*1E4, d0K*1E4, d0xd0*1E8, cosPointingAngle)); - - // PPR cuts - Double_t cuts[6] = {9999999., 1.1, 0., 9999999., 9999999., 0.}; - if (pt <= 1){ - cuts[0] = 400; - cuts[1] = 0.8; - cuts[2] = 0.5; - cuts[3] = 500; - cuts[4] = -20000; - cuts[5] = 0.5; - } - else if (pt > 1 && pt <= 2){ - cuts[0] = 300; - cuts[1] = 0.8; - cuts[2] = 0.6; - cuts[3] = 500; - cuts[4] = -20000; - cuts[5] = 0.6; - } - else if (pt > 2 && pt <= 3){ - cuts[0] = 200; - cuts[1] = 0.8; - cuts[2] = 0.7; - cuts[3] = 500; - cuts[4] = -20000; - cuts[5] = 0.8; - } - else if (pt > 3 && pt <= 5){ - cuts[0] = 200; - cuts[1] = 0.8; - cuts[2] = 0.7; - cuts[3] = 500; - cuts[4] = -10000; - cuts[5] = 0.8; - } - else if (pt > 5){ - cuts[0] = 200; - cuts[1] = 0.8; - cuts[2] = 0.7; - cuts[3] = 500; - cuts[4] = -5000; - cuts[5] = 0.8; - } - if (dca*1E4 < cuts[0] - && TMath::Abs(cosThetaStar) < cuts[1] - && pTpi > cuts[2] - && pTK > cuts[2] - && TMath::Abs(d0pi*1E4) < cuts[3] - && TMath::Abs(d0K*1E4) < cuts[3] - && d0xd0*1E8 < cuts[4] - && cosPointingAngle > cuts[5] - ){ - - AliDebug(2,"Particle passed PPR cuts"); + AliInfo(Form("pT = %f, dca = %f, cosThetaStar = %f, pTpi = %f, pTK = %f, d0pi = %f, d0K = %f, d0xd0 = %f, cosPointingAngle = %f", pt, dca, cosThetaStar,pTpi, pTK, d0pi, d0K, d0xd0, cosPointingAngle)); + + + if (fCuts->IsSelected(d0tokpi,AliRDHFCuts::kCandidate)>0){ + AliInfo(Form("Particle passed PPR cuts (actually cuts for D0 analysis!) with pt = %f",containerInput[0])); + AliDebug(2,"Particle passed PPR cuts (actually cuts for D0 analysis!)"); fCFManager->GetParticleContainer()->Fill(containerInput,kStepRecoPPR) ; icountRecoPPR++; @@ -571,32 +612,11 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) fCorrelation->Fill(fill); } - } - else{ - AliDebug(2,"Particle skipped due to PPR cuts"); - if (dca*1E4 > cuts[0]){ - AliDebug(2,"Problems with dca"); - } - if ( TMath::Abs(cosThetaStar) > cuts[1]){ - AliDebug(2,"Problems with cosThetaStar"); - } - if (pTpi < cuts[2]){ - AliDebug(2,"Problems with pTpi"); - } - if (pTK < cuts[2]){ - AliDebug(2,"Problems with pTK"); - } - if (TMath::Abs(d0pi*1E4) > cuts[3]){ - AliDebug(2,"Problems with d0pi"); - } - if (TMath::Abs(d0K*1E4) > cuts[3]){ - AliDebug(2,"Problems with d0K"); - } - if (d0xd0*1E8 > cuts[4]){ - AliDebug(2,"Problems with d0xd0"); - } - if (cosPointingAngle < cuts[5]){ - AliDebug(2,"Problems with cosPointingAngle"); + if (fCuts->IsSelected(d0tokpi,AliRDHFCuts::kPID)>0){ + AliInfo(Form("Particle passed PID cuts with pt = %f",containerInput[0])); + AliDebug(2,"Particle passed PID cuts"); + fCFManager->GetParticleContainer()->Fill(containerInput,kStepRecoPID) ; + icountRecoPID++; } } } @@ -613,12 +633,13 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserExec(Option_t *) fCountRecoAcc+= icountRecoAcc; fCountRecoITSClusters+= icountRecoITSClusters; fCountRecoPPR+= icountRecoPPR; + fCountRecoPID+= icountRecoPID; fHistEventsProcessed->Fill(0); /* PostData(0) is taken care of by AliAnalysisTaskSE */ - PostData(1,fHistEventsProcessed) ; - PostData(2,fCFManager->GetParticleContainer()) ; - PostData(3,fCorrelation) ; + //PostData(1,fHistEventsProcessed) ; + //PostData(2,fCFManager->GetParticleContainer()) ; + //PostData(3,fCorrelation) ; } @@ -642,6 +663,7 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::Terminate(Option_t*) // draw some example plots.... + // AliCFContainer *cont= dynamic_cast (GetOutputData(2)); AliCFContainer *cont= dynamic_cast (GetOutputData(2)); if(!cont) { printf("CONTAINER NOT FOUND\n"); @@ -1031,7 +1053,7 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::Terminate(Option_t*) corr2->Draw("text"); - TFile* file_projection = new TFile("file_projection.root","RECREATE"); + TFile* file_projection = new TFile("CFtaskHFprojection.root","RECREATE"); corr1->Write(); corr2->Write(); @@ -1088,7 +1110,7 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::Terminate(Option_t*) c2->SaveAs("Plots/pTpi_pTK_cT.gif"); c3->SaveAs("Plots/dca_d0pi_d0TK.gif"); c4->SaveAs("Plots/d0xd0_cosPointingAngle.gif"); - */ + */ } //___________________________________________________________________________ @@ -1100,7 +1122,7 @@ void AliCFHeavyFlavourTaskMultiVarMultiStep::UserCreateOutputObjects() { //slot #1 OpenFile(1); - fHistEventsProcessed = new TH1I("fHistEventsProcessed","",1,0,1) ; + fHistEventsProcessed = new TH1I("CFHFchist0","",1,0,1) ; } //___________________________________________________________________________ @@ -1380,4 +1402,3 @@ Int_t AliCFHeavyFlavourTaskMultiVarMultiStep::CheckOrigin(AliAODMCParticle* mcPa } return pdgGranma; } -