ROOT logo
#ifndef ALIEMCALJETUTILITY_H
#define ALIEMCALJETUTILITY_H

#include <TNamed.h>

#include "AliFJWrapper.h"

class AliEmcalJetTask;
class AliEmcalJet;
class AliFJWrapper;

class AliEmcalJetUtility : public TNamed
{
 public:

  AliEmcalJetUtility();
  AliEmcalJetUtility(const char* name);
  AliEmcalJetUtility(const AliEmcalJetUtility &jet);
  AliEmcalJetUtility& operator=(const AliEmcalJetUtility &jet);
  ~AliEmcalJetUtility() {;}

  virtual void Init() = 0;                                                        // Executed only once at the end of AliEmcalJetTask::DoInit()
  virtual void Prepare(AliFJWrapper& fjw) = 0;                                    // Executed for each event at the beginning of AliEmcalJetTask::FillJetBranch()
  virtual void ProcessJet(AliEmcalJet* jet, Int_t ij, AliFJWrapper& fjw) = 0;     // Executed for each jet in the loop in AliEmcalJetTask::FillJetBranch()
  virtual void Terminate(AliFJWrapper& fjw) = 0;                                  // Executed for each event at the end of AliEmcalJetTask::FillJetBranch()

  void SetJetTask(AliEmcalJetTask* jetTask) { fJetTask = jetTask; }

 protected:

  AliEmcalJetTask       *fJetTask     ; // pointer to the main jet task
  Bool_t                 fInit        ; //! whether or not the utility has been initialized

  ClassDef(AliEmcalJetUtility, 1) // Abstract Emcal jet utility class
};
#endif
 AliEmcalJetUtility.h:1
 AliEmcalJetUtility.h:2
 AliEmcalJetUtility.h:3
 AliEmcalJetUtility.h:4
 AliEmcalJetUtility.h:5
 AliEmcalJetUtility.h:6
 AliEmcalJetUtility.h:7
 AliEmcalJetUtility.h:8
 AliEmcalJetUtility.h:9
 AliEmcalJetUtility.h:10
 AliEmcalJetUtility.h:11
 AliEmcalJetUtility.h:12
 AliEmcalJetUtility.h:13
 AliEmcalJetUtility.h:14
 AliEmcalJetUtility.h:15
 AliEmcalJetUtility.h:16
 AliEmcalJetUtility.h:17
 AliEmcalJetUtility.h:18
 AliEmcalJetUtility.h:19
 AliEmcalJetUtility.h:20
 AliEmcalJetUtility.h:21
 AliEmcalJetUtility.h:22
 AliEmcalJetUtility.h:23
 AliEmcalJetUtility.h:24
 AliEmcalJetUtility.h:25
 AliEmcalJetUtility.h:26
 AliEmcalJetUtility.h:27
 AliEmcalJetUtility.h:28
 AliEmcalJetUtility.h:29
 AliEmcalJetUtility.h:30
 AliEmcalJetUtility.h:31
 AliEmcalJetUtility.h:32
 AliEmcalJetUtility.h:33
 AliEmcalJetUtility.h:34
 AliEmcalJetUtility.h:35
 AliEmcalJetUtility.h:36