File indexing completed on 2024-04-06 11:57:26
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 #include <memory>
0026
0027
0028 #include "FWCore/Framework/interface/Frameworkfwd.h"
0029 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0030 #include "FWCore/Framework/interface/Event.h"
0031 #include "FWCore/Framework/interface/Run.h"
0032 #include "FWCore/Framework/interface/MakerMacros.h"
0033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0034 #include "DataFormats/Common/interface/Handle.h"
0035 #include "FWCore/Framework/interface/ESHandle.h"
0036 #include "FWCore/ServiceRegistry/interface/Service.h"
0037 #include "CommonTools/UtilAlgos/interface/TFileService.h"
0038
0039 #include "DataFormats/TrackReco/interface/Track.h"
0040 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0041 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0042
0043 #include "DataFormats/MuonReco/interface/Muon.h"
0044 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0045 #include "DataFormats/PatCandidates/interface/Muon.h"
0046
0047 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0048 #include "CondFormats/SiStripObjects/interface/SiStripLatency.h"
0049 #include "CondFormats/DataRecord/interface/SiStripCondDataRecords.h"
0050 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0051
0052 #include "DataFormats/Provenance/interface/Timestamp.h"
0053
0054 #include "DataFormats/DetId/interface/DetId.h"
0055 #include "DataFormats/SiStripDetId/interface/SiStripDetId.h"
0056 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
0057
0058 #include "MagneticField/Engine/interface/MagneticField.h"
0059 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0060 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0061 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
0062 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0063 #include "DataFormats/Common/interface/DetSetVector.h"
0064
0065 #include <vector>
0066 #include <string>
0067 #include <iostream>
0068 #include <fstream>
0069 #include <iomanip>
0070 #include <TTree.h>
0071
0072
0073
0074
0075 class CosmicRateAnalyzer : public edm::one::EDAnalyzer<edm::one::WatchRuns, edm::one::SharedResources> {
0076 public:
0077 explicit CosmicRateAnalyzer(const edm::ParameterSet&);
0078 ~CosmicRateAnalyzer() override;
0079
0080 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0081
0082 private:
0083 void beginJob() override;
0084 void analyze(const edm::Event&, const edm::EventSetup&) override;
0085 void endJob() override;
0086
0087 void beginRun(edm::Run const&, edm::EventSetup const&) override;
0088 void endRun(edm::Run const&, edm::EventSetup const&) override;
0089
0090 static double stampToReal(edm::Timestamp time) { return time.unixTime() + time.microsecondOffset() * 1e-6; }
0091 void ClearInEventLoop();
0092 void ClearInEndRun();
0093
0094 const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_;
0095 const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> topoToken_;
0096 const edm::ESGetToken<SiStripLatency, SiStripLatencyRcd> latencyToken_;
0097 edm::EDGetTokenT<reco::TrackCollection> trackTags_;
0098 edm::EDGetTokenT<edmNew::DetSetVector<SiStripCluster> > clustercollectionToken_;
0099 edm::EDGetTokenT<reco::MuonCollection> muonTags_;
0100 edm::RunNumber_t lastrunnum;
0101 double lastruntime, magField;
0102 edm::Service<TFileService> fs;
0103
0104 unsigned int DetectorID;
0105 TTree* treeEvent;
0106 TTree* treeRun;
0107 TTree* treeCluster;
0108
0109
0110
0111 int events;
0112 int track_BPIX;
0113 int track_FPIX;
0114 int track_PIXEL;
0115 int track_TEC;
0116 int track_TECM;
0117 int track_TECP;
0118 int track_TOB;
0119 int track_TIB;
0120 int track_TID;
0121 int track_TIDM;
0122 int track_TIDP;
0123
0124
0125 int hit_Total;
0126 int hit_PIX;
0127 int hit_BPIX;
0128 int hit_BPIX_layer1;
0129 int hit_BPIX_layer2;
0130 int hit_BPIX_layer3;
0131 int hit_BPIX_layer4;
0132 int hit_FPIX;
0133 int hit_FPIX_disk1;
0134 int hit_FPIX_disk2;
0135 int hit_FPIX_disk3;
0136 int hit_FPIX_disk1_plus;
0137 int hit_FPIX_disk2_plus;
0138 int hit_FPIX_disk3_plus;
0139 int hit_FPIX_disk1_minus;
0140 int hit_FPIX_disk2_minus;
0141 int hit_FPIX_disk3_minus;
0142
0143 std::vector<int> v_ntrk;
0144 int ntrk;
0145 int ntrk_runnum;
0146
0147
0148
0149 int number_of_tracks;
0150 int number_of_tracks_PIX;
0151 int number_of_tracks_FPIX;
0152 int number_of_tracks_BPIX;
0153 int number_of_tracks_TEC;
0154 int number_of_tracks_TECP;
0155 int number_of_tracks_TECM;
0156 int number_of_tracks_TOB;
0157 int number_of_tracks_TIB;
0158 int number_of_tracks_TID;
0159 int number_of_tracks_TIDP;
0160 int number_of_tracks_TIDM;
0161 int number_of_events;
0162 edm::RunNumber_t runnum;
0163 double run_time;
0164
0165
0166 int number_of_hits_Total;
0167 int number_of_hits_PIX;
0168 int number_of_hits_BPIX;
0169 int number_of_hits_BPIX_layer1;
0170 int number_of_hits_BPIX_layer2;
0171 int number_of_hits_BPIX_layer3;
0172 int number_of_hits_BPIX_layer4;
0173 int number_of_hits_FPIX;
0174 int number_of_hits_FPIX_disk1;
0175 int number_of_hits_FPIX_disk2;
0176 int number_of_hits_FPIX_disk3;
0177 int number_of_hits_FPIX_disk1_plus;
0178 int number_of_hits_FPIX_disk2_plus;
0179 int number_of_hits_FPIX_disk3_plus;
0180 int number_of_hits_FPIX_disk1_minus;
0181 int number_of_hits_FPIX_disk2_minus;
0182 int number_of_hits_FPIX_disk3_minus;
0183
0184
0185 std::vector<double> pt;
0186 std::vector<double> charge;
0187 std::vector<double> chi2;
0188 std::vector<double> chi2_ndof;
0189 std::vector<double> eta;
0190 std::vector<double> theta;
0191 std::vector<double> phi;
0192 std::vector<double> p;
0193 std::vector<double> d0;
0194 std::vector<double> dz;
0195 std::vector<double> nvh;
0196 std::vector<double> DTtime;
0197 std::vector<int> nh_PIXEL;
0198 std::vector<int> nh_BPIX;
0199 std::vector<int> nh_FPIX;
0200 std::vector<int> nh_TIB;
0201 std::vector<int> nh_TOB;
0202 std::vector<int> nh_TID;
0203 std::vector<int> nh_TEC;
0204
0205
0206
0207 int nHits_PIXEL;
0208
0209
0210 int nTotalTracks, nTotalEvents;
0211 };
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224 CosmicRateAnalyzer::CosmicRateAnalyzer(const edm::ParameterSet& iConfig)
0225 : magFieldToken_(esConsumes()),
0226 topoToken_(esConsumes()),
0227 latencyToken_(esConsumes()),
0228 trackTags_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracksInputTag"))),
0229 clustercollectionToken_(
0230 consumes<edmNew::DetSetVector<SiStripCluster> >(iConfig.getParameter<edm::InputTag>("tracksInputTag"))),
0231 muonTags_(consumes<reco::MuonCollection>(iConfig.getParameter<edm::InputTag>("muonsInputTag"))) {
0232
0233
0234 usesResource(TFileService::kSharedResource);
0235 treeEvent = fs->make<TTree>("Event", "");
0236 treeRun = fs->make<TTree>("Run", "");
0237 treeCluster = fs->make<TTree>("Cluster", "");
0238
0239 nTotalTracks = 0;
0240 nTotalEvents = 0;
0241 }
0242
0243 CosmicRateAnalyzer::~CosmicRateAnalyzer() {
0244
0245
0246 }
0247
0248
0249
0250
0251 void CosmicRateAnalyzer::ClearInEventLoop() {
0252 pt.clear();
0253 charge.clear();
0254 chi2.clear();
0255 chi2_ndof.clear();
0256 eta.clear();
0257 theta.clear();
0258 phi.clear();
0259 p.clear();
0260 d0.clear();
0261 dz.clear();
0262 nvh.clear();
0263 DTtime.clear();
0264 nh_PIXEL.clear();
0265 nh_BPIX.clear();
0266 nh_FPIX.clear();
0267 nh_TIB.clear();
0268 nh_TOB.clear();
0269 nh_TID.clear();
0270 nh_TEC.clear();
0271 }
0272
0273
0274 void CosmicRateAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0275 using namespace edm;
0276
0277 using reco::TrackCollection;
0278 edm::Handle<reco::TrackCollection> tracks;
0279 iEvent.getByToken(trackTags_, tracks);
0280
0281 const TrackerTopology* const tTopo = &iSetup.getData(topoToken_);
0282 const MagneticField* magneticField = &iSetup.getData(magFieldToken_);
0283 magField = magneticField->inTesla(GlobalPoint(0, 0, 0)).mag();
0284
0285
0286 edm::Timestamp ts_begin = iEvent.getRun().beginTime();
0287 double t_begin = stampToReal(ts_begin);
0288 edm::Timestamp ts_end = iEvent.getRun().endTime();
0289 double t_end = stampToReal(ts_end);
0290
0291 lastruntime = t_end - t_begin;
0292 lastrunnum = iEvent.getRun().run();
0293
0294 if (!tracks->empty())
0295 v_ntrk.push_back(tracks->size());
0296
0297 ntrk = 0;
0298 for (TrackCollection::const_iterator itTrack1 = tracks->begin(); itTrack1 != tracks->end(); ++itTrack1) {
0299 pt.push_back(itTrack1->pt());
0300 charge.push_back(itTrack1->charge());
0301 chi2.push_back(itTrack1->chi2());
0302 chi2_ndof.push_back(itTrack1->normalizedChi2());
0303 eta.push_back(itTrack1->eta());
0304 theta.push_back(itTrack1->theta());
0305 phi.push_back(itTrack1->phi());
0306 p.push_back(itTrack1->p());
0307 d0.push_back(itTrack1->d0());
0308 dz.push_back(itTrack1->dz());
0309 nvh.push_back(itTrack1->numberOfValidHits());
0310 nh_BPIX.push_back(itTrack1->hitPattern().numberOfValidPixelBarrelHits());
0311 nh_FPIX.push_back(itTrack1->hitPattern().numberOfValidPixelEndcapHits());
0312 nh_TIB.push_back(itTrack1->hitPattern().numberOfValidStripTIBHits());
0313 nh_TOB.push_back(itTrack1->hitPattern().numberOfValidStripTOBHits());
0314 nh_TID.push_back(itTrack1->hitPattern().numberOfValidStripTIDHits());
0315 nh_TEC.push_back(itTrack1->hitPattern().numberOfValidStripTECHits());
0316
0317 nHits_PIXEL = 0;
0318
0319 int nhitinBPIX = 0;
0320 int nhitinFPIX = 0;
0321 int nhitinPIXEL = 0;
0322 int nhitinTEC = 0;
0323 int nhitinTOB = 0;
0324 int nhitinTIB = 0;
0325 int nhitinTID = 0;
0326 int nhitinTECminus = 0;
0327 int nhitinTECplus = 0;
0328 int nhitinTIDminus = 0;
0329 int nhitinTIDplus = 0;
0330
0331 for (auto const& hit1 : itTrack1->recHits()) {
0332 const DetId detId1(hit1->geographicalId());
0333 const int subdetId1 = detId1.subdetId();
0334 uint32_t detid_db = detId1.rawId();
0335 if (!hit1->isValid())
0336 continue;
0337 hit_Total++;
0338
0339
0340
0341
0342 if (PixelSubdetector::PixelBarrel == subdetId1) {
0343 ++nhitinBPIX;
0344 ++nhitinPIXEL;
0345 ++nHits_PIXEL;
0346 ++hit_PIX;
0347 ++hit_BPIX;
0348
0349 int BPIX_layer = (tTopo->pxbLayer(detid_db));
0350 if (BPIX_layer == 1) {
0351 ++hit_BPIX_layer1;
0352 } else if (BPIX_layer == 2) {
0353 ++hit_BPIX_layer2;
0354 } else if (BPIX_layer == 3) {
0355 ++hit_BPIX_layer3;
0356 } else if (BPIX_layer == 4) {
0357 ++hit_BPIX_layer4;
0358 } else {
0359 std::cout << "CAUTION : Check Phase! BPIX layer not in {1,2,3}!" << std::endl;
0360 std::cout << "Layer is : " << BPIX_layer << std::endl;
0361 }
0362
0363 }
0364
0365
0366
0367 else if (PixelSubdetector::PixelEndcap == subdetId1) {
0368 ++nhitinFPIX;
0369 ++nhitinPIXEL;
0370
0371 ++nHits_PIXEL;
0372 ++hit_PIX;
0373 ++hit_FPIX;
0374
0375 int FPIX_side = (tTopo->pxfSide(detid_db));
0376 int FPIX_disk = (tTopo->pxfDisk(detid_db));
0377
0378 if (FPIX_disk == 1) {
0379 ++hit_FPIX_disk1;
0380 } else if (FPIX_disk == 2) {
0381 ++hit_FPIX_disk2;
0382 } else if (FPIX_disk == 3) {
0383 ++hit_FPIX_disk3;
0384 } else {
0385 std::cout << "CAUTION : Check Phase! FPIX disk not in {1,2}!" << std::endl;
0386 std::cout << "Disk is : " << FPIX_disk << std::endl;
0387 }
0388
0389 if (FPIX_disk == 1 && FPIX_side == 1) {
0390 ++hit_FPIX_disk1_minus;
0391 } else if (FPIX_disk == 1 && FPIX_side == 2) {
0392 ++hit_FPIX_disk1_plus;
0393 } else if (FPIX_disk == 2 && FPIX_side == 1) {
0394 ++hit_FPIX_disk2_minus;
0395 } else if (FPIX_disk == 2 && FPIX_side == 2) {
0396 ++hit_FPIX_disk2_plus;
0397 } else if (FPIX_disk == 3 && FPIX_side == 1) {
0398 ++hit_FPIX_disk3_minus;
0399 } else if (FPIX_disk == 3 && FPIX_side == 2) {
0400 ++hit_FPIX_disk3_plus;
0401 } else {
0402 std::cout << "CAUTION : FPIX side not in {1,2}!" << std::endl;
0403 }
0404
0405 }
0406
0407
0408
0409 else if (SiStripDetId::TEC == subdetId1) {
0410 ++nhitinTEC;
0411
0412 if (tTopo->tecIsZMinusSide(detId1)) {
0413 ++nhitinTECminus;
0414 } else {
0415 ++nhitinTECplus;
0416 }
0417 }
0418
0419
0420
0421 else if (SiStripDetId::TOB == subdetId1) {
0422 ++nhitinTOB;
0423 }
0424
0425
0426
0427 else if (SiStripDetId::TIB == subdetId1) {
0428 ++nhitinTIB;
0429 }
0430
0431
0432
0433 else if (SiStripDetId::TID == subdetId1) {
0434 ++nhitinTID;
0435
0436 if (tTopo->tidIsZMinusSide(detId1)) {
0437 ++nhitinTIDminus;
0438 } else {
0439 ++nhitinTIDplus;
0440 }
0441 }
0442
0443 }
0444
0445 nh_PIXEL.push_back(nHits_PIXEL);
0446
0447 if (nhitinBPIX > 0) {
0448 track_BPIX++;
0449 }
0450 if (nhitinFPIX > 0) {
0451 track_FPIX++;
0452 }
0453 if (nhitinPIXEL > 0) {
0454 track_PIXEL++;
0455 }
0456 if (nhitinTEC > 0) {
0457 track_TEC++;
0458 }
0459 if (nhitinTECminus > 0) {
0460 track_TECM++;
0461 }
0462 if (nhitinTECplus > 0) {
0463 track_TECP++;
0464 }
0465 if (nhitinTOB > 0) {
0466 track_TOB++;
0467 }
0468 if (nhitinTIB > 0) {
0469 track_TIB++;
0470 }
0471 if (nhitinTID > 0) {
0472 track_TID++;
0473 }
0474 if (nhitinTIDminus > 0) {
0475 track_TIDM++;
0476 }
0477 if (nhitinTIDplus > 0) {
0478 track_TIDP++;
0479 }
0480
0481 ntrk++;
0482 ntrk_runnum++;
0483 nTotalTracks++;
0484 }
0485 events++;
0486
0487 Handle<edmNew::DetSetVector<SiStripCluster> > cluster;
0488 iEvent.getByToken(clustercollectionToken_, cluster);
0489
0490 for (edmNew::DetSetVector<SiStripCluster>::const_iterator det = cluster->begin(); det != cluster->end(); ++det) {
0491 DetectorID = (det->detId());
0492 treeCluster->Fill();
0493 }
0494
0495 edm::Handle<reco::MuonCollection> muH;
0496 iEvent.getByToken(muonTags_, muH);
0497 const reco::MuonCollection& muonsT0 = *(muH.product());
0498 float time = -9999.;
0499 for (unsigned int i = 0; i < muonsT0.size(); i++) {
0500
0501 reco::MuonTime mt0 = muonsT0[i].time();
0502 time = mt0.timeAtIpInOut;
0503 DTtime.push_back(time);
0504 }
0505
0506 treeEvent->Fill();
0507 ClearInEventLoop();
0508 nTotalEvents++;
0509
0510 }
0511
0512
0513 void CosmicRateAnalyzer::beginJob() {
0514
0515 treeEvent->Branch("pt", &pt);
0516 treeEvent->Branch("charge", &charge);
0517 treeEvent->Branch("chi2", &chi2);
0518 treeEvent->Branch("chi2_ndof", &chi2_ndof);
0519 treeEvent->Branch("eta", &eta);
0520 treeEvent->Branch("theta", &theta);
0521 treeEvent->Branch("phi", &phi);
0522 treeEvent->Branch("p", &p);
0523 treeEvent->Branch("d0", &d0);
0524 treeEvent->Branch("dz", &dz);
0525 treeEvent->Branch("nvh", &nvh);
0526 treeEvent->Branch("ntrk", &ntrk);
0527 treeEvent->Branch("nHitsPIXEL", &nh_PIXEL);
0528 treeEvent->Branch("nHitsBPIX", &nh_BPIX);
0529 treeEvent->Branch("nHitsFPIX", &nh_FPIX);
0530 treeEvent->Branch("nHitsTIB", &nh_TIB);
0531 treeEvent->Branch("nHitsTOB", &nh_TOB);
0532 treeEvent->Branch("nHitsTID", &nh_TID);
0533 treeEvent->Branch("nHitsTEC", &nh_TEC);
0534 treeEvent->Branch("DTtime", &DTtime);
0535 treeEvent->Branch("magField", &magField);
0536
0537
0538 treeRun->Branch("run_time", &run_time);
0539 treeRun->Branch("runnum", &runnum);
0540
0541 treeRun->Branch("number_of_events", &number_of_events);
0542 treeRun->Branch("number_of_tracks", &number_of_tracks);
0543 treeRun->Branch("number_of_tracks_PIX", &number_of_tracks_PIX);
0544 treeRun->Branch("number_of_tracks_FPIX", &number_of_tracks_FPIX);
0545 treeRun->Branch("number_of_tracks_BPIX", &number_of_tracks_BPIX);
0546 treeRun->Branch("number_of_tracks_TID", &number_of_tracks_TID);
0547 treeRun->Branch("number_of_tracks_TIDM", &number_of_tracks_TIDM);
0548 treeRun->Branch("number_of_tracks_TIDP", &number_of_tracks_TIDP);
0549 treeRun->Branch("number_of_tracks_TIB", &number_of_tracks_TIB);
0550 treeRun->Branch("number_of_tracks_TEC", &number_of_tracks_TEC);
0551 treeRun->Branch("number_of_tracks_TECP", &number_of_tracks_TECP);
0552 treeRun->Branch("number_of_tracks_TECM", &number_of_tracks_TECM);
0553 treeRun->Branch("number_of_tracks_TOB", &number_of_tracks_TOB);
0554
0555 treeRun->Branch("number_of_hits_Total", &number_of_hits_Total);
0556 treeRun->Branch("number_of_hits_PIX", &number_of_hits_PIX);
0557 treeRun->Branch("number_of_hits_BPIX", &number_of_hits_BPIX);
0558 treeRun->Branch("number_of_hits_BPIX_layer1", &number_of_hits_BPIX_layer1);
0559 treeRun->Branch("number_of_hits_BPIX_layer2", &number_of_hits_BPIX_layer2);
0560 treeRun->Branch("number_of_hits_BPIX_layer3", &number_of_hits_BPIX_layer3);
0561 treeRun->Branch("number_of_hits_BPIX_layer4", &number_of_hits_BPIX_layer4);
0562 treeRun->Branch("number_of_hits_FPIX", &number_of_hits_FPIX);
0563 treeRun->Branch("number_of_hits_FPIX_disk1", &number_of_hits_FPIX_disk1);
0564 treeRun->Branch("number_of_hits_FPIX_disk2", &number_of_hits_FPIX_disk2);
0565 treeRun->Branch("number_of_hits_FPIX_disk3", &number_of_hits_FPIX_disk3);
0566 treeRun->Branch("number_of_hits_FPIX_disk1_plus", &number_of_hits_FPIX_disk1_plus);
0567 treeRun->Branch("number_of_hits_FPIX_disk1_minus", &number_of_hits_FPIX_disk1_minus);
0568 treeRun->Branch("number_of_hits_FPIX_disk2_plus", &number_of_hits_FPIX_disk2_plus);
0569 treeRun->Branch("number_of_hits_FPIX_disk2_minus", &number_of_hits_FPIX_disk2_minus);
0570 treeRun->Branch("number_of_hits_FPIX_disk3_plus", &number_of_hits_FPIX_disk3_plus);
0571 treeRun->Branch("number_of_hits_FPIX_disk3_minus", &number_of_hits_FPIX_disk3_minus);
0572
0573
0574 treeCluster->Branch("DetID", &DetectorID);
0575 }
0576
0577
0578 void CosmicRateAnalyzer::endJob() {
0579 std::cout << "Total Events: " << nTotalEvents << std::endl;
0580 std::cout << "TotalTracks: " << nTotalTracks << std::endl;
0581 }
0582
0583
0584 void CosmicRateAnalyzer::beginRun(edm::Run const&, edm::EventSetup const&) {
0585 lastruntime = 0.0;
0586 lastrunnum = 0.0;
0587 ntrk_runnum = 0.0;
0588 events = 0.0;
0589
0590 track_BPIX = 0.0;
0591 track_FPIX = 0.0;
0592 track_PIXEL = 0.0;
0593 track_TEC = 0.0;
0594 track_TECM = 0.0;
0595 track_TECP = 0.0;
0596 track_TOB = 0.0;
0597 track_TIB = 0.0;
0598 track_TID = 0.0;
0599 track_TIDM = 0.0;
0600 track_TIDP = 0.0;
0601
0602
0603 hit_Total = 0.0;
0604 hit_PIX = 0.0;
0605 hit_BPIX = 0.0;
0606 hit_BPIX_layer1 = 0.0;
0607 hit_BPIX_layer2 = 0.0;
0608 hit_BPIX_layer3 = 0.0;
0609 hit_BPIX_layer4 = 0.0;
0610 hit_FPIX = 0.0;
0611 hit_FPIX_disk1 = 0.0;
0612 hit_FPIX_disk2 = 0.0;
0613 hit_FPIX_disk3 = 0.0;
0614 hit_FPIX_disk1_plus = 0.0;
0615 hit_FPIX_disk1_minus = 0.0;
0616 hit_FPIX_disk2_plus = 0.0;
0617 hit_FPIX_disk2_minus = 0.0;
0618 hit_FPIX_disk3_plus = 0.0;
0619 hit_FPIX_disk3_minus = 0.0;
0620 }
0621
0622
0623
0624 void CosmicRateAnalyzer::endRun(edm::Run const&, edm::EventSetup const&) {
0625 number_of_tracks = ntrk_runnum;
0626 run_time = lastruntime;
0627 runnum = lastrunnum;
0628
0629 number_of_tracks_PIX = track_PIXEL;
0630 number_of_tracks_FPIX = track_FPIX;
0631 number_of_tracks_BPIX = track_BPIX;
0632 number_of_tracks_TEC = track_TEC;
0633 number_of_tracks_TECM = track_TECM;
0634 number_of_tracks_TECP = track_TECP;
0635 number_of_tracks_TOB = track_TOB;
0636 number_of_tracks_TIB = track_TIB;
0637 number_of_tracks_TID = track_TID;
0638 number_of_tracks_TIDM = track_TIDM;
0639 number_of_tracks_TIDP = track_TIDP;
0640 number_of_events = events;
0641
0642 number_of_hits_Total = hit_Total;
0643 number_of_hits_PIX = hit_PIX;
0644 number_of_hits_BPIX = hit_BPIX;
0645 number_of_hits_BPIX_layer1 = hit_BPIX_layer1;
0646 number_of_hits_BPIX_layer2 = hit_BPIX_layer2;
0647 number_of_hits_BPIX_layer3 = hit_BPIX_layer3;
0648 number_of_hits_BPIX_layer4 = hit_BPIX_layer4;
0649 number_of_hits_FPIX = hit_FPIX;
0650 number_of_hits_FPIX_disk1 = hit_FPIX_disk1;
0651 number_of_hits_FPIX_disk2 = hit_FPIX_disk2;
0652 number_of_hits_FPIX_disk3 = hit_FPIX_disk3;
0653 number_of_hits_FPIX_disk1_plus = hit_FPIX_disk1_plus;
0654 number_of_hits_FPIX_disk1_minus = hit_FPIX_disk1_minus;
0655 number_of_hits_FPIX_disk2_plus = hit_FPIX_disk2_plus;
0656 number_of_hits_FPIX_disk2_minus = hit_FPIX_disk2_minus;
0657 number_of_hits_FPIX_disk3_plus = hit_FPIX_disk3_plus;
0658 number_of_hits_FPIX_disk3_minus = hit_FPIX_disk3_minus;
0659
0660 treeRun->Fill();
0661 }
0662
0663
0664 void CosmicRateAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0665 edm::ParameterSetDescription desc;
0666 desc.setComment("Create tuple with all variables required to calculate cosmic event and track rates.");
0667 desc.add<edm::InputTag>("tracksInputTag", edm::InputTag("ALCARECOTkAlCosmicsCTF0T"));
0668 desc.add<edm::InputTag>("muonsInputTag", edm::InputTag("muons1Leg"));
0669 descriptions.add("cosmicRateAnalyzer", desc);
0670 }
0671
0672
0673 DEFINE_FWK_MODULE(CosmicRateAnalyzer);