 |
ATLAS Offline Software
|
Go to the documentation of this file.
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 &&
78 muSegDataColl.push_back(seg);
83 ATH_CHECK(wh_muctpiTgc.
record(std::make_unique<LVL1MUONIF::Lvl1MuCTPIInputPhase1>()));
88 LVL1MUONIF::Lvl1MuCTPIInputPhase1::MuonSystem::Forward};
89 for(
auto isys : tgc_systems){
91 for(
auto bcmu : *
data){
92 int bcid = bcmu.first;
93 auto muvec = bcmu.second;
94 for(
size_t i = 0 ;
i < muvec.size() ;
i++){
95 auto sectorData = muvec.at(
i).get();
103 ?(LVL1MUONIF::Lvl1MuCTPIInputPhase1::MuonSubSystem::C_side):(LVL1MUONIF::Lvl1MuCTPIInputPhase1::MuonSubSystem::A_side);
110 Copy(sectorData,sldata);
111 Update(muSegDataColl,sldata,isys,isub,isec);
113 }
else if(isys==LVL1MUONIF::Lvl1MuCTPIInputPhase1::MuonSystem::Forward){
116 ?(LVL1MUONIF::Lvl1MuCTPIInputPhase1::MuonSubSystem::C_side):(LVL1MUONIF::Lvl1MuCTPIInputPhase1::MuonSubSystem::A_side);
123 Copy(sectorData,sldata);
124 Update(muSegDataColl,sldata,isys,isub,isec);
133 return StatusCode::SUCCESS;
142 for (
unsigned int icand=0;
144 sldataNew.
roi(icand,sldataOrg->
roi(icand));
145 sldataNew.
pt(icand,sldataOrg->
pt(icand));
146 sldataNew.
ovl(icand,sldataOrg->
ovl(icand));
159 size_t sectorId)
const
164 int tmpsector = sectorId;
166 unsigned int sectorAddress = (tmpside) + (tmpsector<<1) + (tmptype<<6);
167 for (
unsigned int icand=0;
169 if(sldata.
pt(icand)<0)
continue;
170 int roi = sldata.
roi(icand);
171 unsigned long int roiWord = (roi<<2)+(sectorAddress<<14);
175 roiPos.SetPtEtaPhi(10,roiData.
eta(),roiData.
phi());
176 if( std::abs(roiPos.Eta()) < 1.3 )
continue;
178 <<
" roiEta=" << roiPos.Eta()
179 <<
" roiPhi=" << roiPos.Phi()
180 <<
" flagF=" << sldata.
bw2or3(icand)
182 <<
" flagH=" << sldata.
goodmf(icand) );
184 double deltaEtaCut=0,deltaPhiCut=0,deltaThetaCut=0;
196 for(
const auto seg : muSegDataColl){
197 TVector3 segPos(seg->x(),seg->y(),seg->z());
198 TVector3 segVec(seg->px(),seg->py(),seg->pz());
199 float deltaEta = std::abs( segPos.Eta() - roiPos.Eta() );
200 float deltaPhi = std::abs( segPos.DeltaPhi( roiPos ) );
201 float deltaTheta = std::abs( segVec.Theta() - segPos.Theta() );
202 bool tmpmatched = (
deltaEta < deltaEtaCut &&
deltaPhi < deltaPhiCut && deltaTheta < deltaThetaCut);
204 <<
" RoI pT=" << sldata.
pt(icand)
205 <<
" roiEta=" << roiPos.Eta()
206 <<
" roiPhi=" << roiPos.Phi()
207 <<
" segEta=" << segPos.Eta()
208 <<
" segPhi=" << segPos.Phi()
209 <<
" segEtaVec=" << segVec.Eta()
210 <<
" segPhiVec=" << segVec.Phi()
211 <<
" chi2=" << seg->chiSquared()
212 <<
" ndof=" << seg->numberDoF()
213 <<
" sector=" << seg->sector()
214 <<
" etaIndex=" << seg->etaIndex()
216 <<
" nPrecisionHits=" << seg->nPrecisionHits()
217 <<
" nPhiLayers=" << seg->nPhiLayers()
218 <<
" nTrigEtaLayers=" << seg->nTrigEtaLayers()
221 <<
" deltaTheta=" << deltaTheta);
char data[hepevt_bytes_allocation_ATLAS]
SG::WriteHandleKey< LVL1MUONIF::Lvl1MuCTPIInputPhase1 > m_outputKey
virtual ~TGCOutputModifier()
const_pointer_type cptr()
Dereference the pointer.
int innercoin(size_t id) const
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
void Update(const std::vector< const xAOD::MuonSegment * > &segs, LVL1MUONIF::Lvl1MuSectorLogicDataPhase1 &sldata, size_t systemAddress, size_t subSystemAddress, size_t sectorAddress) const
TechnologyIndex
enum to classify the different layers in the muon spectrometer
DoubleProperty m_deltaThetaCut2
BooleanProperty m_emulateC
int bw2or3(size_t id) const
BooleanProperty m_emulateA
const std::string & key() const
Return the StoreGate ID for the referenced object.
Class representing data from an endcap SL board.
DoubleProperty m_etaBoundary1
constexpr unsigned numberOfSectors()
return total number of sectors
An algorithm that can be simultaneously executed in multiple threads.
void Copy(const LVL1MUONIF::Lvl1MuSectorLogicDataPhase1 *sldataOrg, LVL1MUONIF::Lvl1MuSectorLogicDataPhase1 &sldataNew) const
void set2candidatesInSector()
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
::StatusCode StatusCode
StatusCode definition for legacy code.
pointer_type ptr()
Dereference the pointer.
DoubleProperty m_deltaThetaCut1
TGCOutputModifier(const std::string &name, ISvcLocator *pSvcLocator)
void clear2candidates(size_t id)
Base class for the data coming from one SL board.
int charge(size_t id) const
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
const std::string & technologyName(TechnologyIndex index)
convert LayerIndex into a string
virtual bool isValid() override final
Can the handle be successfully dereferenced?
void set2candidates(size_t id)
BooleanProperty m_nswVetoMode
virtual StatusCode initialize() override
Regular Gaudi algorithm initialization function.
SG::ReadHandleKey< xAOD::MuonSegmentContainer > m_musegKey
SG::ReadHandleKey< LVL1MUONIF::Lvl1MuCTPIInputPhase1 > m_inputKey
DoubleProperty m_deltaEtaCut2
Class representing data from an forward SL board.
Muon::MuonStationIndex::ChIndex ChIdx
DoubleProperty m_deltaPhiCut1
setEventNumber setTimeStamp bcid
int goodmf(size_t id) const
DoubleProperty m_deltaEtaCut1
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
#define ATH_MSG_WARNING(x)
bool is2candidates(size_t id) const
DoubleProperty m_etaBoundary2
ToolHandle< LVL1::ITrigT1MuonRecRoiTool > m_recTGCRoiTool
virtual StatusCode execute(const EventContext &eventContext) const override
Regular Gaudi algorithm execute function.
void clear2candidatesInSector()
ChIndex
enum to classify the different chamber layers in the muon spectrometer
DoubleProperty m_deltaPhiCut2
bool is2candidatesInSector() const