File indexing completed on 2023-05-08 23:19:19
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020 #include <memory>
0021 #include <fstream>
0022 #include <sys/time.h>
0023 #include <string>
0024 #include <sstream>
0025 #include <iostream>
0026 #include <iomanip>
0027
0028
0029 #include "TFile.h"
0030 #include "TH1F.h"
0031 #include "TH2F.h"
0032 #include "TF1.h"
0033 #include "THStack.h"
0034 #include "TLegend.h"
0035 #include "TLatex.h"
0036 #include "TTree.h"
0037 #include "TCanvas.h"
0038 #include "TDirectoryFile.h"
0039 #include "TGraph.h"
0040 #include "TGraphErrors.h"
0041 #include "TGraphAsymmErrors.h"
0042
0043
0044 #include "FWCore/Framework/interface/Frameworkfwd.h"
0045 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0046 #include "FWCore/Framework/interface/Event.h"
0047 #include "FWCore/Framework/interface/ESHandle.h"
0048 #include "FWCore/Framework/interface/MakerMacros.h"
0049 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0050
0051 #include <DataFormats/GEMRecHit/interface/GEMRecHit.h>
0052 #include "DataFormats/GEMRecHit/interface/GEMRecHitCollection.h"
0053 #include <DataFormats/GEMDigi/interface/GEMDigiCollection.h>
0054 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
0055
0056 #include "Geometry/GEMGeometry/interface/GEMGeometry.h"
0057 #include <Geometry/GEMGeometry/interface/GEMEtaPartition.h>
0058 #include <Geometry/Records/interface/MuonGeometryRecord.h>
0059
0060 #include <Geometry/CommonDetUnit/interface/GeomDet.h>
0061 #include "DataFormats/Provenance/interface/Timestamp.h"
0062
0063 #include <Geometry/GEMGeometry/interface/GEMGeometry.h>
0064 #include <Geometry/DTGeometry/interface/DTGeometry.h>
0065 #include <Geometry/CSCGeometry/interface/CSCGeometry.h>
0066
0067 #include <DataFormats/GEMDigi/interface/GEMDigiCollection.h>
0068 #include "DataFormats/GEMRecHit/interface/GEMRecHitCollection.h"
0069 #include <DataFormats/MuonDetId/interface/GEMDetId.h>
0070 #include <DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h>
0071 #include <DataFormats/CSCRecHit/interface/CSCSegmentCollection.h>
0072 #include <Geometry/CommonDetUnit/interface/GeomDet.h>
0073 #include <Geometry/Records/interface/MuonGeometryRecord.h>
0074 #include <Geometry/CommonTopologies/interface/GEMStripTopology.h>
0075
0076
0077
0078
0079
0080 class TestGEMRecHitAnalyzer : public edm::one::EDAnalyzer<> {
0081 public:
0082 explicit TestGEMRecHitAnalyzer(const edm::ParameterSet&);
0083 ~TestGEMRecHitAnalyzer();
0084
0085 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0086
0087 private:
0088 virtual void analyze(const edm::Event&, const edm::EventSetup&);
0089
0090
0091 edm::ESGetToken<GEMGeometry, MuonGeometryRecord> gemGeom_Token;
0092 edm::EDGetTokenT<GEMRecHitCollection> GEMRecHit_Token;
0093
0094 std::string rootFileName;
0095 std::unique_ptr<TFile> outputfile;
0096 std::unique_ptr<TH1F> BX_RecHits_GE1in_Plus, BX_RecHits_GE1out_Plus, BX_RecHits_GE1in_Minus, BX_RecHits_GE1out_Minus;
0097 std::unique_ptr<TH1F> ST_RecHits_GE1in_Plus, ST_RecHits_GE1out_Plus, ST_RecHits_GE1in_Minus, ST_RecHits_GE1out_Minus;
0098 std::unique_ptr<TH1F> CL_RecHits_GE1in_Plus, CL_RecHits_GE1out_Plus, CL_RecHits_GE1in_Minus, CL_RecHits_GE1out_Minus;
0099 std::unique_ptr<TCanvas> BX_RecHits_GE1, ST_RecHits_GE1, CL_RecHits_GE1;
0100
0101 std::vector<double> x_n1i, y_n1i, z_n1i, r_n1i, x_n1o, y_n1o, z_n1o, r_n1o;
0102 std::vector<double> x_p1i, y_p1i, z_p1i, r_p1i, x_p1o, y_p1o, z_p1o, r_p1o;
0103 std::vector<double> x_n1, y_n1, z_n1, r_n1, x_p1, y_p1, z_p1, r_p1;
0104
0105 std::unique_ptr<TGraph> GE1in_Plus_XY_All, GE1in_Minus_XY_All, GE1out_Plus_XY_All, GE1out_Minus_XY_All,
0106 GE1out_Plus_YZ_All, GE1out_Minus_YZ_All, GE1in_Plus_YZ_All, GE1in_Minus_YZ_All, GE1_Plus_YZ_All, GE1_Minus_YZ_All;
0107 std::unique_ptr<TCanvas> Canvas_GE1_Plus_XY, Canvas_GE1_Minus_XY, Canvas_GE1_Plus_YZ, Canvas_GE1_Minus_YZ;
0108 };
0109
0110
0111
0112
0113 int n_bx = 11;
0114 double n1_bx = -5.5, n2_bx = 5.5;
0115 int n_st = 501;
0116 double n1_st = 0, n2_st = 500;
0117 int n_cl = 26;
0118 double n1_cl = -0.5, n2_cl = 25.5;
0119
0120
0121
0122
0123
0124
0125
0126
0127 TestGEMRecHitAnalyzer::TestGEMRecHitAnalyzer(const edm::ParameterSet& iConfig)
0128
0129 {
0130
0131 gemGeom_Token = esConsumes();
0132 GEMRecHit_Token = consumes<GEMRecHitCollection>(edm::InputTag("gemRecHits"));
0133 rootFileName = iConfig.getUntrackedParameter<std::string>("RootFileName");
0134 outputfile.reset(TFile::Open(rootFileName.c_str(), "RECREATE"));
0135
0136 BX_RecHits_GE1in_Plus =
0137 std::unique_ptr<TH1F>(new TH1F("BX_RecHits_GE1in_Plus", "BX_RecHits_GE1in_Plus", n_bx, n1_bx, n2_bx));
0138 BX_RecHits_GE1out_Plus =
0139 std::unique_ptr<TH1F>(new TH1F("BX_RecHits_GE1out_Plus", "BX_RecHits_GE1out_Plus", n_bx, n1_bx, n2_bx));
0140 BX_RecHits_GE1in_Minus =
0141 std::unique_ptr<TH1F>(new TH1F("BX_RecHits_GE1in_Minus", "BX_RecHits_GE1in_Minus", n_bx, n1_bx, n2_bx));
0142 BX_RecHits_GE1out_Minus =
0143 std::unique_ptr<TH1F>(new TH1F("BX_RecHits_GE1out_Minus", "BX_RecHits_GE1out_Minus", n_bx, n1_bx, n2_bx));
0144
0145 ST_RecHits_GE1in_Plus =
0146 std::unique_ptr<TH1F>(new TH1F("ST_RecHits_GE1in_Plus", "ST_RecHits_GE1in_Plus", n_st, n1_st, n2_st));
0147 ST_RecHits_GE1out_Plus =
0148 std::unique_ptr<TH1F>(new TH1F("ST_RecHits_GE1out_Plus", "ST_RecHits_GE1out_Plus", n_st, n1_st, n2_st));
0149 ST_RecHits_GE1in_Minus =
0150 std::unique_ptr<TH1F>(new TH1F("ST_RecHits_GE1in_Minus", "ST_RecHits_GE1in_Minus", n_st, n1_st, n2_st));
0151 ST_RecHits_GE1out_Minus =
0152 std::unique_ptr<TH1F>(new TH1F("ST_RecHits_GE1out_Minus", "ST_RecHits_GE1out_Minus", n_st, n1_st, n2_st));
0153
0154 CL_RecHits_GE1in_Plus =
0155 std::unique_ptr<TH1F>(new TH1F("CL_RecHits_GE1in_Plus", "CL_RecHits_GE1in_Plus", n_cl, n1_cl, n2_cl));
0156 CL_RecHits_GE1out_Plus =
0157 std::unique_ptr<TH1F>(new TH1F("CL_RecHits_GE1out_Plus", "CL_RecHits_GE1out_Plus", n_cl, n1_cl, n2_cl));
0158 CL_RecHits_GE1in_Minus =
0159 std::unique_ptr<TH1F>(new TH1F("CL_RecHits_GE1in_Minus", "CL_RecHits_GE1in_Minus", n_cl, n1_cl, n2_cl));
0160 CL_RecHits_GE1out_Minus =
0161 std::unique_ptr<TH1F>(new TH1F("CL_RecHits_GE1out_Minus", "CL_RecHits_GE1out_Minus", n_cl, n1_cl, n2_cl));
0162 }
0163
0164 TestGEMRecHitAnalyzer::~TestGEMRecHitAnalyzer() {
0165
0166
0167
0168 int mar1 = 4;
0169 int mar2 = 5;
0170 int col1 = 2;
0171 int col2 = 4;
0172
0173 outputfile->cd();
0174 BX_RecHits_GE1in_Plus->Write();
0175 BX_RecHits_GE1out_Plus->Write();
0176 BX_RecHits_GE1in_Minus->Write();
0177 BX_RecHits_GE1out_Minus->Write();
0178
0179 ST_RecHits_GE1in_Plus->Write();
0180 ST_RecHits_GE1out_Plus->Write();
0181 ST_RecHits_GE1in_Minus->Write();
0182 ST_RecHits_GE1out_Minus->Write();
0183
0184 CL_RecHits_GE1in_Plus->Write();
0185 CL_RecHits_GE1out_Plus->Write();
0186 CL_RecHits_GE1in_Minus->Write();
0187 CL_RecHits_GE1out_Minus->Write();
0188
0189 BX_RecHits_GE1 = std::unique_ptr<TCanvas>(new TCanvas("BX_RecHits_GE1", "BX_RecHits_GE1", 800, 600));
0190 ST_RecHits_GE1 = std::unique_ptr<TCanvas>(new TCanvas("ST_RecHits_GE1", "ST_RecHits_GE1", 800, 600));
0191 CL_RecHits_GE1 = std::unique_ptr<TCanvas>(new TCanvas("CL_RecHits_GE1", "CL_RecHits_GE1", 800, 600));
0192
0193 BX_RecHits_GE1->cd();
0194 BX_RecHits_GE1->Divide(2, 2);
0195 BX_RecHits_GE1->cd(1);
0196 BX_RecHits_GE1in_Plus->Draw();
0197 BX_RecHits_GE1in_Plus->GetXaxis()->SetTitle("BX [-]");
0198 BX_RecHits_GE1in_Plus->GetYaxis()->SetTitle("entries [-]");
0199 BX_RecHits_GE1in_Plus->SetTitle("GE+1in RecHits");
0200 BX_RecHits_GE1->cd(2);
0201 BX_RecHits_GE1out_Plus->Draw();
0202 BX_RecHits_GE1out_Plus->GetXaxis()->SetTitle("BX [-]");
0203 BX_RecHits_GE1out_Plus->GetYaxis()->SetTitle("entries [-]");
0204 BX_RecHits_GE1out_Plus->SetTitle("GE+1out RecHits");
0205 BX_RecHits_GE1->cd(3);
0206 BX_RecHits_GE1in_Minus->Draw();
0207 BX_RecHits_GE1in_Minus->GetXaxis()->SetTitle("BX [-]");
0208 BX_RecHits_GE1in_Minus->GetYaxis()->SetTitle("entries [-]");
0209 BX_RecHits_GE1in_Minus->SetTitle("GE-1in RecHits");
0210 BX_RecHits_GE1->cd(4);
0211 BX_RecHits_GE1out_Minus->Draw();
0212 BX_RecHits_GE1out_Minus->GetXaxis()->SetTitle("BX [-]");
0213 BX_RecHits_GE1out_Minus->GetYaxis()->SetTitle("entries [-]");
0214 BX_RecHits_GE1out_Minus->SetTitle("GE-1out RecHits");
0215
0216 ST_RecHits_GE1->cd();
0217 ST_RecHits_GE1->Divide(2, 2);
0218 ST_RecHits_GE1->cd(1);
0219 ST_RecHits_GE1in_Plus->Draw();
0220 ST_RecHits_GE1in_Plus->GetXaxis()->SetTitle("First Strip of Cluster [-]");
0221 ST_RecHits_GE1in_Plus->GetYaxis()->SetTitle("entries [-]");
0222 ST_RecHits_GE1in_Plus->SetTitle("GE+1in RecHits");
0223 ST_RecHits_GE1->cd(2);
0224 ST_RecHits_GE1out_Plus->Draw();
0225 ST_RecHits_GE1out_Plus->GetXaxis()->SetTitle("First Strip of Cluster [-]");
0226 ST_RecHits_GE1out_Plus->GetYaxis()->SetTitle("entries [-]");
0227 ST_RecHits_GE1out_Plus->SetTitle("GE+1out RecHits");
0228 ST_RecHits_GE1->cd(3);
0229 ST_RecHits_GE1in_Minus->Draw();
0230 ST_RecHits_GE1in_Minus->GetXaxis()->SetTitle("First Strip of Cluster [-]");
0231 ST_RecHits_GE1in_Minus->GetYaxis()->SetTitle("entries [-]");
0232 ST_RecHits_GE1in_Minus->SetTitle("GE-1in RecHits");
0233 ST_RecHits_GE1->cd(4);
0234 ST_RecHits_GE1out_Minus->Draw();
0235 ST_RecHits_GE1out_Minus->GetXaxis()->SetTitle("First Strip of Cluster [-]");
0236 ST_RecHits_GE1out_Minus->GetYaxis()->SetTitle("entries [-]");
0237 ST_RecHits_GE1out_Minus->SetTitle("GE-1out RecHits");
0238
0239 CL_RecHits_GE1->cd();
0240 CL_RecHits_GE1->Divide(2, 2);
0241 CL_RecHits_GE1->cd(1);
0242 CL_RecHits_GE1in_Plus->Draw();
0243 CL_RecHits_GE1in_Plus->GetXaxis()->SetTitle("Clustersize [-]");
0244 CL_RecHits_GE1in_Plus->GetYaxis()->SetTitle("entries [-]");
0245 CL_RecHits_GE1in_Plus->SetTitle("GE+1in RecHits");
0246 CL_RecHits_GE1->cd(2);
0247 CL_RecHits_GE1out_Plus->Draw();
0248 CL_RecHits_GE1out_Plus->GetXaxis()->SetTitle("Clustersize [-]");
0249 CL_RecHits_GE1out_Plus->GetYaxis()->SetTitle("entries [-]");
0250 CL_RecHits_GE1out_Plus->SetTitle("GE+1out RecHits");
0251 CL_RecHits_GE1->cd(3);
0252 CL_RecHits_GE1in_Minus->Draw();
0253 CL_RecHits_GE1in_Minus->GetXaxis()->SetTitle("Clustersize [-]");
0254 CL_RecHits_GE1in_Minus->GetYaxis()->SetTitle("entries [-]");
0255 CL_RecHits_GE1in_Minus->SetTitle("GE-1in RecHits");
0256 CL_RecHits_GE1->cd(4);
0257 CL_RecHits_GE1out_Minus->Draw();
0258 CL_RecHits_GE1out_Minus->GetXaxis()->SetTitle("Clustersize [-]");
0259 CL_RecHits_GE1out_Minus->GetYaxis()->SetTitle("entries [-]");
0260 CL_RecHits_GE1out_Minus->SetTitle("GE-1out RecHits");
0261
0262 const int n_n1i = x_n1i.size();
0263 double x_an1i[n_n1i];
0264 double y_an1i[n_n1i];
0265 double z_an1i[n_n1i];
0266 double r_an1i[n_n1i];
0267 const int n_n1o = x_n1o.size();
0268 double x_an1o[n_n1o];
0269 double y_an1o[n_n1o];
0270 double z_an1o[n_n1o];
0271 double r_an1o[n_n1o];
0272 const int n_p1i = x_p1i.size();
0273 double x_ap1i[n_p1i];
0274 double y_ap1i[n_p1i];
0275 double z_ap1i[n_p1i];
0276 double r_ap1i[n_p1i];
0277 const int n_p1o = x_p1o.size();
0278 double x_ap1o[n_p1o];
0279 double y_ap1o[n_p1o];
0280 double z_ap1o[n_p1o];
0281 double r_ap1o[n_p1o];
0282 const int n_n1 = x_n1.size();
0283 double z_an1[n_n1];
0284 double r_an1[n_n1];
0285 const int n_p1 = x_p1.size();
0286 double z_ap1[n_p1];
0287 double r_ap1[n_p1];
0288
0289 for (int i = 0; i < n_n1i; ++i) {
0290 x_an1i[i] = x_n1i[i];
0291 y_an1i[i] = y_n1i[i];
0292 z_an1i[i] = z_n1i[i];
0293 r_an1i[i] = r_n1i[i];
0294 }
0295 for (int i = 0; i < n_n1o; ++i) {
0296 x_an1o[i] = x_n1o[i];
0297 y_an1o[i] = y_n1o[i];
0298 z_an1o[i] = z_n1o[i];
0299 r_an1o[i] = r_n1o[i];
0300 }
0301 for (int i = 0; i < n_p1i; ++i) {
0302 x_ap1i[i] = x_p1i[i];
0303 y_ap1i[i] = y_p1i[i];
0304 z_ap1i[i] = z_p1i[i];
0305 r_ap1i[i] = r_p1i[i];
0306 }
0307 for (int i = 0; i < n_p1o; ++i) {
0308 x_ap1o[i] = x_p1o[i];
0309 y_ap1o[i] = y_p1o[i];
0310 z_ap1o[i] = z_p1o[i];
0311 r_ap1o[i] = r_p1o[i];
0312 }
0313 for (int i = 0; i < n_n1; ++i) {
0314 z_an1[i] = z_n1[i];
0315 r_an1[i] = r_n1[i];
0316 }
0317 for (int i = 0; i < n_p1; ++i) {
0318 z_ap1[i] = z_p1[i];
0319 r_ap1[i] = r_p1[i];
0320 }
0321
0322 GE1in_Minus_XY_All = std::unique_ptr<TGraph>(new TGraph(n_n1i, x_an1i, y_an1i));
0323 std::cout << "GE-1in All SimHits: " << n_n1i << std::endl;
0324 GE1out_Minus_XY_All = std::unique_ptr<TGraph>(new TGraph(n_n1o, x_an1o, y_an1o));
0325 std::cout << "GE-1out All SimHits: " << n_n1o << std::endl;
0326 GE1in_Plus_XY_All = std::unique_ptr<TGraph>(new TGraph(n_p1i, x_ap1i, y_ap1i));
0327 std::cout << "GE+1in All SimHits: " << n_p1i << std::endl;
0328 GE1out_Plus_XY_All = std::unique_ptr<TGraph>(new TGraph(n_p1o, x_ap1o, y_ap1o));
0329 std::cout << "GE+1out All SimHits: " << n_p1o << std::endl;
0330
0331 GE1in_Minus_YZ_All = std::unique_ptr<TGraph>(new TGraph(n_n1i, z_an1i, r_an1i));
0332 GE1out_Minus_YZ_All = std::unique_ptr<TGraph>(new TGraph(n_n1o, z_an1o, r_an1o));
0333 GE1in_Plus_YZ_All = std::unique_ptr<TGraph>(new TGraph(n_p1i, z_ap1i, r_ap1i));
0334 GE1out_Plus_YZ_All = std::unique_ptr<TGraph>(new TGraph(n_p1o, z_ap1o, r_ap1o));
0335
0336 GE1_Minus_YZ_All = std::unique_ptr<TGraph>(new TGraph(n_n1, z_an1, r_an1));
0337 GE1_Plus_YZ_All = std::unique_ptr<TGraph>(new TGraph(n_p1, z_ap1, r_ap1));
0338
0339 Canvas_GE1_Plus_XY = std::unique_ptr<TCanvas>(new TCanvas("Canvas_GE1_Plus_XY", "Canvas_GE1_Plus_XY", 800, 600));
0340 Canvas_GE1_Minus_XY = std::unique_ptr<TCanvas>(new TCanvas("Canvas_GE1_Minus_XY", "Canvas_GE1_Minus_XY", 800, 600));
0341 Canvas_GE1_Plus_YZ = std::unique_ptr<TCanvas>(new TCanvas("Canvas_GE1_Plus_YZ", "Canvas_GE1_Plus_YZ", 600, 800));
0342 Canvas_GE1_Minus_YZ = std::unique_ptr<TCanvas>(new TCanvas("Canvas_GE1_Minus_YZ", "Canvas_GE1_Minus_YZ", 600, 800));
0343
0344
0345 Canvas_GE1_Plus_XY->cd();
0346 GE1in_Plus_XY_All->SetMarkerStyle(mar1);
0347 GE1in_Plus_XY_All->SetMarkerColor(col1);
0348 GE1in_Plus_XY_All->Draw("AP");
0349 GE1out_Plus_XY_All->SetMarkerStyle(mar2);
0350 GE1out_Plus_XY_All->SetMarkerColor(col2);
0351 GE1out_Plus_XY_All->Draw("Psame");
0352 GE1in_Plus_XY_All->GetXaxis()->SetTitle("X [cm]");
0353 GE1in_Plus_XY_All->GetYaxis()->SetTitle("Y [cm]");
0354 GE1in_Plus_XY_All->SetTitle("GE+1 RecHits");
0355
0356 Canvas_GE1_Minus_XY->cd();
0357 GE1in_Minus_XY_All->SetMarkerStyle(mar1);
0358 GE1in_Minus_XY_All->SetMarkerColor(col1);
0359 GE1in_Minus_XY_All->Draw("AP");
0360 GE1out_Minus_XY_All->SetMarkerStyle(mar2);
0361 GE1out_Minus_XY_All->SetMarkerColor(col2);
0362 GE1out_Minus_XY_All->Draw("Psame");
0363 GE1in_Minus_XY_All->GetXaxis()->SetTitle("X [cm]");
0364 GE1in_Minus_XY_All->GetYaxis()->SetTitle("Y [cm]");
0365 GE1in_Minus_XY_All->SetTitle("GE-1 RecHits");
0366
0367 Canvas_GE1_Plus_YZ->cd();
0368 GE1_Plus_YZ_All->SetMarkerStyle(0);
0369 GE1_Plus_YZ_All->SetMarkerColor(0);
0370 GE1_Plus_YZ_All->Draw("AP");
0371 GE1_Plus_YZ_All->GetXaxis()->SetTitle("Z [cm]");
0372 GE1_Plus_YZ_All->GetYaxis()->SetTitle("R [cm]");
0373 GE1_Plus_YZ_All->SetTitle("GE+1 RecHits");
0374 GE1in_Plus_YZ_All->SetMarkerStyle(mar1);
0375 GE1in_Plus_YZ_All->SetMarkerColor(col1);
0376 GE1in_Plus_YZ_All->Draw("Psame");
0377 GE1out_Plus_YZ_All->SetMarkerStyle(mar2);
0378 GE1out_Plus_YZ_All->SetMarkerColor(col2);
0379 GE1out_Plus_YZ_All->Draw("Psame");
0380
0381
0382
0383
0384
0385
0386 Canvas_GE1_Minus_YZ->cd();
0387 GE1_Minus_YZ_All->SetMarkerStyle(0);
0388 GE1_Minus_YZ_All->SetMarkerColor(0);
0389 GE1_Minus_YZ_All->Draw("AP");
0390 GE1_Minus_YZ_All->GetXaxis()->SetTitle("Z [cm]");
0391 GE1_Minus_YZ_All->GetYaxis()->SetTitle("R [cm]");
0392 GE1_Minus_YZ_All->SetTitle("GE-1 RecHits");
0393 GE1in_Minus_YZ_All->SetMarkerStyle(mar1);
0394 GE1in_Minus_YZ_All->SetMarkerColor(col1);
0395 GE1in_Minus_YZ_All->Draw("Psame");
0396 GE1out_Minus_YZ_All->SetMarkerStyle(mar2);
0397 GE1out_Minus_YZ_All->SetMarkerColor(col2);
0398 GE1out_Minus_YZ_All->Draw("Psame");
0399
0400
0401
0402
0403
0404
0405 BX_RecHits_GE1->Write();
0406 ST_RecHits_GE1->Write();
0407 CL_RecHits_GE1->Write();
0408 Canvas_GE1_Plus_XY->Write();
0409 Canvas_GE1_Minus_XY->Write();
0410 Canvas_GE1_Plus_YZ->Write();
0411 Canvas_GE1_Minus_YZ->Write();
0412 }
0413
0414
0415
0416
0417
0418
0419 void TestGEMRecHitAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0420 auto gemGeom = iSetup.getHandle(gemGeom_Token);
0421
0422
0423
0424
0425 edm::Handle<GEMRecHitCollection> gemRecHits;
0426 iEvent.getByToken(GEMRecHit_Token, gemRecHits);
0427
0428
0429 GEMRecHitCollection::const_iterator recHit;
0430
0431 for (recHit = gemRecHits->begin(); recHit != gemRecHits->end(); recHit++) {
0432 GEMDetId rollId = (GEMDetId)(*recHit).gemId();
0433 LocalPoint recHitPos = recHit->localPosition();
0434 const GEMEtaPartition* rollasociated = gemGeom->etaPartition(rollId);
0435 const BoundPlane& GEMSurface = rollasociated->surface();
0436 GlobalPoint GEMGlobalPoint = GEMSurface.toGlobal(recHitPos);
0437
0438 int region = rollId.region();
0439 int station = rollId.station();
0440
0441 int layer = rollId.layer();
0442
0443
0444
0445 std::cout << "GEM Rec Hit in [DetId] = [" << rollId << "] with BX = " << recHit->BunchX()
0446 << " and Global Position = " << GEMGlobalPoint << std::endl;
0447
0448 int bx = recHit->BunchX();
0449 int cl = recHit->clusterSize();
0450 int st = recHit->firstClusterStrip();
0451
0452
0453 if (region == 1 && station == 1) {
0454 x_p1.push_back(GEMGlobalPoint.x());
0455 y_p1.push_back(GEMGlobalPoint.y());
0456 z_p1.push_back(GEMGlobalPoint.z());
0457 r_p1.push_back(sqrt(pow(GEMGlobalPoint.x(), 2) + pow(GEMGlobalPoint.y(), 2)));
0458
0459 if (layer == 1) {
0460 BX_RecHits_GE1in_Plus->Fill(bx);
0461 ST_RecHits_GE1in_Plus->Fill(st);
0462 CL_RecHits_GE1in_Plus->Fill(cl);
0463 x_p1i.push_back(GEMGlobalPoint.x());
0464 y_p1i.push_back(GEMGlobalPoint.y());
0465 z_p1i.push_back(GEMGlobalPoint.z());
0466 r_p1i.push_back(sqrt(pow(GEMGlobalPoint.x(), 2) + pow(GEMGlobalPoint.y(), 2)));
0467 }
0468 if (layer == 2) {
0469 BX_RecHits_GE1out_Plus->Fill(bx);
0470 ST_RecHits_GE1out_Plus->Fill(st);
0471 CL_RecHits_GE1out_Plus->Fill(cl);
0472 x_p1o.push_back(GEMGlobalPoint.x());
0473 y_p1o.push_back(GEMGlobalPoint.y());
0474 z_p1o.push_back(GEMGlobalPoint.z());
0475 r_p1o.push_back(sqrt(pow(GEMGlobalPoint.x(), 2) + pow(GEMGlobalPoint.y(), 2)));
0476 }
0477 }
0478
0479 if (region == -1 && station == 1) {
0480 x_n1.push_back(GEMGlobalPoint.x());
0481 y_n1.push_back(GEMGlobalPoint.y());
0482 z_n1.push_back(GEMGlobalPoint.z());
0483 r_n1.push_back(sqrt(pow(GEMGlobalPoint.x(), 2) + pow(GEMGlobalPoint.y(), 2)));
0484
0485 if (layer == 1) {
0486 BX_RecHits_GE1in_Minus->Fill(bx);
0487 ST_RecHits_GE1in_Minus->Fill(st);
0488 CL_RecHits_GE1in_Minus->Fill(cl);
0489 x_n1i.push_back(GEMGlobalPoint.x());
0490 y_n1i.push_back(GEMGlobalPoint.y());
0491 z_n1i.push_back(GEMGlobalPoint.z());
0492 r_n1i.push_back(sqrt(pow(GEMGlobalPoint.x(), 2) + pow(GEMGlobalPoint.y(), 2)));
0493 }
0494 if (layer == 2) {
0495 BX_RecHits_GE1out_Minus->Fill(bx);
0496 ST_RecHits_GE1out_Minus->Fill(st);
0497 CL_RecHits_GE1out_Minus->Fill(cl);
0498 x_n1o.push_back(GEMGlobalPoint.x());
0499 y_n1o.push_back(GEMGlobalPoint.y());
0500 z_n1o.push_back(GEMGlobalPoint.z());
0501 r_n1o.push_back(sqrt(pow(GEMGlobalPoint.x(), 2) + pow(GEMGlobalPoint.y(), 2)));
0502 }
0503 }
0504 }
0505 }
0506
0507
0508 void TestGEMRecHitAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0509
0510
0511 edm::ParameterSetDescription desc;
0512 desc.setUnknown();
0513 descriptions.addDefault(desc);
0514 }
0515
0516
0517 DEFINE_FWK_MODULE(TestGEMRecHitAnalyzer);