]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/EMCALJetTasks/AliJetEmbeddingFromAODTask.cxx
update histos
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliJetEmbeddingFromAODTask.cxx
index 7cf68becbc3036ea7568ef4e58593a351c2f9cb6..8a782d56468581b7ee2f7062b45a989a924b31ed 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: AliJetEmbeddingFromAODTask.cxx $
+// $Id$
 //
 // Jet embedding from AOD task.
 //
@@ -39,6 +39,7 @@
 #include "AliFJWrapper.h"
 #include "AliLog.h"
 #include "AliInputEventHandler.h"
+#include "AliNamedString.h"
 
 ClassImp(AliJetEmbeddingFromAODTask)
 
@@ -69,6 +70,9 @@ AliJetEmbeddingFromAODTask::AliJetEmbeddingFromAODTask() :
   fJetType(0),
   fJetAlgo(1),
   fJetParticleLevel(kTRUE),
+  fParticleMinPt(0),
+  fParticleMaxPt(0),
+  fParticleSelection(0),
   fIncludeNoITS(kFALSE),
   fCutMaxFractionSharedTPCClusters(0.4),
   fUseNegativeLabels(kTRUE),
@@ -89,11 +93,13 @@ AliJetEmbeddingFromAODTask::AliJetEmbeddingFromAODTask() :
   fAODCaloCells(0),
   fAODMCParticles(0),
   fCurrentAODEntry(-1),
+  fAODFilePath(0),
   fHistFileMatching(0),
   fHistAODFileError(0),
   fHistNotEmbedded(0),
   fHistEmbeddingQA(0),
-  fHistRejectedEvents(0)
+  fHistRejectedEvents(0),
+  fEmbeddingCount(0)
 {
   // Default constructor.
   SetSuffix("AODEmbedding");
@@ -134,6 +140,9 @@ AliJetEmbeddingFromAODTask::AliJetEmbeddingFromAODTask(const char *name, Bool_t
   fJetType(0),
   fJetAlgo(1),
   fJetParticleLevel(kTRUE),
+  fParticleMinPt(0),
+  fParticleMaxPt(0),
+  fParticleSelection(0),
   fIncludeNoITS(kFALSE),
   fCutMaxFractionSharedTPCClusters(0.4),
   fUseNegativeLabels(kTRUE),
@@ -154,11 +163,13 @@ AliJetEmbeddingFromAODTask::AliJetEmbeddingFromAODTask(const char *name, Bool_t
   fAODCaloCells(0),  
   fAODMCParticles(0),
   fCurrentAODEntry(-1),
+  fAODFilePath(0),
   fHistFileMatching(0),
   fHistAODFileError(0),
   fHistNotEmbedded(0),
   fHistEmbeddingQA(0),
-  fHistRejectedEvents(0)
+  fHistRejectedEvents(0),
+  fEmbeddingCount(0)
 {
   // Standard constructor.
   SetSuffix("AODEmbedding");
@@ -250,6 +261,13 @@ Bool_t AliJetEmbeddingFromAODTask::ExecOnce()
   else
     fEsdTreeMode = kTRUE;
 
+  fAODFilePath = static_cast<AliNamedString*>(InputEvent()->FindListObject("AODEmbeddingFile"));
+  if (!fAODFilePath) {
+    fAODFilePath = new AliNamedString("AODEmbeddingFile", "");
+    AliDebug(3,"Adding AOD embedding file path object to the event list...");
+    InputEvent()->AddObject(fAODFilePath);
+  }
+
   return AliJetModelBaseTask::ExecOnce();
 }
 
@@ -320,6 +338,8 @@ Bool_t AliJetEmbeddingFromAODTask::OpenNextFile()
   
   if (fHistFileMatching)
     fHistFileMatching->Fill(fCurrentFileID, fCurrentAODFileID-1);
+
+  fEmbeddingCount = 0;
   
   return kTRUE;
 }
@@ -394,11 +414,14 @@ Bool_t AliJetEmbeddingFromAODTask::GetNextEntry()
 
   } while (!IsAODEventSelected());
 
-  fHistRejectedEvents->Fill(attempts);
+  if (fHistRejectedEvents)
+    fHistRejectedEvents->Fill(attempts);
 
   if (!fCurrentAODTree)
     return kFALSE;
 
+  fEmbeddingCount++;
+
   return kTRUE;
 }
 
@@ -452,6 +475,12 @@ Bool_t AliJetEmbeddingFromAODTask::IsAODEventSelected()
       
   }
 
+  // Particle selection
+  if ((fParticleSelection == 1 && FindParticleInRange(fAODTracks)==kFALSE) ||
+      (fParticleSelection == 2 && FindParticleInRange(fAODClusters)==kFALSE) ||
+      (fParticleSelection == 3 && FindParticleInRange(fAODMCParticles)==kFALSE))
+    return kFALSE;
+
   // Jet selection
   if (fJetMinPt > 0) {
     TLorentzVector jet;
@@ -481,6 +510,39 @@ Bool_t AliJetEmbeddingFromAODTask::IsAODEventSelected()
   return kTRUE;
 }
 
+//________________________________________________________________________
+Bool_t AliJetEmbeddingFromAODTask::FindParticleInRange(TClonesArray *array)
+{
+  if (!array) return kFALSE;
+
+  if (array->GetClass()->InheritsFrom("AliVParticle")) {
+    const Int_t nentries = array->GetEntriesFast();
+    for (Int_t i = 0; i < nentries; i++) {
+      AliVParticle *part = static_cast<AliVParticle*>(array->At(i));
+      if (!part) continue;
+      if (part->Pt() > fParticleMinPt && part->Pt() < fParticleMaxPt) return kTRUE;
+    }
+  }
+  else if (array->GetClass()->InheritsFrom("AliVCluster")) {
+    const Int_t nentries = array->GetEntriesFast();
+    for (Int_t i = 0; i < nentries; i++) {
+      AliVCluster *clus = static_cast<AliVCluster*>(array->At(i));
+      if (!clus) continue;
+      
+      TLorentzVector vect;
+      Double_t vert[3] = {0,0,0};
+      clus->GetMomentum(vect,vert);
+
+      if (vect.Pt() > fParticleMinPt && vect.Pt() < fParticleMaxPt) return kTRUE;
+    }
+  }
+  else {
+    AliWarning(Form("Unable to do event selection based on particle pT: %s class type not recognized.",array->GetClass()->GetName()));
+  }
+
+  return kFALSE;
+}
+
 //________________________________________________________________________
 void AliJetEmbeddingFromAODTask::Run() 
 {
@@ -496,6 +558,8 @@ void AliJetEmbeddingFromAODTask::Run()
   if (fHistEmbeddingQA)
     fHistEmbeddingQA->Fill("OK", 1);
 
+  fAODFilePath->SetString(fCurrentAODFile->GetName());
+
   if (fOutMCParticles) {
 
     if (fCopyArray && fMCParticles)
@@ -558,7 +622,7 @@ void AliJetEmbeddingFromAODTask::Run()
              else {
                AliDebug(3, "Track not embedded because ITS refit failed.");
                continue;
-           }
+             }
            }
            else {
              type = 1;
@@ -586,6 +650,11 @@ void AliJetEmbeddingFromAODTask::Run()
            else
              type = ptrack->GetLabel();
            isEmc = ptrack->IsEMCAL();
+
+           if (!fIncludeNoITS && type==2) {
+             AliDebug(3, "Track not embedded because ITS refit failed.");
+             continue;
+           }
          }
        }
        
@@ -615,7 +684,7 @@ void AliJetEmbeddingFromAODTask::Run()
            AliDebug(1,Form("%s: Track %d with label==0", GetName(), i));
        }
 
-       AddTrack(track->Pt(), track->Eta(), track->Phi(), type, track->GetTrackEtaOnEMCal(), track->GetTrackPhiOnEMCal(), isEmc, label, track->Charge());
+       AddTrack(track->Pt(), track->Eta(), track->Phi(), type, track->GetTrackEtaOnEMCal(), track->GetTrackPhiOnEMCal(), track->GetTrackPtOnEMCal(), isEmc, label, track->Charge());
        AliDebug(3, "Track embedded!");
       }
     }