]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/vertexingHF/AliAnalysisTaskSELc2V0bachelorTMVA.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAnalysisTaskSELc2V0bachelorTMVA.cxx
old mode 100644 (file)
new mode 100755 (executable)
index f257913..000a1fd
@@ -190,7 +190,8 @@ AliAnalysisTaskSE(),
   fKeepingOnlyPYTHIABkg(kFALSE),
   fHistoMCLcK0SpGen(0x0),
   fHistoMCLcK0SpGenAcc(0x0),
-  fHistoMCLcK0SpGenLimAcc(0x0)
+  fHistoMCLcK0SpGenLimAcc(0x0),
+  fTriggerMask(0)
 {
   //
   // Default ctor
@@ -313,8 +314,8 @@ AliAnalysisTaskSELc2V0bachelorTMVA::AliAnalysisTaskSELc2V0bachelorTMVA(const Cha
   fKeepingOnlyPYTHIABkg(kFALSE),
   fHistoMCLcK0SpGen(0x0),
   fHistoMCLcK0SpGenAcc(0x0),
-  fHistoMCLcK0SpGenLimAcc(0x0)
-
+  fHistoMCLcK0SpGenLimAcc(0x0),
+  fTriggerMask(0)
 {
   //
   // Constructor. Initialization of Inputs and Outputs
@@ -413,7 +414,7 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::Terminate(Option_t*)
   // a query. It always runs on the client, it can be used to present
   // the results graphically or save the results to file.
   
-  //AliInfo("Terminate","");
+  AliInfo("Terminate");
   AliAnalysisTaskSE::Terminate();
   
   fOutput = dynamic_cast<TList*> (GetOutputData(1));
@@ -423,9 +424,25 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::Terminate(Option_t*)
   }
 
   
-  AliDebug(2, Form("At MC level, %f Lc --> K0S + p were found", fHistoMCLcK0SpGen->GetEntries()));
-  AliDebug(2, Form("At MC level, %f Lc --> K0S + p were found in the acceptance", fHistoMCLcK0SpGenAcc->GetEntries()));
-
+  //AliDebug(2, Form("At MC level, %f Lc --> K0S + p were found", fHistoMCLcK0SpGen->GetEntries()));
+  //AliDebug(2, Form("At MC level, %f Lc --> K0S + p were found in the acceptance", fHistoMCLcK0SpGenAcc->GetEntries()));
+  //AliDebug(2, Form("At Reco level, %lld Lc --> K0S + p were found", fVariablesTreeSgn->GetEntries()));
+  if(fHistoMCLcK0SpGen) {
+    AliInfo(Form("At MC level, %f Lc --> K0S + p were found", fHistoMCLcK0SpGen->GetEntries()));
+  } else {
+    AliInfo("fHistoMCLcK0SpGen not available");
+  }
+  if(fHistoMCLcK0SpGenAcc) {
+    AliInfo(Form("At MC level, %f Lc --> K0S + p were found in the acceptance", fHistoMCLcK0SpGenAcc->GetEntries()));
+  } else {
+    AliInfo("fHistoMCLcK0SpGenAcc not available");
+  }
+  if(fVariablesTreeSgn) {
+    AliInfo(Form("At Reco level, %lld Lc --> K0S + p were found", fVariablesTreeSgn->GetEntries()));
+  } else {
+    AliInfo("fVariablesTreeSgn not available");
+  }    
+  
   fOutputKF = dynamic_cast<TList*> (GetOutputData(6));
   if (!fOutputKF) {     
     AliError("fOutputKF not available");
@@ -874,11 +891,17 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::UserExec(Option_t *)
   
   if ( !fUseMCInfo && fIspA) {
     fAnalCuts->SetTriggerClass("");
-    fAnalCuts->SetTriggerMask(AliVEvent::kINT7);
+    fAnalCuts->SetTriggerMask(fTriggerMask);
   }
-
+  
+  Int_t runnumber = aodEvent->GetRunNumber();
+  if (aodEvent->GetTriggerMask() == 0 && (runnumber >= 195344 && runnumber <= 195677)){
+    AliDebug(3,"Event rejected because of null trigger mask");
+    return;
+  }
+  
   fCounter->StoreEvent(aodEvent,fAnalCuts,fUseMCInfo);
-
+  
   // mc analysis 
   TClonesArray *mcArray = 0;
   AliAODMCHeader *mcHeader=0;
@@ -896,10 +919,18 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::UserExec(Option_t *)
       AliError("AliAnalysisTaskSELc2V0bachelorTMVA::UserExec: MC header branch not found!\n");
       return;
     }
+
+    Double_t zMCVertex = mcHeader->GetVtxZ();
+    if (TMath::Abs(zMCVertex) > fAnalCuts->GetMaxVtxZ()){
+      AliDebug(3,Form("z coordinate of MC vertex = %f, it was required to be within [-%f, +%f], skipping event", zMCVertex, fAnalCuts->GetMaxVtxZ(), fAnalCuts->GetMaxVtxZ()));
+      AliInfo(Form("z coordinate of MC vertex = %f, it was required to be within [-%f, +%f], skipping event", zMCVertex, fAnalCuts->GetMaxVtxZ(), fAnalCuts->GetMaxVtxZ()));
+      return;
+    }
+    
     //Printf("Filling MC histo");
     FillMCHisto(mcArray);
   }
-
+  
   // AOD primary vertex
   fVtx1 = (AliAODVertex*)aodEvent->GetPrimaryVertex();
   if (!fVtx1) return;
@@ -940,7 +971,6 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::FillMCHisto(TClonesArray *mcArray){
     AliAODMCParticle* mcPart = dynamic_cast<AliAODMCParticle*>(mcArray->At(iPart));
     if (!mcPart){
       AliError("Failed casting particle from MC array!, Skipping particle");
-      AliInfo("Failed casting particle from MC array!, Skipping particle");
       continue;
     }
     Int_t pdg = mcPart->GetPdgCode();
@@ -959,6 +989,10 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::FillMCHisto(TClonesArray *mcArray){
       AliDebug(2, Form("Step 1 ok: The MC particle has correct daughters!!"));
       AliAODMCParticle* daugh0 = dynamic_cast<AliAODMCParticle*>(mcArray->At(labeldaugh0));
       AliAODMCParticle* daugh1 = dynamic_cast<AliAODMCParticle*>(mcArray->At(labeldaugh1));
+      if(!daugh0 || !daugh1){
+       AliDebug(2,"Particle daughters not properly retrieved!");
+       return;
+      }
       Int_t pdgCodeDaugh0 = TMath::Abs(daugh0->GetPdgCode());
       Int_t pdgCodeDaugh1 = TMath::Abs(daugh1->GetPdgCode());
       AliAODMCParticle* bachelorMC = daugh0;
@@ -982,7 +1016,6 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::FillMCHisto(TClonesArray *mcArray){
          AliAODMCParticle* partK0S = dynamic_cast<AliAODMCParticle*>(mcArray->At(labelK0daugh));
          if(!partK0S){
            AliError("Error while casting particle! returning a NULL array");
-           AliInfo("Error while casting particle! returning a NULL array");
            continue;
          }
          else { // So far: Lc --> K0 + p, K0 with 1 daughter that we can access
@@ -1012,6 +1045,7 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::FillMCHisto(TClonesArray *mcArray){
                  if (fAnalCuts->IsInFiducialAcceptance(mcPart->Pt(), mcPart->Y())) {
                    AliDebug(2, Form("----> Filling histo with pt = %f", mcPart->Pt()));
                    if(TMath::Abs(mcPart->Y()) < 0.5) fHistoMCLcK0SpGenLimAcc->Fill(mcPart->Pt());
+                   //AliInfo(Form("\nparticle = %d, Filling MC Gen histo\n", iPart));
                    fHistoMCLcK0SpGen->Fill(mcPart->Pt());
                    if(!(TMath::Abs(bachelorMC->Eta()) > 0.9 || bachelorMC->Pt() < 0.1 ||
                         TMath::Abs(daughK0S0->Eta()) > 0.9 || daughK0S0->Pt() < 0.1 ||
@@ -1244,7 +1278,7 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::MakeAnalysisForLc2prK0S(TClonesArray *a
       }
     }
 
-    FillLc2pK0Sspectrum(lcK0spr, isLc, nSelectedAnal, cutsAnal, mcArray);
+    FillLc2pK0Sspectrum(lcK0spr, isLc, nSelectedAnal, cutsAnal, mcArray, iLctopK0s);
     
   }
   
@@ -1256,7 +1290,7 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::FillLc2pK0Sspectrum(AliAODRecoCascadeHF
                                                             Int_t isLc,
                                                             Int_t &nSelectedAnal,
                                                             AliRDHFCutsLctoV0 *cutsAnal,
-                                                            TClonesArray *mcArray){
+                                                            TClonesArray *mcArray, Int_t iLctopK0s){
   //
   // Fill histos for Lc -> K0S+proton
   //
@@ -1314,8 +1348,8 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::FillLc2pK0Sspectrum(AliAODRecoCascadeHF
   Int_t isInV0window = (((cutsAnal->IsSelectedSingleCut(part, AliRDHFCuts::kCandidate, 2)) & (AliRDHFCutsLctoV0::kLcToK0Spr)) == (AliRDHFCutsLctoV0::kLcToK0Spr)); // cut on V0 invMass
 
   if (isInV0window == 0) {
-    AliDebug(2, "No: The candidate has NOT passed the mass cuts!");
-    if (isLc) Printf("SIGNAL candidate rejected");
+    AliDebug(2, "No: The candidate has NOT passed the V0 window cuts!");
+    if (isLc) Printf("SIGNAL candidate rejected: V0 window cuts");
     return;           
   }
   else AliDebug(2, "Yes: The candidate has passed the mass cuts!");
@@ -1324,12 +1358,13 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::FillLc2pK0Sspectrum(AliAODRecoCascadeHF
 
   if (!isInCascadeWindow) {
     AliDebug(2, "No: The candidate has NOT passed the cascade window cuts!");
-    if (isLc) Printf("SIGNAL candidate rejected");
+    if (isLc) Printf("SIGNAL candidate rejected: cascade window cuts");
     return;
   }
   else AliDebug(2, "Yes: The candidate has passed the cascade window cuts!");
 
   Bool_t isCandidateSelectedCuts = (((cutsAnal->IsSelected(part, AliRDHFCuts::kCandidate)) & (AliRDHFCutsLctoV0::kLcToK0Spr)) == (AliRDHFCutsLctoV0::kLcToK0Spr)); // kinematic/topological cuts
+  AliDebug(2, Form("recoAnalysisCuts = %d", cutsAnal->IsSelected(part, AliRDHFCuts::kCandidate) & (AliRDHFCutsLctoV0::kLcToK0Spr)));
   if (!isCandidateSelectedCuts){
     AliDebug(2, "No: Analysis cuts kCandidate level NOT passed");
     if (isLc) Printf("SIGNAL candidate rejected");
@@ -1668,7 +1703,7 @@ void AliAnalysisTaskSELc2V0bachelorTMVA::FillLc2pK0Sspectrum(AliAODRecoCascadeHF
 
     if (fUseMCInfo) {
       if (isLc){
-       AliDebug(2, "Filling Sgn");
+       AliDebug(2, Form("Reco particle %d --> Filling Sgn", iLctopK0s));
        fVariablesTreeSgn->Fill();
        fHistoCodesSgn->Fill(bachCode, k0SCode);          
       }