ATLAS Offline Software
Loading...
Searching...
No Matches
CondAttrListVecCnv Class Reference

This class provides the converter for the AthenaAttributeList class. More...

#include <CondAttrListVecCnv.h>

Inheritance diagram for CondAttrListVecCnv:
Collaboration diagram for CondAttrListVecCnv:

Public Member Functions

virtual ~CondAttrListVecCnv ()
 Destructor.
virtual StatusCode initialize ()
 Gaudi Service Interface method implementations:
virtual StatusCode createObj (IOpaqueAddress *pAddr, DataObject *&pObj)
 Create a transient object from a POOL persistent representation.
virtual StatusCode createRep (DataObject *pObj, IOpaqueAddress *&pAddr)
 Create a POOL persistent representation for a transient object.
virtual long int repSvcType () const
 CondAttrListVecCnv (ISvcLocator *svcloc)
 Constructor.
void addTrack (TIDA::Track *t)
const std::vector< TIDA::Track * > & tracks () const
void clear ()
void selectTracks (const Rec::TrackParticleContainer *trigtracks)
void selectTracks (const Analysis::MuonContainer *muontracks)

Static Public Member Functions

static long storageType ()
static CLID classID ()

Protected Member Functions

double phiCorr (double phi)
void ipCorr (double d0, double z0, double &d0c, double &z0c, double phi0, double eta, double pt)

Protected Attributes

double m_beamX
double m_beamY
double m_beamZ
std::vector< TIDA::Track * > m_tracks

Detailed Description

This class provides the converter for the AthenaAttributeList class.

Definition at line 28 of file CondAttrListVecCnv.h.

Constructor & Destructor Documentation

◆ ~CondAttrListVecCnv()

CondAttrListVecCnv::~CondAttrListVecCnv ( )
virtual

Destructor.

Definition at line 32 of file CondAttrListVecCnv.cxx.

32 {
33}

◆ CondAttrListVecCnv()

CondAttrListVecCnv::CondAttrListVecCnv ( ISvcLocator * svcloc)

Constructor.

Definition at line 103 of file CondAttrListVecCnv.cxx.

103 :
104 Converter(storageType(), classID(), svcloc) {
105}

Member Function Documentation

◆ addTrack()

void Converter::addTrack ( TIDA::Track * t)
inlineinherited

Definition at line 43 of file Converter.h.

43 {
44 m_tracks.push_back(t);
45 }
std::vector< TIDA::Track * > m_tracks
Definition Converter.h:264

◆ classID()

CLID CondAttrListVecCnv::classID ( )
static
Returns
class ID.

Definition at line 99 of file CondAttrListVecCnv.cxx.

◆ clear()

void Converter::clear ( )
inlineinherited

Definition at line 51 of file Converter.h.

51{m_tracks.clear();}

◆ createObj()

StatusCode CondAttrListVecCnv::createObj ( IOpaqueAddress * pAddr,
DataObject *& pObj )
virtual

Create a transient object from a POOL persistent representation.

Parameters
pAddr[IN] IOpaqueAddress of POOL persistent representation.
pObj[OUT] pointer to the transient object.

Definition at line 47 of file CondAttrListVecCnv.cxx.

47 {
48
49 // This is the "read" method for an AttributeList. Here we only
50 // extract an AthenaAttributeList pointer from an
51 // AthenaAttrListAddress and return it
52
53 MsgStream log(msgSvc(), "CondAttrListVecCnv");
54 log << MSG::DEBUG << "Creating CondAttrListVecAddress Object" << endmsg;
55
56 CondAttrListVecAddress* addr = dynamic_cast<CondAttrListVecAddress*>(pAddr);
57
58 if (addr) {
59 // Successful cast
60 pObj = SG::asStorable(addr->attrListVec());
61 if (!pObj) {
62 log << MSG::ERROR << "CondAttrListVec ptr is 0 from CondAttrListVecAddress " << endmsg;
63 return(StatusCode::FAILURE);
64 }
65 } else {
66 log << MSG::ERROR << "Could not extract ptr for CondAttrListVecAddress " << endmsg;
67 return(StatusCode::FAILURE);
68 }
69
70 return(StatusCode::SUCCESS);
71}
#define endmsg
CondAttrListVec * attrListVec()
Access to CondAttrListVec.
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)

◆ createRep()

StatusCode CondAttrListVecCnv::createRep ( DataObject * pObj,
IOpaqueAddress *& pAddr )
virtual

Create a POOL persistent representation for a transient object.

Parameters
pObj[IN] pointer to the transient object.
pAddr[OUT] IOpaqueAddress of POOL persistent representation.

Definition at line 73 of file CondAttrListVecCnv.cxx.

73 {
74
75 // This is the "write" method for an AttributeList. Here we only
76 // create an AthenaAttrListAddress and fill it with a pointer to
77 // the AthenaAttributeList
78
79 MsgStream log(msgSvc(), "CondAttrListVecCnv");
80 log << MSG::DEBUG << "Copy CondAttrListVec ptr into CondAttrListVecAddress" << endmsg;
81
82 CondAttrListVec* list = 0; //dynamic_cast<AthenaAttributeList*>(pObj);
83 SG::fromStorable(pObj, list);
84 if ( pAddr != nullptr ) pAddr->release();
85 CondAttrListVecAddress* addr = new CondAttrListVecAddress(storageType(),
86 classID(),
87 "POOLContainer_CondAttrListVec][CLID=x");
88 addr->setAttrListVec(list);
89 pAddr = addr;
90 pAddr->addRef();
91 log << MSG::DEBUG << "Created CondAttrListVec with list ptr: " << list << endmsg;
92 return(StatusCode::SUCCESS);
93}
void setAttrListVec(CondAttrListVec *attrListVec)
Add CondAttrListVec.
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
list(name, path='/')
Definition histSizes.py:38

◆ initialize()

StatusCode CondAttrListVecCnv::initialize ( )
virtual

Gaudi Service Interface method implementations:

Definition at line 35 of file CondAttrListVecCnv.cxx.

35 {
36 MsgStream log(msgSvc(), "CondAttrListVecCnv");
37
38 log << MSG::DEBUG << "initialize() in CondAttrListVecCnv" << endmsg;
39 StatusCode status = Converter::initialize();
40 if (!status.isSuccess()) {
41 log << MSG::ERROR << "Can not initialize Converter base class." << endmsg;
42 return(status);
43 }
44 return(status);
45}
::StatusCode StatusCode
StatusCode definition for legacy code.
status
Definition merge.py:16

◆ ipCorr()

void Converter::ipCorr ( double d0,
double z0,
double & d0c,
double & z0c,
double phi0,
double eta,
double pt )
inlineprotectedinherited

Definition at line 200 of file Converter.h.

200 {
201
202 double sn = sin(phi0);
203 double cs = cos(phi0);
204 double sd0 = (d0 != 0 ? d0/fabs(d0) : 1);
205 double spt = (pt != 0 ? pt/fabs(pt) : 1);
206
207 if (fabs(pt) >= 1*CLHEP::TeV) {
208
209 d0c = d0 + m_beamX*sn - m_beamY*cs;
210
211 } else {
212
213 double rc = fabs(pt)*15.0/(9.0*1.042);
214
215 double xc = (fabs(d0)-spt*sd0*rc)*cos(phi0+M_PI/2*sd0) - m_beamX;
216 double yc = (fabs(d0)-spt*sd0*rc)*sin(phi0+M_PI/2*sd0) - m_beamY;
217
218 double newphi;
219 double xd01,yd01,xd02,yd02;
220
221 if (xc == 0) {
222 xd01 = 0; yd01 = rc+yc;
223 xd02 = 0; yd02 = -rc+yc;
224 } else {
225 xd01 = xc+yc/xc*yc+sqrt(pow((xc+yc/xc*yc),2)-xc*xc-yc*yc+rc*rc); yd01 = yc/xc*xd01;
226 xd02 = xc+yc/xc*yc-sqrt(pow((xc+yc/xc*yc),2)-xc*xc-yc*yc+rc*rc); yd02 = yc/xc*xd02;
227 }
228
229 double r1 = sqrt(xd01*xd01+yd01*yd01);
230 double r2 = sqrt(xd02*xd02+yd02*yd02);
231
232 double phiV;
233
234 if (r1 < r2)
235 phiV = atan2(yd01,xd01);
236 else
237 phiV = atan2(yd02,xd02);
238
239 double phi1 = phiCorr(phiV+M_PI/2);
240 double phi2 = phiCorr(phiV-M_PI/2);
241
242 if (fabs(phiCorr(phi1-phi0))<=fabs(phiCorr(phi2-phi0)))
243 newphi = phi1;
244 else
245 newphi = phi2;
246
247 d0c = fabs(sqrt(xc*xc+yc*yc)-rc)*sin(phiV-newphi);
248
249 double theta=2*atan2(exp(-eta),1);
250 double theta_save=theta;
251 theta = theta - (1+spt)/2*M_PI;
252 if (theta>0) theta = theta_save;
253
254 double deltaz0= -spt*rc/tan(theta)*phiCorr(phiCorr(newphi)-phiCorr(phi0));
255 z0c = z0 + deltaz0;
256
257 }
258 }
#define M_PI
Scalar eta() const
pseudorapidity method
Scalar theta() const
theta method
static Double_t rc
double m_beamX
Definition Converter.h:263
double phiCorr(double phi)
Definition Converter.h:191
double m_beamY
Definition Converter.h:263
constexpr int pow(int x)
Definition conifer.h:27

◆ phiCorr()

double Converter::phiCorr ( double phi)
inlineprotectedinherited

Definition at line 191 of file Converter.h.

191 {
192
193 if (phi < -TMath::Pi()) phi += 2*TMath::Pi();
194 if (phi > TMath::Pi()) phi -= 2*TMath::Pi();
195
196 return phi;
197 }
Scalar phi() const
phi method

◆ repSvcType()

long int CondAttrListVecCnv::repSvcType ( ) const
virtual
Returns
storage type.

Definition at line 27 of file CondAttrListVecCnv.cxx.

27 {
28 return(storageType());
29}

◆ selectTracks() [1/2]

void Converter::selectTracks ( const Analysis::MuonContainer * muontracks)
inlineinherited

Definition at line 120 of file Converter.h.

120 {
121
122 static int hpmap[20] = { 0, 1, 2, 7, 8, 9, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
123
124 Analysis::MuonContainer::const_iterator muonitr = muontracks->begin();
125 Analysis::MuonContainer::const_iterator muonend = muontracks->end();
126
127 while(muonitr!=muonend) {
128
129 bool hasInDet = (*muonitr)->hasInDetTrackParticle();
130 const Rec::TrackParticle *trackitr=NULL;
131 if(hasInDet) trackitr=(*muonitr)->inDetTrackParticle();
132 muonitr++;
133 if(!hasInDet) continue;
134
135 const Trk::MeasuredPerigee* measPer = trackitr->measuredPerigee();
136
137 CLHEP::HepVector perigeeParams = measPer->parameters();
138 double pT = measPer->pT();
139 double eta = measPer->eta();
140 double phi = perigeeParams[Trk::phi0];
141 double z0 = perigeeParams[Trk::z0];
142 double d0 = perigeeParams[Trk::d0];
143 //double theta = perigeeParams[Trk::theta];
144
145 double deta = 1;
146 double dphi = 1;
147 double dz0 = 1;
148 double dd0 = 1;
149 double dpT = 1;
150
151 // Check number of hits
152 // NB: a spacepoint is two offline "hits", so a pixel spacepoint is really
153 // 2 "hits" and an offline SCT "hit" is really a 1D cluster, so two intersetcting
154 // stereo clusters making a spacepoint are two "hits"
155 const Trk::TrackSummary *summary = trackitr->trackSummary();
156 int nBlayerHits = 2*summary->get(Trk::numberOfBLayerHits);
158 int nSctHits = summary->get(Trk::numberOfSCTHits);
159 int nStrawHits = summary->get(Trk::numberOfTRTHits);
160 int nTrHits = summary->get(Trk::numberOfTRTHighThresholdHits);
161
162 int nSiHits = nPixelHits + nSctHits;
163
164 const Trk::FitQuality *quality = trackitr->fitQuality();
165 double chi2 = quality->chiSquared();
166 double dof = quality->quality->numberDoF();
167
168 unsigned bitmap = 0;
169
170 for ( int ih=0 ; ih<20 ; ih++ ) {
171 if ( summary->isHit(Trk::DetectorType(ih)) ) bitmap |= ( 1<<hpmap[ih] );
172 }
173
174 // Shift d0 and z0 according to beam position
175 ipCorr(d0, z0, d0, z0, phi, eta, pT);
176
177 // Create and save Track
178 TIDA::Track* t = new TIDA::Track(eta, phi, z0, d0, pT, chi2, dof,
179 deta, dphi, dz0, dd0, dpT,
180 nBlayerHits, nPixelHits, nSctHits, nSiHits,
181 nStrawHits, nTrHits, bitmap, 0,
182 -1) ;
183
184 addTrack(t);
185 }
186
187 }
void addTrack(TIDA::Track *t)
Definition Converter.h:43
void ipCorr(double d0, double z0, double &d0c, double &z0c, double phi0, double eta, double pt)
Definition Converter.h:200
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
const Trk::Perigee * measuredPerigee() const
Accessor method for Perigee.
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Definition FitQuality.h:60
double chiSquared() const
returns the of the overall track fit
Definition FitQuality.h:56
double eta() const
Access method for pseudorapidity - from momentum.
double pT() const
Access method for transverse momentum.
const FitQuality * fitQuality() const
accessor function for FitQuality.
const TrackSummary * trackSummary() const
accessor function for TrackSummary.
double chi2(TH1 *h0, TH1 *h1)
float nSiHits(const U &p)
float nPixelHits(const U &p)
Perigee MeasuredPerigee
@ phi0
Definition ParamDefs.h:65
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64
DetectorType
enumerates the various detector types currently accessible from the isHit() method.
@ numberOfPixelHits
number of pixel layers on track with absence of hits
@ numberOfBLayerHits
these are the hits in the 0th pixel layer?
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold

◆ selectTracks() [2/2]

void Converter::selectTracks ( const Rec::TrackParticleContainer * trigtracks)
inlineinherited

Definition at line 54 of file Converter.h.

54 {
55
57 Rec::TrackParticleContainer::const_iterator trackend = trigtracks->end();
58
59 static int hpmap[20] = { 0, 1, 2, 7, 8, 9, 3, 4, 5, 6, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
60
61 while ( trackitr!=trackend ) {
62
63 const Trk::MeasuredPerigee* measPer = (*trackitr)->measuredPerigee();
64
65 CLHEP::HepVector perigeeParams = measPer->parameters();
66 double pT = measPer->pT();
67 double eta = measPer->eta();
68 double phi = perigeeParams[Trk::phi0];
69 double z0 = perigeeParams[Trk::z0];
70 double d0 = perigeeParams[Trk::d0];
71 //double theta = perigeeParams[Trk::theta];
72
73 double deta = 1;
74 double dphi = 1;
75 double dz0 = 1;
76 double dd0 = 1;
77 double dpT = 1;
78
79 // Check number of hits
80 // NB: a spacepoint is two offline "hits", so a pixel spacepoint is really
81 // 2 "hits" and an offline SCT "hit" is really a 1D cluster, so two intersetcting
82 // stereo clusters making a spacepoint are two "hits"
83 const Trk::TrackSummary *summary = (*trackitr)->trackSummary();
84 int nBlayerHits = 2*summary->get(Trk::numberOfBLayerHits);
86 int nSctHits = summary->get(Trk::numberOfSCTHits);
87 int nStrawHits = summary->get(Trk::numberOfTRTHits);
89 int nSiHits = nPixelHits + nSctHits;
90 bool expectBL = false; // Not stored for Rec::TrackParticle
91
92 const Trk::FitQuality *quality = (*trackitr)->fitQuality();
93 double chi2 = quality->chiSquared();
94 double dof = quality->numberDoF();
95
96 unsigned bitmap = 0;
97
98 for ( int ih=0 ; ih<20 ; ih++ ) {
99 if ( summary->isHit(Trk::DetectorType(ih)) ) bitmap |= ( 1<<hpmap[ih] );
100 }
101
102 // Shift d0 and z0 according to beam position
103 ipCorr(d0, z0, d0, z0, phi, eta, pT);
104
105 // Create and save Track
106 TIDA::Track* t = new TIDA::Track(eta, phi, z0, d0, pT, chi2, dof,
107 deta, dphi, dz0, dd0, dpT,
108 nBlayerHits, nPixelHits, nSctHits, nSiHits,
109 nStrawHits, nTrHits, bitmap, 0,
110 -1,
111 expectBL) ;
112
113 addTrack(t);
114 trackitr++;
115 }
116
117 }

◆ storageType()

long CondAttrListVecCnv::storageType ( )
static
Returns
storage type.

Definition at line 95 of file CondAttrListVecCnv.cxx.

95 {
97}
int type() const
Access to full type.
Definition DbType.h:65
static const DbType POOL_StorageType
Definition DbType.h:84

◆ tracks()

const std::vector< TIDA::Track * > & Converter::tracks ( ) const
inlineinherited

Definition at line 48 of file Converter.h.

48{return m_tracks;}

Member Data Documentation

◆ m_beamX

double Converter::m_beamX
protectedinherited

Definition at line 263 of file Converter.h.

◆ m_beamY

double Converter::m_beamY
protectedinherited

Definition at line 263 of file Converter.h.

◆ m_beamZ

double Converter::m_beamZ
protectedinherited

Definition at line 263 of file Converter.h.

◆ m_tracks

std::vector<TIDA::Track*> Converter::m_tracks
protectedinherited

Definition at line 264 of file Converter.h.


The documentation for this class was generated from the following files: