update from Salvatore, Ruediger for some bug fixes
authorloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 21 Feb 2013 14:23:14 +0000 (14:23 +0000)
committerloizides <loizides@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 21 Feb 2013 14:23:14 +0000 (14:23 +0000)
PWG/EMCAL/AliAnalysisTaskEmcal.cxx
PWG/EMCAL/AliEmcalParticleMaker.cxx
PWG/EMCAL/AliEmcalParticleMaker.h
PWG/EMCAL/AliEmcalPicoTrackMaker.cxx

index 41b2247..eadce72 100644 (file)
@@ -321,8 +321,10 @@ void AliAnalysisTaskEmcal::ExecOnce()
   }
 
   fGeom = AliEMCALGeometry::GetInstance();
-  if (!fGeom) 
-    AliWarning(Form("%s: Can not create geometry", GetName()));
+  if (!fGeom) {
+    AliError(Form("%s: Can not create geometry", GetName()));
+    return;
+  }
 
   if (fEventPlaneVsEmcal >= 0) {
     Double_t ep = (fGeom->GetArm1PhiMax() + fGeom->GetArm1PhiMin()) / 2 * TMath::DegToRad() + fEventPlaneVsEmcal - TMath::Pi();
index f970146..02cfb4e 100644 (file)
@@ -45,37 +45,54 @@ AliEmcalParticleMaker::~AliEmcalParticleMaker()
 }
 
 //________________________________________________________________________
-void AliEmcalParticleMaker::UserCreateOutputObjects()
+void AliEmcalParticleMaker::ExecOnce()
 {
-  // Create my user objects.
+  // Init the analysis.
 
-  fTracksOut = new TClonesArray("AliEmcalParticle");
-  fTracksOut->SetName(fTracksOutName);
+  AliAnalysisTaskEmcal::ExecOnce();
 
-  fCaloClustersOut = new TClonesArray("AliEmcalParticle");
-  fCaloClustersOut->SetName(fCaloOutName);
+  if (!fInitialized)
+    return;
+
+  if (!fTracksOutName.IsNull()) {
+    fTracksOut = new TClonesArray("AliEmcalParticle");
+    fTracksOut->SetName(fTracksOutName);
+
+    if (!(InputEvent()->FindListObject(fTracksOutName))) {
+      InputEvent()->AddObject(fTracksOut);
+    }
+    else {
+      fInitialized = kFALSE;
+      AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fTracksOutName.Data()));
+      return;
+    }
+  }
+
+  if (!fCaloOutName.IsNull()) {
+    fCaloClustersOut = new TClonesArray("AliEmcalParticle");
+    fCaloClustersOut->SetName(fCaloOutName);
+    
+    // post output in event if not yet present
+    if (!(InputEvent()->FindListObject(fCaloOutName))) {
+      InputEvent()->AddObject(fCaloClustersOut);
+    }
+    else {
+      fInitialized = kFALSE;
+      AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fCaloOutName.Data()));
+      return;
+    }
+  }
 }
 
 //________________________________________________________________________
 Bool_t AliEmcalParticleMaker::Run() 
 {
-  // Create th emcal particles
+  // Create the emcal particles
 
-  // add tracks to event if not yet there
-  fTracksOut->Delete();
-  if (!(InputEvent()->FindListObject(fTracksOutName))) {
-    InputEvent()->AddObject(fTracksOut);
-  }
-  fCaloClustersOut->Delete();
-  if (!(InputEvent()->FindListObject(fCaloOutName))) {
-    InputEvent()->AddObject(fCaloClustersOut);
-  }
+  if (fTracks && fTracksOut) {
+    // clear container (normally a null operation as the event should clean it already)
+    fTracksOut->Delete();
 
-  // clear container (normally a null operation as the event should clean it already)
-  fTracksOut->Delete();
-  fCaloClustersOut->Delete();
-
-  if (fTracks) {
     // loop over tracks
     const Int_t Ntracks = fTracks->GetEntries();
     for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
@@ -85,11 +102,13 @@ Bool_t AliEmcalParticleMaker::Run()
     }
   }
 
-  if (fCaloClusters) {
+  if (fCaloClusters && fCaloClustersOut) {
+    // clear container (normally a null operation as the event should clean it already)
+    fCaloClustersOut->Delete();
+
     // loop over clusters
     const Int_t Nclusters = fCaloClusters->GetEntries();
     for (Int_t iClusters = 0; iClusters < Nclusters; ++iClusters) {
-      
       AliVCluster *cluster = dynamic_cast<AliVCluster*>(fCaloClusters->At(iClusters));
       new ((*fCaloClustersOut)[iClusters]) AliEmcalParticle(cluster, iClusters, fVertex[0], fVertex[1], fVertex[2]);
     }
index 98cc666..83436f4 100644 (file)
@@ -13,8 +13,7 @@ class AliEmcalParticleMaker : public AliAnalysisTaskEmcal {
   AliEmcalParticleMaker(const char *name);
   virtual ~AliEmcalParticleMaker();
 
-  void UserCreateOutputObjects();
-
+  void ExecOnce();
   Bool_t Run();
 
   void SetTracksOutName(const char *name) { fTracksOutName      = name; }
index f04e913..e3d64f1 100644 (file)
@@ -191,10 +191,13 @@ void AliEmcalPicoTrackMaker::UserExec(Option_t *)
 
     Int_t label = 0;
     if (fIsMC) {
-      if (track->GetLabel() > 0 || fUseNegativeLabels)
+      if (track->GetLabel() > 0) {
        label = track->GetLabel();
-      else
-       label = -track->GetLabel();
+      }
+      else {
+       if (!fUseNegativeLabels)
+         label = -track->GetLabel();
+      }
       
       if (label == 0) 
        label = 99999;