//<<<<<< INCLUDES >>>>>> #include "Utilities/Configuration/interface/Architecture.h" #include "Utilities/Notification/interface/Singleton.h" #include "Visualisation/MuonVis/interface/VisMuBarRpcMyHitsTwig.h" #include "CommonDet/DetLayout/interface/DetLayer.h" #include "CommonDet/BasicDet/interface/DetUnit.h" #include "CommonDet/BasicDet/interface/RecHit.h" #include "CommonDet/BasicDet/interface/SimDet.h" #include "Muon/MRpcDetector/interface/CMSMuonRpc.h" #include "Muon/MRpcSetUp/interface/MRpcSetUp.h" #include "Ig_Extensions/IgOpenInventor/interface/IgSoHitsKit.h" #include "Ig_Modules/Ig3DModel/interface/Ig3DRep.h" #include "Ig_Modules/IgTextModel/interface/IgTextRep.h" #include #include #include //<<<<<< PRIVATE DEFINES >>>>>> //<<<<<< PRIVATE CONSTANTS >>>>>> //<<<<<< PRIVATE TYPES >>>>>> //<<<<<< PRIVATE VARIABLE DEFINITIONS >>>>>> //<<<<<< PUBLIC VARIABLE DEFINITIONS >>>>>> //<<<<<< CLASS STRUCTURE INITIALIZATION >>>>>> #include //<<<<<< PRIVATE FUNCTION DEFINITIONS >>>>>> //<<<<<< PUBLIC FUNCTION DEFINITIONS >>>>>> //<<<<<< MEMBER FUNCTION DEFINITIONS >>>>>> /** Initialise Muon barrel RPCs my hits twig. */ VisMuBarRpcMyHitsTwig::VisMuBarRpcMyHitsTwig (IgState *state, IgTwig *parent) : EventObserverTwig (state, parent, "RPC MyHits") { outfile= new ofstream("out.dat",ios::out); } /** Update object property description. */ void VisMuBarRpcMyHitsTwig::update (IgTextRep *rep) { // Get debugging dump. EventObserverTwig::update (rep); // Prepare the property description. std::ostrstream text; text << "
Muon Barrel: RPC my hits." << "
" << '\0'; // Send it over. qApp->lock (); rep->setText (text.str ()); text.freeze (0); qApp->unlock (false); } /** Update object property description. */ void VisMuBarRpcMyHitsTwig::update (Ig3DRep *rep) { // Get debugging dump. EventObserverTwig::update (rep); qApp->lock (); SoSeparator *theSimHitsSep = new SoSeparator (); vector< DetLayer * > layers; vector< DetLayer * >::const_iterator layerItr; layers = Singleton< MRpcSetUp >::instance ()->CMSMRpc ()->barrelLayers (); // Count up total number of SimHit's // --------------------------------- int nRecHits = 0; int ilay = 0; int ista = 0; for (layerItr = layers.begin (); layerItr != layers.end (); layerItr++) { ilay++; for (DetLayer::DetIterator idet = (*layerItr)->dets ().begin (); idet != (*layerItr)->dets ().end (); idet++ ) { ista++; Det::DetUnitContainer units = idet->detUnits (); for (Det::DetUnitContainer::iterator udet = units.begin (); udet != units.end (); udet++) { // DetUnit* stat = (*udet)->detUnits(); DetUnit::RecHitContainer sits = (*udet)->recHits(); for( DetUnit::RecHitIterator is = sits.begin(); is != sits.end(); is++ ) { LocalPoint xyzLocal = is->localPosition(); float x = xyzLocal.x(); float y = xyzLocal.y(); float z = xyzLocal.z(); float dx = is->localPositionError().xx(); float dy = is->localPositionError().yy(); nRecHits++; *outfile << nRecHits << " "<< ilay <<" " << ista << " " << x << " " << y << " " << z << " " << dx << " " << dy << endl; } } } cout << "Number of Rpc Rechits: " << nRecHits << endl; // SimDet *simDet = (*udet)->simDet (); // if (simDet && !simDet->simHits ().empty ()) // { // const SimDet::SimHitContainer& sits = simDet->simHits (); // nSimHits += sits.size(); // } // } // } } rep->clear (); rep->node ()->addChild (theSimHitsSep); qApp->unlock (false); }