00001
00002
00003 #include "VisSimulation/VisSimHits/interface/VisSimHitsContent.h"
00004 #include "VisSimulation/VisSimHits/interface/VisPCaloHitTwig.h"
00005 #include "VisSimulation/VisSimHits/interface/VisPSimHitTwig.h"
00006 #include "VisSimulation/VisSimHits/interface/VisSimTrackTwig.h"
00007 #include "VisSimulation/VisSimHits/interface/VisSimVertexTwig.h"
00008 #include "VisFramework/VisFrameworkBase/interface/debug.h"
00009 #include "VisFramework/VisFrameworkBase/interface/VisExceptionService.h"
00010 #include "Iguana/Studio/interface/IgDocumentData.h"
00011 #include "Iguana/Framework/interface/IgTwig.h"
00012 #include "Iguana/Framework/interface/IgRepSet.h"
00013 #include "Iguana/Studio/interface/IgQtLock.h"
00014 #include <classlib/utils/Callback.h>
00015
00016
00017
00018
00019
00020
00021
00022
00023 IG_DEFINE_STATE_ELEMENT (VisSimHitsContent, "Data/Simulation/Hits");
00024
00025
00026
00027
00028
00030 VisSimHitsContent::VisSimHitsContent (IgState *state)
00031 : VisContent (state, s_key, MAIN_THREAD,
00032 lat::CreateCallback (this, &VisSimHitsContent::init))
00033 {}
00034
00037 void
00038 VisSimHitsContent::init (void)
00039 {
00040 LOG (0, trace, LFfwvis, "VisSimHitsContent::init()\n");
00041
00042 IgQtLock ();
00043
00044 IgTwig *rootTwig = IgDocumentData::get (state ())->root ();
00045 IgTwig *topTwig = 0;
00046 IgTwig *eventTwig = 0;
00047
00048 topTwig = rootTwig->lookup ("CMS Event and Detector");
00049 if (!topTwig) topTwig = new IgSimpleTwig (rootTwig, "CMS Event and Detector");
00050
00051 eventTwig = topTwig->lookup ("CMS Event");
00052 if (!eventTwig) eventTwig = new IgSimpleTwig (topTwig, "CMS Event");
00053
00054 VisExceptionService *exService = VisExceptionService::get (state ());
00055 if (! exService)
00056 {
00057 exService = new VisExceptionService (state ());
00058 }
00059
00060 std::vector<std::string> twigs (4);
00061 twigs.push_back ("VisPCaloHitTwig");
00062 twigs.push_back ("VisPSimHitTwig");
00063 twigs.push_back ("VisSimTrackTwig");
00064 twigs.push_back ("VisSimVertexTwig");
00065
00066 const edm::ParameterSet *pset = VisConfigurationService::pSet ();
00067 if (pset)
00068 {
00069 twigs = pset->getUntrackedParameter<std::vector<std::string> > ("VisSimContent", twigs);
00070 }
00071
00072 IgTwig *hitsEventTwig = new IgSimpleTwig (eventTwig, "Simulated Data");
00073 if (std::find (twigs.begin (), twigs.end (), "VisPCaloHitTwig")!= twigs.end())
00074 {
00075 VisPCaloHitTwig *caloHits = new VisPCaloHitTwig (state (), hitsEventTwig, "Sim Calo Hits");
00076 caloHits->onException (lat::CreateCallback (exService, &VisExceptionService::exceptionCallback));
00077 caloHits->onError (lat::CreateCallback (exService, &VisExceptionService::errorCallback));
00078 caloHits->onCmsException (lat::CreateCallback (exService, &VisExceptionService::cmsExceptionCallback));
00079 caloHits->onUnhandledException (lat::CreateCallback (exService, &VisExceptionService::unhandledExceptionCallback));
00080 }
00081 if (std::find (twigs.begin (), twigs.end (), "VisPSimHitTwig")!= twigs.end())
00082 {
00083 VisPSimHitTwig *simHits = new VisPSimHitTwig (state (), hitsEventTwig, "Sim Hits");
00084 simHits->onException (lat::CreateCallback (exService, &VisExceptionService::exceptionCallback));
00085 simHits->onError (lat::CreateCallback (exService, &VisExceptionService::errorCallback));
00086 simHits->onCmsException (lat::CreateCallback (exService, &VisExceptionService::cmsExceptionCallback));
00087 simHits->onUnhandledException (lat::CreateCallback (exService, &VisExceptionService::unhandledExceptionCallback));
00088 }
00089 if (std::find (twigs.begin (), twigs.end (), "VisSimTrackTwig")!= twigs.end())
00090 {
00091 VisSimTrackTwig *tracks = new VisSimTrackTwig (state (), hitsEventTwig, "Sim Tracks");
00092 tracks->onException (lat::CreateCallback (exService, &VisExceptionService::exceptionCallback));
00093 tracks->onError (lat::CreateCallback (exService, &VisExceptionService::errorCallback));
00094 tracks->onCmsException (lat::CreateCallback (exService, &VisExceptionService::cmsExceptionCallback));
00095 tracks->onUnhandledException (lat::CreateCallback (exService, &VisExceptionService::unhandledExceptionCallback));
00096 }
00097 if (std::find (twigs.begin (), twigs.end (), "VisSimVertexTwig")!= twigs.end())
00098 {
00099 VisSimVertexTwig *vtx = new VisSimVertexTwig (state (), hitsEventTwig, "Sim Vertices");
00100 vtx->onException (lat::CreateCallback (exService, &VisExceptionService::exceptionCallback));
00101 vtx->onError (lat::CreateCallback (exService, &VisExceptionService::errorCallback));
00102 vtx->onCmsException (lat::CreateCallback (exService, &VisExceptionService::cmsExceptionCallback));
00103 vtx->onUnhandledException (lat::CreateCallback (exService, &VisExceptionService::unhandledExceptionCallback));
00104 }
00105 }