CMS 3D CMS Logo

TrackingMaterialProducer.cc File Reference

#include <iostream>
#include <vector>
#include <string>
#include <cassert>
#include <exception>
#include <boost/tuple/tuple.hpp>
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "SimG4Core/Notification/interface/BeginOfJob.h"
#include "SimG4Core/Notification/interface/BeginOfEvent.h"
#include "SimG4Core/Notification/interface/BeginOfTrack.h"
#include "SimG4Core/Notification/interface/EndOfTrack.h"
#include "RecoTracker/Record/interface/TrackerRecoGeometryRecord.h"
#include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h"
#include "DataFormats/GeometryVector/interface/GlobalPoint.h"
#include "G4Step.hh"
#include "G4Track.hh"
#include "G4VSolid.hh"
#include "G4LogicalVolumeStore.hh"
#include "G4TouchableHistory.hh"
#include "G4VPhysicalVolume.hh"
#include "G4AffineTransform.hh"
#include "TrackingMaterialProducer.h"
#include "SimG4Core/Watcher/interface/SimWatcherFactory.h"
#include "FWCore/Framework/interface/MakerMacros.h"

Go to the source code of this file.

Functions

 DEFINE_SIMWATCHER (TrackingMaterialProducer)
boost::tuple< const
G4VPhysicalVolume *, int
GetSensitiveVolume (const G4VTouchable *touchable)
static const G4AffineTransform & GetTransform (const G4TouchableHistory *touchable, int depth)
static const G4LogicalVolume * GetVolume (const std::string &name)


Function Documentation

DEFINE_SIMWATCHER ( TrackingMaterialProducer   ) 

boost::tuple<const G4VPhysicalVolume*, int> GetSensitiveVolume ( const G4VTouchable *  touchable  ) 

Definition at line 60 of file TrackingMaterialProducer.cc.

References level.

Referenced by TrackingMaterialProducer::update().

00061 {
00062   int depth = touchable->GetHistoryDepth();
00063   for (int level = 0; level < depth; ++level) {      // 0 is self
00064     const G4VPhysicalVolume* volume = touchable->GetVolume(level);
00065     if (volume->GetLogicalVolume()->GetSensitiveDetector() != 0) {
00066       return boost::make_tuple(volume, level);
00067     }
00068   }
00069   return boost::tuple<const G4VPhysicalVolume*, int>(0, 0);
00070 }

static const G4AffineTransform& GetTransform ( const G4TouchableHistory *  touchable,
int  depth 
) [inline, static]

Definition at line 49 of file TrackingMaterialProducer.cc.

Referenced by TrackingMaterialProducer::update().

00050 {
00051   return touchable->GetHistory()->GetTransform( touchable->GetHistory()->GetDepth() - depth );
00052 }

static const G4LogicalVolume* GetVolume ( const std::string &  name  )  [static]

Definition at line 36 of file TrackingMaterialProducer.cc.

Referenced by TrackingMaterialProducer::update().

00036                                                         {
00037   const G4LogicalVolumeStore* lvs = G4LogicalVolumeStore::GetInstance();
00038 
00039   for (G4LogicalVolumeStore::const_iterator volume = lvs->begin(); volume != lvs->end(); ++volume) {
00040     if ((const std::string&) (*volume)->GetName() == name)
00041       return (*volume);
00042   }
00043 
00044   return 0;
00045 }


Generated on Tue Jun 9 17:55:51 2009 for CMSSW by  doxygen 1.5.4