50 #include "FastSimulation/Tracking/test/FastTrackAnalyzer.h"
98 doGenPlots_ (iConfig.getParameter<bool>(
"MakeGenPlots")),
99 doHLTPlots_ (iConfig.getParameter<bool>(
"MakeHLTPlots")),
100 doSimTrackPlots_ (iConfig.getParameter<bool>(
"MakeSimTrackPlots")),
101 doSimDigiPlots_ (iConfig.getParameter<bool>(
"MakeSimDigiPlots")),
102 doRecoPlots_ (iConfig.getParameter<bool>(
"MakeRecoPlots")),
103 label_ (iConfig.getParameter<edm::InputTag>(
"generatorLabel")),
104 particleIds_ (iConfig.getParameter< std::vector<int> >(
"particleIds")),
105 particleStatus_ (iConfig.getUntrackedParameter<int>(
"particleStatus",1)),
106 ebSimHitTag_ (iConfig.getParameter<edm::InputTag>(
"EBSimHitCollection")),
107 eeSimHitTag_ (iConfig.getParameter<edm::InputTag>(
"EESimHitCollection")),
108 simTrackTag_ (iConfig.getParameter<edm::InputTag>(
"SimTrackCollection")),
109 EBDigiCollection_ (iConfig.getParameter<edm::InputTag>(
"EBDigiCollection")),
110 EEDigiCollection_ (iConfig.getParameter<edm::InputTag>(
"EEDigiCollection")),
111 RPCRecHitTag_ (iConfig.getParameter<edm::InputTag>(
"RPCRecHitTag"))
117 particlePHist_ = fileService->
make<TH1F>(
"particleP",
"Momentum of gen particle",500,0,2000);
118 particlePtHist_ = fileService->
make<TH1F>(
"particlePt",
"P_{T} of gen particle",500,0,2000);
124 h_genhscp_met = fileService->
make<TH1F>(
"hscp_met" ,
"missing E_{T} hscp" , 100, 0., 1500. );
140 hltmet100_ = fileService->
make<TH1F>(
"HLT_MET100",
"MET100",3,-1,2);
141 hltjet140_ = fileService->
make<TH1F>(
"HLT_JET140",
"JET140",3,-1,2);
142 hltmu15_ = fileService->
make<TH1F>(
"HLT_Mu15",
"Mu15",3,-1,2);
148 simHitsEcalTimeHistEB_ = fileService->
make<TH1F>(
"ecalTimingOfSimHitsEB",
"HSCP SimTrack-matching SimHit time EB [ns]",115,-15,100);
149 simHitsEcalTimeHistEE_ = fileService->
make<TH1F>(
"ecalTimingOfSimHitsEE",
"HSCP SimTrack-matching SimHit time EE [ns]",115,-15,100);
150 simHitsEcalNumHistEB_ = fileService->
make<TH1F>(
"ecalNumberOfSimHitsEB",
"Number of HSCP SimTrack-matching EB sim hits in event",100,0,200);
151 simHitsEcalNumHistEE_ = fileService->
make<TH1F>(
"ecalNumberOfSimHitsEE",
"Number of HSCP SimTrack-matching EE sim hits in event",100,0,200);
152 simHitsEcalEnergyVsTimeHistEB_ = fileService->
make<TH2F>(
"ecalEnergyVsTimeOfSimHitsEB",
"Energy vs. time of HSCP SimTrack-matching EB sim hits in event",115,-15,100,125,-1,4);
153 simHitsEcalEnergyVsTimeHistEE_ = fileService->
make<TH2F>(
"ecalEnergyVsTimeOfSimHitsEE",
"Energy vs. time of HSCP SimTrack-matching EE sim hits in event",115,-15,100,125,-1,4);
162 digisEcalNumHistEB_ = fileService->
make<TH1F>(
"ecalDigisNumberEB",
"Number of EB digis matching simhits in event",200,0,1000);
163 digisEcalNumHistEE_ = fileService->
make<TH1F>(
"ecalDigisNumberEE",
"Number of EE digis matching simhits in event",200,0,1000);
164 digiOccupancyMapEB_ = fileService->
make<TH2F>(
"ecalDigiOccupancyMapEB",
"Occupancy of simhit-matching digis EB;i#phi;i#eta",360,1,361,171,-85,86);
165 digiOccupancyMapEEP_ = fileService->
make<TH2F>(
"ecalDigiOccupancyMapEEM",
"Occupancy of simhit-matching digis EEM;ix;iy",100,1,100,100,1,100);
166 digiOccupancyMapEEM_ = fileService->
make<TH2F>(
"ecalDigiOccupancyMapEEP",
"Occupancy of simhit-matching digis EEP;ix;iy",100,1,100,100,1,100);
174 rpcTimeOfFlightBarrel_[2] = fileService->
make<TH1F>(
"RPCToFLayer3",
"RPC HSCP Time Of Flight Layer 3",50,5,100);
175 rpcTimeOfFlightBarrel_[3] = fileService->
make<TH1F>(
"RPCToFLayer4",
"RPC HSCP Time Of Flight Layer 4",50,5,100);
176 rpcTimeOfFlightBarrel_[4] = fileService->
make<TH1F>(
"RPCToFLayer5",
"RPC HSCP Time Of Flight Layer 5",50,5,100);
177 rpcTimeOfFlightBarrel_[5] = fileService->
make<TH1F>(
"RPCToFLayer6",
"RPC HSCP Time Of Flight Layer 6",50,5,100);
178 rpcBXBarrel_[0] = fileService->
make<TH1F>(
"RPCBXLayer1",
"RPC HSCP BX Layer 1",5,-0.5,4.5);
179 rpcBXBarrel_[1] = fileService->
make<TH1F>(
"RPCBXLayer2",
"RPC HSCP BX Layer 2",5,-0.5,4.5);
180 rpcBXBarrel_[2] = fileService->
make<TH1F>(
"RPCBXLayer3",
"RPC HSCP BX Layer 3",5,-0.5,4.5);
181 rpcBXBarrel_[3] = fileService->
make<TH1F>(
"RPCBXLayer4",
"RPC HSCP BX Layer 4",5,-0.5,4.5);
182 rpcBXBarrel_[4] = fileService->
make<TH1F>(
"RPCBXLayer5",
"RPC HSCP BX Layer 5",5,-0.5,4.5);
183 rpcBXBarrel_[5] = fileService->
make<TH1F>(
"RPCBXLayer6",
"RPC HSCP BX Layer 6",5,-0.5,4.5);
186 rpcTimeOfFlightEndCap_[2]= fileService->
make<TH1F>(
"RPCToFDisk3",
"RPC HSCP Time Of Flight Disk 3",50,5,100);
187 rpcBXEndCap_[0] = fileService->
make<TH1F>(
"RPCBXDisk1",
"RPC HSCP BX Disk 1",5,-0.5,4.5);
188 rpcBXEndCap_[1] = fileService->
make<TH1F>(
"RPCBXDisk2",
"RPC HSCP BX Disk 2",5,-0.5,4.5);
189 rpcBXEndCap_[2] = fileService->
make<TH1F>(
"RPCBXDisk3",
"RPC HSCP BX Disk 3",5,-0.5,4.5);
246 std::string frequencies =
"";
250 frequencies+=
"PDG ID: ";
252 frequencies+=
" Frequency: ";
256 std::cout <<
"Found PDGIds: " <<
"\n\n" << frequencies << std::endl;
267 double missingpx_nohscp=0;
268 double missingpy_nohscp=0;
270 double scalorEt_nohscp=0;
276 HepMC::GenEvent * myGenEvent =
new HepMC::GenEvent(*(evt->GetEvent()));
277 for(HepMC::GenEvent::particle_iterator
p = myGenEvent->particles_begin();
278 p != myGenEvent->particles_end(); ++
p )
284 if(
abs((*p)->pdg_id())!=12 &&
abs((*p)->pdg_id())!=14 &&
abs((*p)->pdg_id())!=16){
285 missingpx-=(*p)->momentum().px();
286 missingpy-=(*p)->momentum().py();
287 scalorEt+=(*p)->momentum().perp();
294 if(
abs((*p)->pdg_id())!=12 &&
abs((*p)->pdg_id())!=14 &&
abs((*p)->pdg_id())!=16){
295 missingpx_nohscp-=(*p)->momentum().px();
296 missingpy_nohscp-=(*p)->momentum().py();
297 scalorEt_nohscp+=(*p)->momentum().perp();
304 std::pair<std::map<int,int>::iterator,
bool> pair =
particleIdsFoundMap_.insert(std::make_pair<int,int>((*p)->pdg_id(),1));
307 ++(pair.first->second);
310 double mag =
sqrt(
pow((*p)->momentum().px(),2) +
pow((*p)->momentum().py(),2) +
pow((*p)->momentum().pz(),2) );
316 float particleP =
mag;
317 float particleM = (*p)->generated_mass();
338 {
using namespace edm;
341 iEvent.
getByLabel(
"g4SimHits",simTracksHandle);
344 SimTrackContainer::const_iterator simTrack;
346 for (simTrack = simTracks.begin(); simTrack != simTracks.end(); ++simTrack){
373 std::cout<<
"Tirgger Results not available"<<std::endl;
383 iEvent.
getByLabel(
"hltTriggerSummaryAOD", trEvHandle);
387 unsigned int TrIndex_Unknown = tr.size();
391 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_Mu15_v1")){
392 if(tr.accept(tr.triggerIndex(
"HLT_Mu15_v1")))
hltmu15_->Fill(1);
395 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_Mu11")){
399 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_Mu9")){
402 }
else{ printf(
"BUG with HLT_Mu15\n");
409 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_MET100_v3")){
410 if(tr.accept(tr.triggerIndex(
"HLT_MET100_v3")))
hltmet100_->Fill(1);
413 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_MET100_v2")){
414 if(tr.accept(tr.triggerIndex(
"HLT_MET100_v2")))
hltmet100_->Fill(1);
417 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_MET100")){
418 if(tr.accept(tr.triggerIndex(
"HLT_MET100")))
hltmet100_->Fill(1);
421 printf(
"BUG with HLT_MET100\n");
428 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_Jet140U_v3")){
429 if(tr.accept(tr.triggerIndex(
"HLT_Jet140U_v3")))
hltjet140_->Fill(1);
432 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_Jet140U_v1")){
433 if(tr.accept(tr.triggerIndex(
"HLT_Jet140U_v1")))
hltjet140_->Fill(1);
436 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_Jet100U")){
440 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_Jet70U")){
444 if(TrIndex_Unknown != tr.triggerIndex(
"HLT_Jet50U")){
448 printf(
"BUG with HLT_Jet140\n");
468 if(!ebSimHits.isValid())
470 std::cout <<
"Cannot get EBSimHits from event!" << std::endl;
476 if(!eeSimHits.isValid())
478 std::cout <<
"Cannot get EESimHits from event!" << std::endl;
484 if(!simTracks.isValid())
486 std::cout <<
"Cannot get SimTracks from event!" << std::endl;
492 if(!ebDigis.isValid())
494 std::cout <<
"Cannot get EBDigis from event!" << std::endl;
500 if(!eeDigis.isValid())
502 std::cout <<
"Cannot get EEDigis from event!" << std::endl;
510 int numMatchedSimHitsEventEB = 0;
511 int numMatchedDigisEventEB = 0;
513 phitsEB = ebSimHits.product();
514 for(SimTrackContainer::const_iterator simTrack = simTracks->begin(); simTrack != simTracks->end(); ++simTrack)
522 std::vector<EBDataFrame> myDigisEB;
525 int trackId = simTrack->trackId();
526 PCaloHitContainer::const_iterator simHitItr = phitsEB->begin();
527 while(simHitItr != phitsEB->end())
529 if(simHitItr->geantTrackId()==trackId)
530 mySimHitsEB.push_back(*simHitItr);
533 if(mySimHitsEB.size()==0)
535 std::cout <<
"Could not find matching EB PCaloHits for SimTrack id: " << trackId <<
". Skipping this SimTrack" << std::endl;
540 for(simHitItr = mySimHitsEB.begin(); simHitItr != mySimHitsEB.end(); ++simHitItr)
546 std::cout <<
"SimHit DetId found: " << simHitId <<
" for PDGid: " << simTrack->type() << std::endl;
548 std::cout <<
"SimHit energy: " << simHitItr->energy() <<
" time: " << simHitItr->time() << std::endl;
549 ++numMatchedSimHitsEventEB;
552 while(digiItr != ebDigis->end() && (digiItr->id() != simHitId))
554 if(digiItr==ebDigis->end())
557 std::cout <<
"Could not find simHit detId: " << simHitId <<
"in EBDigiCollection!" << std::endl;
560 std::vector<EBDataFrame>::const_iterator myDigiItr = myDigisEB.begin();
561 while(myDigiItr != myDigisEB.end() && (digiItr->id() != myDigiItr->id()))
563 if(myDigiItr!=myDigisEB.end())
566 ++numMatchedDigisEventEB;
568 myDigisEB.push_back(df);
570 for(
int i=0;
i<10;++
i)
573 for(
int i=0;
i < df.
size(); ++
i)
591 int numMatchedSimHitsEventEE = 0;
592 int numMatchedDigisEventEE = 0;
594 phitsEE = eeSimHits.product();
595 for(SimTrackContainer::const_iterator simTrack = simTracks->begin(); simTrack != simTracks->end(); ++simTrack)
603 std::vector<EEDataFrame> myDigisEE;
606 int trackId = simTrack->trackId();
607 PCaloHitContainer::const_iterator simHitItr = phitsEE->begin();
608 while(simHitItr != phitsEE->end())
610 if(simHitItr->geantTrackId()==trackId)
611 mySimHitsEE.push_back(*simHitItr);
614 if(mySimHitsEE.size()==0)
616 std::cout <<
"Could not find matching EE PCaloHits for SimTrack id: " << trackId <<
". Skipping this SimTrack" << std::endl;
621 for(simHitItr = mySimHitsEE.begin(); simHitItr != mySimHitsEE.end(); ++simHitItr)
627 std::cout <<
"SimHit DetId found: " << simHitId <<
" for PDGid: " << simTrack->type() << std::endl;
629 std::cout <<
"SimHit energy: " << simHitItr->energy() <<
" time: " << simHitItr->time() << std::endl;
630 ++numMatchedSimHitsEventEE;
633 while(digiItr != eeDigis->end() && (digiItr->id() != simHitId))
635 if(digiItr==eeDigis->end())
638 std::cout <<
"Could not find simHit detId: " << simHitId <<
"in EEDigiCollection!" << std::endl;
641 std::vector<EEDataFrame>::const_iterator myDigiItr = myDigisEE.begin();
642 while(myDigiItr != myDigisEE.end() && (digiItr->id() != myDigiItr->id()))
644 if(myDigiItr!=myDigisEE.end())
647 ++numMatchedDigisEventEE;
649 myDigisEE.push_back(df);
651 for(
int i=0;
i<10;++
i)
654 for(
int i=0;
i < df.
size(); ++
i)
663 if(((
EEDetId)digiItr->id()).zside() > 0)
665 else if(((
EEDetId)digiItr->id()).zside() < 0)
680 std::vector<Handle<edm::PSimHitContainer> > theSimHitContainers;
688 std::vector<PSimHit> theSimHits;
690 for (
int i = 0;
i < int(theSimHitContainers.size());
i++){
691 theSimHits.insert(theSimHits.end(),theSimHitContainers.at(
i)->begin(),theSimHitContainers.at(
i)->end());
695 for (std::vector<PSimHit>::const_iterator iHit = theSimHits.begin(); iHit != theSimHits.end(); iHit++){
701 DetId theDetUnitId((*iHit).detUnitId());
718 std::cout<<
"\t\t We have an RPC Sim Hit! in t="<<(*iHit).timeOfFlight()<<
"ns "<<rpcsrv.
name()<<
" Global postition="<<SimHitInGlobal<<std::endl;
723 else if(rollId.
station()==1&&rollId.
layer()==2) layer = 2;
724 else if(rollId.
station()==2&&rollId.
layer()==1) layer = 3;
725 else if(rollId.
station()==2&&rollId.
layer()==2) layer = 4;
726 else if(rollId.
station()==3) layer = 5;
727 else if(rollId.
station()==4) layer = 6;
735 std::cout<<
"\t\t r="<<SimHitInGlobal.
mag()<<
" phi="<<SimHitInGlobal.
phi()<<
" eta="<<SimHitInGlobal.
eta()<<std::endl;
739 float minres = 3000.;
741 std::cout<<
"\t \t \t \t Getting RecHits in Roll Asociated"<<std::endl;
743 typedef std::pair<RPCRecHitCollection::const_iterator, RPCRecHitCollection::const_iterator> rangeRecHits;
744 rangeRecHits recHitCollection =
rpcRecHits->get(rollId);
749 for(recHit = recHitCollection.first; recHit != recHitCollection.second ; recHit++){
751 float res=(*iHit).localPosition().
x()- recHitPos.
x();
752 if(fabs(res)<fabs(minres)){
754 cluSize = recHit->clusterSize();
756 std::cout<<
"\t New Min Res "<<res<<
"cm."<<std::endl;
775 ostringstream myStream;
776 myStream << num << flush;
777 return(myStream.str());
785 unsigned int filterIndex = trEv.
filterIndex(InputPath);
791 const int nI(VIDS.size());
792 const int nK(KEYS.size());
798 if(!averageThreshold){
799 int NObjectAboveThresholdObserved = 0;
800 for (
int i=0;
i!=
n; ++
i) {
801 if(TOC[KEYS[
i]].pt()> NewThreshold) NObjectAboveThresholdObserved++;
804 if(NObjectAboveThresholdObserved>=NObjectAboveThreshold)
return true;
807 std::vector<double> ObjPt;
809 for (
int i=0;
i!=
n; ++
i) {
810 ObjPt.push_back(TOC[KEYS[
i]].pt());
813 if((
int)(ObjPt.size())<NObjectAboveThreshold)
return false;
817 for(
int i=0;
i<NObjectAboveThreshold;
i++){
818 Average+= ObjPt[ObjPt.size()-1-
i];
819 }Average/=NObjectAboveThreshold;
822 if(Average>NewThreshold)
return true;
void getManyByType(std::vector< Handle< PROD > > &results) const
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
TH2F * simHitsEcalDigiMatchEnergyVsTimeHistEE_
virtual TriggerResultsByName triggerResultsByName(std::string const &process) const
TH1F * rpcTimeOfFlightBarrel_[6]
TH1F * rpcTimeOfFlightEndCap_[3]
std::vector< PCaloHit > PCaloHitContainer
TH1F * simHitsEcalTimeHistEE_
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
The single EDProduct to be saved for each event (AOD case)
trigger::size_type sizeFilters() const
virtual void analyze(const edm::Event &, const edm::EventSetup &)
TH2F * simHitsEcalEnergyVsTimeHistEB_
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
#define DEFINE_FWK_MODULE(type)
TH1F * simHitsEcalEnergyHistEE_
TH1F * h_genhscp_met_nohscp
TH1F * digisEcalNumHistEE_
const Keys & filterKeys(trigger::size_type index) const
Geom::Phi< T > phi() const
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
TH2F * digiOccupancyMapEEM_
EcalMGPASample sample(int i) const
TH1F * cluSizeDistribution_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
TH1F * simHitsEcalDigiMatchTimeHistEB_
void makeSimTrackPlots(const edm::Event &iEvent)
HSCPValidator(const edm::ParameterSet &)
std::vector< int > particleIds_
std::map< int, int > particleIdsFoundMap_
TH1F * simTrackParticlePtHist_
TH1F * simHitsEcalNumHistEE_
C::const_iterator const_iterator
constant access iterator type
const Vids & filterIds(trigger::size_type index) const
TH2F * digiOccupancyMapEEP_
virtual std::string name()
const T & max(const T &a, const T &b)
TH1F * h_genhscp_scaloret
const TriggerObjectCollection & getObjects() const
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
TH2F * digiOccupancyMapEB_
TH1F * efficiencyRPCRecHitSimDigis_
bool IncreasedTreshold(const trigger::TriggerEvent &trEv, const edm::InputTag &InputPath, double NewThreshold, int NObjectAboveThreshold, bool averageThreshold)
TH2F * simHitsEcalDigiMatchEnergyVsTimeHistEB_
TH1F * simHitsEcalDigiMatchEnergyHistEE_
TH1F * h_genhscp_scaloret_nohscp
edm::InputTag ebSimHitTag_
TH1F * simHitsEcalDigiMatchTimeHistEE_
std::string intToString(int num)
void makeSimDigiPlotsECAL(const edm::Event &iEvent)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
TH2F * simHitsEcalEnergyVsTimeHistEE_
edm::InputTag eeSimHitTag_
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
TH1F * residualsRPCRecHitSimDigis_
TH1F * simHitsEcalDigiMatchIEtaHist_
TH1F * simHitsEcalNumHistEB_
void makeGenPlots(const edm::Event &iEvent)
edm::Service< TFileService > fileService
TH1F * digisEcalNumHistEB_
TH1F * simTrackParticleEtaHist_
TH1F * simHitsEcalDigiMatchIPhiHist_
std::vector< size_type > Keys
TH1F * simHitsEcalDigiMatchEnergyHistEB_
TH1F * particleStatusHist_
edm::InputTag EBDigiCollection_
edm::InputTag EEDigiCollection_
edm::ESHandle< RPCGeometry > rpcGeo
TH1F * simTrackParticlePhiHist_
T * make() const
make new ROOT object
void makeSimDigiPlotsRPC(const edm::Event &iEvent)
void makeHLTPlots(const edm::Event &iEvent)
TH1F * simTrackParticleBetaHist_
std::vector< SimTrack > SimTrackContainer
edm::InputTag simTrackTag_
virtual const BoundPlane & surface() const
The nominal surface of the GeomDet.
TH1F * simHitsEcalEnergyHistEB_
Power< A, B >::type pow(const A &a, const B &b)
TH1F * simTrackParticlePHist_
TH1F * particleBetaInverseHist_
int adc() const
get the ADC sample (12 bits)
TH1F * simHitsEcalTimeHistEB_
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.