ROOT logo
#ifndef ALIMCGENHANDLER_H
#define ALIMCGENHANDLER_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */


/* $Id: AliMCGenHandler.h 61697 2013-03-26 12:17:26Z agheata $ */

//-------------------------------------------------------------------------
//                          Class AliMCGenHandler
// This class can be used with the analysis framework to generate event on
// the fly and analyse them.
//      
// Origin: Andrei Gheata, Jan Fiete Grosse-Oetringhaus
//-------------------------------------------------------------------------

#include "AliInputEventHandler.h"

class TFile;
class TTree;
class AliMCEvent;
class AliGenerator;
class AliRunLoader;
class AliStack;
class AliHeader;
class TMacro;

class AliMCGenHandler : public AliInputEventHandler
{
public:

    AliMCGenHandler();
    AliMCGenHandler(const char* name, const char* title);
    virtual ~AliMCGenHandler();

    virtual Bool_t       Init(Option_t* /*opt*/);
    virtual Bool_t       Init(TTree* tree, Option_t* opt) { return AliInputEventHandler::Init(tree, opt); }
    virtual Bool_t       BeginEvent(Long64_t entry);
    virtual Bool_t       FinishEvent();

    AliMCEvent* MCEvent() const {return fMCEvent;}
    
    void 		 SetGenerator(AliGenerator* generator) { fGenerator = generator; }
    
    void		 SetSeedMode(Int_t mode) { fSeedMode = mode; }
    void		 SetSeed(UInt_t seed) { fSeed = seed; }
    UInt_t		 GetSeed() { return fSeed; }
    
    void		 SetGeneratorMacroPath(const char* macroPath) { fGeneratorMacroPath = macroPath; }
    void		 SetGeneratorMacroParameters(const char* params) { fGeneratorMacroParameters = params; }
    void		 SetGeneratorCustomization(TMacro* macro) { fGeneratorCustomization = macro; }

private:
    AliMCGenHandler(const AliMCGenHandler& handler);             
    AliMCGenHandler& operator=(const AliMCGenHandler& handler);  

    AliMCEvent            *fMCEvent;            //! MC Event
    Long64_t		   fEventNumber;	//! current event number
    AliStack* 		   fStack;		//! current AliStack pointer
    AliHeader*		   fHeader;		//! current AliHeader pointer

    AliGenerator	  *fGenerator;		// generator
    Int_t		   fSeedMode;		// which seed is to be used: 0 (default): nothing/set externally; 1: use fSeed; 2: current time; 3: AliEn job id
    UInt_t		   fSeed;		// can be used to set seed manually (fSeedMode == 1); contains last used seed (fSeedMode == 2 || 3)
    
    TString		   fGeneratorMacroPath; // path to macro creating the generator object
    TString		   fGeneratorMacroParameters; // parameters passed to the creating macro
    TMacro		  *fGeneratorCustomization; // customization macro for generator object

    ClassDef(AliMCGenHandler, 2)  // MC Gen Handler
};
#endif 
 AliMCGenHandler.h:1
 AliMCGenHandler.h:2
 AliMCGenHandler.h:3
 AliMCGenHandler.h:4
 AliMCGenHandler.h:5
 AliMCGenHandler.h:6
 AliMCGenHandler.h:7
 AliMCGenHandler.h:8
 AliMCGenHandler.h:9
 AliMCGenHandler.h:10
 AliMCGenHandler.h:11
 AliMCGenHandler.h:12
 AliMCGenHandler.h:13
 AliMCGenHandler.h:14
 AliMCGenHandler.h:15
 AliMCGenHandler.h:16
 AliMCGenHandler.h:17
 AliMCGenHandler.h:18
 AliMCGenHandler.h:19
 AliMCGenHandler.h:20
 AliMCGenHandler.h:21
 AliMCGenHandler.h:22
 AliMCGenHandler.h:23
 AliMCGenHandler.h:24
 AliMCGenHandler.h:25
 AliMCGenHandler.h:26
 AliMCGenHandler.h:27
 AliMCGenHandler.h:28
 AliMCGenHandler.h:29
 AliMCGenHandler.h:30
 AliMCGenHandler.h:31
 AliMCGenHandler.h:32
 AliMCGenHandler.h:33
 AliMCGenHandler.h:34
 AliMCGenHandler.h:35
 AliMCGenHandler.h:36
 AliMCGenHandler.h:37
 AliMCGenHandler.h:38
 AliMCGenHandler.h:39
 AliMCGenHandler.h:40
 AliMCGenHandler.h:41
 AliMCGenHandler.h:42
 AliMCGenHandler.h:43
 AliMCGenHandler.h:44
 AliMCGenHandler.h:45
 AliMCGenHandler.h:46
 AliMCGenHandler.h:47
 AliMCGenHandler.h:48
 AliMCGenHandler.h:49
 AliMCGenHandler.h:50
 AliMCGenHandler.h:51
 AliMCGenHandler.h:52
 AliMCGenHandler.h:53
 AliMCGenHandler.h:54
 AliMCGenHandler.h:55
 AliMCGenHandler.h:56
 AliMCGenHandler.h:57
 AliMCGenHandler.h:58
 AliMCGenHandler.h:59
 AliMCGenHandler.h:60
 AliMCGenHandler.h:61
 AliMCGenHandler.h:62
 AliMCGenHandler.h:63
 AliMCGenHandler.h:64
 AliMCGenHandler.h:65
 AliMCGenHandler.h:66
 AliMCGenHandler.h:67
 AliMCGenHandler.h:68
 AliMCGenHandler.h:69
 AliMCGenHandler.h:70
 AliMCGenHandler.h:71
 AliMCGenHandler.h:72