74 m_matrix.setCoincidenceLUT(db->getBigWheelCoincidenceLUT());
111 m_nsw = std::move(nsw);
156 if(SSCCOut->
hasHit(SSCid)){
161 if(SSCCOut->
hasHit(SSCid, phiposInSSC)){
163 SSCCOut->
getDPhi(SSCid,phiposInSSC),
164 SSCCOut->
getPtPhi(SSCid,phiposInSSC));
167 coincidenceOut =
m_matrix.doCoincidence();
170 if(SSCCOut->
hasHit(SSCid,
true)){
175 if(SSCCOut->
hasHit(SSCid, phiposInSSC,
true)){
177 SSCCOut->
getDPhi(SSCid,phiposInSSC,
true),
178 SSCCOut->
getPtPhi(SSCid,phiposInSSC,
true));
183 if (oredCoincidenceOut) {
185 if (coincidenceOut->
isSuperior(oredCoincidenceOut)) {
186 delete oredCoincidenceOut;
188 delete coincidenceOut;
189 coincidenceOut = oredCoincidenceOut;
192 coincidenceOut = oredCoincidenceOut;
197 if (coincidenceOut) {
208 if (coincidenceOut) {
212 if(SSCCOut!=0)
delete SSCCOut;
221 for(
int i = 0; i <
m_SSCController.getNumberOfWireHighPtBoard(); i += 1) {
236 for( i = 0; i <
m_SSCController.getNumberOfWireHighPtBoard(); i += 1) {
245 std::cout<<
"#SL O"<<
" BID:"<<
m_bid
247 <<
" SLid:"<<
m_id<<
" ";
274 for(
int i = 0; i <
m_SSCController.getNumberOfWireHighPtBoard(); i += 1) {
287 if (
this != &right ) {
306 for(
int i = 0; i <
m_SSCController.getNumberOfWireHighPtBoard(); i += 1) {
320 for (
int i=0; i<
length; i++){
338 if (coincidenceOut == 0)
return;
340 int pt = coincidenceOut->
getpT();
352 int pos = 4*coincidenceOut->
getR() + coincidenceOut->
getPhi();
357 bool validBIS78 =
false;
370 int pos = 4*coincidenceOut->
getR() + coincidenceOut->
getPhi();
374 if(
tgcArgs()->FORCE_NSW_COIN()){
403 std::shared_ptr<const LVL1TGC::BIS78TrigOut> pBIS78Out =
m_bis78->getOutput(
m_sectorId);
404 if ( pBIS78Out.get() == 0 )
return false;
408 coincidenceOut->
getRoI());
420 bool isHitTileMu=
false;
424 isHitTileMu = isHitTileMu || this->
hitTileMu(maskTM, tm->getHit6(), tm->getHit56());
433 bool isHitInner=
false;
440 bool isHitWire =
false;
444 if(isHitWire){
break;}
448 bool isHitStrip =
false;
452 if(isHitStrip){
break;}
455 isHitInner = isHitWire && isHitStrip;
void set_USE_BIS78(bool v)
const std::string & NSWSideInfo() const
@ NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR
bool getTriggerBit(const unsigned int region, const unsigned int readout, const unsigned int iBit) const
void setInnerCoincidenceFlag(bool InnerCoincidenceFlagIn)
void setGoodMFFlag(bool goodMFFlagIn)
bool isSuperior(const TGCRPhiCoincidenceOut *right) const
int getPhi(int ssc, int phipos, bool ored=false) const
int getPtPhi(int ssc, int phipos, bool ored=false) const
int getDPhi(int ssc, int phipos, bool ored=false) const
int getPtR(int ssc) const
bool hasHit(int ssc, bool ored=false) const
TGCHighPtChipOut * m_wireHighPtChipOut[MaxNumberOfWireHighPtBoard]
TGCTrackSelector m_trackSelector
std::shared_ptr< const TGCNSWCoincidenceMap > m_mapNSW
TGCRPhiCoincidenceMatrix m_matrix
TGCSSCController m_SSCController
void dec2bin(int dec, char *binstr, int length)
void setTMDB(std::shared_ptr< const LVL1TGC::TGCTMDB > tmdb)
LVL1TGC::TGCSide m_sideId
virtual ~TGCSectorLogic()
bool doTILECoincidence(TGCRPhiCoincidenceOut *coincidenceOut)
TGCHighPtBoard * m_stripHighPtBoard
int m_NumberOfWireHighPtBoard
std::shared_ptr< const LVL1TGC::TGCBIS78CoincidenceMap > m_mapBIS78
std::shared_ptr< const LVL1TGC::TGCNSW > m_nsw
void doInnerCoincidence(const SG::ReadCondHandleKey< TGCTriggerData > &readCondKey, int SSCId, TGCRPhiCoincidenceOut *coincidenceOut)
TGCSectorLogic & operator=(const TGCSectorLogic &right)
void setNSW(std::shared_ptr< const LVL1TGC::TGCNSW > nsw)
void setStripHighPtBoard(TGCHighPtBoard *highPtBoard)
const LVL1TGC::TGCEIFICoincidenceMap * m_mapEIFI
bool doTGCEICoincidence(TGCRPhiCoincidenceOut *coincidenceOut)
const TGCInnerTrackletSlot * m_innerTrackletSlots[TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR]
void setBIS78(std::shared_ptr< const LVL1TGC::TGCBIS78 > bis78)
std::shared_ptr< TGCTrackSelectorOut > m_trackSelectorOut
std::shared_ptr< const LVL1TGC::TGCBIS78 > m_bis78
TGCSectorLogic(TGCArguments *, const TGCDatabaseManager *db, TGCRegionType regionIn, int id)
std::shared_ptr< const LVL1TGC::TGCGoodMF > m_mapGoodMF
void setInnerTrackletSlots(const TGCInnerTrackletSlot *innerTrackletSlots[])
void clockIn(const SG::ReadCondHandleKey< TGCTriggerData > &readCondKey, int bidIn, bool process=true)
std::shared_ptr< const LVL1TGC::TGCTileMuCoincidenceLUT > m_tileMuLUT
bool doTGCFICoincidence(TGCRPhiCoincidenceOut *coincidenceOut)
int getNumberOfSubSectorCluster() const
TGCHighPtChipOut * m_stripHighPtChipOut
bool doTGCBIS78Coincidence(TGCRPhiCoincidenceOut *coincidenceOut)
void getTrackSelectorOutput(std::shared_ptr< TGCTrackSelectorOut > &trackSelectorOut) const
std::shared_ptr< const LVL1TGC::TGCTMDB > m_pTMDB
@ MaxNumberOfWireHighPtBoard
void doTGCNSWCoincidence(TGCRPhiCoincidenceOut *coincidenceOut)
bool hitTileMu(const uint8_t &mask, const uint8_t &hit6, const uint8_t &hit56) const
void setWireHighPtBoard(int port, TGCHighPtBoard *highPtBoard)
TGCHighPtBoard * m_wireHighPtBoard[MaxNumberOfWireHighPtBoard]
const std::string process
TGCSide
The sides of TGC (A- or C-side)