00001 #ifndef CosMuoGenSource_h 00002 #define CosMuoGenSource_h 00003 // 00004 // CosmicMuonGenerator by droll (01/FEB/2006) 00005 // 00006 #include "GeneratorInterface/CosmicMuonGenerator/interface/CosmicMuonGenerator.h" 00007 #include "HepMC/GenEvent.h" 00008 #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" 00009 #include "FWCore/Framework/interface/EventPrincipal.h" 00010 #include "FWCore/Framework/interface/GeneratedInputSource.h" 00011 #include "FWCore/Framework/interface/InputSourceDescription.h" 00012 #include "FWCore/Framework/interface/Event.h" 00013 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00014 //#include "FWCore/ParameterSet/interface/ParameterSet.h" 00015 #include "FWCore/Utilities/interface/Exception.h" 00016 00017 00018 namespace edm 00019 { 00020 class CosMuoGenSource : public GeneratedInputSource{ 00021 public: 00022 CosMuoGenSource(const ParameterSet&, const InputSourceDescription& ); 00023 virtual ~CosMuoGenSource(); 00024 00025 private: 00026 virtual bool produce(Event & e); 00027 00028 void clear(); 00029 // define the configurable generator parameters 00030 int32_t RanS; // seed of random number generator (from Framework) 00031 double MinP; // min. P [GeV] 00032 double MinP_CMS; // min. P at CMS surface [GeV]; default is MinP_CMS=MinP, thus no bias from access-shaft 00033 double MaxP; // max. P [GeV] 00034 double MinT; // min. theta [deg] 00035 double MaxT; // max. theta [deg] 00036 double MinPh; // min. phi [deg] 00037 double MaxPh; // max. phi [deg] 00038 double MinS; // min. t0 [ns] 00039 double MaxS; // max. t0 [ns] 00040 double ELSF; // scale factor for energy loss 00041 double RTarget; // Radius of target-cylinder which cosmics HAVE to hit [mm], default is CMS-dimensions 00042 double ZTarget; // z-length of target-cylinder which cosmics HAVE to hit [mm], default is CMS-dimensions 00043 double ZCTarget; // z-position of centre of target-cylinder which cosmics HAVE to hit [mm], default is Nominal Interaction Point 00044 bool TrackerOnly; //if set to "true" detector with tracker-only setup is used, so no material or B-field outside is considerd 00045 bool TIFOnly_constant; //if set to "true" cosmics can also be generated below 2GeV with unphysical constant energy dependence 00046 bool TIFOnly_linear; //if set to "true" cosmics can also be generated below 2GeV with unphysical linear energy dependence 00047 bool MTCCHalf; //if set to "true" muons are sure to hit half of CMS important for MTCC, 00048 //still material and B-field of whole CMS is considered 00049 00050 //Plug position (default = on shaft) 00051 double PlugVtx; 00052 double PlugVtz; 00053 00054 CosmicMuonGenerator* CosMuoGen; 00055 // the event format itself 00056 HepMC::GenEvent* fEvt; 00057 bool cmVerbosity_; 00058 }; 00059 } 00060 00061 #endif