CMS 3D CMS Logo

TrackerHitProducer Class Reference

#include <Validation/TrackerHits/interface/TrackerHitProducer.h>

Inheritance diagram for TrackerHitProducer:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Types

typedef std::vector< float > FloatVector
typedef std::vector< intIntegerVector

Public Member Functions

virtual void beginJob (const edm::EventSetup &)
virtual void endJob ()
virtual void produce (edm::Event &, const edm::EventSetup &)
 TrackerHitProducer (const edm::ParameterSet &)
virtual ~TrackerHitProducer ()

Private Member Functions

void clear ()
void fillG4MC (edm::Event &)
void fillTrk (edm::Event &, const edm::EventSetup &)
void storeG4MC (PTrackerSimHit &)
void storeTrk (PTrackerSimHit &)

Private Attributes

edm::ParameterSet config_
unsigned int count
std::string fName
FloatVector G4TrkE
FloatVector G4TrkEta
FloatVector G4TrkPhi
FloatVector G4TrkPt
FloatVector G4VtxX
FloatVector G4VtxY
FloatVector G4VtxZ
bool getAllProvenances
FloatVector HitsDuID
FloatVector HitsEloss
FloatVector HitsEnPx
FloatVector HitsEnPy
FloatVector HitsEnPz
FloatVector HitsExPx
FloatVector HitsExPy
FloatVector HitsExPz
FloatVector HitsLdPhi
FloatVector HitsLdTheta
FloatVector HitsLdX
FloatVector HitsLdY
FloatVector HitsLdZ
FloatVector HitsLpX
FloatVector HitsLpY
FloatVector HitsLpZ
FloatVector HitsP
FloatVector HitsParT
FloatVector HitsProT
IntegerVector HitsSysID
FloatVector HitsTkID
FloatVector HitsToF
std::string label
int nRawGenPart
bool printProvenanceInfo
edm::InputTag PxlBrlHighSrc_
edm::InputTag PxlBrlLowSrc_
edm::InputTag PxlFwdHighSrc_
edm::InputTag PxlFwdLowSrc_
edm::InputTag SiTECHighSrc_
edm::InputTag SiTECLowSrc_
edm::InputTag SiTIBHighSrc_
edm::InputTag SiTIBLowSrc_
edm::InputTag SiTIDHighSrc_
edm::InputTag SiTIDLowSrc_
edm::InputTag SiTOBHighSrc_
edm::InputTag SiTOBLowSrc_
int verbosity


Detailed Description

Definition at line 51 of file TrackerHitProducer.h.


Member Typedef Documentation

typedef std::vector<float> TrackerHitProducer::FloatVector

Definition at line 56 of file TrackerHitProducer.h.

typedef std::vector<int> TrackerHitProducer::IntegerVector

Definition at line 57 of file TrackerHitProducer.h.


Constructor & Destructor Documentation

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

Definition at line 4 of file TrackerHitProducer.cc.

References fName, getAllProvenances, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), edm::InputTag::instance(), label, edm::InputTag::label(), printProvenanceInfo, PxlBrlHighSrc_, PxlBrlLowSrc_, PxlFwdHighSrc_, PxlFwdLowSrc_, SiTECHighSrc_, SiTECLowSrc_, SiTIBHighSrc_, SiTIBLowSrc_, SiTIDHighSrc_, SiTIDLowSrc_, SiTOBHighSrc_, SiTOBLowSrc_, and verbosity.

00004                                                                    :
00005   fName(""), verbosity(0), label(""), getAllProvenances(false),
00006   printProvenanceInfo(false), nRawGenPart(0), config_(iPSet), count(0)
00007 {
00008   // get information from parameter set
00009   fName = iPSet.getUntrackedParameter<std::string>("Name");
00010   verbosity = iPSet.getUntrackedParameter<int>("Verbosity");
00011   label = iPSet.getParameter<std::string>("Label");
00012   edm::ParameterSet m_Prov =
00013     iPSet.getParameter<edm::ParameterSet>("ProvenanceLookup");
00014   getAllProvenances = 
00015     m_Prov.getUntrackedParameter<bool>("GetAllProvenances");
00016   printProvenanceInfo = 
00017     m_Prov.getUntrackedParameter<bool>("PrintProvenanceInfo");
00018 
00019   //get Labels to use to extract information
00020   PxlBrlLowSrc_ = iPSet.getParameter<edm::InputTag>("PxlBrlLowSrc");
00021   PxlBrlHighSrc_ = iPSet.getParameter<edm::InputTag>("PxlBrlHighSrc");
00022   PxlFwdLowSrc_ = iPSet.getParameter<edm::InputTag>("PxlFwdLowSrc");
00023   PxlFwdHighSrc_ = iPSet.getParameter<edm::InputTag>("PxlFwdHighSrc");
00024 
00025   SiTIBLowSrc_ = iPSet.getParameter<edm::InputTag>("SiTIBLowSrc");
00026   SiTIBHighSrc_ = iPSet.getParameter<edm::InputTag>("SiTIBHighSrc");
00027   SiTOBLowSrc_ = iPSet.getParameter<edm::InputTag>("SiTOBLowSrc");
00028   SiTOBHighSrc_ = iPSet.getParameter<edm::InputTag>("SiTOBHighSrc");
00029   SiTIDLowSrc_ = iPSet.getParameter<edm::InputTag>("SiTIDLowSrc");
00030   SiTIDHighSrc_ = iPSet.getParameter<edm::InputTag>("SiTIDHighSrc");
00031   SiTECLowSrc_ = iPSet.getParameter<edm::InputTag>("SiTECLowSrc");
00032   SiTECHighSrc_ = iPSet.getParameter<edm::InputTag>("SiTECHighSrc");
00033 
00034   // use value of first digit to determine default output level (inclusive)
00035   // 0 is none, 1 is basic, 2 is fill output, 3 is gather output
00036   verbosity %= 10;
00037 
00038   // create persistent object
00039   produces<PTrackerSimHit>(label);
00040 
00041   // print out Parameter Set information being used
00042   if (verbosity > 0) {
00043     edm::LogInfo ("TrackerHitProducer::TrackerHitProducer") 
00044       << "\n===============================\n"
00045       << "Initialized as EDProducer with parameter values:\n"
00046       << "    Name      =" << fName << "\n"
00047       << "    Verbosity =" << verbosity << "\n"
00048       << "    Label     =" << label << "\n"
00049       << "    GetProv   =" << getAllProvenances << "\n"
00050       << "    PrintProv =" << printProvenanceInfo << "\n"
00051       << "    PxlBrlLowSrc  = " << PxlBrlLowSrc_.label() 
00052       << ":" << PxlBrlLowSrc_.instance() << "\n"
00053       << "    PxlBrlHighSrc = " << PxlBrlHighSrc_.label() 
00054       << ":" << PxlBrlHighSrc_.instance() << "\n"
00055       << "    PxlFwdLowSrc  = " << PxlFwdLowSrc_.label() 
00056       << ":" << PxlBrlLowSrc_.instance() << "\n"
00057       << "    PxlFwdHighSrc = " << PxlFwdHighSrc_.label() 
00058       << ":" << PxlBrlHighSrc_.instance() << "\n"
00059       << "    SiTIBLowSrc   = " << SiTIBLowSrc_.label() 
00060       << ":" << SiTIBLowSrc_.instance() << "\n"
00061       << "    SiTIBHighSrc  = " << SiTIBHighSrc_.label() 
00062       << ":" << SiTIBHighSrc_.instance() << "\n"
00063       << "    SiTOBLowSrc   = " << SiTOBLowSrc_.label() 
00064       << ":" << SiTOBLowSrc_.instance() << "\n"
00065       << "    SiTOBHighSrc  = " << SiTOBHighSrc_.label() 
00066       << ":" << SiTOBHighSrc_.instance() << "\n"
00067       << "    SiTIDLowSrc   = " << SiTIDLowSrc_.label() 
00068       << ":" << SiTIDLowSrc_.instance() << "\n"
00069       << "    SiTIDHighSrc  = " << SiTIDHighSrc_.label() 
00070       << ":" << SiTIDHighSrc_.instance() << "\n"
00071       << "    SiTECLowSrc   = " << SiTECLowSrc_.label() 
00072       << ":" << SiTECLowSrc_.instance() << "\n"
00073       << "    SiTECHighSrc  = " << SiTECHighSrc_.label() 
00074       << ":" << SiTECHighSrc_.instance() << "\n"
00075       << "===============================\n";  }
00076 }

TrackerHitProducer::~TrackerHitProducer (  )  [virtual]

Definition at line 78 of file TrackerHitProducer.cc.

00079 {
00080 }


Member Function Documentation

void TrackerHitProducer::beginJob ( const edm::EventSetup iSetup  )  [virtual]

Reimplemented from edm::EDProducer.

Definition at line 82 of file TrackerHitProducer.cc.

References clear(), and verbosity.

00083 {
00084   if (verbosity > 0)
00085     edm::LogInfo ("TrackerHitProducer::beginJob") 
00086       << "Starting the job...";
00087   clear();
00088   return;
00089 }

void TrackerHitProducer::clear ( void   )  [private]

Definition at line 1063 of file TrackerHitProducer.cc.

References G4TrkE, G4TrkEta, G4TrkPhi, G4TrkPt, G4VtxX, G4VtxY, G4VtxZ, HitsDuID, HitsEloss, HitsEnPx, HitsEnPy, HitsEnPz, HitsExPx, HitsExPy, HitsExPz, HitsLdPhi, HitsLdTheta, HitsLdX, HitsLdY, HitsLdZ, HitsLpX, HitsLpY, HitsLpZ, HitsP, HitsParT, HitsProT, HitsSysID, HitsTkID, HitsToF, nRawGenPart, and verbosity.

Referenced by beginJob(), and produce().

01064 {
01065   if (verbosity > 0)
01066     edm::LogInfo("GlobalValProducer::clear")
01067       << "Clearing event holders"; 
01068 
01069   // reset G4MC info
01070   nRawGenPart = 0;
01071   G4VtxX.clear();
01072   G4VtxY.clear();
01073   G4VtxZ.clear();
01074   G4TrkPt.clear();
01075   G4TrkE.clear();
01076   G4TrkEta.clear();
01077   G4TrkPhi.clear();
01078   // reset tracker info
01079   HitsSysID.clear();
01080   HitsDuID.clear();
01081   HitsTkID.clear(); 
01082   HitsProT.clear(); 
01083   HitsParT.clear(); 
01084   HitsP.clear();
01085   HitsLpX.clear(); 
01086   HitsLpY.clear(); 
01087   HitsLpZ.clear(); 
01088   HitsLdX.clear(); 
01089   HitsLdY.clear(); 
01090   HitsLdZ.clear(); 
01091   HitsLdTheta.clear(); 
01092   HitsLdPhi.clear();
01093   HitsExPx.clear(); 
01094   HitsExPy.clear(); 
01095   HitsExPz.clear();
01096   HitsEnPx.clear(); 
01097   HitsEnPy.clear(); 
01098   HitsEnPz.clear();
01099   HitsEloss.clear(); 
01100   HitsToF.clear();
01101 
01102   return;
01103 }

void TrackerHitProducer::endJob ( void   )  [virtual]

Reimplemented from edm::EDProducer.

Definition at line 91 of file TrackerHitProducer.cc.

References count, and verbosity.

00092 {
00093   if (verbosity > 0)
00094     edm::LogInfo ("TrackerHitProducer::endJob") 
00095       << "Terminating having processed" << count << "events.";
00096   return;
00097 }

void TrackerHitProducer::fillG4MC ( edm::Event iEvent  )  [private]

Definition at line 182 of file TrackerHitProducer.cc.

References config_, G4TrkE, G4TrkEta, G4TrkPhi, G4TrkPt, G4VtxX, G4VtxY, G4VtxZ, edm::Event::getByLabel(), edm::Event::getByType(), edm::ParameterSet::getUntrackedParameter(), i, edm::Handle< T >::isValid(), funct::log(), nRawGenPart, funct::sqrt(), funct::tan(), theta, and verbosity.

Referenced by produce().

00183 {
00184  
00185   TString eventout;
00186   if (verbosity > 0)
00187     eventout = "\nGathering info:";
00188 
00190   // get MC information
00192   edm::Handle<edm::HepMCProduct> HepMCEvt;
00193   //iEvent.getByType(HepMCEvt);
00194   static std::string HepMClabel = config_.getUntrackedParameter<std::string>("HepMCProductLabel","source");
00195   static std::string HepMCinstance = config_.getUntrackedParameter<std::string>("HepMCInputInstance","");
00196   iEvent.getByLabel(HepMClabel, HepMCinstance ,HepMCEvt);
00197   if (!HepMCEvt.isValid()) {
00198     edm::LogError("TrackerHitProducer::fillG4MC")
00199       << "Unable to find HepMCProduct in event!";
00200     return;
00201   }
00202   const HepMC::GenEvent* MCEvt = HepMCEvt->GetEvent();
00203   nRawGenPart = MCEvt->particles_size();
00204 
00205   if (verbosity > 1) {
00206     eventout += "\n          Number of Raw Particles collected:         ";
00207     eventout += nRawGenPart;
00208   }  
00209 
00211   // get G4Vertex information
00213   edm::Handle<edm::SimVertexContainer> G4VtxContainer;
00214   iEvent.getByType(G4VtxContainer);
00215   if (!G4VtxContainer.isValid()) {
00216     edm::LogError("TrackerHitProducer::fillG4MC")
00217       << "Unable to find SimVertex in event!";
00218     return;
00219   }
00220   int i = 0;
00221   edm::SimVertexContainer::const_iterator itVtx;
00222   for (itVtx = G4VtxContainer->begin(); itVtx != G4VtxContainer->end(); 
00223        ++itVtx) {
00224     
00225     ++i;
00226 
00227     const HepLorentzVector& G4Vtx = HepLorentzVector(itVtx->position().x(),
00228                                                      itVtx->position().y(),
00229                                                      itVtx->position().z(),  
00230                                                      itVtx->position().e());
00231     G4VtxX.push_back(G4Vtx[0]/micrometer); //cm from code -> micrometer *10000
00232     G4VtxY.push_back(G4Vtx[1]/micrometer); //cm from code -> micrometer *10000
00233     G4VtxZ.push_back(G4Vtx[2]/millimeter); //cm from code -> millimeter *10
00234   }
00235 
00236   if (verbosity > 1) {
00237     eventout += "\n          Number of G4Vertices collected:            ";
00238     eventout += i;
00239   }  
00240 
00242   // get G4Track information
00244   edm::Handle<edm::SimTrackContainer> G4TrkContainer;
00245   iEvent.getByType(G4TrkContainer);
00246   if (!G4TrkContainer.isValid()) {
00247     edm::LogError("TrackerHitProducer::fillG4MC")
00248       << "Unable to find SimTrack in event!";
00249     return;
00250   }
00251   i = 0;
00252   edm::SimTrackContainer::const_iterator itTrk;
00253   for (itTrk = G4TrkContainer->begin(); itTrk != G4TrkContainer->end(); 
00254        ++itTrk) {
00255 
00256     ++i;
00257 
00258     double etaInit =0, phiInit =0, pInit =0;
00259     const HepLorentzVector& G4Trk = HepLorentzVector(itTrk->momentum().x(),
00260                                                      itTrk->momentum().y(),
00261                                                      itTrk->momentum().z(),
00262                                                      itTrk->momentum().e());
00263     pInit =sqrt(G4Trk[0]*G4Trk[0]+G4Trk[1]*G4Trk[1]+G4Trk[2]*G4Trk[2]);
00264       if ( pInit == 0) 
00265           edm::LogError("TrackerHitProducer::fillG4MC") 
00266           << "TrackerTest::INFO: Primary has p = 0 ";
00267       else {
00268           double costheta  = G4Trk[2]/pInit;
00269               double theta = acos(TMath::Min(TMath::Max(costheta, -1.),1.));
00270           etaInit = -log(tan(theta/2));
00271           
00272           if ( G4Trk[0] != 0 || G4Trk[1] != 0) 
00273               phiInit = atan2(G4Trk[1],G4Trk[0]);
00274       }
00275     G4TrkPt.push_back(sqrt(G4Trk[0]*G4Trk[0]+G4Trk[1]*G4Trk[1])); //GeV
00276     G4TrkE.push_back(G4Trk[3]);                                   //GeV
00277     G4TrkEta.push_back(etaInit);                                   
00278     G4TrkPhi.push_back(phiInit);                                   
00279   } 
00280 
00281   if (verbosity > 1) {
00282     eventout += "\n          Number of G4Tracks collected:              ";
00283     eventout += i;
00284   }  
00285 
00286   if (verbosity > 0)
00287     edm::LogInfo("TrackerHitProducer::fillG4MC") << eventout;
00288 
00289   return;
00290 }

void TrackerHitProducer::fillTrk ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [private]

Definition at line 332 of file TrackerHitProducer.cc.

References edm::Event::getByLabel(), HitsDuID, HitsEloss, HitsEnPx, HitsEnPy, HitsEnPz, HitsExPx, HitsExPy, HitsExPz, HitsLdPhi, HitsLdTheta, HitsLdX, HitsLdY, HitsLdZ, HitsLpX, HitsLpY, HitsLpZ, HitsP, HitsParT, HitsProT, HitsSysID, HitsTkID, HitsToF, edm::Handle< T >::isValid(), j, PxlBrlHighSrc_, PxlBrlLowSrc_, PxlFwdHighSrc_, PxlFwdLowSrc_, SiTECHighSrc_, SiTECLowSrc_, SiTIBHighSrc_, SiTIBLowSrc_, SiTIDHighSrc_, SiTIDLowSrc_, SiTOBHighSrc_, SiTOBLowSrc_, and verbosity.

Referenced by produce().

00334 {
00335   TString eventout;
00336   int sysID = 0;
00337   if (verbosity > 0)
00338     eventout = "\nGathering info:";  
00340   // iterator to access containers
00341   edm::PSimHitContainer::const_iterator itHit;
00342 //  edm::PSimHitContainer theHits;
00343 
00345   // get Pixel Barrel information
00347   
00348   // extract low container
00349   edm::Handle<edm::PSimHitContainer> PxlBrlLowContainer;
00350   iEvent.getByLabel(PxlBrlLowSrc_,PxlBrlLowContainer);
00351 //  iEvent.getByLabel("g4SimHits","TrackerHitsPixelBarrelLowTof",PxlBrlLowContainer);
00352   if (!PxlBrlLowContainer.isValid()) {
00353     edm::LogError("TrackerHitProducer::fillTrk")
00354       << "Unable to find TrackerHitsPixelBarrelLowTof in event!";
00355     return;
00356   }
00357     
00358   // place both containers into new container
00359 //  theHits.insert(theHits.end(),PxlBrlLowContainer->begin(),
00360 //             PxlBrlLowContainer->end());
00361                
00362   sysID = 100;   // TrackerHitsPixelBarrelLowTof
00363   int j = 0;               
00364   for (itHit = PxlBrlLowContainer->begin(); itHit != PxlBrlLowContainer->end(); ++itHit) {
00365 //  for (itHit = theHits.begin(); itHit != theHits.end(); ++itHit) {
00366 
00367       // gather necessary information
00368       ++j;
00369       HitsSysID.push_back(sysID);
00370       HitsDuID.push_back(itHit->detUnitId());
00371       HitsTkID.push_back(itHit->trackId());
00372       HitsProT.push_back(itHit->processType());
00373       HitsParT.push_back(itHit->particleType());
00374       HitsP.push_back(itHit->pabs());
00375       
00376       HitsLpX.push_back(itHit->localPosition().x());
00377       HitsLpY.push_back(itHit->localPosition().y());
00378       HitsLpZ.push_back(itHit->localPosition().z());
00379 
00380       HitsLdX.push_back(itHit->localDirection().x());
00381       HitsLdY.push_back(itHit->localDirection().y());
00382       HitsLdZ.push_back(itHit->localDirection().z());
00383       HitsLdTheta.push_back(itHit->localDirection().theta());
00384       HitsLdPhi.push_back(itHit->localDirection().phi());
00385 
00386       HitsExPx.push_back(itHit->exitPoint().x());
00387       HitsExPy.push_back(itHit->exitPoint().y());
00388       HitsExPz.push_back(itHit->exitPoint().z());
00389 
00390       HitsEnPx.push_back(itHit->entryPoint().x());
00391       HitsEnPy.push_back(itHit->entryPoint().y());
00392       HitsEnPz.push_back(itHit->entryPoint().z());
00393 
00394       HitsEloss.push_back(itHit->energyLoss());
00395       HitsToF.push_back(itHit->tof());
00396       
00397   } // end loop through PxlBrl Hits
00398 
00399   if (verbosity > 1) {
00400     eventout += "\n          Number of Pixel Barrel Low TOF Hits collected:     ";
00401     eventout += j;
00402   }  
00403   
00404 //  theHits.clear();
00405     
00406   // extract high container
00407   edm::Handle<edm::PSimHitContainer> PxlBrlHighContainer;
00408 //  iEvent.getByLabel("g4SimHits","TrackerHitsPixelBarrelHighTof",PxlBrlHighContainer);
00409   iEvent.getByLabel(PxlBrlHighSrc_,PxlBrlHighContainer);
00410   if (!PxlBrlHighContainer.isValid()) {
00411     edm::LogError("TrackerHitProducer::fillTrk")
00412       << "Unable to find TrackerHitsPixelBarrelHighTof in event!";
00413     return;
00414   }
00415   
00416   
00417   sysID = 200;   // TrackerHitsPixelBarrelHighTof
00418   j = 0;               
00419   for (itHit = PxlBrlHighContainer->begin(); itHit != PxlBrlHighContainer->end(); ++itHit) {
00420 
00421       // gather necessary information
00422       ++j;
00423       HitsSysID.push_back(sysID);
00424       HitsDuID.push_back(itHit->detUnitId());
00425       HitsTkID.push_back(itHit->trackId());
00426       HitsProT.push_back(itHit->processType());
00427       HitsParT.push_back(itHit->particleType());
00428       HitsP.push_back(itHit->pabs());
00429       
00430       HitsLpX.push_back(itHit->localPosition().x());
00431       HitsLpY.push_back(itHit->localPosition().y());
00432       HitsLpZ.push_back(itHit->localPosition().z());
00433 
00434       HitsLdX.push_back(itHit->localDirection().x());
00435       HitsLdY.push_back(itHit->localDirection().y());
00436       HitsLdZ.push_back(itHit->localDirection().z());
00437       HitsLdTheta.push_back(itHit->localDirection().theta());
00438       HitsLdPhi.push_back(itHit->localDirection().phi());
00439 
00440       HitsExPx.push_back(itHit->exitPoint().x());
00441       HitsExPy.push_back(itHit->exitPoint().y());
00442       HitsExPz.push_back(itHit->exitPoint().z());
00443 
00444       HitsEnPx.push_back(itHit->entryPoint().x());
00445       HitsEnPy.push_back(itHit->entryPoint().y());
00446       HitsEnPz.push_back(itHit->entryPoint().z());
00447 
00448       HitsEloss.push_back(itHit->energyLoss());
00449       HitsToF.push_back(itHit->tof());
00450       
00451   } // end loop through PxlBrl Hits
00452 
00453   if (verbosity > 1) {
00454     eventout += "\n          Number of Pixel Barrel High TOF Hits collected:     ";
00455     eventout += j;
00456   }  
00457 
00458   
00460   // get Pixel Forward information
00462   // extract low container
00463   edm::Handle<edm::PSimHitContainer> PxlFwdLowContainer;
00464 //  iEvent.getByLabel("g4SimHits","TrackerHitsPixelEndcapLowTof",PxlFwdLowContainer);
00465   iEvent.getByLabel(PxlFwdLowSrc_,PxlFwdLowContainer);
00466   if (!PxlFwdLowContainer.isValid()) {
00467     edm::LogError("TrackerHitProducer::fillTrk")
00468       << "Unable to find TrackerHitsPixelEndcapLowTof in event!";
00469     return;
00470   }
00471   
00472   sysID = 300;   // TrackerHitsPixelEndcapLowTof
00473   j = 0;               
00474   for (itHit = PxlFwdLowContainer->begin(); itHit != PxlFwdLowContainer->end(); ++itHit) {
00475 
00476       // gather necessary information
00477       ++j;
00478       HitsSysID.push_back(sysID);
00479       HitsDuID.push_back(itHit->detUnitId());
00480       HitsTkID.push_back(itHit->trackId());
00481       HitsProT.push_back(itHit->processType());
00482       HitsParT.push_back(itHit->particleType());
00483       HitsP.push_back(itHit->pabs());
00484       
00485       HitsLpX.push_back(itHit->localPosition().x());
00486       HitsLpY.push_back(itHit->localPosition().y());
00487       HitsLpZ.push_back(itHit->localPosition().z());
00488 
00489       HitsLdX.push_back(itHit->localDirection().x());
00490       HitsLdY.push_back(itHit->localDirection().y());
00491       HitsLdZ.push_back(itHit->localDirection().z());
00492       HitsLdTheta.push_back(itHit->localDirection().theta());
00493       HitsLdPhi.push_back(itHit->localDirection().phi());
00494 
00495       HitsExPx.push_back(itHit->exitPoint().x());
00496       HitsExPy.push_back(itHit->exitPoint().y());
00497       HitsExPz.push_back(itHit->exitPoint().z());
00498 
00499       HitsEnPx.push_back(itHit->entryPoint().x());
00500       HitsEnPy.push_back(itHit->entryPoint().y());
00501       HitsEnPz.push_back(itHit->entryPoint().z());
00502 
00503       HitsEloss.push_back(itHit->energyLoss());
00504       HitsToF.push_back(itHit->tof());
00505       
00506   } // end loop through PxlFwd Hits
00507 
00508   if (verbosity > 1) {
00509     eventout += "\n          Number of Pixel Forward Low TOF Hits collected:     ";
00510     eventout += j;
00511   }  
00512   
00513   
00514   // extract high container
00515   edm::Handle<edm::PSimHitContainer> PxlFwdHighContainer;
00516 //  iEvent.getByLabel("g4SimHits","TrackerHitsPixelEndcapHighTof",PxlFwdHighContainer);
00517   iEvent.getByLabel(PxlFwdHighSrc_,PxlFwdHighContainer);
00518   if (!PxlFwdHighContainer.isValid()) {
00519     edm::LogError("TrackerHitProducer::fillTrk")
00520       << "Unable to find TrackerHitsPixelEndcapHighTof in event!";
00521     return;
00522   }
00523   
00524   sysID = 400;   // TrackerHitsPixelEndcapHighTof
00525   j = 0;               
00526   for (itHit = PxlFwdHighContainer->begin(); itHit != PxlFwdHighContainer->end(); ++itHit) {
00527 
00528       // gather necessary information
00529       ++j;
00530       HitsSysID.push_back(sysID);
00531       HitsDuID.push_back(itHit->detUnitId());
00532       HitsTkID.push_back(itHit->trackId());
00533       HitsProT.push_back(itHit->processType());
00534       HitsParT.push_back(itHit->particleType());
00535       HitsP.push_back(itHit->pabs());
00536       
00537       HitsLpX.push_back(itHit->localPosition().x());
00538       HitsLpY.push_back(itHit->localPosition().y());
00539       HitsLpZ.push_back(itHit->localPosition().z());
00540 
00541       HitsLdX.push_back(itHit->localDirection().x());
00542       HitsLdY.push_back(itHit->localDirection().y());
00543       HitsLdZ.push_back(itHit->localDirection().z());
00544       HitsLdTheta.push_back(itHit->localDirection().theta());
00545       HitsLdPhi.push_back(itHit->localDirection().phi());
00546 
00547       HitsExPx.push_back(itHit->exitPoint().x());
00548       HitsExPy.push_back(itHit->exitPoint().y());
00549       HitsExPz.push_back(itHit->exitPoint().z());
00550 
00551       HitsEnPx.push_back(itHit->entryPoint().x());
00552       HitsEnPy.push_back(itHit->entryPoint().y());
00553       HitsEnPz.push_back(itHit->entryPoint().z());
00554 
00555       HitsEloss.push_back(itHit->energyLoss());
00556       HitsToF.push_back(itHit->tof());
00557       
00558   } // end loop through PxlFwd Hits
00559 
00560   if (verbosity > 1) {
00561     eventout += "\n          Number of Pixel Forward High TOF Hits collected:     ";
00562     eventout += j;
00563   }  
00564           
00565  
00567   // get Silicon TIB information
00569   // extract TIB low container
00570   edm::Handle<edm::PSimHitContainer> SiTIBLowContainer;
00571 //  iEvent.getByLabel("g4SimHits","TrackerHitsTIBLowTof",SiTIBLowContainer);
00572   iEvent.getByLabel(SiTIBLowSrc_,SiTIBLowContainer);
00573   if (!SiTIBLowContainer.isValid()) {
00574     edm::LogError("TrackerHitProducer::fillTrk")
00575       << "Unable to find TrackerHitsTIBLowTof in event!";
00576     return;
00577   }
00578   
00579   sysID = 10;   // TrackerHitsTIBLowTof
00580   j = 0;               
00581   for (itHit = SiTIBLowContainer->begin(); itHit != SiTIBLowContainer->end(); ++itHit) {
00582 
00583       // gather necessary information
00584       ++j;
00585       HitsSysID.push_back(sysID);
00586       HitsDuID.push_back(itHit->detUnitId());
00587       HitsTkID.push_back(itHit->trackId());
00588       HitsProT.push_back(itHit->processType());
00589       HitsParT.push_back(itHit->particleType());
00590       HitsP.push_back(itHit->pabs());
00591       
00592       HitsLpX.push_back(itHit->localPosition().x());
00593       HitsLpY.push_back(itHit->localPosition().y());
00594       HitsLpZ.push_back(itHit->localPosition().z());
00595 
00596       HitsLdX.push_back(itHit->localDirection().x());
00597       HitsLdY.push_back(itHit->localDirection().y());
00598       HitsLdZ.push_back(itHit->localDirection().z());
00599       HitsLdTheta.push_back(itHit->localDirection().theta());
00600       HitsLdPhi.push_back(itHit->localDirection().phi());
00601 
00602       HitsExPx.push_back(itHit->exitPoint().x());
00603       HitsExPy.push_back(itHit->exitPoint().y());
00604       HitsExPz.push_back(itHit->exitPoint().z());
00605 
00606       HitsEnPx.push_back(itHit->entryPoint().x());
00607       HitsEnPy.push_back(itHit->entryPoint().y());
00608       HitsEnPz.push_back(itHit->entryPoint().z());
00609 
00610       HitsEloss.push_back(itHit->energyLoss());
00611       HitsToF.push_back(itHit->tof());
00612       
00613   } // end loop through PxlFwd Hits
00614 
00615   if (verbosity > 1) {
00616     eventout += "\n          Number of TIB low TOF Hits collected:     ";
00617     eventout += j;
00618   }  
00619                  
00620   
00621   // extract TIB high container
00622   edm::Handle<edm::PSimHitContainer> SiTIBHighContainer;
00623 //  iEvent.getByLabel("g4SimHits","TrackerHitsTIBHighTof",SiTIBHighContainer);
00624   iEvent.getByLabel(SiTIBHighSrc_,SiTIBHighContainer);
00625     if (!SiTIBHighContainer.isValid()) {
00626     edm::LogError("TrackerHitProducer::fillTrk")
00627       << "Unable to find TrackerHitsTIBHighTof in event!";
00628     return;
00629   }
00630 
00631   sysID = 20;   // TrackerHitsTIBHighTof
00632   j = 0;               
00633   for (itHit = SiTIBHighContainer->begin(); itHit != SiTIBHighContainer->end(); ++itHit) {
00634 
00635       // gather necessary information
00636       ++j;
00637       HitsSysID.push_back(sysID);
00638       HitsDuID.push_back(itHit->detUnitId());
00639       HitsTkID.push_back(itHit->trackId());
00640       HitsProT.push_back(itHit->processType());
00641       HitsParT.push_back(itHit->particleType());
00642       HitsP.push_back(itHit->pabs());
00643       
00644       HitsLpX.push_back(itHit->localPosition().x());
00645       HitsLpY.push_back(itHit->localPosition().y());
00646       HitsLpZ.push_back(itHit->localPosition().z());
00647 
00648       HitsLdX.push_back(itHit->localDirection().x());
00649       HitsLdY.push_back(itHit->localDirection().y());
00650       HitsLdZ.push_back(itHit->localDirection().z());
00651       HitsLdTheta.push_back(itHit->localDirection().theta());
00652       HitsLdPhi.push_back(itHit->localDirection().phi());
00653 
00654       HitsExPx.push_back(itHit->exitPoint().x());
00655       HitsExPy.push_back(itHit->exitPoint().y());
00656       HitsExPz.push_back(itHit->exitPoint().z());
00657 
00658       HitsEnPx.push_back(itHit->entryPoint().x());
00659       HitsEnPy.push_back(itHit->entryPoint().y());
00660       HitsEnPz.push_back(itHit->entryPoint().z());
00661 
00662       HitsEloss.push_back(itHit->energyLoss());
00663       HitsToF.push_back(itHit->tof());
00664       
00665   } // end loop through PxlFwd Hits
00666 
00667   if (verbosity > 1) {
00668     eventout += "\n          Number of TIB high TOF Hits collected:     ";
00669     eventout += j;
00670   }  
00671   
00673   // get Silicon TOB information
00675   // extract TOB low container
00676   edm::Handle<edm::PSimHitContainer> SiTOBLowContainer;
00677 //  iEvent.getByLabel("g4SimHits","TrackerHitsTOBLowTof",SiTOBLowContainer);
00678   iEvent.getByLabel(SiTOBLowSrc_,SiTOBLowContainer);
00679     if (!SiTOBLowContainer.isValid()) {
00680     edm::LogError("TrackerHitProducer::fillTrk")
00681       << "Unable to find TrackerHitsTOBLowTof in event!";
00682     return;
00683   }
00684   
00685   sysID = 30;   // TrackerHitsTOBLowTof
00686   j = 0;               
00687   for (itHit = SiTOBLowContainer->begin(); itHit != SiTOBLowContainer->end(); ++itHit) {
00688 
00689       // gather necessary information
00690       ++j;
00691       HitsSysID.push_back(sysID);
00692       HitsDuID.push_back(itHit->detUnitId());
00693       HitsTkID.push_back(itHit->trackId());
00694       HitsProT.push_back(itHit->processType());
00695       HitsParT.push_back(itHit->particleType());
00696       HitsP.push_back(itHit->pabs());
00697       
00698       HitsLpX.push_back(itHit->localPosition().x());
00699       HitsLpY.push_back(itHit->localPosition().y());
00700       HitsLpZ.push_back(itHit->localPosition().z());
00701 
00702       HitsLdX.push_back(itHit->localDirection().x());
00703       HitsLdY.push_back(itHit->localDirection().y());
00704       HitsLdZ.push_back(itHit->localDirection().z());
00705       HitsLdTheta.push_back(itHit->localDirection().theta());
00706       HitsLdPhi.push_back(itHit->localDirection().phi());
00707 
00708       HitsExPx.push_back(itHit->exitPoint().x());
00709       HitsExPy.push_back(itHit->exitPoint().y());
00710       HitsExPz.push_back(itHit->exitPoint().z());
00711 
00712       HitsEnPx.push_back(itHit->entryPoint().x());
00713       HitsEnPy.push_back(itHit->entryPoint().y());
00714       HitsEnPz.push_back(itHit->entryPoint().z());
00715 
00716       HitsEloss.push_back(itHit->energyLoss());
00717       HitsToF.push_back(itHit->tof());
00718       
00719   } // end loop through PxlFwd Hits
00720 
00721   if (verbosity > 1) {
00722     eventout += "\n          Number of TOB low TOF Hits collected:     ";
00723     eventout += j;
00724   }  
00725     
00726   // extract TOB high container
00727   edm::Handle<edm::PSimHitContainer> SiTOBHighContainer;
00728 //  iEvent.getByLabel("g4SimHits","TrackerHitsTOBHighTof",SiTOBHighContainer);
00729   iEvent.getByLabel(SiTOBHighSrc_,SiTOBHighContainer);
00730     if (!SiTOBHighContainer.isValid()) {
00731     edm::LogError("TrackerHitProducer::fillTrk")
00732       << "Unable to find TrackerHitsTOBHighTof in event!";
00733     return;
00734   }
00735   
00736   sysID = 40;   // TrackerHitsTOBHighTof
00737   j = 0;               
00738   for (itHit = SiTOBHighContainer->begin(); itHit != SiTOBHighContainer->end(); ++itHit) {
00739 
00740       // gather necessary information
00741       ++j;
00742       HitsSysID.push_back(sysID);
00743       HitsDuID.push_back(itHit->detUnitId());
00744       HitsTkID.push_back(itHit->trackId());
00745       HitsProT.push_back(itHit->processType());
00746       HitsParT.push_back(itHit->particleType());
00747       HitsP.push_back(itHit->pabs());
00748       
00749       HitsLpX.push_back(itHit->localPosition().x());
00750       HitsLpY.push_back(itHit->localPosition().y());
00751       HitsLpZ.push_back(itHit->localPosition().z());
00752 
00753       HitsLdX.push_back(itHit->localDirection().x());
00754       HitsLdY.push_back(itHit->localDirection().y());
00755       HitsLdZ.push_back(itHit->localDirection().z());
00756       HitsLdTheta.push_back(itHit->localDirection().theta());
00757       HitsLdPhi.push_back(itHit->localDirection().phi());
00758 
00759       HitsExPx.push_back(itHit->exitPoint().x());
00760       HitsExPy.push_back(itHit->exitPoint().y());
00761       HitsExPz.push_back(itHit->exitPoint().z());
00762 
00763       HitsEnPx.push_back(itHit->entryPoint().x());
00764       HitsEnPy.push_back(itHit->entryPoint().y());
00765       HitsEnPz.push_back(itHit->entryPoint().z());
00766 
00767       HitsEloss.push_back(itHit->energyLoss());
00768       HitsToF.push_back(itHit->tof());
00769       
00770   } // end loop through SiTOB Hits
00771 
00772   if (verbosity > 1) {
00773     eventout += "\n          Number of TOB high TOF Hits collected:     ";
00774     eventout += j;
00775   }  
00776   
00778   // get Silicon TID information
00780   // extract TID low container
00781   edm::Handle<edm::PSimHitContainer> SiTIDLowContainer;
00782 //  iEvent.getByLabel("g4SimHits","TrackerHitsTIDLowTof",SiTIDLowContainer);
00783   iEvent.getByLabel(SiTIDLowSrc_,SiTIDLowContainer);
00784     if (!SiTIDLowContainer.isValid()) {
00785     edm::LogError("TrackerHitProducer::fillTrk")
00786       << "Unable to find TrackerHitsTIDLowTof in event!";
00787     return;
00788   }
00789   
00790   sysID = 50;   // TrackerHitsTIDLowTof
00791   j = 0;               
00792   for (itHit = SiTIDLowContainer->begin(); itHit != SiTIDLowContainer->end(); ++itHit) {
00793 
00794       // gather necessary information
00795       ++j;
00796       HitsSysID.push_back(sysID);
00797       HitsDuID.push_back(itHit->detUnitId());
00798       HitsTkID.push_back(itHit->trackId());
00799       HitsProT.push_back(itHit->processType());
00800       HitsParT.push_back(itHit->particleType());
00801       HitsP.push_back(itHit->pabs());
00802       
00803       HitsLpX.push_back(itHit->localPosition().x());
00804       HitsLpY.push_back(itHit->localPosition().y());
00805       HitsLpZ.push_back(itHit->localPosition().z());
00806 
00807       HitsLdX.push_back(itHit->localDirection().x());
00808       HitsLdY.push_back(itHit->localDirection().y());
00809       HitsLdZ.push_back(itHit->localDirection().z());
00810       HitsLdTheta.push_back(itHit->localDirection().theta());
00811       HitsLdPhi.push_back(itHit->localDirection().phi());
00812 
00813       HitsExPx.push_back(itHit->exitPoint().x());
00814       HitsExPy.push_back(itHit->exitPoint().y());
00815       HitsExPz.push_back(itHit->exitPoint().z());
00816 
00817       HitsEnPx.push_back(itHit->entryPoint().x());
00818       HitsEnPy.push_back(itHit->entryPoint().y());
00819       HitsEnPz.push_back(itHit->entryPoint().z());
00820 
00821       HitsEloss.push_back(itHit->energyLoss());
00822       HitsToF.push_back(itHit->tof());
00823       
00824   } // end loop through SiTID Hits
00825 
00826   if (verbosity > 1) {
00827     eventout += "\n          Number of TID low TOF Hits collected:     ";
00828     eventout += j;
00829   }  
00830       
00831   // extract TID high container
00832   edm::Handle<edm::PSimHitContainer> SiTIDHighContainer;
00833 //  iEvent.getByLabel("g4SimHits","TrackerHitsTIDHighTof",SiTIDHighContainer);
00834   iEvent.getByLabel(SiTIDHighSrc_,SiTIDHighContainer);
00835     if (!SiTIDHighContainer.isValid()) {
00836     edm::LogError("TrackerHitProducer::fillTrk")
00837       << "Unable to find TrackerHitsTIDHighTof in event!";
00838     return;
00839   }
00840   
00841   sysID = 60;   // TrackerHitsTIDHighTof
00842   j = 0;               
00843   for (itHit = SiTIDHighContainer->begin(); itHit != SiTIDHighContainer->end(); ++itHit) {
00844 
00845       // gather necessary information
00846       ++j;
00847       HitsSysID.push_back(sysID);
00848       HitsDuID.push_back(itHit->detUnitId());
00849       HitsTkID.push_back(itHit->trackId());
00850       HitsProT.push_back(itHit->processType());
00851       HitsParT.push_back(itHit->particleType());
00852       HitsP.push_back(itHit->pabs());
00853       
00854       HitsLpX.push_back(itHit->localPosition().x());
00855       HitsLpY.push_back(itHit->localPosition().y());
00856       HitsLpZ.push_back(itHit->localPosition().z());
00857 
00858       HitsLdX.push_back(itHit->localDirection().x());
00859       HitsLdY.push_back(itHit->localDirection().y());
00860       HitsLdZ.push_back(itHit->localDirection().z());
00861       HitsLdTheta.push_back(itHit->localDirection().theta());
00862       HitsLdPhi.push_back(itHit->localDirection().phi());
00863 
00864       HitsExPx.push_back(itHit->exitPoint().x());
00865       HitsExPy.push_back(itHit->exitPoint().y());
00866       HitsExPz.push_back(itHit->exitPoint().z());
00867 
00868       HitsEnPx.push_back(itHit->entryPoint().x());
00869       HitsEnPy.push_back(itHit->entryPoint().y());
00870       HitsEnPz.push_back(itHit->entryPoint().z());
00871 
00872       HitsEloss.push_back(itHit->energyLoss());
00873       HitsToF.push_back(itHit->tof());
00874       
00875   } // end loop through SiTID Hits
00876 
00877   if (verbosity > 1) {
00878     eventout += "\n          Number of TID high TOF Hits collected:     ";
00879     eventout += j;
00880   }  
00881   
00883   // get Silicon TEC information
00885   // extract TEC low container
00886   edm::Handle<edm::PSimHitContainer> SiTECLowContainer;
00887 //  iEvent.getByLabel("g4SimHits","TrackerHitsTECLowTof",SiTECLowContainer);
00888   iEvent.getByLabel(SiTECLowSrc_,SiTECLowContainer);
00889     if (!SiTECLowContainer.isValid()) {
00890     edm::LogError("TrackerHitProducer::fillTrk")
00891       << "Unable to find TrackerHitsTECLowTof in event!";
00892     return;
00893   }
00894   
00895   sysID = 70;   // TrackerHitsTECLowTof
00896   j = 0;               
00897   for (itHit = SiTECLowContainer->begin(); itHit != SiTECLowContainer->end(); ++itHit) {
00898 
00899       // gather necessary information
00900       ++j;
00901       HitsSysID.push_back(sysID);
00902       HitsDuID.push_back(itHit->detUnitId());
00903       HitsTkID.push_back(itHit->trackId());
00904       HitsProT.push_back(itHit->processType());
00905       HitsParT.push_back(itHit->particleType());
00906       HitsP.push_back(itHit->pabs());
00907       
00908       HitsLpX.push_back(itHit->localPosition().x());
00909       HitsLpY.push_back(itHit->localPosition().y());
00910       HitsLpZ.push_back(itHit->localPosition().z());
00911 
00912       HitsLdX.push_back(itHit->localDirection().x());
00913       HitsLdY.push_back(itHit->localDirection().y());
00914       HitsLdZ.push_back(itHit->localDirection().z());
00915       HitsLdTheta.push_back(itHit->localDirection().theta());
00916       HitsLdPhi.push_back(itHit->localDirection().phi());
00917 
00918       HitsExPx.push_back(itHit->exitPoint().x());
00919       HitsExPy.push_back(itHit->exitPoint().y());
00920       HitsExPz.push_back(itHit->exitPoint().z());
00921 
00922       HitsEnPx.push_back(itHit->entryPoint().x());
00923       HitsEnPy.push_back(itHit->entryPoint().y());
00924       HitsEnPz.push_back(itHit->entryPoint().z());
00925 
00926       HitsEloss.push_back(itHit->energyLoss());
00927       HitsToF.push_back(itHit->tof());
00928       
00929   } // end loop through SiTEC Hits
00930 
00931   if (verbosity > 1) {
00932     eventout += "\n          Number of TEC low TOF Hits collected:     ";
00933     eventout += j;
00934   }  
00935       
00936   
00937   // extract TEC high container
00938   edm::Handle<edm::PSimHitContainer> SiTECHighContainer;
00939 //  iEvent.getByLabel("g4SimHits","TrackerHitsTECHighTof",SiTECHighContainer);
00940   iEvent.getByLabel(SiTECHighSrc_,SiTECHighContainer);
00941     if (!SiTECHighContainer.isValid()) {
00942     edm::LogError("TrackerHitProducer::fillTrk")
00943       << "Unable to find TrackerHitsTECHighTof in event!";
00944     return;
00945   }
00946   sysID = 80;   // TrackerHitsTECHighTof
00947   j = 0;               
00948   for (itHit = SiTECHighContainer->begin(); itHit != SiTECHighContainer->end(); ++itHit) {
00949 
00950       // gather necessary information
00951       ++j;
00952       HitsSysID.push_back(sysID);
00953       HitsDuID.push_back(itHit->detUnitId());
00954       HitsTkID.push_back(itHit->trackId());
00955       HitsProT.push_back(itHit->processType());
00956       HitsParT.push_back(itHit->particleType());
00957       HitsP.push_back(itHit->pabs());
00958       
00959       HitsLpX.push_back(itHit->localPosition().x());
00960       HitsLpY.push_back(itHit->localPosition().y());
00961       HitsLpZ.push_back(itHit->localPosition().z());
00962 
00963       HitsLdX.push_back(itHit->localDirection().x());
00964       HitsLdY.push_back(itHit->localDirection().y());
00965       HitsLdZ.push_back(itHit->localDirection().z());
00966       HitsLdTheta.push_back(itHit->localDirection().theta());
00967       HitsLdPhi.push_back(itHit->localDirection().phi());
00968 
00969       HitsExPx.push_back(itHit->exitPoint().x());
00970       HitsExPy.push_back(itHit->exitPoint().y());
00971       HitsExPz.push_back(itHit->exitPoint().z());
00972 
00973       HitsEnPx.push_back(itHit->entryPoint().x());
00974       HitsEnPy.push_back(itHit->entryPoint().y());
00975       HitsEnPz.push_back(itHit->entryPoint().z());
00976 
00977       HitsEloss.push_back(itHit->energyLoss());
00978       HitsToF.push_back(itHit->tof());
00979       
00980   } // end loop through SiTEC Hits
00981 
00982   if (verbosity > 1) {
00983     eventout += "\n          Number of TEC high TOF Hits collected:     ";
00984     eventout += j;
00985   }  
00986 
00987   if (verbosity > 0)
00988     edm::LogInfo("TrackerHitProducer::fillTrk") << eventout;
00989 
00990   return;
00991 }

void TrackerHitProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDProducer.

Definition at line 99 of file TrackerHitProducer.cc.

References clear(), count, fillG4MC(), fillTrk(), edm::Event::getAllProvenance(), getAllProvenances, i, edm::Event::id(), label, printProvenanceInfo, edm::Event::put(), storeG4MC(), storeTrk(), and verbosity.

00101 {
00102   // keep track of number of events processed
00103   ++count;
00104 
00105   // get event id information
00106   int nrun = iEvent.id().run();
00107   int nevt = iEvent.id().event();
00108 
00109   // get event setup information
00110   //edm::ESHandle<edm::SetupData> pSetup;
00111   //iSetup.get<edm::SetupRecord>().get(pSetup);
00112 
00113   if (verbosity > 0) {
00114     edm::LogInfo ("TrackerHitProducer::produce")
00115       << "Processing run" << nrun << "," << "event " << nevt;
00116   }
00117 
00118   // clear event holders
00119   clear();
00120 
00121   // look at information available in the event
00122   if (getAllProvenances) {
00123 
00124     std::vector<const edm::Provenance*> AllProv;
00125     iEvent.getAllProvenance(AllProv);
00126 
00127     if (verbosity > 0)
00128       edm::LogInfo ("TrackerHitProducer::produce")
00129     << "Number of Provenances =" << AllProv.size();
00130 
00131     if (printProvenanceInfo && (verbosity > 0)) {
00132       TString eventout("\nProvenance info:\n");
00133       
00134       for (unsigned int i = 0; i < AllProv.size(); ++i) {
00135     eventout += "\n       ******************************";
00136     eventout += "\n       Module       : ";
00137     eventout += AllProv[i]->moduleLabel();
00138     eventout += "\n       ProductID    : ";
00139     eventout += AllProv[i]->productID().id();
00140     eventout += "\n       ClassName    : ";
00141     eventout += AllProv[i]->className();
00142     eventout += "\n       InstanceName : ";
00143     eventout += AllProv[i]->productInstanceName();
00144     eventout += "\n       BranchName   : ";
00145     eventout += AllProv[i]->branchName();
00146       }
00147       eventout += "       ******************************\n";
00148       edm::LogInfo("TrackerHitProducer::produce") << eventout;
00149     }
00150   }
00151 
00152   // call fill functions
00153   //gather G4MC information from event
00154   fillG4MC(iEvent);
00155   // gather Tracker information from event
00156   fillTrk(iEvent,iSetup);
00157 
00158   if (verbosity > 0)
00159     edm::LogInfo ("TrackerHitProducer::produce")
00160       << "Done gathering data from event.";
00161 
00162   // produce object to put into event
00163   std::auto_ptr<PTrackerSimHit> pOut(new PTrackerSimHit);
00164 
00165   if (verbosity > 2)
00166     edm::LogInfo ("TrackerHitProducer::produce")
00167       << "Saving event contents:";
00168 
00169   // call store functions
00170   // store G4MC information in product
00171   storeG4MC(*pOut);
00172   // store Tracker information in produce
00173   storeTrk(*pOut);
00174 
00175   // store information in event
00176   iEvent.put(pOut,label);
00177 
00178   return;
00179 }

void TrackerHitProducer::storeG4MC ( PTrackerSimHit product  )  [private]

Definition at line 292 of file TrackerHitProducer.cc.

References G4TrkE, G4TrkEta, G4TrkPhi, G4TrkPt, G4VtxX, G4VtxY, G4VtxZ, i, nRawGenPart, PTrackerSimHit::putG4Trk(), PTrackerSimHit::putG4Vtx(), PTrackerSimHit::putRawGenPart(), and verbosity.

Referenced by produce().

00293 {
00294 
00295   if (verbosity > 2) {
00296     TString eventout("\nnRawGenPart        = ");
00297     eventout += nRawGenPart;
00298     eventout += "\n       nG4Vtx             = ";
00299     eventout += G4VtxX.size();
00300     for (unsigned int i = 0; i < G4VtxX.size(); ++i) {
00301       eventout += "\n          (x,y,z)         = (";
00302       eventout += G4VtxX[i];
00303       eventout += ", ";
00304       eventout += G4VtxY[i];
00305       eventout += ", ";
00306       eventout += G4VtxZ[i];
00307       eventout += ")";      
00308     }
00309     eventout += "\n       nG4Trk             = ";
00310     eventout += G4TrkPt.size();
00311     for (unsigned int i = 0; i < G4TrkPt.size(); ++i) {
00312       eventout += "\n          (pt,e,eta,phi)          = (";
00313       eventout += G4TrkPt[i];
00314       eventout += ", ";
00315       eventout += G4TrkE[i];
00316       eventout += ")";
00317       eventout += G4TrkEta[i];
00318       eventout += ")";
00319       eventout += G4TrkPhi[i];
00320       eventout += ")";
00321     }    
00322     edm::LogInfo("TrackerHitProducer::storeG4MC") << eventout;
00323   } // end verbose output
00324 
00325   product.putRawGenPart(nRawGenPart);
00326   product.putG4Vtx(G4VtxX, G4VtxY, G4VtxZ);
00327   product.putG4Trk(G4TrkPt, G4TrkE, G4TrkEta, G4TrkPhi);
00328 
00329   return;
00330 }

void TrackerHitProducer::storeTrk ( PTrackerSimHit product  )  [private]

Definition at line 993 of file TrackerHitProducer.cc.

References HitsDuID, HitsEloss, HitsEnPx, HitsEnPy, HitsEnPz, HitsExPx, HitsExPy, HitsExPz, HitsLdPhi, HitsLdTheta, HitsLdX, HitsLdY, HitsLdZ, HitsLpX, HitsLpY, HitsLpZ, HitsP, HitsParT, HitsProT, HitsSysID, HitsTkID, HitsToF, and PTrackerSimHit::putHits().

Referenced by produce().

00994 {
00995 
00996 /*
00997   if (verbosity > 2) {
00998     TString eventout("\nnPxlBrlHits        = ");
00999     eventout += PxlBrlToF.size();
01000     for (unsigned int i = 0; i < PxlBrlToF.size(); ++i) {
01001       eventout += "\n          (tof,r,phi,eta) = (";
01002       eventout += PxlBrlToF[i];
01003       eventout += ", ";
01004       eventout += PxlBrlR[i];
01005       eventout += ", ";
01006       eventout += PxlBrlPhi[i];
01007       eventout += ", ";
01008       eventout += PxlBrlEta[i];
01009       eventout += ")";      
01010     } // end PxlBrl output
01011     eventout += "\n       nPxlFwdHits        = ";
01012     eventout += PxlFwdToF.size();
01013     for (unsigned int i = 0; i < PxlFwdToF.size(); ++i) {
01014       eventout += "\n          (tof,z,phi,eta) = (";
01015       eventout += PxlFwdToF[i];
01016       eventout += ", ";
01017       eventout += PxlFwdZ[i];
01018       eventout += ", ";
01019       eventout += PxlFwdPhi[i];
01020       eventout += ", ";
01021       eventout += PxlFwdEta[i];
01022       eventout += ")";      
01023     } // end PxlFwd output
01024     eventout += "\n       nSiBrlHits         = ";
01025     eventout += SiBrlToF.size();
01026     for (unsigned int i = 0; i < SiBrlToF.size(); ++i) {
01027       eventout += "\n          (tof,r,phi,eta) = (";
01028       eventout += SiBrlToF[i];
01029       eventout += ", ";
01030       eventout += SiBrlR[i];
01031       eventout += ", ";
01032       eventout += SiBrlPhi[i];
01033       eventout += ", ";
01034       eventout += SiBrlEta[i];
01035       eventout += ")";      
01036     } // end SiBrl output
01037     eventout += "\n       nSiFwdHits         = ";
01038     eventout += SiFwdToF.size();
01039     for (unsigned int i = 0; i < SiFwdToF.size(); ++i) {
01040       eventout += "\n          (tof,z,phi,eta) = (";
01041       eventout += SiFwdToF[i];
01042       eventout += ", ";
01043       eventout += SiFwdZ[i];
01044       eventout += ", ";
01045       eventout += SiFwdPhi[i];
01046       eventout += ", ";
01047       eventout += SiFwdEta[i];
01048       eventout += ")";      
01049     } // end SiFwd output
01050     edm::LogInfo("TrackerHitProducer::storeTrk") << eventout;
01051   } // end verbose output
01052 */
01053   product.putHits(HitsSysID, HitsDuID, HitsTkID, HitsProT, HitsParT, HitsP,
01054                   HitsLpX, HitsLpY, HitsLpZ, 
01055           HitsLdX, HitsLdY, HitsLdZ, HitsLdTheta, HitsLdPhi,
01056           HitsExPx, HitsExPy, HitsExPz,
01057           HitsEnPx, HitsEnPy, HitsEnPz,
01058           HitsEloss, HitsToF);
01059   
01060   return;
01061 }


Member Data Documentation

edm::ParameterSet TrackerHitProducer::config_ [private]

Definition at line 137 of file TrackerHitProducer.h.

Referenced by fillG4MC().

unsigned int TrackerHitProducer::count [private]

Definition at line 139 of file TrackerHitProducer.h.

Referenced by endJob(), and produce().

std::string TrackerHitProducer::fName [private]

Definition at line 81 of file TrackerHitProducer.h.

Referenced by TrackerHitProducer().

FloatVector TrackerHitProducer::G4TrkE [private]

Definition at line 93 of file TrackerHitProducer.h.

Referenced by clear(), fillG4MC(), and storeG4MC().

FloatVector TrackerHitProducer::G4TrkEta [private]

Definition at line 94 of file TrackerHitProducer.h.

Referenced by clear(), fillG4MC(), and storeG4MC().

FloatVector TrackerHitProducer::G4TrkPhi [private]

Definition at line 95 of file TrackerHitProducer.h.

Referenced by clear(), fillG4MC(), and storeG4MC().

FloatVector TrackerHitProducer::G4TrkPt [private]

Definition at line 92 of file TrackerHitProducer.h.

Referenced by clear(), fillG4MC(), and storeG4MC().

FloatVector TrackerHitProducer::G4VtxX [private]

Definition at line 89 of file TrackerHitProducer.h.

Referenced by clear(), fillG4MC(), and storeG4MC().

FloatVector TrackerHitProducer::G4VtxY [private]

Definition at line 90 of file TrackerHitProducer.h.

Referenced by clear(), fillG4MC(), and storeG4MC().

FloatVector TrackerHitProducer::G4VtxZ [private]

Definition at line 91 of file TrackerHitProducer.h.

Referenced by clear(), fillG4MC(), and storeG4MC().

bool TrackerHitProducer::getAllProvenances [private]

Definition at line 84 of file TrackerHitProducer.h.

Referenced by produce(), and TrackerHitProducer().

FloatVector TrackerHitProducer::HitsDuID [private]

Definition at line 102 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsEloss [private]

Definition at line 121 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsEnPx [private]

Definition at line 118 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsEnPy [private]

Definition at line 119 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsEnPz [private]

Definition at line 120 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsExPx [private]

Definition at line 115 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsExPy [private]

Definition at line 116 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsExPz [private]

Definition at line 117 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsLdPhi [private]

Definition at line 114 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsLdTheta [private]

Definition at line 113 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsLdX [private]

Definition at line 110 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsLdY [private]

Definition at line 111 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsLdZ [private]

Definition at line 112 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsLpX [private]

Definition at line 107 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsLpY [private]

Definition at line 108 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsLpZ [private]

Definition at line 109 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsP [private]

Definition at line 106 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsParT [private]

Definition at line 105 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsProT [private]

Definition at line 104 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

IntegerVector TrackerHitProducer::HitsSysID [private]

Definition at line 101 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsTkID [private]

Definition at line 103 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

FloatVector TrackerHitProducer::HitsToF [private]

Definition at line 122 of file TrackerHitProducer.h.

Referenced by clear(), fillTrk(), and storeTrk().

std::string TrackerHitProducer::label [private]

Definition at line 83 of file TrackerHitProducer.h.

Referenced by produce(), and TrackerHitProducer().

int TrackerHitProducer::nRawGenPart [private]

Definition at line 88 of file TrackerHitProducer.h.

Referenced by clear(), fillG4MC(), and storeG4MC().

bool TrackerHitProducer::printProvenanceInfo [private]

Definition at line 85 of file TrackerHitProducer.h.

Referenced by produce(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::PxlBrlHighSrc_ [private]

Definition at line 133 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::PxlBrlLowSrc_ [private]

Definition at line 132 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::PxlFwdHighSrc_ [private]

Definition at line 135 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::PxlFwdLowSrc_ [private]

Definition at line 134 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::SiTECHighSrc_ [private]

Definition at line 131 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::SiTECLowSrc_ [private]

Definition at line 130 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::SiTIBHighSrc_ [private]

Definition at line 125 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::SiTIBLowSrc_ [private]

Definition at line 124 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::SiTIDHighSrc_ [private]

Definition at line 129 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::SiTIDLowSrc_ [private]

Definition at line 128 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::SiTOBHighSrc_ [private]

Definition at line 127 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

edm::InputTag TrackerHitProducer::SiTOBLowSrc_ [private]

Definition at line 126 of file TrackerHitProducer.h.

Referenced by fillTrk(), and TrackerHitProducer().

int TrackerHitProducer::verbosity [private]

Definition at line 82 of file TrackerHitProducer.h.

Referenced by beginJob(), clear(), endJob(), fillG4MC(), fillTrk(), produce(), storeG4MC(), and TrackerHitProducer().


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