00001 #ifndef MAKEDETECTORPULSES_H__ 00002 #define MAKEDETECTORPULSES_H__ 00003 00004 #include <string> 00005 #include <set> 00006 00007 #include "BaseModule.h" 00008 #include "definitions.h" 00009 #include "TGlobalData.h" 00010 #include "TSetupData.h" 00011 #include "ModulesOptions.h" 00012 #include "TAnalysedPulse.h" 00013 #include "TDetectorPulse.h" 00014 00015 #include "TVDetectorPulseGenerator.h" 00016 class TDPGeneratorOptions; 00017 00018 class MakeDetectorPulses : public BaseModule{ 00019 struct Detector_t{ 00020 IDs::source source; 00021 IDs::source fast; 00022 IDs::source slow; 00023 TVDetectorPulseGenerator* generator; 00024 bool operator<(const Detector_t& rhs)const{ 00025 return source<rhs.source; 00026 } 00027 Detector_t(const IDs::source& so, 00028 const IDs::source& f, 00029 const IDs::source& s, 00030 TVDetectorPulseGenerator* g): 00031 source(so),fast(f),slow(s),generator(g){} 00032 }; 00033 00034 public: 00035 MakeDetectorPulses(modules::options* opts); 00036 ~MakeDetectorPulses(); 00037 00038 void SetDefaultAlgorithm(const TString& algorithm){fDefaultAlgorithm=algorithm;}; 00039 void SetDetectorPulseMap(StringDetPulseMap& aMap){fDetectorPulseMap=&aMap;} 00040 00041 IDs::generator GetPassThruGeneratorID()const { 00042 return fPassThruGenerator?fPassThruGenerator->GetSource().Generator():IDs::generator(); 00043 } 00044 00045 private: 00046 TVDetectorPulseGenerator* MakeGenerator(const IDs::source& current_source, const IDs::source& partner_source, const std::string& generatorType, TDPGeneratorOptions* opts ); 00047 virtual int ProcessEntry(TGlobalData *gData, const TSetupData* gSetup); 00048 virtual int BeforeFirstEntry(TGlobalData* gData, const TSetupData* setup); 00049 virtual int AfterLastEntry(TGlobalData* gData, const TSetupData* setup){return 0;} 00050 00051 void DumpgAnalysedPulseMap(const SourceAnalPulseMap& aMap); 00052 bool ParseGeneratorList(const IDs::source& current_source, const IDs::source& partner_source, const std::string& generatorList); 00053 00054 private: 00055 modules::options* fOptions; 00056 TVDetectorPulseGenerator* fPassThruGenerator; 00057 TVDetectorPulseGenerator* fGenerator; 00058 StringDetPulseMap* fDetectorPulseMap; 00059 typedef std::set<Detector_t > ChannelPairing_t; 00060 ChannelPairing_t fFastSlowPairs; 00061 std::string fDefaultAlgorithm, fPassThruName; 00062 std::vector<std::string> fDetectorsToAnalyse; 00063 00064 }; 00065 00066 #endif // MAKEDETECTORPULSES_H__