]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Case of Bayesian PID with weights added in the CF (Jeremy, Francesco) + fix compilati...
authorfprino <prino@to.infn.it>
Thu, 16 Oct 2014 22:32:00 +0000 (00:32 +0200)
committerfprino <prino@to.infn.it>
Thu, 16 Oct 2014 23:08:50 +0000 (01:08 +0200)
PWGHF/vertexingHF/AliCFTaskVertexingHF.cxx

index 7a2976fa1bd9916cb9acb88ea23e14ae71199ce9..680b5cf870622469d1cc5ec3ed2f78ed1fa90844 100644 (file)
@@ -286,7 +286,10 @@ AliCFTaskVertexingHF::AliCFTaskVertexingHF(const AliCFTaskVertexingHF& c) :
   fRefMult(c.fRefMult),
   fZvtxCorrectedNtrkEstimator(c.fZvtxCorrectedNtrkEstimator),
   fIsPPData(c.fIsPPData),
-  fIsPPbData(c.fIsPPbData)
+  fIsPPbData(c.fIsPPbData),
+  fUseAdditionalCuts(c.fUseAdditionalCuts),
+  fUseCutsForTMVA(c.fUseCutsForTMVA),
+  fUseCascadeTaskForLctoV0bachelor(c.fUseCascadeTaskForLctoV0bachelor)
 {
   //
   // Copy Constructor
@@ -1081,7 +1084,34 @@ void AliCFTaskVertexingHF::UserExec(Option_t *)
              if (fDecayChannel == 32) tempPid=(recoPidSelection >0 || recoPidSelection == isPartOrAntipart);
 
              if (tempPid){
-               fCFManager->GetParticleContainer()->Fill(containerInput, kStepRecoPID, fWeight);
+               Double_t weigPID = 1.;
+               if (fDecayChannel == 2){ // D0 with Bayesian PID using weights
+                 if(((AliRDHFCutsD0toKpi*)fCuts)->GetCombPID() && (((AliRDHFCutsD0toKpi*)fCuts)->GetBayesianStrategy() == AliRDHFCutsD0toKpi::kBayesWeight || ((AliRDHFCutsD0toKpi*)fCuts)->GetBayesianStrategy() == AliRDHFCutsD0toKpi::kBayesWeightNoFilter)){
+                   if (isPartOrAntipart == 1){
+                     weigPID = ((AliRDHFCutsD0toKpi*)fCuts)->GetWeightsNegative()[AliPID::kKaon] * ((AliRDHFCutsD0toKpi*)fCuts)->GetWeightsPositive()[AliPID::kPion];
+                   }else if (isPartOrAntipart == 2){
+                     weigPID = ((AliRDHFCutsD0toKpi*)fCuts)->GetWeightsPositive()[AliPID::kKaon] * ((AliRDHFCutsD0toKpi*)fCuts)->GetWeightsNegative()[AliPID::kPion];
+                   }
+                   if ((weigPID  < 0) || (weigPID > 1)) weigPID = 0.;
+                 }
+               }else if (fDecayChannel == 33){ // Ds with Bayesian PID using weights
+                 if(((AliRDHFCutsDstoKKpi*)fCuts)->GetPidOption()==AliRDHFCutsDstoKKpi::kBayesianWeights){
+                   Int_t labDau0=((AliAODTrack*)charmCandidate->GetDaughter(0))->GetLabel();
+                   AliAODMCParticle* firstDau=(AliAODMCParticle*)mcArray->UncheckedAt(TMath::Abs(labDau0));
+                   if(firstDau){
+                     Int_t pdgCode0=TMath::Abs(firstDau->GetPdgCode());
+                     if(pdgCode0==321){
+                       weigPID=((AliRDHFCutsDstoKKpi*)fCuts)->GetWeightForKKpi();
+                     }else if(pdgCode0==211){
+                       weigPID=((AliRDHFCutsDstoKKpi*)fCuts)->GetWeightForpiKK();
+                     }
+                     if ((weigPID  < 0) || (weigPID > 1)) weigPID = 0.;
+                   }else{
+                     weigPID=0.;
+                   }
+                 }
+               }
+               fCFManager->GetParticleContainer()->Fill(containerInput, kStepRecoPID, fWeight*weigPID);
                icountRecoPID++;
                AliDebug(3,"Reco PID cuts passed and container filled \n");
                if(!fAcceptanceUnf){