56 modOn( pSet.getUntrackedParameter<bool>(
"modOn",
true) ),
57 reducedSet( pSet.getUntrackedParameter<bool>(
"reducedSet",
true) ),
58 ladOn( pSet.getUntrackedParameter<bool>(
"ladOn",
false) ),
59 layOn( pSet.getUntrackedParameter<bool>(
"layOn",
false) ),
60 phiOn( pSet.getUntrackedParameter<bool>(
"phiOn",
false) ),
61 ringOn( pSet.getUntrackedParameter<bool>(
"ringOn",
false) ),
62 bladeOn( pSet.getUntrackedParameter<bool>(
"bladeOn",
false) ),
63 diskOn( pSet.getUntrackedParameter<bool>(
"diskOn",
false) )
72 LogInfo(
"PixelDQM") <<
"SiPixelTrackResidualSource constructor" << endl;
81 LogInfo(
"PixelDQM") <<
"SiPixelTrackResidualSource destructor" << endl;
83 std::map<uint32_t,SiPixelTrackResidualModule*>::iterator struct_iter;
85 delete struct_iter->second;
86 struct_iter->second = 0;
91 LogInfo(
"PixelDQM") <<
"SiPixelTrackResidualSource beginJob()" << endl;
99 LogInfo(
"PixelDQM") <<
"SiPixelTrackResidualSource beginRun()" << endl;
105 if (
debug_)
LogVerbatim(
"PixelDQM") <<
"TrackerGeometry "<< &(*TG) <<
" size is "<< TG->dets().size() << endl;
108 for (TrackerGeometry::DetContainer::const_iterator pxb = TG->detsPXB().begin();
109 pxb!=TG->detsPXB().end(); pxb++) {
110 if (dynamic_cast<PixelGeomDetUnit*>((*pxb))!=0) {
115 for (TrackerGeometry::DetContainer::const_iterator pxf = TG->detsPXF().begin();
116 pxf!=TG->detsPXF().end(); pxf++) {
117 if (dynamic_cast<PixelGeomDetUnit*>((*pxf))!=0) {
126 for (std::map<uint32_t, SiPixelTrackResidualModule*>::iterator pxd =
theSiPixelStructure.begin();
131 else throw cms::Exception(
"LogicError") <<
"SiPixelTrackResidualSource Folder Creation Failed! ";
138 else throw cms::Exception(
"LogicError") <<
"SiPixelTrackResidualSource ladder Folder Creation Failed! ";
142 else throw cms::Exception(
"LogicError") <<
"SiPixelTrackResidualSource layer Folder Creation Failed! ";
146 else throw cms::Exception(
"LogicError") <<
"SiPixelTrackResidualSource phi Folder Creation Failed! ";
150 else throw cms::Exception(
"LogicError") <<
"SiPixelTrackResidualSource Blade Folder Creation Failed! ";
154 else throw cms::Exception(
"LogicError") <<
"SiPixelTrackResidualSource Disk Folder Creation Failed! ";
158 else throw cms::Exception(
"LogicError") <<
"SiPixelTrackResidualSource Ring Folder Creation Failed! ";
468 meHitProbability =
dbe_->
book1D(
"FractionLowProb",
"Fraction of hits with low probability;FractionLowProb;#HitsOnTrack",100,0.,1.);
474 for (
int s=0;
s<3;
s++) {
475 sprintf(hisID,
"residual_x_subdet_%i",
s);
478 sprintf(hisID,
"residual_y_subdet_%i",
s);
489 LogInfo(
"PixelDQM") <<
"SiPixelTrackResidualSource endJob()";
495 LogInfo(
"PixelDQM") <<
" - saving histograms to "<< outputFile.data();
526 std::string TrackCandidateLabel =
pSet_.
getParameter<std::string>(
"TrackCandidateLabel");
529 iEvent.
getByLabel(TrackCandidateProducer, TrackCandidateLabel, trackCandidateCollection);
531 for (TrackCandidateCollection::const_iterator tc = trackCandidateCollection->begin();
532 tc!=trackCandidateCollection->end(); ++tc) {
540 if (
debug_)
cout <<
"track candidate has "<< int(tcRecHits.second - tcRecHits.first) <<
" hits with ID ";
543 for (TrackingRecHitCollection::const_iterator tcRecHit = tcRecHits.first;
544 tcRecHit!=tcRecHits.second; ++tcRecHit) {
545 if (
debug_)
cout << tcRecHit->geographicalId().rawId() <<
" ";
547 tcTTRHs.push_back(theTTRHBuilder->
build(&(*tcRecHit)));
552 std::vector<Trajectory> refitTrajectoryCollection = theFitter->
fit(tcSeed, tcTTRHs, tcTSoS);
553 if (
debug_)
cout <<
"refitTrajectoryCollection size is "<< refitTrajectoryCollection.size() << endl;
555 if (refitTrajectoryCollection.size()>0) {
556 const Trajectory& refitTrajectory = refitTrajectoryCollection.front();
560 if (
debug_)
cout <<
"refitTrajectory has "<< refitTMs.size() <<
" hits with ID ";
562 for (Trajectory::DataContainer::iterator refitTM = refitTMs.begin();
563 refitTM!=refitTMs.end(); refitTM++) {
565 if (
debug_)
cout << refitTTRH->geographicalId().rawId() <<
" ";
568 const GeomDet* ttrhDet = refitTTRH->det();
575 refitTM->backwardPredictedState());
576 if (refitTTRH->isValid() && combinedTSoS.
isValid()) {
585 if(
debug_)
std::cout <<
"fill residual " << residual.
x() <<
" " << residual.
y() <<
" \n";
588 std::map<uint32_t, SiPixelTrackResidualModule*>::iterator pxd =
theSiPixelStructure.find(refitTTRH->geographicalId().rawId());
612 const std::vector<Trajectory> trajColl = *(trajCollectionHandle.
product());
617 const std::vector<reco::Track> trackColl = *(trackCollectionHandle.
product());
630 std::cout <<
"Trajectories\t : " << trajColl.size() << std::endl;
631 std::cout <<
"recoTracks \t : " << trackColl.size() << std::endl;
632 std::cout <<
"Map entries \t : " << ttac.
size() << std::endl;
635 std::set<SiPixelCluster> clusterSet;
637 int tracks=0, pixeltracks=0, bpixtracks=0, fpixtracks=0;
638 int trackclusters=0, barreltrackclusters=0, endcaptrackclusters=0;
639 int otherclusters=0, barrelotherclusters=0, endcapotherclusters=0;
648 bool isBpixtrack =
false, isFpixtrack =
false, crossesPixVol=
false;
652 double d0 = (*trackref).d0(), dz = (*trackref).dz();
654 if(
abs(d0)<15 &&
abs(dz)<50) crossesPixVol =
true;
656 std::vector<TrajectoryMeasurement> tmeasColl =traj_iterator->measurements();
657 std::vector<TrajectoryMeasurement>::const_iterator tmeasIt;
659 for(tmeasIt = tmeasColl.begin();tmeasIt!=tmeasColl.end();tmeasIt++){
660 if(! tmeasIt->updatedState().isValid())
continue;
662 if(! testhit->isValid() || testhit->geographicalId().det() !=
DetId::Tracker)
continue;
663 uint testSubDetID = (testhit->geographicalId().subdetId());
675 if(isBpixtrack || isFpixtrack){
680 std::vector<TrajectoryMeasurement> tmeasColl = traj_iterator->measurements();
681 for(std::vector<TrajectoryMeasurement>::const_iterator tmeasIt = tmeasColl.begin(); tmeasIt!=tmeasColl.end(); tmeasIt++){
682 if(! tmeasIt->updatedState().isValid())
continue;
686 if(! hit->isValid() || hit->geographicalId().det() !=
DetId::Tracker ) {
691 const DetId & hit_detId = hit->geographicalId();
693 uint IntSubDetID = (hit_detId.
subdetId());
695 if(IntSubDetID == 0 )
continue;
700 if ((persistentHit != 0) && (
typeid(*persistentHit) ==
typeid(
SiPixelRecHit))) {
704 float hit_prob = -1.;
722 if(theGeomDet == 0) {
730 std::map<uint32_t, SiPixelTrackResidualModule*>::iterator pxd =
theSiPixelStructure.find((*hit).geographicalId().rawId());
737 float clust_alpha = atan2(localDir.
z(), localDir.
x());
738 float clust_beta = atan2(localDir.
z(), localDir.
y());
739 double corrCharge = clust->charge() *
sqrt( 1.0 / ( 1.0/
pow(
tan(clust_alpha), 2 ) +
740 1.0/
pow(
tan(clust_beta ), 2 ) +
744 if (pxd!=
theSiPixelStructure.end()) (*pxd).second->fill((*clust),
true, corrCharge,
reducedSet,
modOn,
ladOn,
layOn,
phiOn,
bladeOn,
diskOn,
ringOn);
753 clusterSet.insert(*clust);
757 float xcenter = clust->x();
758 float ycenter = clust->y();
768 barreltrackclusters++;
775 float phi = clustgp.
phi();
776 float z = clustgp.
z();
807 endcaptrackclusters++;
814 float x = clustgp.
x();
815 float y = clustgp.
y();
816 float z = clustgp.
z();
871 for(TrackerGeometry::DetContainer::const_iterator it = TG->dets().begin(); it != TG->dets().end(); it++){
873 DetId detId = (*it)->geographicalId();
874 if(detId>=302055684 && detId<=352477708){
875 int nofclOnTrack = 0, nofclOffTrack=0;
876 uint32_t DBlayer=10, DBdisk=10;
879 if(
DetId(detId).subdetId() == 1) {
882 if(
DetId(detId).subdetId() == 2){
886 if( isearch != clustColl.
end() ) {
888 for(di=isearch->
begin(); di!=isearch->
end(); di++){
889 unsigned int temp = clusterSet.size();
890 clusterSet.insert(*di);
892 if(clusterSet.size()>
temp) {
897 std::map<uint32_t, SiPixelTrackResidualModule*>::iterator pxd =
theSiPixelStructure.find((*it)->geographicalId().rawId());
899 if (pxd!=
theSiPixelStructure.end()) (*pxd).second->fill((*di),
false, -1.,
reducedSet,
modOn,
ladOn,
layOn,
phiOn,
bladeOn,
diskOn,
ringOn);
914 if(theGeomDet == 0) {
921 float xcenter = di->x();
922 float ycenter = di->y();
931 if(
DetId(detId).subdetId() == 1) {
936 barrelotherclusters++;
938 float phi = clustgp.
phi();
975 endcapotherclusters++;
977 float x = clustgp.
x();
978 float y = clustgp.
y();
1017 if(z == 0 && DBdisk != 10){
1023 if(theGeomDet == 0) {
1029 float xcenter = di->x();
1030 float ycenter = di->y();
1041 std::map<uint32_t, SiPixelTrackResidualModule*>::iterator pxd =
theSiPixelStructure.find((*it)->geographicalId().rawId());
1046 if(
DetId(detId).subdetId() == 1){
1066 if(
DetId(detId).subdetId() == 2) {
MonitorElement * meClPosLayer2OnTrack
MonitorElement * meClSizeYNotOnTrack_fpix
MonitorElement * meClPosDisk1mzNotOnTrack
MonitorElement * meNClustersNotOnTrack_diskm1
MonitorElement * meClSizeNotOnTrack_fpix
MonitorElement * meClSizeXNotOnTrack_all
MonitorElement * meSubdetResidualX[3]
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
MonitorElement * meClSizeXOnTrack_bpix
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * meClSizeOnTrack_all
bool hasFilledProb() const
MonitorElement * meClSizeOnTrack_bpix
MonitorElement * meClChargeOnTrack_all
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
const_iterator begin() const
MonitorElement * meNClustersNotOnTrack_all
MonitorElement * meClSizeYNotOnTrack_diskm2
float clusterProbability(unsigned int flags=0) const
MonitorElement * meNClustersNotOnTrack_diskm2
MonitorElement * meClSizeOnTrack_layer3
MonitorElement * meClSizeYNotOnTrack_diskp1
MonitorElement * meClPosLayer3NotOnTrack
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
MonitorElement * meNofTracks_
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
const LocalTrajectoryParameters & localParameters() const
MonitorElement * meClSizeYOnTrack_fpix
const_iterator end() const
last iterator over the map (read only)
MonitorElement * meClSizeNotOnTrack_layer2
MonitorElement * meClChargeNotOnTrack_layer3
TSOS combine(const TSOS &pTsos1, const TSOS &pTsos2) const
MonitorElement * meNClustersOnTrack_diskp2
MonitorElement * meClChargeNotOnTrack_fpix
MonitorElement * meClSizeOnTrack_diskp1
#define DEFINE_FWK_MODULE(type)
MonitorElement * meNClustersNotOnTrack_diskp1
LocalPoint localPosition() const
MonitorElement * meClSizeXOnTrack_layer2
MonitorElement * meClSizeNotOnTrack_layer3
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Geom::Phi< T > phi() const
MonitorElement * meHitProbability
virtual SubDetector subDetector() const =0
Which subdetector.
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * meClChargeNotOnTrack_diskm2
MonitorElement * meClChargeOnTrack_layer2
MonitorElement * meClPosLayer2NotOnTrack
MonitorElement * meClSizeXNotOnTrack_diskm2
MonitorElement * meClChargeOnTrack_diskm1
virtual void endJob(void)
MonitorElement * meClSizeYNotOnTrack_bpix
MonitorElement * meClChargeNotOnTrack_all
MonitorElement * meNofClustersOnTrack_
MonitorElement * meClSizeXNotOnTrack_diskp1
data_type const * const_iterator
std::pair< const_iterator, const_iterator > range
MonitorElement * meClSizeYOnTrack_layer3
const_iterator find(id_type i) const
MonitorElement * meSubdetResidualY[3]
MonitorElement * meClSizeYOnTrack_bpix
SiPixelTrackResidualSource(const edm::ParameterSet &)
MonitorElement * meNClustersOnTrack_all
MonitorElement * meNofTracksInPixVol_
MonitorElement * meClSizeYNotOnTrack_layer3
virtual void beginRun(const edm::Run &r, edm::EventSetup const &iSetup)
MonitorElement * meClSizeYOnTrack_diskp2
MonitorElement * meClSizeXOnTrack_layer1
MonitorElement * meClSizeXNotOnTrack_diskp2
MonitorElement * meClSizeYOnTrack_all
MonitorElement * meClPosDisk2pzNotOnTrack
MonitorElement * meClSizeNotOnTrack_diskm2
MonitorElement * meClSizeNotOnTrack_diskp2
bool isNonnull() const
Checks for non-null.
DataContainer const & measurements() const
virtual const Topology & topology() const =0
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
MonitorElement * meClSizeXNotOnTrack_diskm1
std::vector< TrajectoryMeasurement > DataContainer
MonitorElement * meClSizeNotOnTrack_bpix
MonitorElement * meClChargeOnTrack_fpix
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * meClChargeNotOnTrack_diskm1
MonitorElement * meClPosDisk1pzOnTrack
MonitorElement * meClSizeYOnTrack_layer2
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
MonitorElement * meNClustersOnTrack_diskm2
MonitorElement * meClSizeXOnTrack_diskm2
MonitorElement * meNClustersOnTrack_layer3
MonitorElement * meClSizeNotOnTrack_layer1
MonitorElement * meClChargeNotOnTrack_layer2
MonitorElement * meClSizeNotOnTrack_diskm1
MonitorElement * meClPosLayer1NotOnTrack
MonitorElement * meClSizeXOnTrack_all
Tan< T >::type tan(const T &t)
MonitorElement * meNClustersOnTrack_fpix
MonitorElement * meClSizeOnTrack_layer1
MonitorElement * meClPosDisk1mzOnTrack
virtual MeasurementPoint measurementPosition(const LocalPoint &) const =0
LocalVector momentum() const
Momentum vector in the local frame.
const_iterator end() const
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
virtual std::vector< const GeomDet * > components() const =0
Returns direct components, if any.
virtual const GeomDet * idToDet(DetId) const
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * meClSizeXOnTrack_diskp2
MonitorElement * meNClustersOnTrack_diskm1
MonitorElement * meNClustersNotOnTrack_fpix
MonitorElement * meNClustersOnTrack_bpix
MonitorElement * meNClustersNotOnTrack_layer3
MonitorElement * meNClustersNotOnTrack_layer2
~SiPixelTrackResidualSource()
MonitorElement * meClSizeXNotOnTrack_layer1
std::map< uint32_t, SiPixelTrackResidualModule * > theSiPixelStructure
MonitorElement * meClSizeNotOnTrack_diskp1
MonitorElement * meNClustersOnTrack_diskp1
size_type size() const
map size
MonitorElement * meClPosDisk2pzOnTrack
MonitorElement * meClSizeXNotOnTrack_bpix
ConstRecHitContainer RecHitContainer
MonitorElement * meClSizeOnTrack_diskm1
const unsigned int detId() const
MonitorElement * meClPosDisk2mzNotOnTrack
MonitorElement * meClSizeXNotOnTrack_fpix
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
key_type key() const
Accessor for product key.
int layerName() const
layer id
T const * product() const
MonitorElement * meClSizeYNotOnTrack_layer2
MonitorElement * meClSizeXOnTrack_diskp1
MonitorElement * meClSizeXNotOnTrack_layer2
T const * product() const
MonitorElement * meClSizeYOnTrack_layer1
MonitorElement * meNClustersOnTrack_layer1
MonitorElement * meClSizeOnTrack_layer2
MonitorElement * meClSizeOnTrack_diskp2
MonitorElement * meClChargeNotOnTrack_bpix
MonitorElement * meClSizeOnTrack_diskm2
Pixel cluster – collection of neighboring pixels above threshold.
virtual std::vector< Trajectory > fit(const Trajectory &) const =0
MonitorElement * meClPosLayer1OnTrack
MonitorElement * meClSizeYOnTrack_diskp1
MonitorElement * meClSizeXOnTrack_fpix
MonitorElement * meClChargeOnTrack_diskm2
MonitorElement * meClChargeNotOnTrack_layer1
MonitorElement * meNClustersNotOnTrack_diskp2
MonitorElement * meNClustersNotOnTrack_layer1
MonitorElement * meClChargeOnTrack_layer3
MonitorElement * meNClustersOnTrack_layer2
MonitorElement * meClChargeNotOnTrack_diskp1
MonitorElement * meClSizeNotOnTrack_all
edm::InputTag clustersrc_
MonitorElement * meClChargeOnTrack_layer1
MonitorElement * meClSizeYOnTrack_diskm1
int diskName() const
disk id
MonitorElement * meClSizeYNotOnTrack_diskp2
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
MonitorElement * meNClustersNotOnTrack_bpix
const_iterator begin() const
first iterator over the map (read only)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
MonitorElement * meClChargeOnTrack_diskp2
MonitorElement * meClSizeYNotOnTrack_layer1
MonitorElement * meClChargeOnTrack_bpix
MonitorElement * meClPosDisk1pzNotOnTrack
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
MonitorElement * meClSizeOnTrack_fpix
MonitorElement * meClSizeXNotOnTrack_layer3
MonitorElement * meClSizeYOnTrack_diskm2
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * meNofClustersNotOnTrack_
MonitorElement * meClSizeYNotOnTrack_all
MonitorElement * meClPosLayer3OnTrack
virtual const BoundPlane & surface() const
The nominal surface of the GeomDet.
MonitorElement * meClPosDisk2mzOnTrack
Power< A, B >::type pow(const A &a, const B &b)
void setCurrentFolder(const std::string &fullpath)
MonitorElement * meClSizeXOnTrack_layer3
bool setModuleFolder(const uint32_t &rawdetid=0, int type=0)
Set folder name for a module or plaquette.
MonitorElement * meClSizeXOnTrack_diskm1
MonitorElement * meClChargeNotOnTrack_diskp2
MonitorElement * meClSizeYNotOnTrack_diskm1
MonitorElement * meClChargeOnTrack_diskp1