From db0e77d6eed9481e6fbb8734385069fbf6da7474 Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Thu, 22 Aug 2013 10:31:42 -0500 Subject: [PATCH 1/4] Try to see if this fixes the x-axis direction --- SimG4CMS/Muon/src/MuonGemFrameRotation.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SimG4CMS/Muon/src/MuonGemFrameRotation.cc b/SimG4CMS/Muon/src/MuonGemFrameRotation.cc index fbe60a5c8b0f9..406417bda5945 100644 --- a/SimG4CMS/Muon/src/MuonGemFrameRotation.cc +++ b/SimG4CMS/Muon/src/MuonGemFrameRotation.cc @@ -36,7 +36,8 @@ Local3DPoint MuonGemFrameRotation::transformPoint(const Local3DPoint & point,con << " Rotation " << rotated << std::endl; #endif if (rotated) { - return Local3DPoint(-point.x(),point.z(),point.y()); + // return Local3DPoint(-point.x(),point.z(),point.y()); + return Local3DPoint(point.x(),point.z(),-point.y()); } else { return Local3DPoint(point.x(),point.z(),-point.y()); } From 1db9620d162f081b795af9c4a4005f6dd16a121c Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Sat, 20 Jul 2013 13:08:05 +0200 Subject: [PATCH 2/4] Merging --- .../CSCDigi/interface/CSCCorrelatedLCTDigi.h | 15 +++++++++++++-- .../CSCDigi/src/CSCCorrelatedLCTDigi.cc | 19 ++++++++++++------- DataFormats/CSCDigi/src/classes_def.xml | 4 ++-- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h b/DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h index ca4d9126f5d00..0ec2c2d863195 100644 --- a/DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h +++ b/DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h @@ -5,8 +5,8 @@ * * Digi for Correlated LCT trigger primitives. * - * $Date: 2011/02/02 13:27:20 $ - * $Revision: 1.17 $ + * $Date: 2013/05/21 11:41:36 $ + * $Revision: 1.17.2.1 $ * * \author L. Gray, UF */ @@ -86,6 +86,16 @@ class CSCCorrelatedLCTDigi /// set quality code void setQuality(unsigned int q) {quality=q;} + //------- GEM matching extras --------- + /// if has any sort of associated GEM pad + bool hasGEM() const {return gemDPhi > -9. && gemDPhi < 9.;} + + /// LCT phi - gem pad phi for ME11 + float getGEMDPhi() const {return gemDPhi;} + + /// set gem pad deltaPhi for ME11 + void setGEMDPhi(const float dphi) {gemDPhi = dphi;} + private: uint16_t trknmb; uint16_t valid; @@ -99,6 +109,7 @@ class CSCCorrelatedLCTDigi uint16_t bx0; uint16_t syncErr; uint16_t cscID; + float gemDPhi; }; std::ostream & operator<<(std::ostream & o, const CSCCorrelatedLCTDigi& digi); diff --git a/DataFormats/CSCDigi/src/CSCCorrelatedLCTDigi.cc b/DataFormats/CSCDigi/src/CSCCorrelatedLCTDigi.cc index e45132b4dba1c..077c5fac51daf 100644 --- a/DataFormats/CSCDigi/src/CSCCorrelatedLCTDigi.cc +++ b/DataFormats/CSCDigi/src/CSCCorrelatedLCTDigi.cc @@ -2,8 +2,8 @@ * * Digi for Correlated LCT trigger primitives. * - * $Date: 2010/07/07 10:53:22 $ - * $Revision: 1.14 $ + * $Date: 2013/05/21 11:41:36 $ + * $Revision: 1.14.2.1 $ * * \author L.Gray, UF */ @@ -32,7 +32,8 @@ CSCCorrelatedLCTDigi::CSCCorrelatedLCTDigi(const int itrknmb, const int ivalid, mpclink(impclink), bx0(ibx0), syncErr(isyncErr), - cscID(icscID) + cscID(icscID), + gemDPhi(-99.) {} /// Default @@ -54,6 +55,7 @@ void CSCCorrelatedLCTDigi::clear() { bx0 = 0; syncErr = 0; cscID = 0; + gemDPhi = -99.; } /// Comparison @@ -61,7 +63,8 @@ bool CSCCorrelatedLCTDigi::operator==(const CSCCorrelatedLCTDigi &rhs) const { return ((trknmb == rhs.trknmb) && (quality == rhs.quality) && (keywire == rhs.keywire) && (strip == rhs.strip) && (pattern == rhs.pattern) && (bend == rhs.bend) && - (bx == rhs.bx) && (valid == rhs.valid) && (mpclink == rhs.mpclink) ); + (bx == rhs.bx) && (valid == rhs.valid) && (mpclink == rhs.mpclink) && + (gemDPhi == rhs.gemDPhi) ); } /// Debug @@ -75,7 +78,8 @@ void CSCCorrelatedLCTDigi::print() const { << " Pattern = " << getPattern() << " Bend = " << ( (getBend() == 0) ? 'L' : 'R' ) << " BX = " << getBX() - << " MPC Link = " << getMPCLink() << std::endl; + << " MPC Link = " << getMPCLink() + << " GEMDphi = " << getGEMDPhi() << std::endl; } else { std::cout << "Not a valid correlated LCT." << std::endl; @@ -88,9 +92,10 @@ std::ostream & operator<<(std::ostream & o, << ": Valid = " << digi.isValid() << " Quality = " << digi.getQuality() << " MPC Link = " << digi.getMPCLink() - << " cscID = " << digi.getCSCID() << "\n" + << " cscID = " << digi.getCSCID() + << " GEMDphi = " << digi.getGEMDPhi() << "\n" <<" cathode info: Strip = " << digi.getStrip() - << " Pattern = " << digi.getPattern() + << " Pattern = " << digi.getPattern() << " Bend = " << ((digi.getBend() == 0) ? 'L' : 'R') << "\n" <<" anode info: Key wire = " << digi.getKeyWG() << " BX = " << digi.getBX() diff --git a/DataFormats/CSCDigi/src/classes_def.xml b/DataFormats/CSCDigi/src/classes_def.xml index 2a422a7d3f1d3..0d693e7798c8b 100644 --- a/DataFormats/CSCDigi/src/classes_def.xml +++ b/DataFormats/CSCDigi/src/classes_def.xml @@ -11,8 +11,8 @@ - - + + From 3a6c8e7136fe3e44b5435f7c42033bc4e068fa84 Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Sat, 20 Jul 2013 13:00:18 +0200 Subject: [PATCH 3/4] Merging --- L1Trigger/CSCTriggerPrimitives/BuildFile.xml | 1 + .../plugins/CSCTriggerPrimitivesProducer.cc | 18 +- .../plugins/CSCTriggerPrimitivesProducer.h | 3 +- .../src/CSCMotherboardME11.cc | 198 +++++++++++++++++- .../src/CSCMotherboardME11.h | 37 +++- .../src/CSCTriggerPrimitivesBuilder.cc | 9 +- .../src/CSCTriggerPrimitivesBuilder.h | 13 +- 7 files changed, 265 insertions(+), 14 deletions(-) diff --git a/L1Trigger/CSCTriggerPrimitives/BuildFile.xml b/L1Trigger/CSCTriggerPrimitives/BuildFile.xml index 424977eb96984..ec0fe7c4a5df3 100644 --- a/L1Trigger/CSCTriggerPrimitives/BuildFile.xml +++ b/L1Trigger/CSCTriggerPrimitives/BuildFile.xml @@ -6,6 +6,7 @@ + diff --git a/L1Trigger/CSCTriggerPrimitives/plugins/CSCTriggerPrimitivesProducer.cc b/L1Trigger/CSCTriggerPrimitives/plugins/CSCTriggerPrimitivesProducer.cc index 519342b139a21..daae2945c4651 100644 --- a/L1Trigger/CSCTriggerPrimitives/plugins/CSCTriggerPrimitivesProducer.cc +++ b/L1Trigger/CSCTriggerPrimitives/plugins/CSCTriggerPrimitivesProducer.cc @@ -7,7 +7,7 @@ // // Author List: S. Valuev, UCLA. // -// $Id: CSCTriggerPrimitivesProducer.cc,v 1.16 2012/12/05 21:16:16 khotilov Exp $ +// $Id: CSCTriggerPrimitivesProducer.cc,v 1.16.2.1 2013/05/21 12:02:24 khotilov Exp $ // // Modifications: // @@ -23,6 +23,7 @@ #include "Geometry/Records/interface/MuonGeometryRecord.h" #include "L1Trigger/CSCCommonTrigger/interface/CSCTriggerGeometry.h" #include "CondFormats/DataRecord/interface/CSCBadChambersRcd.h" +#include "Geometry/GEMGeometry/interface/GEMGeometry.h" #include "DataFormats/CSCDigi/interface/CSCComparatorDigiCollection.h" #include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h" @@ -43,6 +44,7 @@ CSCTriggerPrimitivesProducer::CSCTriggerPrimitivesProducer(const edm::ParameterS wireDigiProducer_ = conf.getParameter("CSCWireDigiProducer"); compDigiProducer_ = conf.getParameter("CSCComparatorDigiProducer"); + gemPadProducer_ = conf.getUntrackedParameter("gemPadProducer", edm::InputTag()); checkBadChambers_ = conf.getUntrackedParameter("checkBadChambers", true); lctBuilder_ = new CSCTriggerPrimitivesBuilder(conf); // pass on the conf @@ -75,6 +77,11 @@ void CSCTriggerPrimitivesProducer::produce(edm::Event& ev, edm::ESHandle h; setup.get().get(h); CSCTriggerGeometry::setGeometry(h); + lctBuilder_->setCSCGeometry(&*h); + + edm::ESHandle h_gem; + setup.get().get(h_gem); + lctBuilder_->setGEMGeometry(&*h_gem); } // Find conditions data for bad chambers. @@ -102,6 +109,13 @@ void CSCTriggerPrimitivesProducer::produce(edm::Event& ev, ev.getByLabel(compDigiProducer_.label(), compDigiProducer_.instance(), compDigis); ev.getByLabel(wireDigiProducer_.label(), wireDigiProducer_.instance(), wireDigis); + const GEMCSCPadDigiCollection *gemPads = nullptr; + if (!gemPadProducer_.label().empty()) { + edm::Handle h_pads; + ev.getByLabel(gemPadProducer_, h_pads); + gemPads = h_pads.product(); + } + // Create empty collections of ALCTs, CLCTs, and correlated LCTs upstream // and downstream of MPC. std::auto_ptr oc_alct(new CSCALCTDigiCollection); @@ -128,7 +142,7 @@ void CSCTriggerPrimitivesProducer::produce(edm::Event& ev, if (wireDigis.isValid() && compDigis.isValid()) { const CSCBadChambers* temp = checkBadChambers_ ? pBadChambers.product() : new CSCBadChambers; lctBuilder_->build(temp, - wireDigis.product(), compDigis.product(), + wireDigis.product(), compDigis.product(), gemPads, *oc_alct, *oc_clct, *oc_pretrig, *oc_lct, *oc_sorted_lct); if (!checkBadChambers_) delete temp; diff --git a/L1Trigger/CSCTriggerPrimitives/plugins/CSCTriggerPrimitivesProducer.h b/L1Trigger/CSCTriggerPrimitives/plugins/CSCTriggerPrimitivesProducer.h index 26dcbee418c77..0cb66975b158b 100644 --- a/L1Trigger/CSCTriggerPrimitives/plugins/CSCTriggerPrimitivesProducer.h +++ b/L1Trigger/CSCTriggerPrimitives/plugins/CSCTriggerPrimitivesProducer.h @@ -17,7 +17,7 @@ * * \author Slava Valuev, UCLA. * - * $Id: CSCTriggerPrimitivesProducer.h,v 1.5 2012/12/05 21:16:16 khotilov Exp $ + * $Id: CSCTriggerPrimitivesProducer.h,v 1.5.2.1 2013/05/21 12:02:24 khotilov Exp $ * */ @@ -42,6 +42,7 @@ class CSCTriggerPrimitivesProducer : public edm::EDProducer int iev; // event number edm::InputTag compDigiProducer_; edm::InputTag wireDigiProducer_; + edm::InputTag gemPadProducer_; // swich to force the use of parameters from config file rather then from DB bool debugParameters_; // switch to for enabling checking against the list of bad chambers diff --git a/L1Trigger/CSCTriggerPrimitives/src/CSCMotherboardME11.cc b/L1Trigger/CSCTriggerPrimitives/src/CSCMotherboardME11.cc index 075f42573ee4d..dac9e3284b319 100644 --- a/L1Trigger/CSCTriggerPrimitives/src/CSCMotherboardME11.cc +++ b/L1Trigger/CSCTriggerPrimitives/src/CSCMotherboardME11.cc @@ -7,8 +7,8 @@ // // Author List: Vadim Khotilovich 12 May 2009 // -// $Date: 2012/12/05 21:14:22 $ -// $Revision: 1.2 $ +// $Date: 2013/05/21 12:02:25 $ +// $Revision: 1.2.2.1 $ // //----------------------------------------------------------------------------- @@ -16,8 +16,9 @@ //#include #include #include - - +#include +#include +#include // LUT for which ME1/1 wire group can cross which ME1/a halfstrip // 1st index: WG number @@ -109,6 +110,20 @@ CSCMotherboardME11::CSCMotherboardME11(unsigned endcap, unsigned station, pref[m-1] = pref[0] - m/2; pref[m] = pref[0] + m/2; } + + /// GEM matching dphi and deta + gem_match_delta_phi_odd = tmbParams.getUntrackedParameter("gemMatchDeltaPhiOdd", 0.0055); + gem_match_delta_phi_even = tmbParams.getUntrackedParameter("gemMatchDeltaPhiEven", 0.0031); + gem_match_delta_eta = tmbParams.getUntrackedParameter("gemMatchDeltaEta", 0.08); + + /// delta BX for GEM pads matching + gem_match_delta_bx = tmbParams.getUntrackedParameter("gemMatchDeltaBX", 1); + + /// min eta of LCT for which we require GEM match (we don't throw out LCTs below this min eta) + gem_match_min_eta = tmbParams.getUntrackedParameter("gemMatchMinEta", 1.62); + + /// whether to throw out GEM-fiducial LCTs that have no gem match + gem_clear_nomatch_lcts = tmbParams.getUntrackedParameter("gemClearNomatchLCTs", true); } @@ -162,7 +177,8 @@ void CSCMotherboardME11::setConfigParameters(const CSCDBL1TPParameters* conf) void CSCMotherboardME11::run(const CSCWireDigiCollection* wiredc, - const CSCComparatorDigiCollection* compdc) + const CSCComparatorDigiCollection* compdc, + const GEMCSCPadDigiCollection* gemPads) { clear(); @@ -304,6 +320,10 @@ void CSCMotherboardME11::run(const CSCWireDigiCollection* wiredc, } } // end of ALCT-centric matching + // possibly use some discrimination from GEMs + if (gemPads != nullptr) matchGEMPads(gemPads); + + // reduction of nLCTs per each BX for (int bx = 0; bx < MAX_LCT_BINS; bx++) { @@ -652,3 +672,171 @@ void CSCMotherboardME11::correlateLCTs(CSCALCTDigi bestALCT, return; } +void CSCMotherboardME11::matchGEMPads(const GEMCSCPadDigiCollection* gemPads) +{ + using namespace std; + + // check if we have any LCTs at all + int nlct = 0; + for (int bx = 0; bx < MAX_LCT_BINS; bx++) + for (unsigned int mbx = 0; mbx < match_trig_window_size; mbx++) + for (int i=0;i<2;i++) + { + CSCCorrelatedLCTDigi& lct = allLCTs1b[bx][mbx][i]; + if (lct.isValid()) nlct++; + } + if (nlct == 0) return; + + // retrieve CSCChamber geometry + CSCTriggerGeomManager* geo_manager = CSCTriggerGeometry::get(); + CSCChamber* cscChamber = geo_manager->chamber(theEndcap, theStation, theSector, theSubsector, theTrigChamber); + + auto csc_id = cscChamber->id(); + int chamber = csc_id.chamber(); + bool is_odd = chamber & 1; + + cout<<"++++++++ matchGEMPads "<< csc_id <<" +++++++++ "< > + // smearing the bx if necessary according to the value of gem_match_delta_bx + std::map > > pads; + // TODO: "magic" numbers galore!!! FIXME it's only for 6 partitions geometry right now + int npads = 0; + for (int gem_layer = 1; gem_layer <= 2; ++gem_layer) + { + for (int gem_roll = 1; gem_roll <= 6; ++gem_roll) + { + int region = (theEndcap == 1) ? 1: -1; + GEMDetId gem_id(region, 1, 1, gem_layer, chamber, gem_roll); + + auto pads_in_det = gemPads->get(gem_id); + + for (auto pad = pads_in_det.first; pad != pads_in_det.second; ++pad) + { + cout<<" gem pad "<pad()<<" "<bx() + 1<bx(); // central LCT bx is 6 for simulation - FIXME: need a parameter! + for (int bx = bx_shifted - gem_match_delta_bx; + bx <= bx_shifted + gem_match_delta_bx; ++bx) + { + pads[bx].push_back(id_pad); + } + } + } + } + cout<<" nlct "<layer(CSCConstants::KEY_CLCT_LAYER)->geometry(); + // LCT::getKeyWG() also starts from 0 + float wire = layer_geo->middleWireOfGroup(lct.getKeyWG() + 1); + + LocalPoint csc_intersect = layer_geo->intersectionOfStripAndWire(fractional_strip, wire); + GlobalPoint csc_gp = csc_g->idToDet(key_id)->surface().toGlobal(csc_intersect); + + // is LCT located in the high efficiency GEM eta range? + bool gem_fid = ( std::abs(csc_gp.eta()) >= gem_match_min_eta ); + + cout<<" lct eta "< zap it + { + if (gem_clear_nomatch_lcts) lct.clear(); + cout<<" -- no gem"<second) + { + GEMDetId gem_id(id_pad.first); + LocalPoint gem_lp = gem_g->etaPartition(gem_id)->centreOfPad(id_pad.second->pad()); + GlobalPoint gem_gp = gem_g->idToDet(gem_id)->surface().toGlobal(gem_lp); + float dphi = deltaPhi(csc_gp.phi(), gem_gp.phi()); + float deta = csc_gp.eta() - gem_gp.eta(); + cout<<" gem with dphi "<< std::abs(dphi) <<" deta "<< std::abs(deta) <bx(); + } + } + if (gem_matched) + { + cout<<" GOT MATCHED GEM!"< #include +#include + +class CSCGeometry; +class GEMGeometry; +class CSCChamber; class CSCMotherboardME11 : public CSCMotherboard { @@ -35,7 +40,8 @@ class CSCMotherboardME11 : public CSCMotherboard /** Run function for normal usage. Runs cathode and anode LCT processors, takes results and correlates into CorrelatedLCT. */ void run(const CSCWireDigiCollection* wiredc, - const CSCComparatorDigiCollection* compdc); + const CSCComparatorDigiCollection* compdc, + const GEMCSCPadDigiCollection* gemPads); /** Returns vectors of found correlated LCTs in ME1a and ME1b, if any. */ std::vector getLCTs1a(); @@ -62,6 +68,10 @@ class CSCMotherboardME11 : public CSCMotherboard std::vector readoutLCTs1b(); std::vector readoutLCTs(int me1ab); + /// set CSC and GEM geometries for the matching needs + void setCSCGeometry(const CSCGeometry *g) { csc_g = g; } + void setGEMGeometry(const GEMGeometry *g) { gem_g = g; } + private: /** labels for ME1a and ME1B */ @@ -95,6 +105,8 @@ class CSCMotherboardME11 : public CSCMotherboard CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT, CSCCorrelatedLCTDigi& lct1, CSCCorrelatedLCTDigi& lct2, int me); + void matchGEMPads(const GEMCSCPadDigiCollection* gemPads); + std::vector alctV; std::vector clctV1b; std::vector clctV1a; @@ -117,5 +129,24 @@ class CSCMotherboardME11 : public CSCMotherboard /** maximum lcts per BX in ME11: 2, 3, 4 or 999 */ unsigned int max_me11_lcts; + + + /// GEM matching dphi and deta + double gem_match_delta_phi_odd; + double gem_match_delta_phi_even; + double gem_match_delta_eta; + + /// delta BX for GEM pads matching + int gem_match_delta_bx; + + /// min eta of LCT for which we require GEM match (we don't throw out LCTs below this min eta) + double gem_match_min_eta; + + /// whether to throw out GEM-fiducial LCTs that have no gem match + bool gem_clear_nomatch_lcts; + + const CSCGeometry* csc_g; + const GEMGeometry* gem_g; + //CSCChamber* cscChamber; }; #endif diff --git a/L1Trigger/CSCTriggerPrimitives/src/CSCTriggerPrimitivesBuilder.cc b/L1Trigger/CSCTriggerPrimitives/src/CSCTriggerPrimitivesBuilder.cc index 47736baa112f7..17977b0510474 100644 --- a/L1Trigger/CSCTriggerPrimitives/src/CSCTriggerPrimitivesBuilder.cc +++ b/L1Trigger/CSCTriggerPrimitives/src/CSCTriggerPrimitivesBuilder.cc @@ -8,7 +8,7 @@ // // Author List: S. Valuev, UCLA. // -// $Id: CSCTriggerPrimitivesBuilder.cc,v 1.22 2012/12/05 21:14:23 khotilov Exp $ +// $Id: CSCTriggerPrimitivesBuilder.cc,v 1.22.2.1 2013/05/21 12:02:25 khotilov Exp $ // // Modifications: // @@ -24,6 +24,7 @@ #include #include #include +#include //------------------ // Static variables @@ -165,6 +166,7 @@ void CSCTriggerPrimitivesBuilder::setConfigParameters(const CSCDBL1TPParameters* void CSCTriggerPrimitivesBuilder::build(const CSCBadChambers* badChambers, const CSCWireDigiCollection* wiredc, const CSCComparatorDigiCollection* compdc, + const GEMCSCPadDigiCollection* gemPads, CSCALCTDigiCollection& oc_alct, CSCCLCTDigiCollection& oc_clct, CSCCLCTPreTriggerCollection & oc_pretrig, @@ -209,10 +211,13 @@ void CSCTriggerPrimitivesBuilder::build(const CSCBadChambers* badChambers, if (stat==1 && ring==1 && smartME1aME1b) { CSCMotherboardME11* tmb11 = static_cast(tmb); + + tmb11->setCSCGeometry(csc_g); + tmb11->setGEMGeometry(gem_g); //LogTrace("CSCTriggerPrimitivesBuilder")<<"CSCTriggerPrimitivesBuilder::build in E:"<run(wiredc,compdc); + tmb11->run(wiredc, compdc, gemPads); std::vector lctV = tmb11->readoutLCTs1b(); std::vector lctV1a = tmb11->readoutLCTs1a(); diff --git a/L1Trigger/CSCTriggerPrimitives/src/CSCTriggerPrimitivesBuilder.h b/L1Trigger/CSCTriggerPrimitives/src/CSCTriggerPrimitivesBuilder.h index 5eae7d848ffab..e472e26e1d259 100644 --- a/L1Trigger/CSCTriggerPrimitives/src/CSCTriggerPrimitivesBuilder.h +++ b/L1Trigger/CSCTriggerPrimitives/src/CSCTriggerPrimitivesBuilder.h @@ -11,7 +11,7 @@ * * \author Slava Valuev, UCLA. * - * $Id: CSCTriggerPrimitivesBuilder.h,v 1.9 2012/12/05 21:14:23 khotilov Exp $ + * $Id: CSCTriggerPrimitivesBuilder.h,v 1.9.2.1 2013/05/21 12:02:25 khotilov Exp $ * */ @@ -22,11 +22,14 @@ #include #include #include +#include #include class CSCDBL1TPParameters; class CSCMotherboard; class CSCMuonPortCard; +class CSCGeometry; +class GEMGeometry; class CSCTriggerPrimitivesBuilder { @@ -43,12 +46,17 @@ class CSCTriggerPrimitivesBuilder /** Sets configuration parameters obtained via EventSetup mechanism. */ void setConfigParameters(const CSCDBL1TPParameters* conf); + /// set CSC and GEM geometries for the matching needs + void setCSCGeometry(const CSCGeometry *g) { csc_g = g; } + void setGEMGeometry(const GEMGeometry *g) { gem_g = g; } + /** Build anode, cathode, and correlated LCTs in each chamber and fill * them into output collections. Select up to three best correlated LCTs * in each (sub)sector and put them into an output collection as well. */ void build(const CSCBadChambers* badChambers, const CSCWireDigiCollection* wiredc, const CSCComparatorDigiCollection* compdc, + const GEMCSCPadDigiCollection* gemPads, CSCALCTDigiCollection& oc_alct, CSCCLCTDigiCollection& oc_clct, CSCCLCTPreTriggerCollection & oc_pretrig, CSCCorrelatedLCTDigiCollection& oc_lct, @@ -90,6 +98,9 @@ class CSCTriggerPrimitivesBuilder /** Pointer to MPC processor. */ CSCMuonPortCard* m_muonportcard; + + const CSCGeometry* csc_g; + const GEMGeometry* gem_g; }; #endif From 3acc7656a8075048333e4cafc067b04d78d03d07 Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Fri, 19 Jul 2013 14:14:17 +0200 Subject: [PATCH 4/4] Correct the partitioning of the 8 partition GEM geometry --- Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml b/Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml index 8d4258767a7a8..fd7ac5222e06e 100644 --- a/Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml +++ b/Geometry/MuonCommonData/data/v4/gemf_r08_v01.xml @@ -4,14 +4,14 @@ - - - - - - - - + + + + + + + +