File indexing completed on 2024-09-07 04:37:03
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include "L1Trigger/L1TTwinMux/interface/IOPrinter.h"
0013 #include "L1Trigger/L1TTwinMux/interface/L1MuTMChambPhContainer.h"
0014 #include "DataFormats/Common/interface/Handle.h"
0015
0016 using namespace std;
0017
0018 void IOPrinter::run(edm::Handle<L1MuDTChambPhContainer> inphiDigis,
0019 const L1MuDTChambPhContainer& outphiDigis,
0020 edm::Handle<RPCDigiCollection> rpcDigis,
0021 const RPCGeometry& rpcGeometry) {
0022 cout << "======================================================" << endl;
0023 int bx = 0, wheel = 0, sector = 0, station = 1;
0024
0025
0026 cout << "DT Inputs/RPCDT Inputs" << endl;
0027 cout << "bx\twheel\tsector\tstation\tphi\tphib\tcode\tts2tag\tbxcnt\trpcbit" << endl;
0028
0029 for (bx = -2; bx <= 2; bx++) {
0030 for (wheel = -2; wheel <= 2; wheel++) {
0031 for (sector = 0; sector < 12; sector++) {
0032 for (station = 1; station <= 4; station++) {
0033 auto dtts1 = inphiDigis->chPhiSegm1(wheel, station, sector, bx);
0034 auto dtts2 = inphiDigis->chPhiSegm2(wheel, station, sector, bx - 1);
0035 if (dtts1 && dtts1->code() != 7) {
0036 L1MuDTChambPhDigi dt_ts1 = *dtts1;
0037 cout << dtts1->bxNum() << "\t" << dtts1->whNum() << "\t" << dtts1->scNum() << "\t" << dtts1->stNum() << "\t"
0038 << dtts1->phi() << "\t" << dtts1->phiB() << "\t" << dtts1->code() << "\t" << dtts1->Ts2Tag() << "\t"
0039 << dtts1->BxCnt() << "\t0" << endl;
0040 }
0041 if (dtts2 && dtts2->code() != 7) {
0042 L1MuDTChambPhDigi dt_ts2 = *dtts2;
0043 cout << dtts2->bxNum() << "\t" << dtts2->whNum() << "\t" << dtts2->scNum() << "\t" << dtts2->stNum() << "\t"
0044 << dtts2->phi() << "\t" << dtts2->phiB() << "\t" << dtts2->code() << "\t" << dtts2->Ts2Tag() << "\t"
0045 << dtts2->BxCnt() << "\t0" << endl;
0046 }
0047 }
0048 }
0049 }
0050 }
0051
0052 cout << endl;
0053
0054 cout << "RPC Inputs" << endl;
0055 cout << "bx\tring\tsector\tstation\troll\tlayer\tstrip\tphi\tlocalX" << endl;
0056
0057 for (auto chamber = rpcDigis->begin(); chamber != rpcDigis->end(); ++chamber) {
0058 RPCDetId detid = (*chamber).first;
0059 for (auto digi = (*chamber).second.first; digi != (*chamber).second.second; ++digi) {
0060 RPCDigi digi_out(digi->strip(), digi->bx());
0061
0062 int phi = RPCtoDTTranslator::radialAngle(detid, rpcGeometry, digi->strip()) << 2;
0063 float localx = RPCtoDTTranslator::localX(detid, rpcGeometry, digi->strip());
0064 cout << digi->bx() << "\t" << detid.ring() << "\t" << detid.sector() - 1 << "\t" << detid.station() << "\t"
0065 << detid.roll() << "\t" << detid.layer() << "\t" << digi->strip() << "\t" << phi << "\t" << localx << endl;
0066 }
0067 }
0068 cout << endl;
0069
0070 cout << "TwinMux Output" << endl;
0071 cout << "bx\twheel\tsector\tstation\tphi\tphib\tcode\tts2tag\tbxcnt\trpcbit" << endl;
0072
0073 for (bx = -2; bx <= 2; bx++) {
0074 for (wheel = -2; wheel <= 2; wheel++) {
0075 for (sector = 0; sector < 12; sector++) {
0076 for (station = 1; station <= 4; station++) {
0077 auto dtts1 = outphiDigis.chPhiSegm1(wheel, station, sector, bx);
0078 auto dtts2 = outphiDigis.chPhiSegm2(wheel, station, sector, bx - 1);
0079 if (dtts1 && dtts1->code() != 7) {
0080 L1MuDTChambPhDigi dt_ts1 = *dtts1;
0081 cout << dtts1->bxNum() << "\t" << dtts1->whNum() << "\t" << dtts1->scNum() << "\t" << dtts1->stNum() << "\t"
0082 << dtts1->phi() << "\t" << dtts1->phiB() << "\t" << dtts1->code() << "\t" << dtts1->Ts2Tag() << "\t"
0083 << dtts1->BxCnt() << "\t" << dtts1->RpcBit() << endl;
0084 }
0085 if (dtts2 && dtts2->code() != 7) {
0086 L1MuDTChambPhDigi dt_ts2 = *dtts2;
0087 cout << dtts2->bxNum() << "\t" << dtts2->whNum() << "\t" << dtts2->scNum() << "\t" << dtts2->stNum() << "\t"
0088 << dtts2->phi() << "\t" << dtts2->phiB() << "\t" << dtts2->code() << "\t" << dtts2->Ts2Tag() << "\t"
0089 << dtts2->BxCnt() << "\t" << dtts2->RpcBit() << endl;
0090 }
0091 }
0092 }
0093 }
0094 }
0095
0096 cout << "======================================================" << endl;
0097 }
0098
0099 void IOPrinter::run(L1MuDTChambPhContainer const* inphiDigis,
0100 const L1MuDTChambPhContainer& outphiDigis,
0101 RPCDigiCollection const* rpcDigis,
0102 const RPCGeometry& rpcGeometry) {
0103 cout << "======================================================" << endl;
0104 int bx = 0, wheel = 0, sector = 0, station = 1;
0105 L1MuTMChambPhContainer inphiDigis_tm;
0106 const std::vector<L1MuDTChambPhDigi>* vInCon = inphiDigis->getContainer();
0107 inphiDigis_tm.setContainer(*vInCon);
0108
0109
0110 cout << "RPC->DT Inputs" << endl;
0111 cout << "bx\twheel\tsector\tstation\tphi\tphib\tcode\tts2tag\tbxcnt\trpcbit" << endl;
0112
0113 for (bx = -2; bx <= 2; bx++) {
0114 for (wheel = -2; wheel <= 2; wheel++) {
0115 for (sector = 0; sector < 12; sector++) {
0116 for (station = 1; station <= 4; station++) {
0117 int nhits = DTRPCBxCorrection::nRPCHits(*inphiDigis, bx, wheel, sector, station);
0118 for (int hit = 0; hit < nhits; hit++) {
0119 auto dtts1 = inphiDigis_tm.chPhiSegm(wheel, station, sector, bx, hit);
0120 if (dtts1) {
0121 cout << dtts1->bxNum() << "\t" << dtts1->whNum() << "\t" << dtts1->scNum() << "\t" << dtts1->stNum()
0122 << "\t" << dtts1->phi() << "\t" << dtts1->phiB() << "\t" << dtts1->code() << "\t" << dtts1->Ts2Tag()
0123 << "\t" << dtts1->BxCnt() << "\t0" << endl;
0124 }
0125 }
0126 }
0127 }
0128 }
0129 }
0130
0131 cout << endl;
0132
0133 cout << "RPC Inputs" << endl;
0134 cout << "bx\tring\tsector\tstation\troll\tlayer\tstrip\tphi\tlocalX" << endl;
0135
0136 for (auto chamber = rpcDigis->begin(); chamber != rpcDigis->end(); ++chamber) {
0137 RPCDetId detid = (*chamber).first;
0138 for (auto digi = (*chamber).second.first; digi != (*chamber).second.second; ++digi) {
0139 RPCDigi digi_out(digi->strip(), digi->bx());
0140
0141 int phi = RPCtoDTTranslator::radialAngle(detid, rpcGeometry, digi->strip()) << 2;
0142 float localx = RPCtoDTTranslator::localX(detid, rpcGeometry, digi->strip());
0143 cout << digi->bx() << "\t" << detid.ring() << "\t" << detid.sector() - 1 << "\t" << detid.station() << "\t"
0144 << detid.roll() << "\t" << detid.layer() << "\t" << digi->strip() << "\t" << phi << "\t" << localx << endl;
0145 }
0146 }
0147 cout << endl;
0148
0149 cout << "TwinMux Output" << endl;
0150 cout << "bx\twheel\tsector\tstation\tphi\tphib\tcode\tts2tag\tbxcnt\trpcbit" << endl;
0151
0152 for (bx = -2; bx <= 2; bx++) {
0153 for (wheel = -2; wheel <= 2; wheel++) {
0154 for (sector = 0; sector < 12; sector++) {
0155 for (station = 1; station <= 4; station++) {
0156 auto dtts1 = outphiDigis.chPhiSegm1(wheel, station, sector, bx);
0157 auto dtts2 = outphiDigis.chPhiSegm2(wheel, station, sector, bx - 1);
0158 if (dtts1 && dtts1->code() != 7) {
0159 L1MuDTChambPhDigi dt_ts1 = *dtts1;
0160 cout << dtts1->bxNum() << "\t" << dtts1->whNum() << "\t" << dtts1->scNum() << "\t" << dtts1->stNum() << "\t"
0161 << dtts1->phi() << "\t" << dtts1->phiB() << "\t" << dtts1->code() << "\t" << dtts1->Ts2Tag() << "\t"
0162 << dtts1->BxCnt() << "\t" << dtts1->RpcBit() << endl;
0163 }
0164 if (dtts2 && dtts2->code() != 7) {
0165 L1MuDTChambPhDigi dt_ts2 = *dtts2;
0166 cout << dtts2->bxNum() << "\t" << dtts2->whNum() << "\t" << dtts2->scNum() << "\t" << dtts2->stNum() << "\t"
0167 << dtts2->phi() << "\t" << dtts2->phiB() << "\t" << dtts2->code() << "\t" << dtts2->Ts2Tag() << "\t"
0168 << dtts2->BxCnt() << "\t" << dtts2->RpcBit() << endl;
0169 }
0170 }
0171 }
0172 }
0173 }
0174
0175 cout << "======================================================" << endl;
0176 }