CMS 3D CMS Logo

VisEventSetup Class Reference

#include <VisReco/Analyzer/interface/VisEventSetup.h>

Inheritance diagram for VisEventSetup:

edm::EDAnalyzer

List of all members.

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 VisEventSetup (const edm::ParameterSet &)
virtual ~VisEventSetup ()

Private Member Functions

void addCorners (IgCollectionItem &, const GeomDet *)
void build (IgDataStorage *, std::string, DetId::Detector, int)
void buildCalo (IgDataStorage *)
void buildCSC (IgDataStorage *)
void buildDriftTubes (IgDataStorage *)
void buildMagneticField (IgDataStorage *)
void buildRPC (IgDataStorage *)
void buildTracker (IgDataStorage *)
const std::string otherSubDetName (HcalOtherSubdetector key)
const std::string subDetName (HcalSubdetector key)

Private Attributes

edm::ESHandle< CaloGeometrycaloGeom_
bool caloGeomCanged_
edm::ESHandle< CSCGeometrycscGeom_
edm::ESHandle< DTGeometrydtGeom_
edm::ESHandle< MagneticFieldfield_
bool fieldGeomCanged_
edm::ESHandle
< GlobalTrackingGeometry
globalTrackingGeom_
bool globalTrackingGeomCanged_
bool muonGeomCanged_
edm::ESHandle< RPCGeometryrpcGeom_
edm::ESHandle< TrackerGeometrytrackerGeom_
bool trackerGeomCanged_
edm::ESWatcher
< CaloGeometryRecord
watch_caloGeom_
edm::ESWatcher
< IdealMagneticFieldRecord
watch_field_
edm::ESWatcher
< GlobalTrackingGeometryRecord
watch_globalTrackingGeom_
edm::ESWatcher
< MuonGeometryRecord
watch_muonGeom_
edm::ESWatcher
< TrackerDigiGeometryRecord
watch_trackerGeom_


Detailed Description

Definition at line 38 of file VisEventSetup.h.


Constructor & Destructor Documentation

VisEventSetup::VisEventSetup ( const edm::ParameterSet iPSet  )  [explicit]

Definition at line 44 of file VisEventSetup.cc.

00045 {}

virtual VisEventSetup::~VisEventSetup (  )  [inline, virtual]

Definition at line 45 of file VisEventSetup.h.

00045 {}


Member Function Documentation

void VisEventSetup::addCorners ( IgCollectionItem icorner,
const GeomDet det 
) [private]

Definition at line 342 of file VisEventSetup.cc.

References b, b2, BoundSurface::bounds(), Bounds::length(), p, TrapezoidalPlaneBounds::parameters(), python::trackProbabilityAnalysis_cff::parameters, GeomDet::surface(), Bounds::thickness(), Surface::toGlobal(), Bounds::width(), width, x, y, and z.

Referenced by buildCSC(), and buildRPC().

00343 {
00344     GlobalPoint p[8];
00345 
00346     float length = det->surface().bounds().length();
00347     float width = det->surface().bounds().width();
00348     float thickness = det->surface().bounds().thickness();
00349 
00350     const Bounds *b = &(det->surface ().bounds ());
00351     if (dynamic_cast<const TrapezoidalPlaneBounds *> (b))
00352     {
00353         const TrapezoidalPlaneBounds *b2 = dynamic_cast<const TrapezoidalPlaneBounds *> (b);
00354         std::vector< float > parameters = b2->parameters ();
00355 
00356         p[0] = det->surface().toGlobal(LocalPoint(parameters[0],-parameters[3],parameters[2])); 
00357         p[1] = det->surface().toGlobal(LocalPoint(-parameters[0],-parameters[3],parameters[2])); 
00358         p[2] = det->surface().toGlobal(LocalPoint(parameters[1],parameters[3],parameters[2])); 
00359         p[3] = det->surface().toGlobal(LocalPoint(-parameters[1],parameters[3],parameters[2])); 
00360         p[4] = det->surface().toGlobal(LocalPoint(parameters[0],-parameters[3],-parameters[2])); 
00361         p[5] = det->surface().toGlobal(LocalPoint(-parameters[0],-parameters[3],-parameters[2])); 
00362         p[6] = det->surface().toGlobal(LocalPoint(parameters[1],parameters[3],-parameters[2])); 
00363         p[7] = det->surface().toGlobal(LocalPoint(-parameters[1],parameters[3],-parameters[2]));
00364     }    
00365     if (dynamic_cast<const RectangularPlaneBounds *> (b))
00366     {
00367         p[0] = det->surface().toGlobal(LocalPoint(width/2,length/2,thickness/2)); 
00368         p[1] = det->surface().toGlobal(LocalPoint(width/2,-length/2,thickness/2)); 
00369         p[2] = det->surface().toGlobal(LocalPoint(-width/2,length/2,thickness/2)); 
00370         p[3] = det->surface().toGlobal(LocalPoint(-width/2,-length/2,thickness/2)); 
00371         p[4] = det->surface().toGlobal(LocalPoint(width/2,length/2,-thickness/2)); 
00372         p[5] = det->surface().toGlobal(LocalPoint(width/2,-length/2,-thickness/2)); 
00373         p[6] = det->surface().toGlobal(LocalPoint(-width/2,length/2,-thickness/2)); 
00374         p[7] = det->surface().toGlobal(LocalPoint(-width/2,-length/2,-thickness/2));
00375     }
00376     
00377     icorner["front_1"] = IgV3d(static_cast<double>(p[0].x()/100.0), static_cast<double>(p[0].y()/100.0), static_cast<double>(p[0].z()/100.0));
00378     icorner["front_2"] = IgV3d(static_cast<double>(p[1].x()/100.0), static_cast<double>(p[1].y()/100.0), static_cast<double>(p[1].z()/100.0));
00379     icorner["front_4"] = IgV3d(static_cast<double>(p[2].x()/100.0), static_cast<double>(p[2].y()/100.0), static_cast<double>(p[2].z()/100.0));
00380     icorner["front_3"] = IgV3d(static_cast<double>(p[3].x()/100.0), static_cast<double>(p[3].y()/100.0), static_cast<double>(p[3].z()/100.0));
00381     icorner["back_1"] = IgV3d(static_cast<double>(p[4].x()/100.0), static_cast<double>(p[4].y()/100.0), static_cast<double>(p[4].z()/100.0));
00382     icorner["back_2"] = IgV3d(static_cast<double>(p[5].x()/100.0), static_cast<double>(p[5].y()/100.0), static_cast<double>(p[5].z()/100.0));
00383     icorner["back_4"] = IgV3d(static_cast<double>(p[6].x()/100.0), static_cast<double>(p[6].y()/100.0), static_cast<double>(p[6].z()/100.0));
00384     icorner["back_3"] = IgV3d(static_cast<double>(p[7].x()/100.0), static_cast<double>(p[7].y()/100.0), static_cast<double>(p[7].z()/100.0));
00385 }

void VisEventSetup::analyze ( const edm::Event event,
const edm::EventSetup eventSetup 
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 48 of file VisEventSetup.cc.

References buildCalo(), buildCSC(), buildDriftTubes(), buildRPC(), buildTracker(), caloGeom_, edm::ESWatcher< T >::check(), edmplugin::standard::config(), cscGeom_, dtGeom_, Exception, field_, edm::EventSetup::get(), globalTrackingGeom_, edm::Service< T >::isAvailable(), edm::ESHandle< T >::isValid(), rpcGeom_, trackerGeom_, watch_caloGeom_, watch_muonGeom_, and watch_trackerGeom_.

00049 {    
00050     edm::Service<IguanaService> config;
00051     if (! config.isAvailable ()) 
00052     {
00053         throw cms::Exception ("Configuration")
00054             << "VisEventSetup requires the IguanaService\n"
00055             "which is not present in the configuration file.\n"
00056             "You must add the service in the configuration file\n"
00057             "or remove the module that requires it";
00058     }
00059     eventSetup.get<GlobalTrackingGeometryRecord> ().get (globalTrackingGeom_);
00060     eventSetup.get<TrackerDigiGeometryRecord> ().get (trackerGeom_);
00061     eventSetup.get<CaloGeometryRecord> ().get (caloGeom_);
00062     eventSetup.get<MuonGeometryRecord> ().get (cscGeom_);
00063     eventSetup.get<MuonGeometryRecord> ().get (dtGeom_);
00064     eventSetup.get<MuonGeometryRecord> ().get (rpcGeom_);
00065     eventSetup.get<IdealMagneticFieldRecord> ().get (field_);
00066 
00067     IgDataStorage *storage  = config->esStorage ();
00068 
00069     if (trackerGeom_.isValid () &&  watch_trackerGeom_.check (eventSetup)) buildTracker (storage);
00070     if (caloGeom_.isValid () && watch_caloGeom_.check (eventSetup)) buildCalo (storage);
00071     if (watch_muonGeom_.check (eventSetup))     
00072     {
00073         if (dtGeom_.isValid ()) buildDriftTubes (storage);
00074         if (cscGeom_.isValid ()) buildCSC (storage);
00075         if (rpcGeom_.isValid ()) buildRPC (storage);
00076     }
00077 }

void VisEventSetup::build ( IgDataStorage storage,
std::string  name,
DetId::Detector  det,
int  subdetn 
) [private]

Definition at line 288 of file VisEventSetup.cc.

References IgCollection::addProperty(), IgCollection::create(), DetId::Ecal, IgDataStorage::getCollection(), CaloCellGeometry::getCorners(), CaloSubdetectorGeometry::getGeometry(), CaloSubdetectorGeometry::getValidDetIds(), DetId::Hcal, it, EZArrayFL< T >::size(), x, y, and z.

Referenced by buildCalo().

00289 {
00290     IgCollection &geometry = storage->getCollection (name.c_str ());  
00291     IgProperty DET_ID  = geometry.addProperty("detid", int (0)); 
00292     IgProperty FRONT_1 = geometry.addProperty("front_1", IgV3d());
00293     IgProperty FRONT_2 = geometry.addProperty("front_2", IgV3d());
00294     IgProperty FRONT_3 = geometry.addProperty("front_3", IgV3d());
00295     IgProperty FRONT_4 = geometry.addProperty("front_4", IgV3d());
00296     IgProperty BACK_1  = geometry.addProperty("back_1",  IgV3d());
00297     IgProperty BACK_2  = geometry.addProperty("back_2",  IgV3d());
00298     IgProperty BACK_3  = geometry.addProperty("back_3",  IgV3d());
00299     IgProperty BACK_4  = geometry.addProperty("back_4",  IgV3d());
00300 
00301     const CaloSubdetectorGeometry *geom = (*caloGeom_).getSubdetectorGeometry (det, subdetn);
00302     const std::vector<DetId>& ids (geom->getValidDetIds (det, subdetn));
00303     for (std::vector<DetId>::const_iterator it = ids.begin (), iEnd = ids.end (); it != iEnd; ++it) 
00304     {
00305         const CaloCellGeometry *cell = geom->getGeometry (*it);
00306         const CaloCellGeometry::CornersVec& corners = cell->getCorners ();
00307         assert (corners.size () == 8);
00308 
00309         uint32_t id = (*it).rawId ();
00310         
00311         IgCollectionItem icorner = geometry.create ();
00312         icorner[DET_ID] = static_cast<int>(id);
00313         
00314         if (det == DetId::Ecal)
00315         {
00316             icorner[FRONT_1] = IgV3d(static_cast<double>(corners[3].x()/100.0), static_cast<double>(corners[3].y()/100.0), static_cast<double>(corners[3].z()/100.0));
00317             icorner[FRONT_2] = IgV3d(static_cast<double>(corners[2].x()/100.0), static_cast<double>(corners[2].y()/100.0), static_cast<double>(corners[2].z()/100.0));
00318             icorner[FRONT_3] = IgV3d(static_cast<double>(corners[1].x()/100.0), static_cast<double>(corners[1].y()/100.0), static_cast<double>(corners[1].z()/100.0));
00319             icorner[FRONT_4] = IgV3d(static_cast<double>(corners[0].x()/100.0), static_cast<double>(corners[0].y()/100.0), static_cast<double>(corners[0].z()/100.0));
00320             
00321             icorner[BACK_1] = IgV3d(static_cast<double>(corners[7].x()/100.0), static_cast<double>(corners[7].y()/100.0), static_cast<double>(corners[7].z()/100.0));
00322             icorner[BACK_2] = IgV3d(static_cast<double>(corners[6].x()/100.0), static_cast<double>(corners[6].y()/100.0), static_cast<double>(corners[6].z()/100.0));
00323             icorner[BACK_3] = IgV3d(static_cast<double>(corners[5].x()/100.0), static_cast<double>(corners[5].y()/100.0), static_cast<double>(corners[5].z()/100.0));
00324             icorner[BACK_4] = IgV3d(static_cast<double>(corners[4].x()/100.0), static_cast<double>(corners[4].y()/100.0), static_cast<double>(corners[4].z()/100.0));   
00325         }
00326         else if (det == DetId::Hcal)
00327         {
00328             icorner[FRONT_1] = IgV3d(static_cast<double>(corners[0].x()/100.0), static_cast<double>(corners[0].y()/100.0), static_cast<double>(corners[0].z()/100.0));
00329             icorner[FRONT_2] = IgV3d(static_cast<double>(corners[1].x()/100.0), static_cast<double>(corners[1].y()/100.0), static_cast<double>(corners[1].z()/100.0));
00330             icorner[FRONT_3] = IgV3d(static_cast<double>(corners[2].x()/100.0), static_cast<double>(corners[2].y()/100.0), static_cast<double>(corners[2].z()/100.0));
00331             icorner[FRONT_4] = IgV3d(static_cast<double>(corners[3].x()/100.0), static_cast<double>(corners[3].y()/100.0), static_cast<double>(corners[3].z()/100.0));
00332         
00333             icorner[BACK_1] = IgV3d(static_cast<double>(corners[4].x()/100.0), static_cast<double>(corners[4].y()/100.0), static_cast<double>(corners[4].z()/100.0));
00334             icorner[BACK_2] = IgV3d(static_cast<double>(corners[5].x()/100.0), static_cast<double>(corners[5].y()/100.0), static_cast<double>(corners[5].z()/100.0));
00335             icorner[BACK_3] = IgV3d(static_cast<double>(corners[6].x()/100.0), static_cast<double>(corners[6].y()/100.0), static_cast<double>(corners[6].z()/100.0));
00336             icorner[BACK_4] = IgV3d(static_cast<double>(corners[7].x()/100.0), static_cast<double>(corners[7].y()/100.0), static_cast<double>(corners[7].z()/100.0));
00337         }
00338     }
00339 }

void VisEventSetup::buildCalo ( IgDataStorage storage  )  [private]

Definition at line 202 of file VisEventSetup.cc.

References build(), DetId::Ecal, EcalBarrel, EcalEndcap, EcalPreshower, DetId::Hcal, HcalBarrel, HcalEndcap, HcalForward, and HcalOuter.

Referenced by analyze().

00203 {
00204     build (storage, "EcalBarrel_V1", DetId::Ecal, EcalBarrel);
00205     build (storage, "EcalEndcap_V1", DetId::Ecal, EcalEndcap);
00206     build (storage, "EcalPreshower_V1", DetId::Ecal, EcalPreshower);
00207     build (storage, "HcalBarrel_V1", DetId::Hcal, HcalBarrel);
00208     build (storage, "HcalEndcap_V1", DetId::Hcal, HcalEndcap);
00209     build (storage, "HcalOuter_V1", DetId::Hcal, HcalOuter);
00210     build (storage, "HcalForward_V1", DetId::Hcal, HcalForward);
00211 }

void VisEventSetup::buildCSC ( IgDataStorage storage  )  [private]

Definition at line 214 of file VisEventSetup.cc.

References addCorners(), IgCollection::addProperty(), IgCollection::create(), cscGeom_, detId, end, CSCChamber::geographicalId(), IgDataStorage::getCollection(), it, and DetId::rawId().

Referenced by analyze().

00215 {
00216     IgCollection &geometry = storage->getCollection ("CSC_V1");
00217     IgProperty DET_ID  = geometry.addProperty("detid", int (0)); 
00218     IgProperty FRONT_1 = geometry.addProperty("front_1", IgV3d());
00219     IgProperty FRONT_2 = geometry.addProperty("front_2", IgV3d());
00220     IgProperty FRONT_3 = geometry.addProperty("front_3", IgV3d());
00221     IgProperty FRONT_4 = geometry.addProperty("front_4", IgV3d());
00222     IgProperty BACK_1  = geometry.addProperty("back_1",  IgV3d());
00223     IgProperty BACK_2  = geometry.addProperty("back_2",  IgV3d());
00224     IgProperty BACK_3  = geometry.addProperty("back_3",  IgV3d());
00225     IgProperty BACK_4  = geometry.addProperty("back_4",  IgV3d());
00226 
00227     std::vector<CSCChamber *> vc = cscGeom_->chambers ();
00228     
00229     for (std::vector<CSCChamber *>::const_iterator it = vc.begin (), end = vc.end (); 
00230          it != end; ++it)
00231     {
00232         const CSCChamber *cscChamber = *it;
00233         
00234         if (cscChamber)
00235         {
00236             DetId detId = cscChamber->geographicalId ();
00237             uint32_t id = detId.rawId ();
00238             
00239             IgCollectionItem icorner = geometry.create ();
00240             icorner[DET_ID] = static_cast<int>(id);
00241             addCorners (icorner, cscChamber);       
00242         }
00243     }    
00244 }

void VisEventSetup::buildDriftTubes ( IgDataStorage storage  )  [private]

Definition at line 148 of file VisEventSetup.cc.

References IgCollection::addProperty(), BoundSurface::bounds(), IgCollection::create(), dtGeom_, end, DTChamber::geographicalId(), IgDataStorage::getCollection(), DTChamber::id(), it, Bounds::length(), p, DetId::rawId(), GeomDet::surface(), Bounds::thickness(), Surface::toGlobal(), Bounds::width(), width, x, y, and z.

Referenced by analyze().

00149 {
00150     IgCollection &geometry = storage->getCollection ("DTs_V1"); // ("Geometry_V1");
00151     IgProperty DET_ID  = geometry.addProperty("detid", int (0)); 
00152     IgProperty FRONT_1 = geometry.addProperty("front_1", IgV3d());
00153     IgProperty FRONT_2 = geometry.addProperty("front_2", IgV3d());
00154     IgProperty FRONT_4 = geometry.addProperty("front_3", IgV3d());
00155     IgProperty FRONT_3 = geometry.addProperty("front_4", IgV3d());
00156     IgProperty BACK_1  = geometry.addProperty("back_1",  IgV3d());
00157     IgProperty BACK_2  = geometry.addProperty("back_2",  IgV3d());
00158     IgProperty BACK_4  = geometry.addProperty("back_3",  IgV3d());
00159     IgProperty BACK_3  = geometry.addProperty("back_4",  IgV3d());
00160 
00161     std::vector<DTChamber *> vc = dtGeom_->chambers ();
00162 
00163     for (std::vector<DTChamber *>::const_iterator it = vc.begin (), end = vc.end (); 
00164          it != end; ++it)
00165     {
00166         const DTChamber *chamber = *it;
00167         if (chamber)
00168         {
00169             DTChamberId chId = chamber->id ();
00170             uint32_t id = chamber->geographicalId ().rawId ();
00171 
00172             IgCollectionItem icorner = geometry.create ();
00173             icorner[DET_ID] = static_cast<int>(id);
00174 
00175             float length = chamber->surface().bounds().length();
00176             float width = chamber->surface().bounds().width();
00177             float thickness = chamber->surface().bounds().thickness();
00178                 
00179             GlobalPoint p[8];
00180             p[0] = chamber->surface().toGlobal(LocalPoint(width/2,length/2,thickness/2)); 
00181             p[1] = chamber->surface().toGlobal(LocalPoint(width/2,-length/2,thickness/2)); 
00182             p[2] = chamber->surface().toGlobal(LocalPoint(-width/2,length/2,thickness/2)); 
00183             p[3] = chamber->surface().toGlobal(LocalPoint(-width/2,-length/2,thickness/2)); 
00184             p[4] = chamber->surface().toGlobal(LocalPoint(width/2,length/2,-thickness/2)); 
00185             p[5] = chamber->surface().toGlobal(LocalPoint(width/2,-length/2,-thickness/2)); 
00186             p[6] = chamber->surface().toGlobal(LocalPoint(-width/2,length/2,-thickness/2)); 
00187             p[7] = chamber->surface().toGlobal(LocalPoint(-width/2,-length/2,-thickness/2));
00188 
00189             icorner[FRONT_1] = IgV3d(static_cast<double>(p[0].x()/100.0), static_cast<double>(p[0].y()/100.0), static_cast<double>(p[0].z()/100.0));
00190             icorner[FRONT_2] = IgV3d(static_cast<double>(p[1].x()/100.0), static_cast<double>(p[1].y()/100.0), static_cast<double>(p[1].z()/100.0));
00191             icorner[FRONT_3] = IgV3d(static_cast<double>(p[2].x()/100.0), static_cast<double>(p[2].y()/100.0), static_cast<double>(p[2].z()/100.0));
00192             icorner[FRONT_4] = IgV3d(static_cast<double>(p[3].x()/100.0), static_cast<double>(p[3].y()/100.0), static_cast<double>(p[3].z()/100.0));
00193             icorner[BACK_1]  = IgV3d(static_cast<double>(p[4].x()/100.0), static_cast<double>(p[4].y()/100.0), static_cast<double>(p[4].z()/100.0));
00194             icorner[BACK_2]  = IgV3d(static_cast<double>(p[5].x()/100.0), static_cast<double>(p[5].y()/100.0), static_cast<double>(p[5].z()/100.0));
00195             icorner[BACK_3]  = IgV3d(static_cast<double>(p[6].x()/100.0), static_cast<double>(p[6].y()/100.0), static_cast<double>(p[6].z()/100.0));
00196             icorner[BACK_4]  = IgV3d(static_cast<double>(p[7].x()/100.0), static_cast<double>(p[7].y()/100.0), static_cast<double>(p[7].z()/100.0));
00197         }
00198     }   
00199 }

void VisEventSetup::buildMagneticField ( IgDataStorage storage  )  [private]

Definition at line 282 of file VisEventSetup.cc.

00283 {
00284     // FIXME: IgCollection &geometry = storage->getCollection ("Geometry_V1");
00285 }

void VisEventSetup::buildRPC ( IgDataStorage storage  )  [private]

Definition at line 247 of file VisEventSetup.cc.

References addCorners(), IgCollection::addProperty(), IgCollection::create(), end, IgDataStorage::getCollection(), RPCRoll::id(), it, DetId::rawId(), and rpcGeom_.

Referenced by analyze().

00248 {
00249     IgCollection &geometry = storage->getCollection ("RPC_V1");
00250     IgProperty DET_ID  = geometry.addProperty("detid", int (0)); 
00251     IgProperty FRONT_1 = geometry.addProperty("front_1", IgV3d());
00252     IgProperty FRONT_2 = geometry.addProperty("front_2", IgV3d());
00253     IgProperty FRONT_3 = geometry.addProperty("front_3", IgV3d());
00254     IgProperty FRONT_4 = geometry.addProperty("front_4", IgV3d());
00255     IgProperty BACK_1  = geometry.addProperty("back_1",  IgV3d());
00256     IgProperty BACK_2  = geometry.addProperty("back_2",  IgV3d());
00257     IgProperty BACK_3  = geometry.addProperty("back_3",  IgV3d());
00258     IgProperty BACK_4  = geometry.addProperty("back_4",  IgV3d());
00259 
00260     std::vector<RPCRoll *> vc = rpcGeom_->rolls ();
00261 
00262     for (std::vector<RPCRoll *>::const_iterator it = vc.begin (), end = vc.end (); 
00263          it != end; ++it)
00264     {
00265         const RPCRoll *roll = *it;
00266         
00267         if (roll)
00268         {
00269             RPCDetId chId = roll->id ();
00270             if (chId)
00271             {
00272                 uint32_t id = (*it)->geographicalId ().rawId ();                
00273                 IgCollectionItem icorner = geometry.create ();
00274                 icorner[DET_ID] = static_cast<int>(id);
00275                 addCorners (icorner, *it);          
00276             }
00277         }
00278     }
00279 }

void VisEventSetup::buildTracker ( IgDataStorage storage  )  [private]

Definition at line 80 of file VisEventSetup.cc.

References IgCollection::addProperty(), b, b2, BoundSurface::bounds(), IgCollection::create(), end, IgDataStorage::getCollection(), it, Bounds::length(), p, TrapezoidalPlaneBounds::parameters(), python::trackProbabilityAnalysis_cff::parameters, GeomDet::surface(), Bounds::thickness(), Surface::toGlobal(), trackerGeom_, Bounds::width(), width, x, y, and z.

Referenced by analyze().

00081 {
00082     IgCollection &geometry = storage->getCollection ("Tracker_V1");
00083     IgProperty DET_ID  = geometry.addProperty ("detid", int (0)); 
00084     IgProperty FRONT_1 = geometry.addProperty ("front_1", IgV3d());
00085     IgProperty FRONT_2 = geometry.addProperty ("front_2", IgV3d());
00086     IgProperty FRONT_4 = geometry.addProperty ("front_3", IgV3d());
00087     IgProperty FRONT_3 = geometry.addProperty ("front_4", IgV3d());
00088     IgProperty BACK_1  = geometry.addProperty ("back_1",  IgV3d());
00089     IgProperty BACK_2  = geometry.addProperty ("back_2",  IgV3d());
00090     IgProperty BACK_4  = geometry.addProperty ("back_3",  IgV3d());
00091     IgProperty BACK_3  = geometry.addProperty ("back_4",  IgV3d());
00092 
00093     TrackerGeometry::DetUnitContainer::const_iterator it  = trackerGeom_->detUnits ().begin ();
00094     TrackerGeometry::DetUnitContainer::const_iterator end = trackerGeom_->detUnits ().end ();
00095     for (; it != end; ++it)
00096     {       
00097         uint32_t id = (*it)->geographicalId ().rawId ();
00098 
00099         IgCollectionItem icorner = geometry.create ();
00100         icorner[DET_ID] = static_cast<int> (id);
00101 
00102         const Bounds *b = &(((*it)->surface ()).bounds ());
00103         GlobalPoint p[8];
00104 
00105         const GeomDetUnit *det = trackerGeom_->idToDetUnit ((*it)->geographicalId ());      
00106         if (dynamic_cast<const TrapezoidalPlaneBounds *> (b))
00107         {
00108             // Trapezoidal
00109             const TrapezoidalPlaneBounds *b2 = dynamic_cast<const TrapezoidalPlaneBounds *> (b);
00110             std::vector< float > parameters = b2->parameters ();
00111             p[0] = det->surface().toGlobal(LocalPoint(parameters[0],-parameters[3],parameters[2])); 
00112             p[1] = det->surface().toGlobal(LocalPoint(-parameters[0],-parameters[3],parameters[2])); 
00113             p[2] = det->surface().toGlobal(LocalPoint(parameters[1],parameters[3],parameters[2])); 
00114             p[3] = det->surface().toGlobal(LocalPoint(-parameters[1],parameters[3],parameters[2])); 
00115             p[4] = det->surface().toGlobal(LocalPoint(parameters[0],-parameters[3],-parameters[2])); 
00116             p[5] = det->surface().toGlobal(LocalPoint(-parameters[0],-parameters[3],-parameters[2])); 
00117             p[6] = det->surface().toGlobal(LocalPoint(parameters[1],parameters[3],-parameters[2])); 
00118             p[7] = det->surface().toGlobal(LocalPoint(-parameters[1],parameters[3],-parameters[2]));
00119         }
00120         if (dynamic_cast<const RectangularPlaneBounds *> (b))
00121         {
00122             // Rectangular
00123             float length = det->surface().bounds().length();
00124             float width = det->surface().bounds().width();
00125             float thickness = det->surface().bounds().thickness();
00126 
00127             p[0] = det->surface().toGlobal(LocalPoint(width/2,length/2,thickness/2)); 
00128             p[1] = det->surface().toGlobal(LocalPoint(width/2,-length/2,thickness/2)); 
00129             p[2] = det->surface().toGlobal(LocalPoint(-width/2,length/2,thickness/2)); 
00130             p[3] = det->surface().toGlobal(LocalPoint(-width/2,-length/2,thickness/2)); 
00131             p[4] = det->surface().toGlobal(LocalPoint(width/2,length/2,-thickness/2)); 
00132             p[5] = det->surface().toGlobal(LocalPoint(width/2,-length/2,-thickness/2)); 
00133             p[6] = det->surface().toGlobal(LocalPoint(-width/2,length/2,-thickness/2)); 
00134             p[7] = det->surface().toGlobal(LocalPoint(-width/2,-length/2,-thickness/2));
00135         }
00136         icorner[FRONT_1] = IgV3d(static_cast<double>(p[0].x()/100.0), static_cast<double>(p[0].y()/100.0), static_cast<double>(p[0].z()/100.0));
00137         icorner[FRONT_2] = IgV3d(static_cast<double>(p[1].x()/100.0), static_cast<double>(p[1].y()/100.0), static_cast<double>(p[1].z()/100.0));
00138         icorner[FRONT_3] = IgV3d(static_cast<double>(p[2].x()/100.0), static_cast<double>(p[2].y()/100.0), static_cast<double>(p[2].z()/100.0));
00139         icorner[FRONT_4] = IgV3d(static_cast<double>(p[3].x()/100.0), static_cast<double>(p[3].y()/100.0), static_cast<double>(p[3].z()/100.0));
00140         icorner[BACK_1]  = IgV3d(static_cast<double>(p[4].x()/100.0), static_cast<double>(p[4].y()/100.0), static_cast<double>(p[4].z()/100.0));
00141         icorner[BACK_2]  = IgV3d(static_cast<double>(p[5].x()/100.0), static_cast<double>(p[5].y()/100.0), static_cast<double>(p[5].z()/100.0));
00142         icorner[BACK_3]  = IgV3d(static_cast<double>(p[6].x()/100.0), static_cast<double>(p[6].y()/100.0), static_cast<double>(p[6].z()/100.0));
00143         icorner[BACK_4]  = IgV3d(static_cast<double>(p[7].x()/100.0), static_cast<double>(p[7].y()/100.0), static_cast<double>(p[7].z()/100.0));
00144     }   
00145 }

const std::string VisEventSetup::otherSubDetName ( HcalOtherSubdetector  key  )  [private]

Definition at line 404 of file VisEventSetup.cc.

References HcalCalibration, and HcalOtherEmpty.

00405 { 
00406     std::map<HcalOtherSubdetector, std::string> type; 
00407     
00408     type [HcalOtherEmpty]  = "HcalOtherEmpty";
00409     type [HcalCalibration] = "HcalCalibration";
00410     
00411     return type [key]; 
00412 }

const std::string VisEventSetup::subDetName ( HcalSubdetector  key  )  [private]

Definition at line 388 of file VisEventSetup.cc.

References HcalBarrel, HcalEmpty, HcalEndcap, HcalForward, HcalOther, HcalOuter, and HcalTriggerTower.

00389 { 
00390     std::map<HcalSubdetector, std::string> type; 
00391     
00392     type [HcalEmpty]        = "HcalEmpty";
00393     type [HcalBarrel]       = "HcalBarrel";
00394     type [HcalEndcap]       = "HcalEndcap";
00395     type [HcalOuter]        = "HcalOuter";
00396     type [HcalForward]      = "HcalForward";
00397     type [HcalTriggerTower] = "HcalTriggerTower";
00398     type [HcalOther]        = "HcalOther";
00399     
00400     return type [key]; 
00401 }


Member Data Documentation

edm::ESHandle<CaloGeometry> VisEventSetup::caloGeom_ [private]

Definition at line 70 of file VisEventSetup.h.

Referenced by analyze().

bool VisEventSetup::caloGeomCanged_ [private]

Definition at line 64 of file VisEventSetup.h.

edm::ESHandle<CSCGeometry> VisEventSetup::cscGeom_ [private]

Definition at line 71 of file VisEventSetup.h.

Referenced by analyze(), and buildCSC().

edm::ESHandle<DTGeometry> VisEventSetup::dtGeom_ [private]

Definition at line 72 of file VisEventSetup.h.

Referenced by analyze(), and buildDriftTubes().

edm::ESHandle<MagneticField> VisEventSetup::field_ [private]

Definition at line 74 of file VisEventSetup.h.

Referenced by analyze().

bool VisEventSetup::fieldGeomCanged_ [private]

Definition at line 66 of file VisEventSetup.h.

edm::ESHandle<GlobalTrackingGeometry> VisEventSetup::globalTrackingGeom_ [private]

Definition at line 68 of file VisEventSetup.h.

Referenced by analyze().

bool VisEventSetup::globalTrackingGeomCanged_ [private]

Definition at line 62 of file VisEventSetup.h.

bool VisEventSetup::muonGeomCanged_ [private]

Definition at line 65 of file VisEventSetup.h.

edm::ESHandle<RPCGeometry> VisEventSetup::rpcGeom_ [private]

Definition at line 73 of file VisEventSetup.h.

Referenced by analyze(), and buildRPC().

edm::ESHandle<TrackerGeometry> VisEventSetup::trackerGeom_ [private]

Definition at line 69 of file VisEventSetup.h.

Referenced by analyze(), and buildTracker().

bool VisEventSetup::trackerGeomCanged_ [private]

Definition at line 63 of file VisEventSetup.h.

edm::ESWatcher<CaloGeometryRecord> VisEventSetup::watch_caloGeom_ [private]

Definition at line 78 of file VisEventSetup.h.

Referenced by analyze().

edm::ESWatcher<IdealMagneticFieldRecord> VisEventSetup::watch_field_ [private]

Definition at line 80 of file VisEventSetup.h.

edm::ESWatcher<GlobalTrackingGeometryRecord> VisEventSetup::watch_globalTrackingGeom_ [private]

Definition at line 76 of file VisEventSetup.h.

edm::ESWatcher<MuonGeometryRecord> VisEventSetup::watch_muonGeom_ [private]

Definition at line 79 of file VisEventSetup.h.

Referenced by analyze().

edm::ESWatcher<TrackerDigiGeometryRecord> VisEventSetup::watch_trackerGeom_ [private]

Definition at line 77 of file VisEventSetup.h.

Referenced by analyze().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:35:21 2009 for CMSSW by  doxygen 1.5.4