ROOT logo
/**
 * @file   AliMCAuxHandler.h
 * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
 * @date   Thu Feb  7 12:04:02 2013
 * 
 * @brief  
 * 
 * 
 */
#ifndef ALIFMDMCHITHANDLER_H
#define ALIFMDMCHITHANDLER_H
#include <AliMCEventHandler.h>
class TFile;
class TTree;

/**
 * This class defines an input handler for simulated data which will
 * connect the FMD Hit tree.  It is intended to be added to the global
 * MC input handler using AliMCEventHandler::AddSubsidiaryHandler
 * 
 */
class AliMCAuxHandler : public AliMCEventHandler
{
public:
  /** 
   * Constructor 
   * 
   * @param name    Name 
   * @param clsName Class name of hits 
   * @param parent  Parent event handler 
   */
  AliMCAuxHandler(const char* name="FMD",
		     const char* clsName="AliFMDHit",
		     AliMCEventHandler* parent=0);
  /** Destructor */
  virtual ~AliMCAuxHandler() {}
  /** 
   * @{
   * @name Interface member functions 
   */
  /** 
   * Intialize 
   * 
   * @param t Not used
   * @param o Not used
   * 
   * @return always true 
   */  
  virtual Bool_t Init(TTree* t,Option_t* o) { return AliMCEventHandler::Init(t,o); }
  /** 
   * Initialize the input
   * 
   * @param opt Options 
   * 
   * @return true on success 
   */
  virtual Bool_t Init(Option_t* opt);
  /**
   * Called at the beginning of an event 
   * 
   * @param entry Entry in tree 
   * 
   * @return true on success
   */
  virtual Bool_t BeginEvent(Long64_t entry);
  /** 
   * Called when the input file is changed 
   * 
   * @return true on success
   */
  virtual Bool_t Notify() { return AliMCEventHandler::Notify(); }
  /** 
   * Called when the input file is changed 
   * 
   * @param path New path 
   *
   * @return true on success
   */
  virtual Bool_t Notify(const char* path);
  /** 
   * Called at the end of an event 
   * 
   * @return true on success
   */
  virtual Bool_t FinishEvent();
  /** 
   * Called at the end of a job 
   * 
   * @return true on success 
   */
  virtual Bool_t Terminate();
  /** 
   * Called at the end of a sub-job
   * 
   * @return true on success
   */  
  virtual Bool_t TerminateIO();
  /** 
   * Reset the I/O
   * 
   */
  virtual void ResetIO();
  /** 
   * Load an event 
   * 
   * @param iev Event number 
   * 
   * @return true on success 
   */
  virtual Bool_t LoadEvent(Int_t iev);
  /** 
   * Set the number of events in the container 
   * 
   * @param nev Number of events 
   */
  virtual void  SetNumberOfEventsInContainer(Int_t nev) {
    this->fNEventsInContainer = nev;}
  /** 
   * Open a file 
   * 
   * @param ev event number 
   * 
   * @return true on success
   */
  virtual Bool_t OpenFile(Int_t ev);
  /* @} */

  /** 
   * Get the parent handler 
   * 
   * @return Parent handler
   */
  AliMCEventHandler* GetParent() { return fParent; }
  /** 
   * Get the tree 
   * 
   * @return The connected hits tree
   */
  virtual TTree*  GetTree() const { return fTree;}  
  /** 
   * Get array of hits 
   * 
   * @return Array of hits
   */
  TClonesArray*  GetArray() const { return fArray; }
  /** 
   * Get the number of entries
   * 
   * @return Entries in array 
   */
  Int_t         GetNEntry() const;
  /** 
   * Get array of track-refs for an entry 
   * 
   * @param entry Entry number 
   * 
   * @return Array 
   */
  TClonesArray* GetEntryArray(Int_t entry);
  /** 
   * Static member function to create and attach this handler 
   * 
   * @param name Name of the handler 
   * @param what What to get 
   * 
   * @return Newly allocated handler or null
   */
  static AliMCAuxHandler* Create(const char* name="FMD",
				    const char* what="Hits");
  /** 
   * Static member function to get the kinamtics array
   * 
   * @param handler   Unput handler
   * @param particle  Particle number 
   * 
   * @return Array of hits 
   */
  static TClonesArray* GetParticleArray(AliMCAuxHandler* handler, 
					Int_t particle);
protected:
  /** 
   * Copy constructor
   * 
   * @param o Object to copy from
   */
  AliMCAuxHandler(const AliMCAuxHandler& o)
    : AliMCEventHandler(), 
      fParent(o.fParent),
      fFile(0), 
      fTree(0), 
      fDir(0),
      fArray(0),
      fNEvents(0), 
      fNEventsPerFile(0),
      fNEventsInContainer(0),
      fEvent(0), 
      fFileNumber(0), 
      fTreeName(""),
      fFileBase("")
  {}
  /** 
   * Assignment operator
   * 
   * @param o Object to assign from 
   * 
   * @return reference to this object 
   */
  AliMCAuxHandler& operator=(const AliMCAuxHandler& o)
  {
    if (&o == this) return *this;
    // AliMCEventHandler::operator=(o);
    fParent = o.fParent;
    fFile   = o.fFile;
    fTree   = o.fTree;
    return *this;
  }
  /** 
   * Get the parent path 
   * 
   * @return Parent path
   */
  TString* GetParentPath() const;
  AliMCEventHandler* fParent; // Parent MC handler 
  TFile*             fFile;                //!
  TTree*             fTree;                //!
  TDirectory*        fDir;                 //!
  TClonesArray*      fArray;               //!
  Int_t              fNEvents;             //!
  Int_t              fNEventsPerFile;      //!
  Int_t              fNEventsInContainer;  //!
  Int_t              fEvent;               //!
  Int_t              fFileNumber;          //!
  TString            fTreeName;            //!
  TString            fFileBase;            //! 
  ClassDef(AliMCAuxHandler,1); // Connect FMD hits tree
};

#endif
// Local Variables:
//  mode: C++
// End:

 AliMCAuxHandler.h:1
 AliMCAuxHandler.h:2
 AliMCAuxHandler.h:3
 AliMCAuxHandler.h:4
 AliMCAuxHandler.h:5
 AliMCAuxHandler.h:6
 AliMCAuxHandler.h:7
 AliMCAuxHandler.h:8
 AliMCAuxHandler.h:9
 AliMCAuxHandler.h:10
 AliMCAuxHandler.h:11
 AliMCAuxHandler.h:12
 AliMCAuxHandler.h:13
 AliMCAuxHandler.h:14
 AliMCAuxHandler.h:15
 AliMCAuxHandler.h:16
 AliMCAuxHandler.h:17
 AliMCAuxHandler.h:18
 AliMCAuxHandler.h:19
 AliMCAuxHandler.h:20
 AliMCAuxHandler.h:21
 AliMCAuxHandler.h:22
 AliMCAuxHandler.h:23
 AliMCAuxHandler.h:24
 AliMCAuxHandler.h:25
 AliMCAuxHandler.h:26
 AliMCAuxHandler.h:27
 AliMCAuxHandler.h:28
 AliMCAuxHandler.h:29
 AliMCAuxHandler.h:30
 AliMCAuxHandler.h:31
 AliMCAuxHandler.h:32
 AliMCAuxHandler.h:33
 AliMCAuxHandler.h:34
 AliMCAuxHandler.h:35
 AliMCAuxHandler.h:36
 AliMCAuxHandler.h:37
 AliMCAuxHandler.h:38
 AliMCAuxHandler.h:39
 AliMCAuxHandler.h:40
 AliMCAuxHandler.h:41
 AliMCAuxHandler.h:42
 AliMCAuxHandler.h:43
 AliMCAuxHandler.h:44
 AliMCAuxHandler.h:45
 AliMCAuxHandler.h:46
 AliMCAuxHandler.h:47
 AliMCAuxHandler.h:48
 AliMCAuxHandler.h:49
 AliMCAuxHandler.h:50
 AliMCAuxHandler.h:51
 AliMCAuxHandler.h:52
 AliMCAuxHandler.h:53
 AliMCAuxHandler.h:54
 AliMCAuxHandler.h:55
 AliMCAuxHandler.h:56
 AliMCAuxHandler.h:57
 AliMCAuxHandler.h:58
 AliMCAuxHandler.h:59
 AliMCAuxHandler.h:60
 AliMCAuxHandler.h:61
 AliMCAuxHandler.h:62
 AliMCAuxHandler.h:63
 AliMCAuxHandler.h:64
 AliMCAuxHandler.h:65
 AliMCAuxHandler.h:66
 AliMCAuxHandler.h:67
 AliMCAuxHandler.h:68
 AliMCAuxHandler.h:69
 AliMCAuxHandler.h:70
 AliMCAuxHandler.h:71
 AliMCAuxHandler.h:72
 AliMCAuxHandler.h:73
 AliMCAuxHandler.h:74
 AliMCAuxHandler.h:75
 AliMCAuxHandler.h:76
 AliMCAuxHandler.h:77
 AliMCAuxHandler.h:78
 AliMCAuxHandler.h:79
 AliMCAuxHandler.h:80
 AliMCAuxHandler.h:81
 AliMCAuxHandler.h:82
 AliMCAuxHandler.h:83
 AliMCAuxHandler.h:84
 AliMCAuxHandler.h:85
 AliMCAuxHandler.h:86
 AliMCAuxHandler.h:87
 AliMCAuxHandler.h:88
 AliMCAuxHandler.h:89
 AliMCAuxHandler.h:90
 AliMCAuxHandler.h:91
 AliMCAuxHandler.h:92
 AliMCAuxHandler.h:93
 AliMCAuxHandler.h:94
 AliMCAuxHandler.h:95
 AliMCAuxHandler.h:96
 AliMCAuxHandler.h:97
 AliMCAuxHandler.h:98
 AliMCAuxHandler.h:99
 AliMCAuxHandler.h:100
 AliMCAuxHandler.h:101
 AliMCAuxHandler.h:102
 AliMCAuxHandler.h:103
 AliMCAuxHandler.h:104
 AliMCAuxHandler.h:105
 AliMCAuxHandler.h:106
 AliMCAuxHandler.h:107
 AliMCAuxHandler.h:108
 AliMCAuxHandler.h:109
 AliMCAuxHandler.h:110
 AliMCAuxHandler.h:111
 AliMCAuxHandler.h:112
 AliMCAuxHandler.h:113
 AliMCAuxHandler.h:114
 AliMCAuxHandler.h:115
 AliMCAuxHandler.h:116
 AliMCAuxHandler.h:117
 AliMCAuxHandler.h:118
 AliMCAuxHandler.h:119
 AliMCAuxHandler.h:120
 AliMCAuxHandler.h:121
 AliMCAuxHandler.h:122
 AliMCAuxHandler.h:123
 AliMCAuxHandler.h:124
 AliMCAuxHandler.h:125
 AliMCAuxHandler.h:126
 AliMCAuxHandler.h:127
 AliMCAuxHandler.h:128
 AliMCAuxHandler.h:129
 AliMCAuxHandler.h:130
 AliMCAuxHandler.h:131
 AliMCAuxHandler.h:132
 AliMCAuxHandler.h:133
 AliMCAuxHandler.h:134
 AliMCAuxHandler.h:135
 AliMCAuxHandler.h:136
 AliMCAuxHandler.h:137
 AliMCAuxHandler.h:138
 AliMCAuxHandler.h:139
 AliMCAuxHandler.h:140
 AliMCAuxHandler.h:141
 AliMCAuxHandler.h:142
 AliMCAuxHandler.h:143
 AliMCAuxHandler.h:144
 AliMCAuxHandler.h:145
 AliMCAuxHandler.h:146
 AliMCAuxHandler.h:147
 AliMCAuxHandler.h:148
 AliMCAuxHandler.h:149
 AliMCAuxHandler.h:150
 AliMCAuxHandler.h:151
 AliMCAuxHandler.h:152
 AliMCAuxHandler.h:153
 AliMCAuxHandler.h:154
 AliMCAuxHandler.h:155
 AliMCAuxHandler.h:156
 AliMCAuxHandler.h:157
 AliMCAuxHandler.h:158
 AliMCAuxHandler.h:159
 AliMCAuxHandler.h:160
 AliMCAuxHandler.h:161
 AliMCAuxHandler.h:162
 AliMCAuxHandler.h:163
 AliMCAuxHandler.h:164
 AliMCAuxHandler.h:165
 AliMCAuxHandler.h:166
 AliMCAuxHandler.h:167
 AliMCAuxHandler.h:168
 AliMCAuxHandler.h:169
 AliMCAuxHandler.h:170
 AliMCAuxHandler.h:171
 AliMCAuxHandler.h:172
 AliMCAuxHandler.h:173
 AliMCAuxHandler.h:174
 AliMCAuxHandler.h:175
 AliMCAuxHandler.h:176
 AliMCAuxHandler.h:177
 AliMCAuxHandler.h:178
 AliMCAuxHandler.h:179
 AliMCAuxHandler.h:180
 AliMCAuxHandler.h:181
 AliMCAuxHandler.h:182
 AliMCAuxHandler.h:183
 AliMCAuxHandler.h:184
 AliMCAuxHandler.h:185
 AliMCAuxHandler.h:186
 AliMCAuxHandler.h:187
 AliMCAuxHandler.h:188
 AliMCAuxHandler.h:189
 AliMCAuxHandler.h:190
 AliMCAuxHandler.h:191
 AliMCAuxHandler.h:192
 AliMCAuxHandler.h:193
 AliMCAuxHandler.h:194
 AliMCAuxHandler.h:195
 AliMCAuxHandler.h:196
 AliMCAuxHandler.h:197
 AliMCAuxHandler.h:198
 AliMCAuxHandler.h:199
 AliMCAuxHandler.h:200
 AliMCAuxHandler.h:201
 AliMCAuxHandler.h:202
 AliMCAuxHandler.h:203
 AliMCAuxHandler.h:204
 AliMCAuxHandler.h:205
 AliMCAuxHandler.h:206
 AliMCAuxHandler.h:207
 AliMCAuxHandler.h:208
 AliMCAuxHandler.h:209
 AliMCAuxHandler.h:210
 AliMCAuxHandler.h:211
 AliMCAuxHandler.h:212
 AliMCAuxHandler.h:213
 AliMCAuxHandler.h:214
 AliMCAuxHandler.h:215
 AliMCAuxHandler.h:216
 AliMCAuxHandler.h:217
 AliMCAuxHandler.h:218
 AliMCAuxHandler.h:219
 AliMCAuxHandler.h:220
 AliMCAuxHandler.h:221
 AliMCAuxHandler.h:222
 AliMCAuxHandler.h:223
 AliMCAuxHandler.h:224
 AliMCAuxHandler.h:225
 AliMCAuxHandler.h:226
 AliMCAuxHandler.h:227
 AliMCAuxHandler.h:228
 AliMCAuxHandler.h:229
 AliMCAuxHandler.h:230
 AliMCAuxHandler.h:231
 AliMCAuxHandler.h:232
 AliMCAuxHandler.h:233
 AliMCAuxHandler.h:234
 AliMCAuxHandler.h:235
 AliMCAuxHandler.h:236
 AliMCAuxHandler.h:237
 AliMCAuxHandler.h:238
 AliMCAuxHandler.h:239
 AliMCAuxHandler.h:240
 AliMCAuxHandler.h:241
 AliMCAuxHandler.h:242