]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
first steps with cluster maker
authorloizides <cloizides@lbl.gov>
Thu, 16 Jan 2014 08:03:25 +0000 (09:03 +0100)
committerloizides <cloizides@lbl.gov>
Thu, 16 Jan 2014 08:04:08 +0000 (09:04 +0100)
PWG/CMakelibPWGEMCAL.pkg
PWG/EMCAL/AliEmcalClusterMaker.cxx [new file with mode: 0644]
PWG/EMCAL/AliEmcalClusterMaker.h [new file with mode: 0644]
PWG/PWGEMCALLinkDef.h

index c5cf42d7ba71e45da24bfd06ab9a1931289142a1..843f4e8d9d7284d1483d0624910b9c1a7c7df315 100644 (file)
@@ -31,7 +31,9 @@ set ( SRCS
  EMCAL/AliAnalysisTaskEmcal.cxx
  EMCAL/AliClusterContainer.cxx
  EMCAL/AliEMCALClusterParams.cxx
+ EMCAL/AliEmcalAodTrackFilterTask.cxx
  EMCAL/AliEmcalClusTrackMatcherTask.cxx
+ EMCAL/AliEmcalClusterMaker.cxx
  EMCAL/AliEmcalCompatTask.cxx
  EMCAL/AliEmcalContainer.cxx
  EMCAL/AliEmcalEsdTrackFilterTask.cxx
@@ -41,18 +43,17 @@ set ( SRCS
  EMCAL/AliEmcalPhysicsSelection.cxx
  EMCAL/AliEmcalPhysicsSelectionTask.cxx
  EMCAL/AliEmcalPicoTrackMaker.cxx
- EMCAL/AliEmcalAodTrackFilterTask.cxx
  EMCAL/AliEmcalSetupTask.cxx
  EMCAL/AliEmcalTenderTask.cxx
  EMCAL/AliEmcalTrackPropagatorTask.cxx
  EMCAL/AliEmcalTrackPropagatorTaskAOD.cxx
+ EMCAL/AliEmcalTriggerMaker.cxx
+ EMCAL/AliEmcalTriggerPatchInfo.cxx
+ EMCAL/AliEmcalTriggerSetupInfo.cxx
  EMCAL/AliEsdSkimTask.cxx
  EMCAL/AliEsdTrackExt.cxx
  EMCAL/AliParticleContainer.cxx
  EMCAL/AliPicoTrack.cxx
- EMCAL/AliEmcalTriggerPatchInfo.cxx
- EMCAL/AliEmcalTriggerSetupInfo.cxx
- EMCAL/AliEmcalTriggerMaker.cxx
 )
 
 string ( REPLACE ".cxx" ".h" HDRS "${SRCS}" )
diff --git a/PWG/EMCAL/AliEmcalClusterMaker.cxx b/PWG/EMCAL/AliEmcalClusterMaker.cxx
new file mode 100644 (file)
index 0000000..b1cb300
--- /dev/null
@@ -0,0 +1,133 @@
+// $Id$
+//
+// Cluster maker task.
+//
+// Author: C.Loizides
+
+#include <TChain.h>
+#include <TClonesArray.h>
+#include "AliAODCaloCluster.h"
+#include "AliAODEvent.h"
+#include "AliAnalysisManager.h"
+#include "AliEMCALRecoUtils.h"
+#include "AliESDCaloCluster.h"
+#include "AliESDEvent.h"
+#include "AliEmcalClusterMaker.h"
+
+ClassImp(AliEmcalClusterMaker)
+
+//________________________________________________________________________
+AliEmcalClusterMaker::AliEmcalClusterMaker() : 
+  AliAnalysisTaskEmcal("AliEmcalClusterMaker", kFALSE),
+  fOutCaloName(),
+  fEsdMode(kTRUE),
+  fOutClusters(0)
+{
+  // Default constructor.
+}
+
+//________________________________________________________________________
+AliEmcalClusterMaker::AliEmcalClusterMaker(const char *name, Bool_t histo) : 
+  AliAnalysisTaskEmcal(name, histo),
+  fOutCaloName("EmcClusters"),
+  fEsdMode(kTRUE),
+  fOutClusters(0)
+{
+  // Standard constructor.
+  
+  SetMakeGeneralHistograms(histo);
+
+  fBranchNames="ESD:AliESDRun.,AliESDHeader.,PrimaryVertex.";
+}
+
+//________________________________________________________________________
+AliEmcalClusterMaker::~AliEmcalClusterMaker()
+{
+  // Destructor
+}
+
+//________________________________________________________________________
+void AliEmcalClusterMaker::UserCreateOutputObjects()
+{
+  // Create my user objects.
+
+  AliAnalysisTaskEmcal::UserCreateOutputObjects();
+
+  if (fRecoUtils)
+    fRecoUtils->Print("");
+  //  PostData(1, fOutput);
+}
+
+//________________________________________________________________________
+void AliEmcalClusterMaker::ExecOnce() 
+{
+  // Initialize the analysis.
+
+  // Do base class initializations and if it fails -> bail out
+  AliAnalysisTaskEmcal::ExecOnce();
+  if (!fInitialized) 
+    return;
+
+  if (dynamic_cast<AliAODEvent*>(InputEvent())) 
+    fEsdMode = kFALSE;
+
+  if (fEsdMode) 
+    fOutClusters = new TClonesArray("AliESDCaloCluster");
+  else 
+    fOutClusters = new TClonesArray("AliAODCaloCluster");
+
+  fOutClusters->SetName(fOutCaloName);
+
+  // post output in event if not yet present
+  if (!(InputEvent()->FindListObject(fOutCaloName))) {
+    InputEvent()->AddObject(fOutClusters);
+  } else {
+    fInitialized = kFALSE;
+    AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fOutCaloName.Data()));
+    return;
+  }
+}
+
+//________________________________________________________________________
+Bool_t AliEmcalClusterMaker::Run() 
+{
+  // Run the hadronic correction
+
+  // delete output
+  fOutClusters->Delete();
+
+  // loop over clusters
+  Int_t clusCount = 0;
+  Int_t entries   = fCaloClusters->GetEntries();
+  for (Int_t i=0; i<entries; ++i) {
+    AliVCluster *clus = static_cast<AliVCluster*>(fCaloClusters->At(i));
+    if (!clus || !clus->IsEMCAL())
+      continue;
+    AliVCluster *oc = 0;
+    if (fEsdMode) {
+      AliESDCaloCluster *ec = dynamic_cast<AliESDCaloCluster*>(clus);
+      if (!ec) continue;
+      oc = new ((*fOutClusters)[clusCount]) AliESDCaloCluster(*ec);
+    } else { 
+      AliAODCaloCluster *ac = dynamic_cast<AliAODCaloCluster*>(clus);
+      if (!ac) continue;
+      oc = new ((*fOutClusters)[clusCount]) AliAODCaloCluster(*ac);
+    }
+    if (fRecoUtils) {
+      if (fRecoUtils->IsRejectExoticCluster()) {
+       if (fRecoUtils->IsExoticCluster(oc,fCaloCells))
+       continue;
+      }
+      if (fRecoUtils->GetNonLinearityFunction()!=AliEMCALRecoUtils::kNoCorrection) {
+       Double_t energy = fRecoUtils->CorrectClusterEnergyLinearity(oc);
+       oc->SetE(energy);
+      }
+    }
+    if (!AcceptCluster(oc))
+      continue;
+    clusCount++;
+  }
+  if ((clusCount>0) && (clusCount==fOutClusters->GetEntries()))
+    fOutClusters->RemoveAt(clusCount);
+  return kTRUE;
+}
diff --git a/PWG/EMCAL/AliEmcalClusterMaker.h b/PWG/EMCAL/AliEmcalClusterMaker.h
new file mode 100644 (file)
index 0000000..d08b591
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef ALIEMCALCLUSTERMAKER_H
+#define ALIEMCALCLUSTERMAKER_H
+
+// $Id$
+
+class TClonesArray;
+class AliEMCALRecoUtils;
+
+#include "AliAnalysisTaskEmcal.h"
+
+class AliEmcalClusterMaker : public AliAnalysisTaskEmcal {
+
+ public:
+  AliEmcalClusterMaker();
+  AliEmcalClusterMaker(const char *name, Bool_t histo=kFALSE); 
+  virtual ~AliEmcalClusterMaker();
+
+  void                   UserCreateOutputObjects();
+  void                   SetOutClusName(const char *n)           { fOutCaloName    = n    ; }
+  void                   SetRecoUtils(AliEMCALRecoUtils *ru) { fRecoUtils = ru; }
+
+ protected:
+  Bool_t                 Run()                                          ;
+  void                   ExecOnce()                                     ;
+
+  TString                fOutCaloName;               // name of output clusters
+  AliEMCALRecoUtils     *fRecoUtils;                 // pointer to reco utils
+  Bool_t                 fEsdMode;                   //!ESD/AOD mode
+  TClonesArray          *fOutClusters;               //!output cluster collection
+
+ private:
+  AliEmcalClusterMaker(const AliEmcalClusterMaker&);            // not implemented
+  AliEmcalClusterMaker &operator=(const AliEmcalClusterMaker&); // not implemented
+
+  ClassDef(AliEmcalClusterMaker, 1) // Emcal cluster maker
+};
+#endif
index 2693ea431d9c36e0bc8aaf85b3b30952c319fc93..4587dcac2ae8d2184b6b7f0f1d7cf4c1b6b6fa4e 100644 (file)
@@ -8,7 +8,9 @@
 #pragma link C++ class AliAnalysisTaskEmcal+;
 #pragma link C++ class AliClusterContainer+;
 #pragma link C++ class AliEMCALClusterParams+;
+#pragma link C++ class AliEmcalAodTrackFilterTask+;
 #pragma link C++ class AliEmcalClusTrackMatcherTask+;
+#pragma link C++ class AliEmcalClusterMaker+;
 #pragma link C++ class AliEmcalCompatTask+;
 #pragma link C++ class AliEmcalContainer+;
 #pragma link C++ class AliEmcalEsdTrackFilterTask;
 #pragma link C++ class AliEmcalPhysicsSelection+;
 #pragma link C++ class AliEmcalPhysicsSelectionTask+;
 #pragma link C++ class AliEmcalPicoTrackMaker+;
-#pragma link C++ class AliEmcalAodTrackFilterTask+;
 #pragma link C++ class AliEmcalSetupTask+;
 #pragma link C++ class AliEmcalTenderTask+;
 #pragma link C++ class AliEmcalTrackPropagatorTask+;
 #pragma link C++ class AliEmcalTrackPropagatorTaskAOD+;
+#pragma link C++ class AliEmcalTriggerMaker+;
+#pragma link C++ class AliEmcalTriggerPatchInfo+;
+#pragma link C++ class AliEmcalTriggerSetupInfo+;
 #pragma link C++ class AliEsdSkimTask+;
 #pragma link C++ class AliEsdTrackExt+;
 #pragma link C++ class AliParticleContainer+;
 #pragma link C++ class AliPicoTrack+;
-#pragma link C++ class AliEmcalTriggerSetupInfo+;
-#pragma link C++ class AliEmcalTriggerPatchInfo+;
-#pragma link C++ class AliEmcalTriggerMaker+;
 
 #endif