26 #include <CLHEP/Vector/LorentzVector.h>
27 #include "CLHEP/Units/GlobalSystemOfUnits.h"
36 G4TrkSrc_(ps.getParameter<edm::
InputTag>(
"G4TrkSrc")) {
59 Char_t hname1[50], htitle1[80];
60 Char_t hname2[50], htitle2[80];
61 Char_t hname3[50], htitle3[80];
62 Char_t hname4[50], htitle4[80];
63 Char_t hname5[50], htitle5[80];
64 Char_t hname6[50], htitle6[80];
86 htofeta =
fDBE->
book2D (
"tof_eta",
"Time of flight vs eta", nbin , -3.0 , 3.0,200,-100,100);
87 htofphi =
fDBE->
book2D(
"tof_phi",
"Time of flight vs phi", nbin,-180,180,200,-100,100);
88 htofr =
fDBE->
book2D(
"tof_r",
"Time of flight vs r", nbin , 0 , 300, 200, -100,100);
89 htofz =
fDBE->
book2D(
"tof_z",
"Time of flight vs z", nbin , -280 , 280, 200, -100,100);
92 const float E2NEL = 1.;
94 const char *
Region[] = {
"005",
"051",
"115",
"152",
"225",
"253",
95 "-050",
"-105",
"-151",
"-215",
"-252",
"-325"};
99 for(
int i=0;
i<12;
i++) {
101 sprintf (htitle1,
"Energy loss in TIB %s", Region[
i]);
102 sprintf (htitle2,
"Energy loss in TOB %s", Region[i]);
103 sprintf (htitle3,
"Energy loss in TID %s", Region[i]);
104 sprintf (htitle4,
"Energy loss in TEC %s", Region[i]);
105 sprintf (htitle5,
"Energy loss in BPIX %s", Region[i]);
106 sprintf (htitle6,
"Energy loss in FPIX %s", Region[i]);
108 sprintf (hname1,
"Eloss_TIB_%i",i+1);
109 sprintf (hname2,
"Eloss_TOB_%i",i+1);
110 sprintf (hname3,
"Eloss_TID_%i",i+1);
111 sprintf (hname4,
"Eloss_TEC_%i",i+1);
112 sprintf (hname5,
"Eloss_BPIX_%i",i+1);
113 sprintf (hname6,
"Eloss_FPIX_%i",i+1);
116 h1e[
i] =
fDBE->
book1D (hname1, htitle1, nbin , 0.0 , 0.001*E2NEL);
118 h2e[
i] =
fDBE->
book1D (hname2, htitle2, nbin , 0.0 , 0.001*E2NEL);
120 h3e[
i] =
fDBE->
book1D (hname3, htitle3, nbin , 0.0 , 0.001*E2NEL);
122 h4e[
i] =
fDBE->
book1D (hname4, htitle4, nbin , 0.0 , 0.001*E2NEL);
124 h5e[
i] =
fDBE->
book1D (hname5, htitle5, nbin , 0.0 , 0.001*E2NEL);
126 h6e[
i] =
fDBE->
book1D (hname6, htitle6, nbin , 0.0 , 0.001*E2NEL);
131 const float high[] = {0.03, 0.03, 0.02, 0.03, 0.03, 0.03};
132 const float low[] = {-0.03, -0.03, -0.02, -0.03, -0.03, -0.03};
134 for(
int i=0;
i<12;
i++) {
136 sprintf (htitle1,
"Entryx-Exitx in TIB %s", Region[
i]);
137 sprintf (htitle2,
"Entryx-Exitx in TOB %s", Region[i]);
138 sprintf (htitle3,
"Entryx-Exitx in TID %s", Region[i]);
139 sprintf (htitle4,
"Entryx-Exitx in TEC %s", Region[i]);
140 sprintf (htitle5,
"Entryx-Exitx in BPIX %s", Region[i]);
141 sprintf (htitle6,
"Entryx-Exitx in FPIX %s", Region[i]);
143 sprintf (hname1,
"Entryx-Exitx_TIB_%i",i+1);
144 sprintf (hname2,
"Entryx-Exitx_TOB_%i",i+1);
145 sprintf (hname3,
"Entryx-Exitx_TID_%i",i+1);
146 sprintf (hname4,
"Entryx-Exitx_TEC_%i",i+1);
147 sprintf (hname5,
"Entryx-Exitx_BPIX_%i",i+1);
148 sprintf (hname6,
"Entryx-Exitx_FPIX_%i",i+1);
165 const float high0[] = {0.05, 0.06, 0.03, 0.03, 0.03, 0.03};
166 const float low0[] = {-0.05, -0.06, -0.03, -0.03, -0.03, -0.03};
168 for(
int i=0;
i<12;
i++) {
170 sprintf (htitle1,
"Entryy-Exity in TIB %s", Region[
i]);
171 sprintf (htitle2,
"Entryy-Exity in TOB %s", Region[i]);
172 sprintf (htitle3,
"Entryy-Exity in TID %s", Region[i]);
173 sprintf (htitle4,
"Entryy-Exity in TEC %s", Region[i]);
174 sprintf (htitle5,
"Entryy-Exity in BPIX %s", Region[i]);
175 sprintf (htitle6,
"Entryy-Exity in FPIX %s", Region[i]);
177 sprintf (hname1,
"Entryy-Exity_TIB_%i",i+1);
178 sprintf (hname2,
"Entryy-Exity_TOB_%i",i+1);
179 sprintf (hname3,
"Entryy-Exity_TID_%i",i+1);
180 sprintf (hname4,
"Entryy-Exity_TEC_%i",i+1);
181 sprintf (hname5,
"Entryy-Exity_BPIX_%i",i+1);
182 sprintf (hname6,
"Entryy-Exity_FPIX_%i",i+1);
199 const float high1[] = {0.05, 0.06, 0.05, 0.06, 0.05, 0.05};
200 const float low1[] = {0.,0.,0.,0.,0.,0.};
202 for(
int i=0;
i<12;
i++) {
204 sprintf (htitle1,
"abs(Entryz-Exitz) in TIB %s", Region[
i]);
205 sprintf (htitle2,
"abs(Entryz-Exitz) in TOB %s", Region[i]);
206 sprintf (htitle3,
"abs(Entryz-Exitz) in TID %s", Region[i]);
207 sprintf (htitle4,
"abs(Entryz-Exitz) in TEC %s", Region[i]);
208 sprintf (htitle5,
"abs(Entryz-Exitz) in BPIX %s", Region[i]);
209 sprintf (htitle6,
"abs(Entryz-Exitz) in FPIX %s", Region[i]);
211 sprintf (hname1,
"Entryz-Exitz_TIB_%i",i+1);
212 sprintf (hname2,
"Entryz-Exitz_TOB_%i",i+1);
213 sprintf (hname3,
"Entryz-Exitz_TID_%i",i+1);
214 sprintf (hname4,
"Entryz-Exitz_TEC_%i",i+1);
215 sprintf (hname5,
"Entryz-Exitz_BPIX_%i",i+1);
216 sprintf (hname6,
"Entryz-Exitz_FPIX_%i",i+1);
234 const float high2[] = {3.2, 5.0, 5.5, 6.2, 0.85, 0.5};
235 const float low2[] = {-3.2, -5.0, -5.5, -6.2, -0.85, -0.5};
237 for(
int i=0;
i<12;
i++) {
239 sprintf (htitle1,
"Localx in TIB %s", Region[
i]);
240 sprintf (htitle2,
"Localx in TOB %s", Region[i]);
241 sprintf (htitle3,
"Localx in TID %s", Region[i]);
242 sprintf (htitle4,
"Localx in TEC %s", Region[i]);
243 sprintf (htitle5,
"Localx in BPIX %s", Region[i]);
244 sprintf (htitle6,
"Localx in FPIX %s", Region[i]);
246 sprintf (hname1,
"Localx_TIB_%i",i+1);
247 sprintf (hname2,
"Localx_TOB_%i",i+1);
248 sprintf (hname3,
"Localx_TID_%i",i+1);
249 sprintf (hname4,
"Localx_TEC_%i",i+1);
250 sprintf (hname5,
"Localx_BPIX_%i",i+1);
251 sprintf (hname6,
"Localx_FPIX_%i",i+1);
269 const float high3[] = {6.0, 10., 5.6, 10.5, 3.4, 0.52};
270 const float low3[] = {-6.0, -10., -5.6, -10.5, -3.4, -0.52};
272 for(
int i=0;
i<12;
i++) {
274 sprintf (htitle1,
"Localy in TIB %s", Region[
i]);
275 sprintf (htitle2,
"Localy in TOB %s", Region[i]);
276 sprintf (htitle3,
"Localy in TID %s", Region[i]);
277 sprintf (htitle4,
"Localy in TEC %s", Region[i]);
278 sprintf (htitle5,
"Localy in BPIX %s", Region[i]);
279 sprintf (htitle6,
"Localy in FPIX %s", Region[i]);
281 sprintf (hname1,
"Localy_TIB_%i",i+1);
282 sprintf (hname2,
"Localy_TOB_%i",i+1);
283 sprintf (hname3,
"Localy_TID_%i",i+1);
284 sprintf (hname4,
"Localy_TEC_%i",i+1);
285 sprintf (hname5,
"Localy_BPIX_%i",i+1);
286 sprintf (hname6,
"Localy_FPIX_%i",i+1);
322 if (!
fDBE->
get(
"TrackerHitsV/TrackerHit/tof_eta"))
return;
347 edm::PSimHitContainer::const_iterator itHit;
354 if (!PxlBrlLowContainer.
isValid()) {
356 <<
"Unable to find TrackerHitsPixelBarrelLowTof in event!";
362 if (!PxlBrlHighContainer.
isValid()) {
364 <<
"Unable to find TrackerHitsPixelBarrelHighTof in event!";
373 if (!PxlFwdLowContainer.
isValid()) {
375 <<
"Unable to find TrackerHitsPixelEndcapLowTof in event!";
381 if (!PxlFwdHighContainer.
isValid()) {
383 <<
"Unable to find TrackerHitsPixelEndcapHighTof in event!";
394 if (!SiTIBLowContainer.
isValid()) {
396 <<
"Unable to find TrackerHitsTIBLowTof in event!";
404 if (!SiTIBHighContainer.
isValid()) {
406 <<
"Unable to find TrackerHitsTIBHighTof in event!";
416 if (!SiTOBLowContainer.
isValid()) {
418 <<
"Unable to find TrackerHitsTOBLowTof in event!";
426 if (!SiTOBHighContainer.
isValid()) {
428 <<
"Unable to find TrackerHitsTOBHighTof in event!";
439 if (!SiTIDLowContainer.
isValid()) {
441 <<
"Unable to find TrackerHitsTIDLowTof in event!";
449 if (!SiTIDHighContainer.
isValid()) {
451 <<
"Unable to find TrackerHitsTIDHighTof in event!";
461 if (!SiTECLowContainer.
isValid()) {
463 <<
"Unable to find TrackerHitsTECLowTof in event!";
471 if (!SiTECHighContainer.
isValid()) {
473 <<
"Unable to find TrackerHitsTECHighTof in event!";
483 if (!G4TrkContainer.
isValid()) {
485 <<
"Unable to find SimTrack in event!";
497 edm::SimTrackContainer::const_iterator itTrk;
498 for (itTrk = G4TrkContainer->begin(); itTrk != G4TrkContainer->end();
503 const CLHEP::HepLorentzVector& G4Trk = CLHEP::HepLorentzVector(itTrk->momentum().x(),
504 itTrk->momentum().y(),
505 itTrk->momentum().z(),
506 itTrk->momentum().e());
507 p =
sqrt(G4Trk[0]*G4Trk[0]+G4Trk[1]*G4Trk[1]+G4Trk[2]*G4Trk[2]);
510 <<
"TrackerTest::INFO: Primary has p = 0 ";
512 double costheta = G4Trk[2]/
p;
516 if (eta>0.0 && eta<=0.5) ir = 0;
517 if (eta>0.5 && eta<=1.0) ir = 1;
518 if (eta>1.0 && eta<=1.5) ir = 2;
519 if (eta>1.5 && eta<=2.0) ir = 3;
520 if (eta>2.0 && eta<=2.5) ir = 4;
523 if (eta>-0.5 && eta<= 0.0) ir = 6;
524 if (eta>-1.0 && eta<=-0.5) ir = 7;
525 if (eta>-1.5 && eta<=-1.0) ir = 8;
526 if (eta>-2.0 && eta<=-1.5) ir = 9;
527 if (eta>-2.5 && eta<=-2.0) ir = 10;
528 if (eta<=-2.5) ir = 11;
538 for (itHit = PxlBrlLowContainer->begin(); itHit != PxlBrlLowContainer->end(); ++itHit) {
541 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
547 h5e[ir]->
Fill(itHit->energyLoss());
548 h5ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
549 h5ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
550 h5ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
551 h5lx[ir]->
Fill(itHit->localPosition().x());
552 h5ly[ir]->
Fill(itHit->localPosition().y());
554 for (itHit = PxlBrlHighContainer->begin(); itHit != PxlBrlHighContainer->end(); ++itHit) {
557 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
564 h5e[ir]->
Fill(itHit->energyLoss());
565 h5ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
566 h5ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
567 h5ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
568 h5lx[ir]->
Fill(itHit->localPosition().x());
569 h5ly[ir]->
Fill(itHit->localPosition().y());
571 for (itHit = PxlFwdLowContainer->begin(); itHit != PxlFwdLowContainer->end(); ++itHit) {
574 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
581 h6e[ir]->
Fill(itHit->energyLoss());
582 h6ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
583 h6ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
584 h6ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
585 h6lx[ir]->
Fill(itHit->localPosition().x());
586 h6ly[ir]->
Fill(itHit->localPosition().y());
588 for (itHit = PxlFwdHighContainer->begin(); itHit != PxlFwdHighContainer->end(); ++itHit) {
591 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
598 h6e[ir]->
Fill(itHit->energyLoss());
599 h6ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
600 h6ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
601 h6ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
602 h6lx[ir]->
Fill(itHit->localPosition().x());
603 h6ly[ir]->
Fill(itHit->localPosition().y());
608 for (itHit = SiTIBLowContainer->begin(); itHit != SiTIBLowContainer->end(); ++itHit) {
611 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
618 h1e[ir]->
Fill(itHit->energyLoss());
619 h1ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
620 h1ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
621 h1ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
622 h1lx[ir]->
Fill(itHit->localPosition().x());
623 h1ly[ir]->
Fill(itHit->localPosition().y());
625 for (itHit = SiTIBHighContainer->begin(); itHit != SiTIBHighContainer->end(); ++itHit) {
628 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
635 h1e[ir]->
Fill(itHit->energyLoss());
636 h1ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
637 h1ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
638 h1ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
639 h1lx[ir]->
Fill(itHit->localPosition().x());
640 h1ly[ir]->
Fill(itHit->localPosition().y());
645 for (itHit = SiTOBLowContainer->begin(); itHit != SiTOBLowContainer->end(); ++itHit) {
648 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
655 h2e[ir]->
Fill(itHit->energyLoss());
656 h2ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
657 h2ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
658 h2ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
659 h2lx[ir]->
Fill(itHit->localPosition().x());
660 h2ly[ir]->
Fill(itHit->localPosition().y());
662 for (itHit = SiTOBHighContainer->begin(); itHit != SiTOBHighContainer->end(); ++itHit) {
665 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
671 h2e[ir]->
Fill(itHit->energyLoss());
672 h2ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
673 h2ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
674 h2ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
675 h2lx[ir]->
Fill(itHit->localPosition().x());
676 h2ly[ir]->
Fill(itHit->localPosition().y());
681 for (itHit = SiTIDLowContainer->begin(); itHit != SiTIDLowContainer->end(); ++itHit) {
684 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
690 h3e[ir]->
Fill(itHit->energyLoss());
691 h3ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
692 h3ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
693 h3ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
694 h3lx[ir]->
Fill(itHit->localPosition().x());
695 h3ly[ir]->
Fill(itHit->localPosition().y());
697 for (itHit = SiTIDHighContainer->begin(); itHit != SiTIDHighContainer->end(); ++itHit) {
700 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
706 h3e[ir]->
Fill(itHit->energyLoss());
707 h3ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
708 h3ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
709 h3ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
710 h3lx[ir]->
Fill(itHit->localPosition().x());
711 h3ly[ir]->
Fill(itHit->localPosition().y());
716 for (itHit = SiTECLowContainer->begin(); itHit != SiTECLowContainer->end(); ++itHit) {
719 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
725 h4e[ir]->
Fill(itHit->energyLoss());
726 h4ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
727 h4ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
728 h4ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
729 h4lx[ir]->
Fill(itHit->localPosition().x());
730 h4ly[ir]->
Fill(itHit->localPosition().y());
732 for (itHit = SiTECHighContainer->begin(); itHit != SiTECHighContainer->end(); ++itHit) {
735 GlobalPoint gpos=det->toGlobal(itHit->localPosition());
741 h4e[ir]->
Fill(itHit->energyLoss());
742 h4ex[ir]->
Fill(itHit->entryPoint().x()-itHit->exitPoint().x());
743 h4ey[ir]->
Fill(itHit->entryPoint().y()-itHit->exitPoint().y());
744 h4ez[ir]->
Fill(std::fabs(itHit->entryPoint().z()-itHit->exitPoint().z()));
745 h4lx[ir]->
Fill(itHit->localPosition().x());
746 h4ly[ir]->
Fill(itHit->localPosition().y());
T getParameter(std::string const &) const
EventNumber_t event() const
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * h2lx[12]
edm::InputTag PxlBrlLowSrc_
MonitorElement * h1lx[12]
MonitorElement * h6ex[12]
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
MonitorElement * h1ey[12]
MonitorElement * h3ly[12]
MonitorElement * h5ez[12]
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
MonitorElement * h4ex[12]
MonitorElement * htofeta_profile
#define DEFINE_FWK_MODULE(type)
edm::InputTag SiTIBLowSrc_
MonitorElement * h1ez[12]
MonitorElement * htofr_profile
MonitorElement * h3ez[12]
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")
edm::InputTag SiTIDLowSrc_
Geom::Phi< T > phi() const
Geom::Theta< T > theta() const
edm::InputTag SiTIBHighSrc_
MonitorElement * h5ey[12]
MonitorElement * h3lx[12]
edm::InputTag PxlFwdLowSrc_
MonitorElement * htofphi_profile
MonitorElement * h6ly[12]
MonitorElement * h5ex[12]
edm::InputTag SiTECLowSrc_
MonitorElement * h5ly[12]
MonitorElement * htofz_profile
edm::InputTag SiTECHighSrc_
MonitorElement * h1ex[12]
edm::InputTag SiTOBHighSrc_
MonitorElement * h6ey[12]
Tan< T >::type tan(const T &t)
MonitorElement * h4lx[12]
~TrackerHitAnalyzer()
Destructor.
edm::InputTag SiTOBLowSrc_
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
void setVerbose(unsigned level)
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * h2ex[12]
MonitorElement * h6ez[12]
MonitorElement * h2ez[12]
MonitorElement * h5lx[12]
MonitorElement * h4ey[12]
MonitorElement * h1ly[12]
MonitorElement * h4ly[12]
MonitorElement * h3ex[12]
MonitorElement * h3ey[12]
MonitorElement * h2ey[12]
edm::InputTag PxlBrlHighSrc_
MonitorElement * h2ly[12]
void showDirStructure(void) const
TH2F * getTH2F(void) const
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
TrackerHitAnalyzer(const edm::ParameterSet &ps)
Constructor.
edm::InputTag SiTIDHighSrc_
MonitorElement * h6lx[12]
void setCurrentFolder(const std::string &fullpath)
MonitorElement * h4ez[12]
edm::InputTag PxlFwdHighSrc_