00001 #ifndef gen_ExternalDecays_PhotosInterface_h 00002 #define gen_ExternalDecays_PhotosInterface_h 00003 00004 // #include "HepPDT/ParticleDataTable.hh" 00005 00006 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00007 #include "FWCore/Framework/interface/ESHandle.h" 00008 #include "FWCore/Framework/interface/EventSetup.h" 00009 00010 #include "HepMC/SimpleVector.h" 00011 00012 namespace HepMC 00013 { 00014 class GenEvent; 00015 class GenVertex; 00016 } 00017 00018 namespace gen { 00019 00020 class PhotosInterface 00021 { 00022 public: 00023 00024 // ctor & dtor 00025 PhotosInterface(); 00026 PhotosInterface( const edm::ParameterSet& ); 00027 ~PhotosInterface() {} 00028 00029 void init(); 00030 const std::vector<std::string>& specialSettings() { return fSpecialSettings; } 00031 HepMC::GenEvent* apply( HepMC::GenEvent* ); 00032 // --> void configureOnlyFor( int ); 00033 void avoidTauLeptonicDecays() { fAvoidTauLeptonicDecays=true; return; } 00034 00035 private: 00036 00037 struct Scaling { 00038 HepMC::ThreeVector weights; 00039 int flag; 00040 Scaling( HepMC::ThreeVector vec, int flg ) 00041 : weights(HepMC::ThreeVector(1.,1.,1)), flag(1) { weights=vec; flag=flg; } 00042 }; 00043 00044 int fOnlyPDG; 00045 std::vector<std::string> fSpecialSettings; 00046 bool fAvoidTauLeptonicDecays; 00047 std::vector<Scaling> fScaleFactors; 00048 std::vector<int> fBarcodes; 00049 bool fIsInitialized; 00050 00051 void attachParticles( HepMC::GenEvent*, HepMC::GenVertex*, int ); 00052 00053 }; 00054 00055 } 00056 00057 #endif