Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-07-03 07:05:11

0001 /**
0002  \file
0003  Declaration of class erhic::Pythia6.
0004 
0005  \author    Thomas Burton
0006  \date      2012-01-18
0007  \copyright 2012 Brookhaven National Lab
0008  */
0009 
0010 #ifndef INCLUDE_EICSMEAR_ERHIC_PYTHIA6_H_
0011 #define INCLUDE_EICSMEAR_ERHIC_PYTHIA6_H_
0012 
0013 #include <memory>
0014 #include <string>
0015 
0016 #include <Rtypes.h>  // For ClassDef macro
0017 
0018 class TFile;
0019 class TTree;
0020 
0021 namespace erhic {
0022 
0023 class EventPythia;
0024 class EventMCFilterABC;
0025 class VirtualEvent;
0026 class VirtualEventFactory;
0027 
0028 /**
0029  Runs PYTHIA 6 and builds an output tree file in the ROOT environment.
0030  The output tree is populated with EventPythia objects.
0031  PYTHIA options (including initialisation) should be provided via the
0032  ROOT interface class TPythia6 before running the tree-building.
0033  */
0034 class Pythia6 {
0035  public:
0036   /**
0037    Constructor.
0038    
0039    Associates the output of this PYTHIA run with a file.
0040    Generate events using the provided event factory.
0041    Both the file and the factory should be dynamically allocated.
0042    Pythia6 takes ownership and deletes them.
0043    Define the number of events to produce, and optionally
0044    provide a tree and branch name.
0045    */
0046   Pythia6(TFile* file,
0047           VirtualEventFactory*,
0048           int nEvents,
0049           const std::string& treeName = "EICTree",
0050           const std::string& branchName = "event",
0051           int printInterval = 1000);
0052 
0053   /**
0054    Destructor
0055    */
0056   virtual ~Pythia6();
0057 
0058   /**
0059    Runs PYTHIA and writes output
0060    \todo Implement selection of correct event factory (either
0061    erhic::Pythia6EventBuilder or hadronic::Pythia6EventFactory)
0062    depending on requested beam types.
0063    */
0064   virtual bool Run();
0065 
0066  protected:
0067   int mPrintInterval;
0068   TFile* mFile;           //! < Pointer to the output file
0069   TTree* mTree;           ///< Pointer to the generated tree
0070   const int mNEvents;     ///< Number of events to produce
0071   int mNGenerated;        ///< Number of events passing PYTHIA selection
0072   int mNTrials;           ///< Number of events thrown by PYTHIA
0073   std::unique_ptr<VirtualEventFactory> mFactory;  //! < Event factory.
0074 
0075   ClassDef(erhic::Pythia6, 1)
0076 };
0077 
0078 }  // namespace erhic
0079 
0080 #endif  // INCLUDE_EICSMEAR_ERHIC_PYTHIA6_H_