|
ATLAS Offline Software
|
ByteStream converter for the MuCTPI_RDO object.
More...
#include <MuCTPIByteStreamCnv.h>
|
double | phiCorr (double phi) |
|
void | ipCorr (double d0, double z0, double &d0c, double &z0c, double phi0, double eta, double pt) |
|
ByteStream converter for the MuCTPI_RDO object.
This is a quite standard BS converter for the output sent from the
"Muon to Central Trigger Processor Interface" to the DAQ. It uses
an external tool (MuCTPIByteStreamTool) to do the actual work of
the conversion, this converter is "only" supposed to communicate
with the framework.
- See also
- MuCTPIByteStreamTool
- Author
- Tadashi Maeno
-
Attila Krasznahorkay
Definition at line 47 of file MuCTPIByteStreamCnv.h.
◆ MuCTPIByteStreamCnv()
MuCTPIByteStreamCnv::MuCTPIByteStreamCnv |
( |
ISvcLocator * |
svcloc | ) |
|
Standard constructor.
The constructor sets up all the ToolHandle and ServiceHandle objects and initialises the base class in the correct way.
Definition at line 33 of file MuCTPIByteStreamCnv.cxx.
35 m_tool(
"MuCTPIByteStreamTool" ),
36 #ifdef CTP_MUCTPI_HAVE_SAME_ROS
37 m_ctp_tool(
"CTPByteStreamTool" ),
38 m_ctp_rec_tool(
"RecCTPByteStreamTool" ),
39 m_storeGate(
"StoreGateSvc",
"MuCTPIByteStreamCnv" ),
◆ addTrack()
◆ classID()
const CLID & MuCTPIByteStreamCnv::classID |
( |
| ) |
|
|
static |
Function needed by the framework.
Function telling the framework the Class ID of the object that this converter is for (MuCTPI_RDO).
Definition at line 50 of file MuCTPIByteStreamCnv.cxx.
◆ clear()
void Converter::clear |
( |
| ) |
|
|
inlineinherited |
◆ createObj()
StatusCode MuCTPIByteStreamCnv::createObj |
( |
IOpaqueAddress * |
pAddr, |
|
|
DataObject *& |
pObj |
|
) |
| |
|
overridevirtual |
Function creating the MuCTPI_RDO object from a MuCTPI ROB fragment.
This function creates the MuCTPI_RDO object from the BS data.
It requests the ROB fragment with the ROB Id of the MuCTPI and gives this fragment to the MuCTPIByteStreamTool for conversion.
Definition at line 116 of file MuCTPIByteStreamCnv.cxx.
118 MsgStream
log(
msgSvc(),
"MuCTPIByteStreamCnv" );
124 log << MSG::ERROR <<
" Can not cast to ByteStreamAddress " <<
endmsg ;
125 return StatusCode::FAILURE;
135 log <<
MSG::DEBUG <<
" expected ROB sub-detector ID: " << std::hex
136 << robId << std::dec <<
endmsg;
138 std::vector< uint32_t > vID;
139 vID.push_back( robId );
150 if( robFrags.size() == 0 ) {
158 vID[0] = ( robId | 0x00000b );
159 #ifdef CTP_MUCTPI_HAVE_SAME_ROS
160 vID.push_back( robId | 0x00000a );
164 if( robFrags.size() == 0 ) {
167 #ifdef CTP_MUCTPI_HAVE_SAME_ROS
172 if( robFrags.size() == 0 ) {
173 log << MSG::WARNING <<
"No MuCTPI ROB fragments found!" <<
endmsg;
177 return StatusCode::SUCCESS;
182 IROBDataProviderSvc::VROBFRAG::const_iterator
it = robFrags.begin();
185 if(
sc.isFailure() ) {
186 log << MSG::ERROR <<
" Failed to create Objects: " << *( pBS_Addr->par() ) <<
endmsg;
195 #ifdef CTP_MUCTPI_HAVE_SAME_ROS
201 if( robFrags.size() > 1 ) {
204 if(
it != robFrags.end() ) {
212 ATH_CHECK( m_storeGate->record( ctp_result,
"CTP_RDO" ) );
217 ATH_CHECK( m_storeGate->record( ctp_rio_result,
"CTP_RIO" ) );
◆ createRep()
StatusCode MuCTPIByteStreamCnv::createRep |
( |
DataObject * |
pObj, |
|
|
IOpaqueAddress *& |
pAddr |
|
) |
| |
|
overridevirtual |
Function creating the MuCTPI ROB fragment from a MuCTPI_RDO object.
This function receives a MuCTPI_RDO object as input, and adds the ROB fragment of the MuCTPI to the current raw event using the IByteStreamEventAccess interface.
Definition at line 231 of file MuCTPIByteStreamCnv.cxx.
233 MsgStream
log(
msgSvc(),
"MuCTPIByteStreamCnv" );
240 log << MSG::ERROR <<
" Cannot cast to MuCTPI_RDO" <<
endmsg;
241 return StatusCode::FAILURE;
◆ initialize()
StatusCode MuCTPIByteStreamCnv::initialize |
( |
| ) |
|
|
overridevirtual |
Function connecting to all the needed services/tools.
Init method gets all necessary services etc.
Definition at line 63 of file MuCTPIByteStreamCnv.cxx.
70 MsgStream
log(
msgSvc(),
"MuCTPIByteStreamCnv" );
84 #ifdef CTP_MUCTPI_HAVE_SAME_ROS
102 log << MSG::WARNING <<
"Can't get ROBDataProviderSvc" <<
endmsg;
108 return StatusCode::SUCCESS;
◆ ipCorr()
void Converter::ipCorr |
( |
double |
d0, |
|
|
double |
z0, |
|
|
double & |
d0c, |
|
|
double & |
z0c, |
|
|
double |
phi0, |
|
|
double |
eta, |
|
|
double |
pt |
|
) |
| |
|
inlineprotectedinherited |
Definition at line 257 of file Converter.h.
261 double sd0 = (
d0 != 0 ?
d0/fabs(
d0) : 1);
262 double spt = (
pt != 0 ?
pt/fabs(
pt) : 1);
270 double rc = fabs(
pt)*15.0/(9.0*1.042);
276 double xd01,yd01,xd02,yd02;
279 xd01 = 0; yd01 =
rc+yc;
280 xd02 = 0; yd02 = -
rc+yc;
282 xd01 = xc+yc/xc*yc+sqrt(
pow((xc+yc/xc*yc),2)-xc*xc-yc*yc+rc*rc); yd01 = yc/xc*xd01;
283 xd02 = xc+yc/xc*yc-sqrt(
pow((xc+yc/xc*yc),2)-xc*xc-yc*yc+rc*rc); yd02 = yc/xc*xd02;
286 double r1 = sqrt(xd01*xd01+yd01*yd01);
287 double r2 = sqrt(xd02*xd02+yd02*yd02);
292 phiV = atan2(yd01,xd01);
294 phiV = atan2(yd02,xd02);
304 d0c = fabs(sqrt(xc*xc+yc*yc)-rc)*
sin(phiV-newphi);
307 double theta_save=
theta;
◆ phiCorr()
double Converter::phiCorr |
( |
double |
phi | ) |
|
|
inlineprotectedinherited |
Definition at line 248 of file Converter.h.
250 if (
phi < -TMath::Pi())
phi += 2*TMath::Pi();
251 if (
phi > TMath::Pi())
phi -= 2*TMath::Pi();
◆ repSvcType()
virtual long MuCTPIByteStreamCnv::repSvcType |
( |
| ) |
const |
|
inlineoverridevirtual |
Function needed by the framework.
Definition at line 61 of file MuCTPIByteStreamCnv.h.
61 {
return i_repSvcType(); }
◆ selectTracks() [1/3]
Definition at line 177 of file Converter.h.
179 static int hpmap[20] = { 0, 1, 2, 7, 8, 9, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
184 while(muonitr!=muonend) {
186 bool hasInDet = (*muonitr)->hasInDetTrackParticle();
188 if(hasInDet) trackitr=(*muonitr)->inDetTrackParticle();
190 if(!hasInDet)
continue;
194 CLHEP::HepVector perigeeParams = measPer->parameters();
195 double pT = measPer->pT();
196 double eta = measPer->eta();
223 double dof = quality->quality->
numberDoF();
227 for (
int ih=0 ; ih<20 ; ih++ ) {
236 deta, dphi, dz0, dd0, dpT,
238 nStrawHits, nTrHits, bitmap, 0,
◆ selectTracks() [2/3]
Definition at line 111 of file Converter.h.
116 static int hpmap[20] = { 0, 1, 2, 7, 8, 9, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
118 while ( trackitr!=trackend ) {
122 CLHEP::HepVector perigeeParams = measPer->parameters();
123 double pT = measPer->pT();
124 double eta = measPer->eta();
147 bool expectBL =
false;
155 for (
int ih=0 ; ih<20 ; ih++ ) {
164 deta, dphi, dz0, dd0, dpT,
166 nStrawHits, nTrHits, bitmap, 0,
◆ selectTracks() [3/3]
Definition at line 56 of file Converter.h.
61 while ( trackitr!=trackend ) {
63 double eta = (*trackitr)->param()->eta();
64 double phi = (*trackitr)->param()->phi0();
65 double z0 = (*trackitr)->param()->z0();
66 double pT = (*trackitr)->param()->pT();
67 double d0 = (*trackitr)->param()->a0();
70 double deta = (*trackitr)->param()->eeta();
71 double dphi = (*trackitr)->param()->ephi0();
72 double dz0 = (*trackitr)->param()->ez0();
73 double dpT = (*trackitr)->param()->epT();
74 double dd0 = (*trackitr)->param()->ea0();
76 int algoid = (*trackitr)->algorithmId();
78 int nBlayerHits = ((*trackitr)->HitPattern() & 0x1);
79 int nPixelHits = 2*(*trackitr)->NPixelSpacePoints();
80 int nSctHits = 2*(*trackitr)->NSCT_SpacePoints();
81 int nStrawHits = (*trackitr)->NStrawHits();
82 int nTrHits = (*trackitr)->NTRHits();
85 bool expectBL =
false;
87 unsigned hitPattern = (*trackitr)->HitPattern();
88 unsigned multiPattern = 0;
90 double chi2 = (*trackitr)->chi2();
98 deta, dphi, dz0, dd0, dpT,
100 nStrawHits, nTrHits, hitPattern, multiPattern,
◆ storageType()
long MuCTPIByteStreamCnv::storageType |
( |
| ) |
|
|
static |
◆ tracks()
◆ m_beamX
double Converter::m_beamX |
|
protectedinherited |
◆ m_beamY
double Converter::m_beamY |
|
protectedinherited |
◆ m_beamZ
double Converter::m_beamZ |
|
protectedinherited |
◆ m_ByteStreamEventAccess
◆ m_robDataProvider
◆ m_srcIdMap
◆ m_tool
◆ m_tracks
The documentation for this class was generated from the following files:
@ numberOfPixelHits
number of pixel layers on track with absence of hits
OFFLINE_FRAGMENTS_NAMESPACE_WRITE::FullEventFragment RawEventWrite
data type for writing raw event
void ipCorr(double d0, double z0, double &d0c, double &z0c, double phi0, double eta, double pt)
uint32_t getRobID(uint32_t rod_id) const
Make a ROB Source ID from a ROD source ID.
Const iterator class for DataVector/DataList.
uint32_t getRodID() const
get a ROD Source ID
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold
const ROBFragment * getROBFragment() const
Return the ROBFragment.
Scalar phi() const
phi method
ServiceHandle< IROBDataProviderSvc > m_robDataProvider
Service used when reading the BS data.
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
Scalar eta() const
pseudorapidity method
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
ROBData_T< OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment, OFFLINE_FRAGMENTS_NAMESPACE::PointerType > ROBData
Scalar theta() const
theta method
templete data class to wrap ROB fragment for accessing ROD data
const TrackSummary * trackSummary() const
accessor function for TrackSummary.
float nPixelHits(const U &p)
static long storageType()
Function needed by the framework.
@ numberOfBLayerHits
these are the hits in the 0th pixel layer?
double phiCorr(double phi)
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)
static const CLID & ID()
the CLID of T
ServiceHandle< IByteStreamEventAccess > m_ByteStreamEventAccess
Service used when writing the BS data.
msgSvc
Provide convenience handles for various services.
static const CLID & classID()
Function needed by the framework.
::StatusCode StatusCode
StatusCode definition for legacy code.
@ numberOfSCTHits
number of SCT holes
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
const FitQuality * fitQuality() const
accessor function for FitQuality.
double chi2(TH1 *h0, TH1 *h1)
std::vector< const ROBF * > VROBFRAG
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
void addTrack(TIDA::Track *t)
@ numberOfTRTHits
number of TRT outliers
static constexpr long storageType()
A summary of the information contained by a track.
MuCTPISrcIdMap m_srcIdMap
Object storing the various IDs of the MuCTPI fragment.
const Trk::Perigee * measuredPerigee() const
Accessor method for Perigee.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
Class representing the readout data of the MuCTPI hardware and simulation.
DetectorType
enumerates the various detector types currently accessible from the isHit() method.
const boost::regex re(r_e)
double chiSquared() const
returns the of the overall track fit
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
ToolHandle< MuCTPIByteStreamTool > m_tool
Tool doing the actual conversion.
constexpr int pow(int base, int exp) noexcept
std::vector< TIDA::Track * > m_tracks
float nSiHits(const U &p)
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.