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
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}" )
--- /dev/null
+// $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;
+}
--- /dev/null
+#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
#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