32 ATH_MSG_INFO(
"=======================================" );
48 ATH_MSG_INFO(
"=======================================" );
54 return StatusCode::SUCCESS;
62 ATH_MSG_ERROR(
"Cannot retrieve LVL1MUONIF::Lvl1MuCTPIInputPhase1");
63 return StatusCode::FAILURE;
67 std::vector<const xAOD::MuonSegment*> muSegDataColl;
72 return StatusCode::FAILURE;
75 for(
auto seg : *muSegContainer){
76 if(seg->chamberIndex() != ChIdx::EIS && seg->chamberIndex() != ChIdx::EIL &&
77 seg->chamberIndex() != ChIdx::CSS && seg->chamberIndex() != ChIdx::CSL )
continue;
78 muSegDataColl.push_back(seg);
83 ATH_CHECK(wh_muctpiTgc.
record(std::make_unique<LVL1MUONIF::Lvl1MuCTPIInputPhase1>()));
89 for(
auto isys : tgc_systems){
91 for(
const auto & [bcid, muvec] : *
data){
93 for(
size_t i = 0 ; i < muvec.size() ; i++){
94 auto sectorData = muvec.at(i).get();
101 size_t isub = (i<numberOfSectors)
103 size_t isec = i % numberOfSectors;
109 Copy(sectorData,sldata);
110 Update(muSegDataColl,sldata,isys,isub,isec);
114 size_t isub = (i<numberOfSectors)
116 size_t isec = i % numberOfSectors;
122 Copy(sectorData,sldata);
123 Update(muSegDataColl,sldata,isys,isub,isec);
132 return StatusCode::SUCCESS;
141 for (
unsigned int icand=0;
143 sldataNew.
roi(icand,sldataOrg->
roi(icand));
144 sldataNew.
pt(icand,sldataOrg->
pt(icand));
145 sldataNew.
ovl(icand,sldataOrg->
ovl(icand));
158 size_t sectorId)
const
163 int tmpsector = sectorId;
165 unsigned int sectorAddress = (tmpside) + (tmpsector<<1) + (tmptype<<6);
166 for (
unsigned int icand=0;
168 if(sldata.
pt(icand)<0)
continue;
169 int roi = sldata.
roi(icand);
170 unsigned long int roiWord = (roi<<2)+(sectorAddress<<14);
174 roiPos.SetPtEtaPhi(10,roiData.
eta(),roiData.
phi());
175 if( std::abs(roiPos.Eta()) < 1.3 )
continue;
177 <<
" roiEta=" << roiPos.Eta()
178 <<
" roiPhi=" << roiPos.Phi()
179 <<
" flagF=" << sldata.
bw2or3(icand)
181 <<
" flagH=" << sldata.
goodmf(icand) );
183 double deltaEtaCut=0,deltaPhiCut=0,deltaThetaCut=0;
195 for(
const auto seg : muSegDataColl){
196 TVector3 segPos(seg->x(),seg->y(),seg->z());
197 TVector3 segVec(seg->px(),seg->py(),seg->pz());
198 float deltaEta = std::abs( segPos.Eta() - roiPos.Eta() );
199 float deltaPhi = std::abs( segPos.DeltaPhi( roiPos ) );
200 float deltaTheta = std::abs( segVec.Theta() - segPos.Theta() );
201 bool tmpmatched = (deltaEta < deltaEtaCut &&
deltaPhi < deltaPhiCut && deltaTheta < deltaThetaCut);
203 <<
" RoI pT=" << sldata.
pt(icand)
204 <<
" roiEta=" << roiPos.Eta()
205 <<
" roiPhi=" << roiPos.Phi()
206 <<
" segEta=" << segPos.Eta()
207 <<
" segPhi=" << segPos.Phi()
208 <<
" segEtaVec=" << segVec.Eta()
209 <<
" segPhiVec=" << segVec.Phi()
210 <<
" chi2=" << seg->chiSquared()
211 <<
" ndof=" << seg->numberDoF()
212 <<
" sector=" << seg->sector()
213 <<
" etaIndex=" << seg->etaIndex()
215 <<
" nPrecisionHits=" << seg->nPrecisionHits()
216 <<
" nPhiLayers=" << seg->nPhiLayers()
217 <<
" nTrigEtaLayers=" << seg->nTrigEtaLayers()
218 <<
" deltaEta=" << deltaEta
220 <<
" deltaTheta=" << deltaTheta);
221 matched |= tmpmatched;
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
char data[hepevt_bytes_allocation_ATLAS]
An algorithm that can be simultaneously executed in multiple threads.
Class representing data from an endcap SL board.
Class representing data from an forward SL board.
Base class for the data coming from one SL board.
bool is2candidatesInSector() const
int goodmf(size_t id) const
int bw2or3(size_t id) const
int charge(size_t id) const
bool is2candidates(size_t id) const
int innercoin(size_t id) const
void clear2candidatesInSector()
void set2candidatesInSector()
void clear2candidates(size_t id)
void set2candidates(size_t id)
DoubleProperty m_etaBoundary2
DoubleProperty m_deltaThetaCut1
void Copy(const LVL1MUONIF::Lvl1MuSectorLogicDataPhase1 *sldataOrg, LVL1MUONIF::Lvl1MuSectorLogicDataPhase1 &sldataNew) const
SG::ReadHandleKey< LVL1MUONIF::Lvl1MuCTPIInputPhase1 > m_inputKey
virtual ~TGCOutputModifier()
DoubleProperty m_etaBoundary1
DoubleProperty m_deltaPhiCut2
BooleanProperty m_emulateC
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_musegKey
BooleanProperty m_nswVetoMode
DoubleProperty m_deltaPhiCut1
virtual StatusCode execute(const EventContext &eventContext) const override
Regular Gaudi algorithm execute function.
void Update(const std::vector< const xAOD::MuonSegment * > &segs, LVL1MUONIF::Lvl1MuSectorLogicDataPhase1 &sldata, size_t systemAddress, size_t subSystemAddress, size_t sectorAddress) const
SG::WriteHandleKey< LVL1MUONIF::Lvl1MuCTPIInputPhase1 > m_outputKey
DoubleProperty m_deltaEtaCut2
ToolHandle< LVL1::ITrigT1MuonRecRoiTool > m_recTGCRoiTool
DoubleProperty m_deltaThetaCut2
BooleanProperty m_emulateA
DoubleProperty m_deltaEtaCut1
TGCOutputModifier(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode initialize() override
Regular Gaudi algorithm initialization function.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
pointer_type ptr()
Dereference the pointer.
static const size_t NCAND[3]
Muon::MuonStationIndex::ChIndex ChIdx
TechnologyIndex
enum to classify the different layers in the muon spectrometer
const std::string & technologyName(TechnologyIndex index)
convert LayerIndex into a string
ChIndex
enum to classify the different chamber layers in the muon spectrometer
MuonSegmentContainer_v1 MuonSegmentContainer
Definition of the current "MuonSegment container version".