]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Use of AliEmcalParticle with new dev classes
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Aug 2013 14:18:17 +0000 (14:18 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Aug 2013 14:18:17 +0000 (14:18 +0000)
14 files changed:
PWG/EMCAL/AliAnalysisTaskEmcalDev.cxx
PWG/EMCAL/AliAnalysisTaskEmcalDev.h
PWG/EMCAL/AliClusterContainer.cxx
PWG/EMCAL/AliClusterContainer.h
PWG/EMCAL/AliEmcalClusTrackMatcherTask.cxx
PWG/EMCAL/AliEmcalClusTrackMatcherTask.h
PWG/EMCAL/AliEmcalContainer.cxx
PWG/EMCAL/AliEmcalContainer.h
PWG/EMCAL/AliParticleContainer.cxx
PWG/EMCAL/AliParticleContainer.h
PWG/EMCAL/macros/AddTaskEmcalClusTrackMatcher.C
PWGJE/EMCALJetTasks/AliAnalysisTaskEmcalJetDev.cxx
PWGJE/EMCALJetTasks/AliJetContainer.cxx
PWGJE/EMCALJetTasks/AliJetContainer.h

index 6ee60e4c9a740a3f12f968e6b988bafae484e012..372529375bfa2d72d1ba4d13d2ec9ac5db87128f 100644 (file)
@@ -70,10 +70,6 @@ AliAnalysisTaskEmcalDev::AliAnalysisTaskEmcalDev() :
   fMinEventPlane(-10),
   fMaxEventPlane(10),
   fCentEst("V0M"),
-  fTrackBitMap(0),
-  fClusterBitMap(0),
-  fMCTrackBitMap(0),
-  fMCClusterBitMap(0),
   fIsEmbedded(kFALSE),
   fIsPythia(kFALSE),
   fSelectPtHardBin(-999),
@@ -151,10 +147,6 @@ AliAnalysisTaskEmcalDev::AliAnalysisTaskEmcalDev(const char *name, Bool_t histo)
   fMinEventPlane(-10),
   fMaxEventPlane(10),
   fCentEst("V0M"),
-  fTrackBitMap(0),
-  fClusterBitMap(0),
-  fMCTrackBitMap(0),
-  fMCClusterBitMap(0),
   fIsEmbedded(kFALSE),
   fIsPythia(kFALSE),
   fSelectPtHardBin(-999),
@@ -374,56 +366,6 @@ Bool_t AliAnalysisTaskEmcalDev::AcceptTrack(AliVParticle *track, Int_t c) const
   }
 
   return cont->AcceptParticle(track);
-
-  if (!track)
-    return kFALSE;
-
-}
-
-//________________________________________________________________________
-Bool_t AliAnalysisTaskEmcalDev::AcceptEmcalPart(AliEmcalParticle *part) const
-{
-  // Return true if EMCal particle is accepted.
-
-  if (!part)
-    return kFALSE;
-
-  if (part->IsTrack()) {
-    if (part->IsMC()) { 
-      if (part->TestBits(fMCTrackBitMap) != (Int_t)fMCTrackBitMap)
-       return kFALSE;
-    }
-    else {
-      if (part->TestBits(fTrackBitMap) != (Int_t)fTrackBitMap)
-       return kFALSE;
-    }
-
-    if (part->Pt() < fTrackPtCut)
-      return kFALSE;
-
-    if (part->Eta() < fTrackMinEta || part->Eta() > fTrackMaxEta || 
-       part->Phi() < fTrackMinPhi || part->Phi() > fTrackMaxPhi)
-      return kFALSE;
-  }
-
-  if (part->IsCluster()) {
-    if (part->IsMC(fMinMCLabel)) { 
-      if (part->TestBits(fMCClusterBitMap) != (Int_t)fMCClusterBitMap)
-       return kFALSE;
-    }
-    else {
-      if (part->TestBits(fClusterBitMap) != (Int_t)fClusterBitMap)
-       return kFALSE;
-    }
-
-    if (!part->IsEMCAL())
-      return kFALSE;
-
-    if (part->Pt() < fClusPtCut)
-      return kFALSE;
-  }
-
-  return kTRUE;
 }
 
 //________________________________________________________________________
@@ -570,7 +512,7 @@ void AliAnalysisTaskEmcalDev::ExecOnce()
   //Load all requested track branches - each container knows name already
   for(Int_t i =0; i<fParticleCollArray.GetEntriesFast(); i++) {
     AliParticleContainer *cont = static_cast<AliParticleContainer*>(fParticleCollArray.At(i));
-    cont->SetParticleArray(InputEvent());
+    cont->SetArray(InputEvent());
   }
 
   if (fParticleCollArray.GetEntriesFast()>0) {
@@ -584,7 +526,7 @@ void AliAnalysisTaskEmcalDev::ExecOnce()
   //Load all requested cluster branches - each container knows name already
   for(Int_t i =0; i<fClusterCollArray.GetEntriesFast(); i++) {
     AliClusterContainer *cont = static_cast<AliClusterContainer*>(fClusterCollArray.At(i));
-    cont->SetClusterArray(InputEvent());
+    cont->SetArray(InputEvent());
   }
 
   if(fClusterCollArray.GetEntriesFast()>0) {
index 273102e3818b4e5df8a80463599e26e633661382..fb3db97aeee77a4b6b096b7d34f76beebbe6b83f 100644 (file)
@@ -63,12 +63,6 @@ class AliAnalysisTaskEmcalDev : public AliAnalysisTaskSE {
   void                        SetMinPtTrackInEmcal(Double_t min)                    { fMinPtTrackInEmcal = min                            ; }
   void                        SetEventPlaneVsEmcal(Double_t ep)                     { fEventPlaneVsEmcal = ep                             ; }
   void                        SetCentralityEstimator(const char *c)                 { fCentEst           = c                              ; }
-  void                        SetTrackBitMap(UInt_t m)                              { fTrackBitMap       = m                              ; }
-  void                        SetClusterBitMap(UInt_t m)                            { fClusterBitMap     = m                              ; }
-  void                        SetParticleBitMap(UInt_t m)                           { fClusterBitMap     = m    ; fTrackBitMap       = m  ; }
-  void                        SetMCTrackBitMap(UInt_t m)                            { fMCTrackBitMap     = m                              ; }
-  void                        SetMCClusterBitMap(UInt_t m)                          { fMCClusterBitMap   = m                              ; }
-  void                        SetMCParticleBitMap(UInt_t m)                         { fMCClusterBitMap   = m    ; fMCTrackBitMap     = m  ; }
   void                        SetMinMCLabel(Int_t s)                                { fMinMCLabel        = s                              ; }
   void                        SetIsEmbedded(Bool_t i)                               { fIsEmbedded        = i                              ; }
   void                        SetIsPythia(Bool_t i)                                 { fIsPythia          = i                              ; }
@@ -95,7 +89,6 @@ class AliAnalysisTaskEmcalDev : public AliAnalysisTaskSE {
 
  protected:
   Bool_t                      AcceptCluster(AliVCluster        *clus,  Int_t c = 0)  const;
-  Bool_t                      AcceptEmcalPart(AliEmcalParticle *part)                const;
   Bool_t                      AcceptTrack(AliVParticle         *track, Int_t c = 0)  const;
   virtual void                ExecOnce();
   virtual Bool_t              FillGeneralHistograms();
@@ -135,10 +128,6 @@ class AliAnalysisTaskEmcalDev : public AliAnalysisTaskSE {
   Double_t                    fMinEventPlane;              // minimum event plane value
   Double_t                    fMaxEventPlane;              // maximum event plane value
   TString                     fCentEst;                    // name of V0 centrality estimator
-  UInt_t                      fTrackBitMap;                // bit map of accepted tracks (non MC)
-  UInt_t                      fClusterBitMap;              // bit map of accepted clusters (non MC)
-  UInt_t                      fMCTrackBitMap;              // bit map of accepted MC tracks
-  UInt_t                      fMCClusterBitMap;            // bit map of accepted MC clusters
   Bool_t                      fIsEmbedded;                 // trigger, embedded signal
   Bool_t                      fIsPythia;                   // trigger, if it is a PYTHIA production
   Int_t                       fSelectPtHardBin;            // select one pt hard bin for analysis
index c920f0fec6874e57762ac8e0e739f8879c5ac81e..1a58ddc997d5635edc1d3f648ccf8a9d936abb15 100644 (file)
@@ -24,6 +24,7 @@ AliClusterContainer::AliClusterContainer():
 {
   // Default constructor.
 
+  fClassName = "AliVCluster";
 }
 
 //________________________________________________________________________
@@ -38,24 +39,19 @@ AliClusterContainer::AliClusterContainer(const char *name):
 {
   // Standard constructor.
 
+  fClassName = "AliVCluster";
 }
 
 //________________________________________________________________________
-void AliClusterContainer::SetClusterArray(AliVEvent *event) 
-{
-  // Set jet array
-
-  SetArray(event, "AliVCluster");
-}
-
-//________________________________________________________________________
-AliVCluster* AliClusterContainer::GetLeadingCluster(const char* opt) const
+AliVCluster* AliClusterContainer::GetLeadingCluster(const char* opt)
 {
   // Get the leading cluster; use e if "e" is contained in opt (otherwise et)
 
   TString option(opt);
   option.ToLower();
 
+  Int_t tempID = fCurrentID;
+
   AliVCluster *clusterMax = GetNextAcceptCluster(0);
   AliVCluster *cluster = 0;
 
@@ -78,6 +74,8 @@ AliVCluster* AliClusterContainer::GetLeadingCluster(const char* opt) const
     }
   }
 
+  fCurrentID = tempID;
+
   return clusterMax;
 }
 
@@ -108,18 +106,17 @@ AliVCluster* AliClusterContainer::GetAcceptCluster(Int_t i) const {
 }
 
 //________________________________________________________________________
-AliVCluster* AliClusterContainer::GetNextAcceptCluster(Int_t i) const {
+AliVCluster* AliClusterContainer::GetNextAcceptCluster(Int_t i) {
 
   //Get next accepted cluster; if i >= 0 (re)start counter from i; return 0 if no accepted particle could be found
 
-  static Int_t counter = -1;
-  if (i>=0) counter = i;
+  if (i>=0) fCurrentID = i;
 
   const Int_t n = GetNEntries();
   AliVCluster *c = 0;
-  while (counter < n && !c) { 
-    c = GetAcceptCluster(counter);
-    counter++;
+  while (fCurrentID < n && !c) { 
+    c = GetAcceptCluster(fCurrentID);
+    fCurrentID++;
   }
 
   return c;
@@ -170,3 +167,13 @@ Bool_t AliClusterContainer::AcceptCluster(AliVCluster *clus) const
   return kTRUE;
 
 }
+
+//________________________________________________________________________
+void AliClusterContainer::SetClassName(const char *clname)
+{
+  // Set the class name
+
+  TClass cls(clname);
+  if (cls.InheritsFrom("AliVCluster")) fClassName = clname;
+  else AliError(Form("Unable to set class name %s for a AliClusterContainer, it must inherits from AliVCluster!",clname));
+}
index fb0278cc7e03dd8d6193043e7bc3d78e94d478bc..e6d68ccbea003fc80db407538d585efcc1235dce 100644 (file)
@@ -18,21 +18,20 @@ class AliClusterContainer : public AliEmcalContainer {
   AliClusterContainer(const char *name); 
   virtual ~AliClusterContainer(){;}
 
-  void SetClusterArray(AliVEvent *event);
-
   void SetClusPtCut(Double_t cut)                  { fClusPtCut      = cut ; }
   void SetClusTimeCut(Double_t min, Double_t max)  { fClusTimeCutLow = min ; fClusTimeCutUp = max ; }
   void SetClusterBitMap(UInt_t m)                  { fClusterBitMap     = m ; }
   void SetMCClusterBitMap(UInt_t m)                { fMCClusterBitMap   = m ; }
   void SetMinMCLabel(Int_t s)                      { fMinMCLabel        = s ; }
 
-  AliVCluster                *GetLeadingCluster(const char* opt="")  const;
+  AliVCluster                *GetLeadingCluster(const char* opt="")       ;
   AliVCluster                *GetCluster(Int_t i)                    const;
   AliVCluster                *GetAcceptCluster(Int_t i)              const;
-  AliVCluster                *GetNextAcceptCluster(Int_t i=-1)       const;
+  AliVCluster                *GetNextAcceptCluster(Int_t i=-1)            ;
   void                        GetMomentum(TLorentzVector &mom, Int_t i) const;
   Bool_t                      AcceptCluster(AliVCluster         *vp) const;
   Int_t                       GetNClusters()                         const   {return GetNEntries();}
+  void                        SetClassName(const char *clname);
 
  protected:
   Double_t                    fClusPtCut;                  // cut on cluster pt
index 55b92a34a1bc10b369915831e03f7b6ca53ac9ed..d02c2ab18fcfee3b034d2ff8060d67bda130299b 100644 (file)
@@ -8,6 +8,7 @@
 
 #include <TClonesArray.h>
 
+#include "AliParticleContainer.h"
 #include "AliEmcalParticle.h"
 #include "AliLog.h"
 #include "AliPicoTrack.h"
@@ -56,6 +57,24 @@ AliEmcalClusTrackMatcherTask::~AliEmcalClusTrackMatcherTask()
   // Destructor.
 }
 
+//________________________________________________________________________
+void AliEmcalClusTrackMatcherTask::ExecOnce()
+{
+  // Initialize the analysis.
+
+  if (fParticleCollArray.GetEntriesFast()<2) {
+    AliError(Form("Wrong number of particle collections (%d), required 2",fParticleCollArray.GetEntriesFast()));
+    return;
+  }
+
+  for (Int_t i = 0; i < 2; i++) {
+    AliParticleContainer *cont = static_cast<AliParticleContainer*>(fParticleCollArray.At(i));
+    cont->SetClassName("AliEmcalParticle");
+  }
+
+  AliAnalysisTaskEmcalDev::ExecOnce();
+}
+
 //________________________________________________________________________
 void AliEmcalClusTrackMatcherTask::UserCreateOutputObjects()
 {
@@ -117,28 +136,22 @@ Bool_t AliEmcalClusTrackMatcherTask::Run()
 {
   // Run the matching for the selected options.
 
-  const Double_t maxd2 = fMaxDistance*fMaxDistance;
+  AliParticleContainer *tracks = static_cast<AliParticleContainer*>(fParticleCollArray.At(0));
+  AliParticleContainer *clusters = static_cast<AliParticleContainer*>(fParticleCollArray.At(1));
 
-  const Int_t nC = fCaloClusters->GetEntries();
-  const Int_t nT = fTracks->GetEntries();
+  const Double_t maxd2 = fMaxDistance*fMaxDistance;
 
   // set the links between tracks and clusters
-  for (Int_t c = 0; c < nC; ++c) {
-    AliEmcalParticle *partC = static_cast<AliEmcalParticle*>(fCaloClusters->At(c));
-    if (!partC)
-      continue;
-    if (!AcceptEmcalPart(partC))
-      continue;
-    AliVCluster *clust = partC->GetCluster();
+  AliEmcalParticle *partC = 0;
+  AliEmcalParticle *partT = 0;
 
-    for (Int_t t = 0; t < nT; ++t) {
-      AliEmcalParticle *partT = static_cast<AliEmcalParticle*>(fTracks->At(t));
-      if (!partT)
-       continue;
-      if (!AcceptEmcalPart(partT))
-        continue;
-      AliVTrack   *track = partT->GetTrack()  ;
+  clusters->ResetCurrentID();
+  while ((partC = static_cast<AliEmcalParticle*>(clusters->GetNextAcceptParticle()))) {
+    AliVCluster *clust = partC->GetCluster();
 
+    tracks->ResetCurrentID();
+    while ((partT = static_cast<AliEmcalParticle*>(tracks->GetNextAcceptParticle()))) {
+      AliVTrack *track = partT->GetTrack();
       Double_t deta = 999;
       Double_t dphi = 999;
       AliPicoTrack::GetEtaPhiDiff(track, clust, dphi, deta);
@@ -147,8 +160,8 @@ Bool_t AliEmcalClusTrackMatcherTask::Run()
         continue;
 
       Double_t d = TMath::Sqrt(d2);
-      partC->AddMatchedObj(t, d);
-      partT->AddMatchedObj(c, d);
+      partC->AddMatchedObj(tracks->GetCurrentID(), d);
+      partT->AddMatchedObj(clusters->GetCurrentID(), d);
 
       if (fCreateHisto) {
        Int_t mombin = GetMomBin(track->P());
@@ -165,14 +178,13 @@ Bool_t AliEmcalClusTrackMatcherTask::Run()
     }
   }
 
-  for (Int_t c = 0; c < nC; ++c) {
-    AliEmcalParticle *partC = static_cast<AliEmcalParticle*>(fCaloClusters->At(c));
-    if (!partC)
-      continue;
+
+  clusters->ResetCurrentID();
+  while ((partC = static_cast<AliEmcalParticle*>(clusters->GetNextAcceptParticle()))) {
     if (partC->GetNumberOfMatchedObj() <= 0)
       continue;
     const UInt_t matchedId = partC->GetMatchedObjId();
-    AliEmcalParticle *partT = static_cast<AliEmcalParticle*>(fTracks->At(matchedId));
+    partT = static_cast<AliEmcalParticle*>(tracks->GetParticle(matchedId));
     AliVCluster *clust = partC->GetCluster();
     AliVTrack   *track = partT->GetTrack()  ;
     Double_t deta = 999;
@@ -181,11 +193,9 @@ Bool_t AliEmcalClusTrackMatcherTask::Run()
     clust->SetEmcCpvDistance(matchedId);
     clust->SetTrackDistance(deta, dphi);
   }
-
-  for (Int_t t = 0; t < nT; ++t) {
-    AliEmcalParticle *partT = static_cast<AliEmcalParticle*>(fTracks->At(t));
-    if (!partT)
-      continue;
+  
+  tracks->ResetCurrentID();
+  while ((partT = static_cast<AliEmcalParticle*>(tracks->GetNextAcceptParticle()))) {
     if (partT->GetNumberOfMatchedObj() <= 0)
       continue;
     AliVTrack *track = partT->GetTrack();
index 6c0861d10fa9011dc842a5b7b25b8c43831c5c06..f12d241d2aceef6deae4e611289d24f8a1e45d7a 100644 (file)
@@ -16,7 +16,7 @@ class AliEmcalClusTrackMatcherTask : public AliAnalysisTaskEmcalDev {
   void         SetMaxDistance(Double_t d)       { fMaxDistance = d; }
 
  protected:
-
+  void         ExecOnce()                 ;
   Bool_t       Run();
   Int_t        GetMomBin(Double_t p) const;
 
@@ -29,6 +29,6 @@ class AliEmcalClusTrackMatcherTask : public AliAnalysisTaskEmcalDev {
   AliEmcalClusTrackMatcherTask(const AliEmcalClusTrackMatcherTask&);            // not implemented
   AliEmcalClusTrackMatcherTask &operator=(const AliEmcalClusTrackMatcherTask&); // not implemented
 
-  ClassDef(AliEmcalClusTrackMatcherTask, 4) // Cluster-Track matching task
+  ClassDef(AliEmcalClusTrackMatcherTask, 5) // Cluster-Track matching task
 };
 #endif
index 1fe3d7c6946c0d211adda7d72dc1278ef67c00ee..86d9048a2e8a5c600cd9e4570731223ad64d7dff 100644 (file)
@@ -18,7 +18,9 @@ ClassImp(AliEmcalContainer)
 AliEmcalContainer::AliEmcalContainer():
   TNamed("AliEmcalContainer","AliEmcalContainer"),
   fClArray(0),
-  fClArrayName()
+  fClArrayName(),
+  fClassName(),
+  fCurrentID(0)
 {
   // Default constructor.
 
@@ -31,7 +33,9 @@ AliEmcalContainer::AliEmcalContainer():
 AliEmcalContainer::AliEmcalContainer(const char *name):
   TNamed(name,name),
   fClArray(0),
-  fClArrayName()
+  fClArrayName(),
+  fClassName(),
+  fCurrentID(0)
 {
   // Standard constructor.
 
@@ -41,8 +45,8 @@ AliEmcalContainer::AliEmcalContainer(const char *name):
 }
 
 //________________________________________________________________________
-void AliEmcalContainer::SetArray(AliVEvent *event, const char *clname) {
-
+void AliEmcalContainer::SetArray(AliVEvent *event
+{
   // Get array from event.
 
   const AliVVertex *vertex = event->GetPrimaryVertex();
@@ -51,22 +55,20 @@ void AliEmcalContainer::SetArray(AliVEvent *event, const char *clname) {
   if (!fClArrayName.IsNull() && !fClArray) {
     fClArray = dynamic_cast<TClonesArray*>(event->FindListObject(fClArrayName));
     if (!fClArray) {
-      AliWarning(Form("%s: Could not retrieve array with name %s!", GetName(), fClArrayName.Data())); 
+      AliError(Form("%s: Could not retrieve array with name %s!", GetName(), fClArrayName.Data())); 
       return;
     }
   } else {
     return;
   }
 
-  if (!clname)
-    return;
-
-  TString objname(fClArray->GetClass()->GetName());
-  TClass cls(objname);
-  if (!cls.InheritsFrom(clname)) {
-    AliWarning(Form("%s: Objects of type %s in %s are not inherited from %s!", 
-                    GetName(), cls.GetName(), fClArrayName.Data(), clname)); 
-    return;
+  if (!fClassName.IsNull()) {
+    TString objname(fClArray->GetClass()->GetName());
+    TClass cls(objname);
+    if (!cls.InheritsFrom(fClassName)) {
+      AliError(Form("%s: Objects of type %s in %s are not inherited from %s!", 
+                   GetName(), cls.GetName(), fClArrayName.Data(), fClassName.Data())); 
+      fClArray = 0;
+    }
   }
-  return;
 }
index fe9d19b6e953f911c0308be854591a1ffff5aa37..83237dc4d205eae51c121ca35b4b1bb4b0652e3e 100644 (file)
@@ -21,21 +21,25 @@ class AliEmcalContainer : public TNamed {
   TClonesArray               *GetArray()           {return fClArray;}
   Int_t                       GetNEntries() const  {return fClArray->GetEntriesFast();}
   const TString&              GetArrayName() const {return fClArrayName;}
+  Int_t                       GetCurrentID() const {return fCurrentID-1; }
   void                        SortArray() {fClArray->Sort();}
   virtual void                GetMomentum(TLorentzVector &mom, Int_t i) const = 0;
+  virtual void                SetArray(AliVEvent *event);
+  void                        ResetCurrentID(Int_t i=0)     {fCurrentID = i;}
 
  protected:
-  void SetArray(AliVEvent *event, const char *clname=0);
 
   TClonesArray               *fClArray;                 //!TClonesArray
   Double_t                    fVertex[3];               //!event vertex array
   TString                     fClArrayName;             // name of branch
+  TString                     fClassName;               // name of the class in the TClonesArray
+  Int_t                       fCurrentID;               //!current ID for automatic loops
 
  private:
   AliEmcalContainer(const AliEmcalContainer& obj); // copy constructor
   AliEmcalContainer& operator=(const AliEmcalContainer& other); // assignment
 
-  ClassDef(AliEmcalContainer,1);
+  ClassDef(AliEmcalContainer,2);
 
 };
 
index 39b416356b2aec9b7300af6f3f28c9ebd6030a19..74064615d5ec9672f6285f03c83d75cc55dcc3f1 100644 (file)
@@ -26,6 +26,7 @@ AliParticleContainer::AliParticleContainer():
 {
   // Default constructor.
 
+  fClassName = "AliVParticle";
 }
 
 //________________________________________________________________________
@@ -42,24 +43,19 @@ AliParticleContainer::AliParticleContainer(const char *name):
 {
   // Standard constructor.
 
+  fClassName = "AliVParticle";
 }
 
 //________________________________________________________________________
-void AliParticleContainer::SetParticleArray(AliVEvent *event) 
-{
-  // Set jet array
-
-  SetArray(event, "AliVParticle");
-}
-
-//________________________________________________________________________
-AliVParticle* AliParticleContainer::GetLeadingParticle(const char* opt) const
+AliVParticle* AliParticleContainer::GetLeadingParticle(const char* opt) 
 {
   // Get the leading particle; use p if "p" is contained in opt
 
   TString option(opt);
   option.ToLower();
 
+  Int_t tempID = fCurrentID;
+
   AliVParticle *partMax = GetNextAcceptParticle(0);
   AliVParticle *part = 0;
 
@@ -74,6 +70,8 @@ AliVParticle* AliParticleContainer::GetLeadingParticle(const char* opt) const
     }
   }
 
+  fCurrentID = tempID;
+
   return partMax;
 }
 
@@ -104,18 +102,17 @@ AliVParticle* AliParticleContainer::GetAcceptParticle(Int_t i) const {
 }
 
 //________________________________________________________________________
-AliVParticle* AliParticleContainer::GetNextAcceptParticle(Int_t i) const {
+AliVParticle* AliParticleContainer::GetNextAcceptParticle(Int_t i) {
 
   //Get next accepted particle; if i >= 0 (re)start counter from i; return 0 if no accepted particle could be found
 
-  static Int_t counter = -1;
-  if (i>=0) counter = i;
+  if (i>=0) fCurrentID = i;
 
   const Int_t n = GetNEntries();
   AliVParticle *p = 0;
-  while (counter < n && !p) { 
-    p = GetAcceptParticle(counter);
-    counter++;
+  while (fCurrentID < n && !p) { 
+    p = GetAcceptParticle(fCurrentID);
+    fCurrentID++;
   }
 
   return p;
@@ -160,3 +157,13 @@ Bool_t AliParticleContainer::AcceptParticle(AliVParticle *vp) const
   
   return kTRUE;
 }
+
+//________________________________________________________________________
+void AliParticleContainer::SetClassName(const char *clname)
+{
+  // Set the class name
+
+  TClass cls(clname);
+  if (cls.InheritsFrom("AliVParticle")) fClassName = clname;
+  else AliError(Form("Unable to set class name %s for a AliParticleContainer, it must inherits from AliVParticle!",clname));
+}
index 5362b58126d0b7e3349aed417596f6c089410c5c..e356822fa30f90c8596834070b6039ba6f70cb15 100644 (file)
@@ -16,8 +16,6 @@ class AliParticleContainer : public AliEmcalContainer {
   AliParticleContainer(const char *name); 
   virtual ~AliParticleContainer(){;}
 
-  void  SetParticleArray(AliVEvent *event);
-
   void  SetParticlePtCut(Double_t cut)                   { fParticlePtCut = cut ; }
   void  SetParticleEtaLimits(Double_t min, Double_t max) { fParticleMaxEta = max ; fParticleMinEta = min ; }
   void  SetParticlePhiLimits(Double_t min, Double_t max) { fParticleMaxPhi = max ; fParticleMinPhi = min ; }
@@ -25,13 +23,14 @@ class AliParticleContainer : public AliEmcalContainer {
   void  SetMCTrackBitMap(UInt_t m)                        { fMCTrackBitMap   = m ; }
   void  SetMinMCLabel(Int_t s)                            { fMinMCLabel      = s ; }
 
-  AliVParticle               *GetLeadingParticle(const char* opt="")   const;
+  AliVParticle               *GetLeadingParticle(const char* opt="")        ;
   AliVParticle               *GetParticle(Int_t i)                     const;
   AliVParticle               *GetAcceptParticle(Int_t i)               const;
-  AliVParticle               *GetNextAcceptParticle(Int_t i=-1)        const;
+  AliVParticle               *GetNextAcceptParticle(Int_t i=-1)             ;
   void                        GetMomentum(TLorentzVector &mom, Int_t i) const;
   Bool_t                      AcceptParticle(AliVParticle         *vp) const;
   Int_t                       GetNParticles()                          const   {return GetNEntries();}
+  void                        SetClassName(const char *clname);
 
  protected:
   Double_t                    fParticlePtCut;                 // cut on particle pt
index efa2e162d113d813089e2ac49be664446c7e664e..fcf22882d9d4fce423e0ff9b2964a2ea3968bd74 100644 (file)
@@ -29,8 +29,8 @@ AliEmcalClusTrackMatcherTask* AddTaskEmcalClusTrackMatcher(
   //-------------------------------------------------------
   TString name(Form("ClusTrackMatcher_%s_%s",nTracks,nClusters));
   AliEmcalClusTrackMatcherTask* matcher = new AliEmcalClusTrackMatcherTask(name, createHisto);
-  matcher->SetTracksName(nTracks);
-  matcher->SetClusName(nClusters);
+  matcher->AddParticleContainer(nTracks);
+  matcher->AddParticleContainer(nClusters);
   matcher->SetMaxDistance(maxDist);
 
   //-------------------------------------------------------
index 55876adf6bc9669019c923c88f85d6ace48d0613..d5552d5d7b15596ea9d38200a6637faf3c0c2d05 100644 (file)
@@ -138,7 +138,16 @@ void AliAnalysisTaskEmcalJetDev::ExecOnce()
 
   AliAnalysisTaskEmcalDev::ExecOnce();
 
-  //Load all requested track branches - each container knows name already
+  if (!fRhoName.IsNull() && !fRho) { // get rho from the event
+    fRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(fRhoName));
+    if (!fRho) {
+      AliError(Form("%s: Could not retrieve rho %s!", GetName(), fRhoName.Data()));
+      fInitialized = kFALSE;
+      return;
+    }
+  }
+
+  //Load all requested jet branches - each container knows name already
   if(fJetCollArray.GetEntriesFast()==0) {
     AliWarning("There are no jet collections");
     return;
@@ -148,7 +157,7 @@ void AliAnalysisTaskEmcalJetDev::ExecOnce()
     AliJetContainer *cont = static_cast<AliJetContainer*>(fJetCollArray.At(i));
     cont->SetRunNumber(InputEvent()->GetRunNumber());
     cont->SetEMCALGeometry();
-    cont->SetJetArray(InputEvent());
+    cont->SetArray(InputEvent());
     cont->LoadRho(InputEvent());
   }
 
@@ -164,23 +173,9 @@ void AliAnalysisTaskEmcalJetDev::ExecOnce()
     }
   }
 
-  if (fRhoName.IsNull()) { // if rho name is not provided, tries to use the rho object of the first jet branch
+  if (!fRho) { // if rho name is not provided, tries to use the rho object of the first jet branch
     fRhoName = cont->GetRhoName();
-    if(!cont->GetRhoName().IsNull()) {
-      fRho = cont->GetRhoParameter();
-      if(!fRho) {
-       AliError(Form("%s: Could not retrieve rho of first jet branch!", GetName()));
-       fInitialized = kFALSE;
-       return;
-      }
-    }
-  }
-  else { // get rho from the event
-    fRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(fRhoName));
-    if (!fRho) {
-      AliError(Form("%s: Could not retrieve rho %s!", GetName(), fRhoName.Data()));
-      return;
-    }
+    fRho = cont->GetRhoParameter();
   }
 }
 
index 4b3e381c88e2c822e0ec6ad2747025525129b5a4..b6b3d0da12785735f83b5807a575933900b2d722 100644 (file)
@@ -45,6 +45,7 @@ AliJetContainer::AliJetContainer():
 {
   // Default constructor.
 
+  fClassName = "AliEmcalJet";
 }
 
 //________________________________________________________________________
@@ -76,14 +77,15 @@ AliJetContainer::AliJetContainer(const char *name):
 {
   // Standard constructor.
 
+  fClassName = "AliEmcalJet";
 }
 
 //________________________________________________________________________
-void AliJetContainer::SetJetArray(AliVEvent *event) 
+void AliJetContainer::SetArray(AliVEvent *event) 
 {
   // Set jet array
 
-  SetArray(event, "AliEmcalJet");
+  AliEmcalContainer::SetArray(event);
 
   if(fJetAcceptanceType==kTPC) {
     AliDebug(2,Form("%s: set TPC acceptance cuts",GetName()));
@@ -120,13 +122,15 @@ void AliJetContainer::LoadRho(AliVEvent *event)
 }
 
 //________________________________________________________________________
-AliEmcalJet* AliJetContainer::GetLeadingJet(const char* opt) const
+AliEmcalJet* AliJetContainer::GetLeadingJet(const char* opt)
 {
   // Get the leading jet; if opt contains "rho" the sorting is according to pt-A*rho
 
   TString option(opt);
   option.ToLower();
 
+  Int_t tempID = fCurrentID;
+
   AliEmcalJet *jetMax = GetNextAcceptJet(0);
   AliEmcalJet *jet = 0;
 
@@ -141,6 +145,8 @@ AliEmcalJet* AliJetContainer::GetLeadingJet(const char* opt) const
     }
   }
 
+  fCurrentID = tempID;
+
   return jetMax;
 }
 
@@ -175,18 +181,17 @@ AliEmcalJet* AliJetContainer::GetAcceptJet(Int_t i) const {
 }
 
 //________________________________________________________________________
-AliEmcalJet* AliJetContainer::GetNextAcceptJet(Int_t i) const {
+AliEmcalJet* AliJetContainer::GetNextAcceptJet(Int_t i) {
 
   //Get next accepted jet; if i >= 0 (re)start counter from i; return 0 if no accepted jet could be found
 
-  static Int_t counter = -1;
-  if (i>=0) counter = i;
+  if (i>=0) fCurrentID = i;
 
   const Int_t njets = GetNEntries();
   AliEmcalJet *jet = 0;
-  while (counter < njets && !jet) { 
-    jet = GetAcceptJet(counter);
-    counter++;
+  while (fCurrentID < njets && !jet) { 
+    jet = GetAcceptJet(fCurrentID);
+    fCurrentID++;
   }
 
   return jet;
@@ -354,3 +359,13 @@ void AliJetContainer::ResetCuts()
   fLeadingHadronType = 0;
 
 }
+
+//________________________________________________________________________
+void AliJetContainer::SetClassName(const char *clname)
+{
+  // Set the class name
+
+  TClass cls(clname);
+  if (cls.InheritsFrom("AliEmcalJet")) fClassName = clname;
+  else AliError(Form("Unable to set class name %s for a AliJetContainer, it must inherits from AliEmcalJet!",clname));
+}
index 145bb0990e7f77f05e7b49e5df379357bafffeed..7ee4a0a6e33a72bedccc38cf2a8522ea705ada76 100644 (file)
@@ -32,7 +32,6 @@ class AliJetContainer : public AliEmcalContainer {
   AliJetContainer(const char *name); 
   virtual ~AliJetContainer() {;}
 
-  void SetJetArray(AliVEvent *event);
   void SetEMCALGeometry();
   void SetEMCALGeometry(AliEMCALGeometry *p) {fGeom = p;}
   void LoadRho(AliVEvent *event);
@@ -67,10 +66,10 @@ class AliJetContainer : public AliEmcalContainer {
   void                        SetParticleContainer(AliParticleContainer *c)        { fParticleContainer = c             ; }
   void                        SetClusterContainer(AliClusterContainer *c)          { fClusterContainer  = c             ; }
 
-  AliEmcalJet                *GetLeadingJet(const char* opt="")     const;
+  AliEmcalJet                *GetLeadingJet(const char* opt="")          ;
   AliEmcalJet                *GetJet(Int_t i)                       const;
   AliEmcalJet                *GetAcceptJet(Int_t i)                 const;
-  AliEmcalJet                *GetNextAcceptJet(Int_t i=-1)          const;
+  AliEmcalJet                *GetNextAcceptJet(Int_t i=-1)               ;
   void                        GetMomentum(TLorentzVector &mom, Int_t i) const;
   Bool_t                      AcceptJet(AliEmcalJet* jet)           const;
   Bool_t                      AcceptBiasJet(AliEmcalJet* jet)       const; 
@@ -86,6 +85,8 @@ class AliJetContainer : public AliEmcalContainer {
   Float_t                     GetJetEtaMax()                        const    {return fJetMaxEta;}
   Float_t                     GetJetPhiMin()                        const    {return fJetMinPhi;}
   Float_t                     GetJetPhiMax()                        const    {return fJetMaxPhi;}
+  void                        SetClassName(const char *clname);
+  void                        SetArray(AliVEvent *event);
 
  protected:
   JetAcceptanceType           fJetAcceptanceType;    //  acceptance type