diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrack.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrack.h new file mode 100644 index 0000000000000000000000000000000000000000..7257c29ec45cc20b9061123e6a30d3c3245463a8 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrack.h @@ -0,0 +1,118 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGFTKSIM_FTKATHTRACK_H +#define TRIGFTKSIM_FTKATHTRACK_H + +#include <vector> + +class FTKAthTrack { +private: + int m_bankID; // Bank ID of the road related to this track + int m_roadID; // Road identifier + int m_patternID; // TODO add documentation + int m_sectorID; // Sector identifier + int m_trackID; // Unique track ID in this bank + + float m_invpt; // 1/(2*Pt) + float m_d0; // impact paramter + float m_phi; // phi of the track + float m_z0; // z0 + float m_ctheta; // cot(theta) + float m_chi2; // chi2 of the track + float m_origchi2; // In the case of majority recovery, this is the chi2 of + // the full fit. In all other cases m_chi2 == m_origchi2 + + int m_nmissing; // number of missing coordinates + unsigned int m_typemask; // set on in bits related to the step recovery were used, ex.: 0 no recovery, 01, rec 1st step, 11, recovery in the 1st and the 2nd stage + unsigned int m_bitmask; + int m_ncoords; // number of coordinates for the track + float *m_coord; //[m_ncoords] coordinates used in the fit + + int m_HF_rejected; /* 0 if the track is accepted, >0 if rejected by hit filter + if negative, belongs to a HF rejected road + */ + int m_HW_rejected; /* The flag has 3 digit: [Q][RW][HW]: + Q : 1 if has a bad chi2, 0 if not + RW: is the RW level rejected the road, 0 if not rejected + HW: 1 if rejected by HW, 0 if not */ + int m_HW_track; // ID of the track excluded this track + + signed long m_eventindex; // matched particle event index + signed long m_barcode; // matched geant particle barcode + float m_barcode_frac; // largest "matching fraction" with any "good" + // geant particle, corresponding to the + // particle with m_barcode + +public: + FTKAthTrack(); + FTKAthTrack(int); + FTKAthTrack(const FTKAthTrack &); + virtual ~FTKAthTrack(); + + const int& getBankID() const { return m_bankID; } + int getRegion() const { return m_bankID%100; } + int getSubRegion() const { return m_bankID/100; } + const int& getRoadID() const { return m_roadID; } + const int& getPatternID() const { return m_patternID; } + const int& getSectorID() const { return m_sectorID; } + const int& getTrackID() const { return m_trackID; } + float getParameter(int) const; + const float& getInvPt() const { return m_invpt; } + float getPt() const { return .5/m_invpt; } + const float& getIP() const { return m_d0; } + const float& getPhi() const { return m_phi; } + const float& getZ0() const { return m_z0; } + const float& getCotTheta() const { return m_ctheta; } + float getEta() const; + const float& getChi2() const { return m_chi2; } + float getChi2ndof() const { return m_chi2/(m_ncoords-m_nmissing-5); } + const float& getOrigChi2() const { return m_origchi2; } + float getOrigChi2ndof() const { return m_origchi2/(m_ncoords-m_nmissing-5); } + const int& getNMissing() const { return m_nmissing; } + const unsigned int& getTypeMask() const { return m_typemask; } + const unsigned int& getBitmask() const { return m_bitmask; } + const int& getNCoords() const { return m_ncoords; } + const float& getCoord(int i) const { return m_coord[i]; } + float *getCoords() { return m_coord; }; + const int& getHFRejected() const { return m_HF_rejected; } + const int& getHWRejected() const { return m_HW_rejected; } + const int& getHWTrackID() const { return m_HW_track; } + const signed long& getEventIndex() const { return m_eventindex; } + const signed long& getBarcode() const { return m_barcode; } + const float& getBarcodeFrac() const { return m_barcode_frac; } + + void setBankID(int v) { m_bankID = v; } + void setRoadID(int v) { m_roadID = v; } + void setPatternID(int v) { m_patternID = v; } + void setSectorID(int v) { m_sectorID = v; } + void setTrackID(int v) { m_trackID = v; } + void setParameter(int,float); + void setInvPt(float v) { m_invpt = v; } + void setIP(float v) { m_d0 = v; } + void setPhi(float v,bool ForceRange=true); + void setZ0(float v) {m_z0 = v;} + void setCotTheta(float v) { m_ctheta = v; } + void setChi2(float v) { m_chi2 = v; } + void setOrigChi2(float v) { m_origchi2 = v; } + void setNMissing(int v) { m_nmissing = v; } + void setTypeMask(unsigned int v) { m_typemask = v; } + void setBitmask(unsigned int v) { m_bitmask = v; } + void setNCoords(int); + void setCoord(int i, float v) { m_coord[i] = v; } + void setEventIndex( const signed long& v ) { m_eventindex = v; } + void setBarcode( const signed long& v ) { m_barcode = v; } + void setBarcodeFrac(const float& v ) { m_barcode_frac = v; } + void setHFRejected(int v) { m_HF_rejected = v; } + void setHWRejected(int v) { m_HW_rejected = v; } + void setHWTrackID(int v) { m_HW_track = v; } + + // Function used by the HW to compare similar combinations + unsigned int getNCommonHits(const FTKAthTrack &, const float*) const; + int HWChoice(const FTKAthTrack&,const float*,const unsigned int,int); + + FTKAthTrack& operator=(const FTKAthTrack&); +}; + +#endif // TRIGFTKSIM_FTKATHTRACK_H diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrackContainer.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrackContainer.h new file mode 100644 index 0000000000000000000000000000000000000000..54fcb32fe3e51f4521ac6efb22318bf5898a5586 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrackContainer.h @@ -0,0 +1,21 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKATHTRACKCONTAINER_H +#define FTKATHTRACKCONTAINER_H + +#include "DataModel/DataVector.h" +#include "TrigFTKPool/FTKAthTrack.h" + +class FTKAthTrackContainer : public DataVector<FTKAthTrack> { +public : + FTKAthTrackContainer(SG::OwnershipPolicy ownPolicy = SG::OWN_ELEMENTS) : + DataVector<FTKAthTrack>(ownPolicy) {}; + virtual ~FTKAthTrackContainer() {}; +}; + +#include "CLIDSvc/CLASS_DEF.h" +CLASS_DEF(FTKAthTrackContainer,67458,1) + +#endif // FTKATHTRACKCONTAINER_H diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrackContainer_p1.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrackContainer_p1.h new file mode 100644 index 0000000000000000000000000000000000000000..4ea92dd4ddae566bd1a8342f835a7df37b738505 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrackContainer_p1.h @@ -0,0 +1,14 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKATHTRACKCONTAINER_P1_H +#define FTKATHTRACKCONTAINER_P1_H + +#include <vector> +#include "TrigFTKPool/FTKAthTrack_p1.h" + +class FTKAthTrackContainer_p1 : public std::vector<FTKAthTrack_p1> { +}; + +#endif // FTKATHTRACKCONTAINER_P1_H diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrack_p1.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrack_p1.h new file mode 100644 index 0000000000000000000000000000000000000000..94de2cf760340cc353298e687e187fd14d94c8bb --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKAthTrack_p1.h @@ -0,0 +1,53 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRIGFTKSIM_FTKATHTRACK_P1_H +#define TRIGFTKSIM_FTKATHTRACK_P1_H + +#include <vector> + +class FTKAthTrack_p1 { +private: + int m_bankID; // Bank ID of the road related to this track + int m_roadID; // Road identifier + int m_patternID; // TODO add documentation + int m_sectorID; // Sector identifier + int m_trackID; // Unique track ID in this bank + + float m_invpt; // 1/(2*Pt) + float m_d0; // impact paramter + float m_phi; // phi of the track + float m_z0; // z0 + float m_ctheta; // cot(theta) + float m_chi2; // chi2 of the track + float m_origchi2; // In the case of majority recovery, this is the chi2 of + // the full fit. In all other cases m_chi2 == m_origchi2 + + int m_nmissing; // number of missing coordinates + unsigned int m_typemask; // set on in bits related to the step recovery were used, ex.: 0 no recovery, 01, rec 1st step, 11, recovery in the 1st and the 2nd stage + unsigned int m_bitmask; + std::vector<float> m_coord; // coordinates used in the fit + + int m_HF_rejected; /* 0 if the track is accepted, >0 if rejected by hit filter + if negative, belongs to a HF rejected road + */ + int m_HW_rejected; /* The flag has 3 digit: [Q][RW][HW]: + Q : 1 if has a bad chi2, 0 if not + RW: is the RW level rejected the road, 0 if not rejected + HW: 1 if rejected by HW, 0 if not */ + int m_HW_track; // ID of the track excluded this track + + signed long m_eventindex; // matched particle event index + signed long m_barcode; // matched geant particle barcode + float m_barcode_frac; // largest "matching fraction" with any "good" + // geant particle, corresponding to the + // particle with m_barcode + +public: + FTKAthTrack_p1(); + + friend class FTKAthTrackCnv_p1; +}; + +#endif // TRIGFTKSIM_FTKATHTRACK_P1_H diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTestData.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTestData.h new file mode 100644 index 0000000000000000000000000000000000000000..dbd3d9355a2cebfdf4b15fdad5301ea43a0b19a1 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTestData.h @@ -0,0 +1,22 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKTestData_h +#define FTKTestData_h + +class FTKTestData { +private: + int m_ival; + +public: + FTKTestData() : m_ival(0) {;} + FTKTestData(int ival) : m_ival(ival) {;} + + void setValue(int); + int getValue() const; +}; + +#include "CLIDSvc/CLASS_DEF.h" +CLASS_DEF(FTKTestData,827647585,1) +#endif // FTKTestData_h diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTestData_p0.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTestData_p0.h new file mode 100644 index 0000000000000000000000000000000000000000..3e16714f566478140a3add1540efd529fd2525c2 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTestData_p0.h @@ -0,0 +1,17 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKTestData_POOL_h +#define FTKTestData_POOL_h + +class FTKTestData_p0 { +private: + int m_ival; + +public: + + friend class FTKTestDataCnv_p0; +}; + +#endif // FTKTestData_POOL_h diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTrackFitterStats.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTrackFitterStats.h new file mode 100644 index 0000000000000000000000000000000000000000..04df72f8599b3d39c95eaf6d05bbf7d33c3c283d --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTrackFitterStats.h @@ -0,0 +1,58 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKTRACKFITTERSTATS_H +#define FTKTRACKFITTERSTATS_H + +class FTKTrackFitterStats { +private: + unsigned int m_ncombs; // number of combinations + unsigned int m_nfits; // number of fitted combinations + unsigned int m_nfits_maj; // number of fitted combinations in majority roads + unsigned int m_nfits_rec; // number of full fits attempted to recover + unsigned int m_nfits_addrec; // additional fits performed because the recovery + unsigned int m_nfits_bad; // # fits with a bad chi^2 + unsigned int m_nfits_rej; // # of fits rejected because the HW + unsigned int m_nfits_badmaj; // # fits with a bad chi^2 + unsigned int m_nfits_rejmaj; // # of fits rejected because the HW + +public: + FTKTrackFitterStats(); + + void setNCombs(int v) { m_ncombs = v; } + void setNFits(int v) { m_nfits = v; } + void setNFitsMajority(int v) { m_nfits_maj = v; } + void setNFitsRecovery(int v) { m_nfits_rec = v; } + void setNAddFitsRecovery(int v) { m_nfits_addrec = v; } + void setNFitsBad(int v) { m_nfits_bad = v; } + void setNFitsHWRejected(int v) { m_nfits_rej = v; } + void setNFitsBadMajority(int v) { m_nfits_badmaj = v; } + void setNFitsHWRejectedMajority(int v) { m_nfits_rejmaj = v; } + + void addNCombs(int v) { m_ncombs += v; } + void addNFits(int v) { m_nfits += v; } + void addNFitsMajority(int v) { m_nfits_maj += v; } + void addNFitsRecovery(int v) { m_nfits_rec += v; } + void addNAddFitsRecovery(int v) { m_nfits_addrec += v; } + void addNFitsBad(int v) { m_nfits_bad += v; } + void addNFitsHWRejected(int v) { m_nfits_rej += v; } + void addNFitsBadMajority(int v) { m_nfits_badmaj += v; } + void addNFitsHWRejectedMajority(int v) { m_nfits_rejmaj += v; } + + unsigned int getNCombs() const { return m_ncombs; } + unsigned int getNFits() const { return m_nfits; } + unsigned int getNFitsMajority() const { return m_nfits_maj; } + unsigned int getNFitsRecovery() const { return m_nfits_rec; } + unsigned int getNAddFitsRecovery() const { return m_nfits_addrec; } + unsigned int getNFitsBad() const { return m_nfits_bad; } + unsigned int getNFitsHWRejected() const { return m_nfits_rej; } + unsigned int getNFitsBadMajority() const { return m_nfits_badmaj; } + unsigned int getNFitsHWRejectedMajority() const { return m_nfits_rejmaj; } + +}; + +#include "CLIDSvc/CLASS_DEF.h" +CLASS_DEF(FTKTrackFitterStats,764785,1) + +#endif // FTKTRACKFITTERSTATS_H diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTrackFitterStats_p1.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTrackFitterStats_p1.h new file mode 100644 index 0000000000000000000000000000000000000000..56680efdd7bf192408d70aafb0c0f2f60aa2b08c --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/FTKTrackFitterStats_p1.h @@ -0,0 +1,26 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKTRACKFITTERSTATS_P1_H +#define FTKTRACKFITTERSTATS_P1_H + +class FTKTrackFitterStats_p1 { +private: + friend class FTKTrackFitterStatsCnv_p1; + + unsigned int m_ncombs; // number of combinations + unsigned int m_nfits; // number of fitted combinations + unsigned int m_nfits_maj; // number of fitted combinations in majority roads + unsigned int m_nfits_rec; // number of full fits attempted to recover + unsigned int m_nfits_addrec; // additional fits performed because the recovery + unsigned int m_nfits_bad; // # fits with a bad chi^2 + unsigned int m_nfits_rej; // # of fits rejected because the HW + unsigned int m_nfits_badmaj; // # fits with a bad chi^2 + unsigned int m_nfits_rejmaj; // # of fits rejected because the HW + +public: + FTKTrackFitterStats_p1(); + +}; +#endif // FTKTRACKFITTERSTATS_H diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/TrigFTKPoolDict.h b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/TrigFTKPoolDict.h new file mode 100644 index 0000000000000000000000000000000000000000..6e0763a88d6b771f83074d08903e82313a7a3cdb --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/TrigFTKPoolDict.h @@ -0,0 +1,19 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TrigFTKPoolDict_h +#define TrigFTKPoolDict_h + +#include "TrigFTKPool/FTKTestData.h" +#include "TrigFTKPool/FTKTestData_p0.h" + +#include "TrigFTKPool/FTKAthTrack.h" +#include "TrigFTKPool/FTKAthTrackContainer.h" +#include "TrigFTKPool/FTKAthTrack_p1.h" +#include "TrigFTKPool/FTKAthTrackContainer_p1.h" + +#include "TrigFTKPool/FTKTrackFitterStats.h" +#include "TrigFTKPool/FTKTrackFitterStats_p1.h" + +#endif // TrigFTKEventPoolDict_h diff --git a/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/selection.xml b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/selection.xml new file mode 100644 index 0000000000000000000000000000000000000000..bfdeeee50acc4b7303150b182ee77897b99cae8d --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/TrigFTKPool/selection.xml @@ -0,0 +1,13 @@ +<lcgdict> +<class name="FTKTestData" id="1F22CE79-5D49-4DDB-B282-CB894C10CFFD" /> +<class name="FTKTestData_p0" id="1F22CE79-5D39-4DDB-B882-CA894B26CFFD" /> + +<class name="FTKAthTrack" /> +<class name="FTKAthTrackContainer" id="A04672DA-185E-4363-B41E-06B55E4AF9AA" /> +<class name="FTKAthTrack_p1" /> +<class name="FTKAthTrackContainer_p1" id="94372D90-D05F-44B0-8E12-2E795342EAFC" /> + +<class name="FTKTrackFitterStats" id="09065382-0AA9-4926-A2A8-7FFC5ED7BAA7" /> +<class name="FTKTrackFitterStats_p1" id="09056832-AA09-9426-A2A8-7FC5ED7BFAA7" /> + +</lcgdict>' diff --git a/Trigger/TrigFTK/TrigFTKPool/cmt/requirements b/Trigger/TrigFTK/TrigFTKPool/cmt/requirements new file mode 100644 index 0000000000000000000000000000000000000000..627b40f36e27483b3d68b5f7247faa375b1bbc7b --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/cmt/requirements @@ -0,0 +1,26 @@ +package TrigFTKPool + +author Guido Volpi <guido.volpi@cern.ch> + +use AtlasPolicy AtlasPolicy-* +use CLIDSvc CLIDSvc-* Control +use DataModel DataModel-* Control + +private +use AthenaPoolCnvSvc AthenaPoolCnvSvc-* Database/AthenaPOOL +use AthenaPoolUtilities AthenaPoolUtilities-* Database/AthenaPOOL +use AtlasROOT AtlasROOT-* External +end_private + +library TrigFTKPool *.cxx +apply_pattern installed_library + +macro_append TrigFTKPoolPoolCnv_dependencies " TrigFTKPool " + +private +use AtlasReflex AtlasReflex-* External -no_auto_imports + +#apply_pattern lcgdict dict=TrigFTKEventPool selectionfile=selection.xml navigables="ExampleHitContainer" headerfiles="-s=${TrigFTKEventPool_root}/TrigFTKEventPool TrigFTKEventPoolDict.h" +apply_pattern lcgdict dict=TrigFTKPool selectionfile=selection.xml headerfiles="-s=${TrigFTKPool_root}/TrigFTKPool TrigFTKPoolDict.h" + +apply_pattern poolcnv files="-s=${TrigFTKPool_root}/TrigFTKPool FTKTestData.h FTKAthTrackContainer.h FTKTrackFitterStats.h" \ No newline at end of file diff --git a/Trigger/TrigFTK/TrigFTKPool/doc/mainpage.h b/Trigger/TrigFTK/TrigFTKPool/doc/mainpage.h new file mode 100644 index 0000000000000000000000000000000000000000..a8f40a45f6476164fed0e9eea370dd79f87fcd2a --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/doc/mainpage.h @@ -0,0 +1,20 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +/** +@mainpage TrigFTKEventPool Package + +>> Please enter an overview of the created package here: What does it contain? + +@author Guido Volpi <guido.volpi@cern.ch> + +@section TrigFTKEventPoolIntro Introduction + +>> Please enter a brief description of the package here. + +@section TrigFTKEventPoolReq Requirements + +@include requirements + +*/ diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrack.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrack.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d124b7b525fbc5fec4d81bf5dcc4ce464021a4f7 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrack.cxx @@ -0,0 +1,286 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TrigFTKPool/FTKAthTrack.h" + +#include <iostream> +using namespace std; + +#include <TMath.h> + +FTKAthTrack::FTKAthTrack() : + m_bankID(-1), m_roadID(-1), m_sectorID(-1), m_trackID(-1), + m_invpt(0), m_d0(0), m_phi(0), m_z0(0), + m_ctheta(0), m_chi2(0), m_origchi2(0), m_nmissing(0), + m_typemask(0), m_bitmask(0), m_ncoords(0), m_coord(0), + m_HF_rejected(0),m_HW_rejected(0),m_HW_track(-1), + m_eventindex(-1), m_barcode(-1), m_barcode_frac(0.) +{ + // nothing to do +} + +FTKAthTrack::FTKAthTrack(int ncoords) : + m_bankID(-1), m_roadID(-1), m_sectorID(-1), m_trackID(-1), + m_invpt(0), m_d0(0), m_phi(0), m_z0(0), + m_ctheta(0), m_chi2(0), m_origchi2(0), m_nmissing(0), + m_typemask(0), m_bitmask(0), m_ncoords(ncoords), + m_HF_rejected(0),m_HW_rejected(0),m_HW_track(-1), + m_eventindex(-1), m_barcode(-1), m_barcode_frac(0.) +{ + m_coord = new float[m_ncoords]; + for (int ix=0;ix!=m_ncoords;++ix) m_coord[ix] = 0.f; +} + + +FTKAthTrack::FTKAthTrack(const FTKAthTrack &cpy) +{ + m_bankID = cpy.m_bankID; + m_roadID = cpy.m_roadID; + m_sectorID = cpy.m_sectorID; + m_trackID = cpy.m_trackID; + m_invpt = cpy.m_invpt; + m_d0 = cpy.m_d0; + m_phi = cpy.m_phi; + m_ctheta = cpy.m_ctheta; + m_z0 = cpy.m_z0; + m_chi2 = cpy.m_chi2; + m_origchi2 = cpy.m_origchi2; + m_nmissing = cpy.m_nmissing; + m_typemask = cpy.m_typemask; + m_bitmask = cpy.m_bitmask; + m_ncoords = cpy.m_ncoords; + + m_eventindex = cpy.m_eventindex; + m_eventindex = cpy.m_eventindex; + m_barcode = cpy.m_barcode; + m_barcode_frac = cpy.m_barcode_frac; + + m_HF_rejected = cpy.m_HF_rejected; + + m_HW_rejected = cpy.m_HW_rejected; + m_HW_track = cpy.m_HW_track; + + m_coord = new float[m_ncoords]; + for (int i=0;i<m_ncoords;++i) + m_coord[i] = cpy.m_coord[i]; +} + + + +FTKAthTrack::~FTKAthTrack() +{ + if (m_ncoords>0) delete [] m_coord; +} + +// if ForceRange==true, then phi = [-pi..pi) +void FTKAthTrack::setPhi(float phi, bool ForceRange) { + if (ForceRange) { + // when phi is ridiculously large, there is no point in adjusting it + if(fabs(phi)>100) { + if(m_chi2<100) { // this is a BAD track, so fail it if chi2 hasn't done so already + std::cout << "FTKAthTrack warning: fitted phi = " << phi << ", but chi2 = " << m_chi2 + << ". Adjusting to chi2+=100!" << std::endl; + m_chi2+=100; // we want to fail this event anyway + } + } + else { + while (phi>= TMath::Pi()) phi -= TMath::TwoPi(); + while (phi< -TMath::Pi()) phi += TMath::TwoPi(); + } + } + m_phi = phi; +} + + +/** set the number of coordinates connected with this track, + a dim=0 is used to cleanup array content */ +void FTKAthTrack::setNCoords(int dim) +{ + if (m_ncoords>0) delete [] m_coord; + + m_ncoords = dim; + m_coord = new float[m_ncoords]; + for (int i=0;i<m_ncoords;++i) + m_coord[i] = 0; +} + +float FTKAthTrack::getParameter(int ipar) const +{ + switch (ipar) { + case 0: + return m_invpt; + break; + case 1: + return m_d0; + break; + case 2: + return m_phi; + break; + case 3: + return m_z0; + break; + case 4: + return m_ctheta; + break; + } + + return 0.; +} + + +/** return the number of the common hits */ +unsigned int FTKAthTrack::getNCommonHits(const FTKAthTrack &track, const float *HWdev) const +{ + unsigned int ncommon_hits(0); + + // match over the hits list + for (int ix=0;ix!=m_ncoords;++ix) { + if ( !((m_bitmask & track.m_bitmask) & (1<<ix)) ) { + // majority hits are always common + ncommon_hits += 1; + continue; + } + + double dist = TMath::Abs(getCoord(ix)-track.getCoord(ix)); + if ( dist < HWdev[ix] ) { + ++ncommon_hits; // a common hit + } + } // end loop over hits + + return ncommon_hits; +} + + +/** this function compare this track with a different tracks and returns: + 0 if according HW setup the two tracks are different + 1 are similar and the other has a worse quality parameter + -1 are similar and the other has a better quality parameter */ +int FTKAthTrack::HWChoice(const FTKAthTrack &other, const float *HW_dev, + const unsigned int HW_ndiff, int HW_level) +{ + int accepted(0); + + // Choose hitwarrior severity level: 1=in-road, 2=global + if(HW_level<2) { + if(getBankID()!=other.getBankID()) return accepted; + if(getRoadID()!=other.getRoadID()) return accepted; + } + + unsigned int ncommon_hits = getNCommonHits(other,HW_dev); + + // FlagAK - simplistic hitwarrior. Makes no distinction between 1D and 2D + // If this doesn't work, we'll need to come up with something smarter + // check the criteria for considering two tracks the same + if ( m_ncoords-ncommon_hits<=HW_ndiff) { + // the track matches + if ( ( getHWRejected() && !other.getHWRejected()) || + (!getHWRejected() && other.getHWRejected()) ) { + + // keep the track in the accepted road + if (getHWRejected()) { + accepted = -1; + } + else { + accepted = 1; + } + + } + else if (other.getNMissing()==getNMissing()) { + // keep the track with the best chi2 + if (other.getChi2() > getChi2()) { + accepted = 1; + } + else { + accepted = -1; + } + } + else if (other.getNMissing() < getNMissing()) { + // keep the track using more real points + accepted = -1; + } + else if (other.getNMissing() > getNMissing()) { + accepted = 1; + } + } + + return accepted; +} + + +void FTKAthTrack::setParameter(int ipar, float val) +{ + switch (ipar) { + case 0: + m_invpt = val; + break; + case 1: + m_d0 = val; + break; + case 2: + m_phi = val; + break; + case 3: + m_z0 = val; + break; + case 4: + m_ctheta = val; + break; + } +} + + +float FTKAthTrack::getEta() const +{ + return TMath::ASinH(m_ctheta); +} + + + +FTKAthTrack& FTKAthTrack::operator=(const FTKAthTrack &tocpy) +{ +#ifdef PROTECT_SA // speedup + if (this != &tocpy) +#endif + { + m_bankID = tocpy.m_bankID; + m_roadID = tocpy.m_roadID; + m_sectorID = tocpy.m_sectorID; + m_trackID = tocpy.m_trackID; + m_invpt = tocpy.m_invpt; + m_d0 = tocpy.m_d0; + m_phi = tocpy.m_phi; + m_z0 = tocpy.m_z0; + m_ctheta = tocpy.m_ctheta; + m_chi2 = tocpy.m_chi2; + m_origchi2 = tocpy.m_origchi2; + m_nmissing = tocpy.m_nmissing; + m_typemask = tocpy.m_typemask; + m_bitmask = tocpy.m_bitmask; + + m_eventindex = tocpy.m_eventindex; + m_barcode = tocpy.m_barcode; + m_barcode_frac = tocpy.m_barcode_frac; + + m_HF_rejected = tocpy.m_HF_rejected; + + m_HW_rejected = tocpy.m_HW_rejected; + m_HW_track = tocpy.m_HW_track; + + if (m_ncoords!=tocpy.m_ncoords) { + m_ncoords = tocpy.m_ncoords; + if (m_coord) delete [] m_coord; + m_coord = new float[m_ncoords]; + } + + for (int i=0;i<m_ncoords;++i) { + m_coord[i] = tocpy.m_coord[i]; + } + + m_eventindex = tocpy.m_eventindex; + m_barcode = tocpy.m_barcode; + m_barcode_frac = tocpy.m_barcode_frac; + } + + return *this; +} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackCnv_p1.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackCnv_p1.cxx new file mode 100644 index 0000000000000000000000000000000000000000..80f92a15f292faac606eb37fce7d9950c8656dd3 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackCnv_p1.cxx @@ -0,0 +1,71 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#define private public +#define protected public +#include "TrigFTKPool/FTKAthTrack.h" +#undef private +#undef protected + +#include "FTKAthTrackCnv_p1.h" + +void FTKAthTrackCnv_p1::persToTrans(const FTKAthTrack_p1 *persObj, + FTKAthTrack *transObj, MsgStream&) +{ + transObj->m_bankID = persObj->m_bankID; + transObj->m_roadID = persObj->m_roadID; + transObj->m_patternID = persObj->m_patternID; + transObj->m_sectorID = persObj->m_sectorID; + transObj->m_trackID = persObj->m_trackID; + transObj->m_invpt = persObj->m_invpt; + transObj->m_d0 = persObj->m_d0; + transObj->m_phi = persObj->m_phi; + transObj->m_z0 = persObj->m_z0; + transObj->m_ctheta = persObj->m_ctheta; + transObj->m_chi2 = persObj->m_chi2; + transObj->m_origchi2 = persObj->m_origchi2; + transObj->m_nmissing = persObj->m_nmissing; + transObj->m_typemask = persObj->m_typemask; + transObj->m_bitmask = persObj->m_bitmask; + transObj->m_ncoords = persObj->m_coord.size(); + transObj->m_coord = new float[transObj->m_ncoords]; + for (int ic=0;ic!=transObj->m_ncoords;++ic) + transObj->m_coord[ic] = persObj->m_coord[ic]; + transObj->m_HF_rejected = persObj->m_HF_rejected; + transObj->m_HW_rejected = persObj->m_HW_rejected; + transObj->m_HW_track = persObj->m_HW_track; + transObj->m_eventindex = persObj->m_eventindex; + transObj->m_barcode = persObj->m_barcode; + transObj->m_barcode_frac = persObj->m_barcode_frac; +} + + +void FTKAthTrackCnv_p1::transToPers(const FTKAthTrack *transObj, + FTKAthTrack_p1 *persObj, MsgStream&) +{ + persObj->m_bankID = transObj->m_bankID; + persObj->m_roadID = transObj->m_roadID; + persObj->m_patternID = transObj->m_patternID; + persObj->m_sectorID = transObj->m_sectorID; + persObj->m_trackID = transObj->m_trackID; + persObj->m_invpt = transObj->m_invpt; + persObj->m_d0 = transObj->m_d0; + persObj->m_phi = transObj->m_phi; + persObj->m_z0 = transObj->m_z0; + persObj->m_ctheta = transObj->m_ctheta; + persObj->m_chi2 = transObj->m_chi2; + persObj->m_origchi2 = transObj->m_origchi2; + persObj->m_nmissing = transObj->m_nmissing; + persObj->m_typemask = transObj->m_typemask; + persObj->m_bitmask = transObj->m_bitmask; + persObj->m_coord.resize(transObj->m_ncoords); + for (int ic=0;ic!=transObj->m_ncoords;++ic) + persObj->m_coord[ic] = transObj->m_coord[ic]; + persObj->m_HF_rejected = transObj->m_HF_rejected; + persObj->m_HW_rejected = transObj->m_HW_rejected; + persObj->m_HW_track = transObj->m_HW_track; + persObj->m_eventindex = transObj->m_eventindex; + persObj->m_barcode = transObj->m_barcode; + persObj->m_barcode_frac = transObj->m_barcode_frac; +} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackCnv_p1.h b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackCnv_p1.h new file mode 100644 index 0000000000000000000000000000000000000000..dd3c7ea6a83ae755be221dd39749dc68c9630bad --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackCnv_p1.h @@ -0,0 +1,21 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKAthTrackCnv_p1_h +#define FTKAthTrackCnv_p1_h + +#include "TrigFTKPool/FTKAthTrack_p1.h" +#include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" + +class MsgStream; +class FTKAthTrack; + +class FTKAthTrackCnv_p1 : public T_AthenaPoolTPCnvBase<FTKAthTrack, FTKAthTrack_p1> { +public: + FTKAthTrackCnv_p1() {;} + + virtual void persToTrans(const FTKAthTrack_p1 *persObj, FTKAthTrack *transObj, MsgStream&); + virtual void transToPers(const FTKAthTrack *transObj, FTKAthTrack_p1 *persObj, MsgStream&); +}; +#endif // FTKAthTrackCnv_p1_h diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv.cxx new file mode 100644 index 0000000000000000000000000000000000000000..7b4a965d3f501c1fbce4e53481eceb583f103267 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv.cxx @@ -0,0 +1,25 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "FTKAthTrackContainerCnv.h" + +FTKAthTrackContainer_p1* FTKAthTrackContainerCnv::createPersistent(FTKAthTrackContainer *transObj) { + MsgStream log(messageService(),"FTKAthTrackContainerCnv"); + FTKAthTrackContainer_p1 *persObj = m_TPconverter.createPersistent(transObj,log); + return persObj; +} + + + +FTKAthTrackContainer* FTKAthTrackContainerCnv::createTransient() { + static pool::Guid p1_guid("94372D90-D05F-44B0-8E12-2E795342EAFC"); + + if (compareClassGuid(p1_guid)) { + MsgStream log(messageService(),"FTKAthTrackContainerCnv"); + std::auto_ptr<FTKAthTrackContainer_p1> cont_p1(this->poolReadObject<FTKAthTrackContainer_p1>()); + return m_TPconverter.createTransient(cont_p1.get(),log); + } + + return 0x0; +} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv.h b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv.h new file mode 100644 index 0000000000000000000000000000000000000000..2425efaeeeaa5441f39ef7132cdf3bb5d55fe2c7 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv.h @@ -0,0 +1,35 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKATHTRACKCONTAINERCNV_H +#define FTKATHTRACKCONTAINERCNV_H + +#include "AthenaPoolCnvSvc/T_AthenaPoolCustomCnv.h" +#include "FTKAthTrackContainerCnv_p1.h" // last persistency version + +#define private public +#define protected public +#include "TrigFTKPool/FTKAthTrackContainer_p1.h" +#include "TrigFTKPool/FTKAthTrackContainer.h" +#undef public +#undef protected + +#include <memory> + +class FTKAthTrackContainerCnv : public T_AthenaPoolCustomCnv<FTKAthTrackContainer,FTKAthTrackContainer_p1> { +private: + friend class CnvFactory<FTKAthTrackContainerCnv>; + + FTKAthTrackContainerCnv_p1 m_TPconverter; + +public: + FTKAthTrackContainerCnv(ISvcLocator *svcloc) : + T_AthenaPoolCustomCnv<FTKAthTrackContainer,FTKAthTrackContainer_p1>::T_AthenaPoolCustomCnv(svcloc) {} + + virtual FTKAthTrackContainer_p1* createPersistent(FTKAthTrackContainer *transObj); + virtual FTKAthTrackContainer* createTransient(); + +}; +#endif // FTKATHTRACKCONTAINERCNV_H + diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv_p1.h b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv_p1.h new file mode 100644 index 0000000000000000000000000000000000000000..f5eaed3b4ed28f24b88c7993e914f9f1ba7ba5ff --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrackContainerCnv_p1.h @@ -0,0 +1,24 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKATHTRACKCONTAINERCNV_P1_H +#define FTKATHTRACKCONTAINERCNV_P1_H + +#include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" +#define private public +#define protected public +#include "TrigFTKPool/FTKAthTrackContainer.h" +#include "TrigFTKPool/FTKAthTrackContainer_p1.h" +#undef private +#undef protected +#include "FTKAthTrackCnv_p1.h" + +typedef T_AthenaPoolTPCnvVector<FTKAthTrackContainer, FTKAthTrackContainer_p1, FTKAthTrackCnv_p1> FTKAthTrackContainerCnv_p1; + +template<> +class T_TPCnv<FTKAthTrackContainer, FTKAthTrackContainer_p1> : public FTKAthTrackContainerCnv_p1 { +public: +}; + +#endif // FTKATHTRACKCONTAINERCNV_P1_H diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrack_p1.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrack_p1.cxx new file mode 100644 index 0000000000000000000000000000000000000000..a2b9c79c3b32df924bb85963738ad5ebbe079619 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKAthTrack_p1.cxx @@ -0,0 +1,11 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TrigFTKPool/FTKAthTrack_p1.h" + + +FTKAthTrack_p1::FTKAthTrack_p1() : + m_bankID(-1) +{ +} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTestData.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKTestData.cxx new file mode 100644 index 0000000000000000000000000000000000000000..cad877c37442ac4e2adc23718e834fed3edb836b --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTestData.cxx @@ -0,0 +1,16 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TrigFTKPool/FTKTestData.h" + +void FTKTestData::setValue(int ival) +{ + m_ival = ival; +} + + +int FTKTestData::getValue() const +{ + return m_ival; +} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTestDataCnv_p0.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKTestDataCnv_p0.cxx new file mode 100644 index 0000000000000000000000000000000000000000..962f0532b591dc3e6c441821d5194c129d3f7f7f --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTestDataCnv_p0.cxx @@ -0,0 +1,24 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#define private public +#define protected public +#include "TrigFTKPool/FTKTestData.h" +#undef private +#undef protected + +#include "FTKTestDataCnv_p0.h" + +void FTKTestDataCnv_p0::persToTrans(const FTKTestData_p0 *persObj, + FTKTestData *transObj, MsgStream&) +{ + transObj->m_ival = persObj->m_ival; +} + + +void FTKTestDataCnv_p0::transToPers(const FTKTestData *transObj, + FTKTestData_p0 *persObj, MsgStream&) +{ + persObj->m_ival = transObj->m_ival; +} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTestDataCnv_p0.h b/Trigger/TrigFTK/TrigFTKPool/src/FTKTestDataCnv_p0.h new file mode 100644 index 0000000000000000000000000000000000000000..96bb2dcd661be4c3edd20211e7c60b418a5f4f47 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTestDataCnv_p0.h @@ -0,0 +1,21 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKTestDataCnv_p0_h +#define FTKTestDataCnv_p0_h + +#include "TrigFTKPool/FTKTestData_p0.h" +#include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" + +class MsgStream; +class FTKTestData; + +class FTKTestDataCnv_p0 : public T_AthenaPoolTPCnvBase<FTKTestData, FTKTestData_p0> { +public: + FTKTestDataCnv_p0() {;} + + virtual void persToTrans(const FTKTestData_p0 *persObj, FTKTestData *transObj, MsgStream&); + virtual void transToPers(const FTKTestData *transObj, FTKTestData_p0 *persObj, MsgStream&); +}; +#endif // FTKTestDataCnv_p0_h diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTestData_p0.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKTestData_p0.cxx new file mode 100644 index 0000000000000000000000000000000000000000..58cf6573ee425a4695649ed759de2293df4f06d5 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTestData_p0.cxx @@ -0,0 +1,6 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TrigFTKPool/FTKTestData_p0.h" + diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStats.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStats.cxx new file mode 100644 index 0000000000000000000000000000000000000000..0f91f495b11a6156535c6aca65ff60ed136924ea --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStats.cxx @@ -0,0 +1,10 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TrigFTKPool/FTKTrackFitterStats.h" + +FTKTrackFitterStats::FTKTrackFitterStats() : + m_ncombs(0), m_nfits(0), m_nfits_maj(0), m_nfits_rec(0), m_nfits_addrec(0), + m_nfits_bad(0), m_nfits_rej(0), m_nfits_badmaj(0), m_nfits_rejmaj(0) +{} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv.cxx new file mode 100644 index 0000000000000000000000000000000000000000..70858006ad39e337c50d72cdbe8db1c1e4b4b016 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv.cxx @@ -0,0 +1,25 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "FTKTrackFitterStatsCnv.h" + +FTKTrackFitterStats_p1* FTKTrackFitterStatsCnv::createPersistent(FTKTrackFitterStats *transObj) { + MsgStream log(messageService(),"FTKTrackFitterStatsCnv"); + FTKTrackFitterStats_p1 *persObj = m_TPconverter.createPersistent(transObj,log); + return persObj; +} + + + +FTKTrackFitterStats* FTKTrackFitterStatsCnv::createTransient() { + static pool::Guid p1_guid("09056832-AA09-9426-A2A8-7FC5ED7BFAA7"); + + if (compareClassGuid(p1_guid)) { + MsgStream log(messageService(),"FTKTrackFitterStatsCnv"); + std::auto_ptr<FTKTrackFitterStats_p1> cont_p1(this->poolReadObject<FTKTrackFitterStats_p1>()); + return m_TPconverter.createTransient(cont_p1.get(),log); + } + + return 0x0; +} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv.h b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv.h new file mode 100644 index 0000000000000000000000000000000000000000..f1739fa9ddfc7d0be88ec4391284f12113fb843b --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv.h @@ -0,0 +1,35 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKTRACKFITTERSTATSCNV_H +#define FTKTRACKFITTERSTATSCNV_H + +#include "AthenaPoolCnvSvc/T_AthenaPoolCustomCnv.h" +#include "FTKTrackFitterStatsCnv_p1.h" // last persistency version + +#define private public +#define protected public +#include "TrigFTKPool/FTKTrackFitterStats_p1.h" +#include "TrigFTKPool/FTKTrackFitterStats.h" +#undef public +#undef protected + +#include <memory> + +class FTKTrackFitterStatsCnv : public T_AthenaPoolCustomCnv<FTKTrackFitterStats,FTKTrackFitterStats_p1> { +private: + friend class CnvFactory<FTKTrackFitterStatsCnv>; + + FTKTrackFitterStatsCnv_p1 m_TPconverter; + +public: + FTKTrackFitterStatsCnv(ISvcLocator *svcloc) : + T_AthenaPoolCustomCnv<FTKTrackFitterStats,FTKTrackFitterStats_p1>::T_AthenaPoolCustomCnv(svcloc) {} + + virtual FTKTrackFitterStats_p1* createPersistent(FTKTrackFitterStats *transObj); + virtual FTKTrackFitterStats* createTransient(); + +}; +#endif // FTKTRACKFITTERSTATSCNV_H + diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv_p1.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv_p1.cxx new file mode 100644 index 0000000000000000000000000000000000000000..973df31735b440fb06e9b176008487b8720ba43c --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv_p1.cxx @@ -0,0 +1,40 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#define private public +#define protected public +#include "TrigFTKPool/FTKTrackFitterStats.h" +#undef private +#undef protected + +#include "FTKTrackFitterStatsCnv_p1.h" + +void FTKTrackFitterStatsCnv_p1::persToTrans(const FTKTrackFitterStats_p1 *persObj, + FTKTrackFitterStats *transObj, MsgStream&) +{ + transObj->m_ncombs = persObj->m_ncombs; + transObj->m_nfits = persObj->m_nfits; + transObj->m_nfits_maj = persObj->m_nfits_maj; + transObj->m_nfits_rec = persObj->m_nfits_rec; + transObj->m_nfits_addrec = persObj->m_nfits_addrec; + transObj->m_nfits_bad = persObj->m_nfits_bad; + transObj->m_nfits_rej = persObj->m_nfits_rej; + transObj->m_nfits_badmaj = persObj->m_nfits_badmaj; + transObj->m_nfits_rejmaj = persObj->m_nfits_rejmaj; +} + + +void FTKTrackFitterStatsCnv_p1::transToPers(const FTKTrackFitterStats *transObj, + FTKTrackFitterStats_p1 *persObj, MsgStream&) +{ + persObj->m_ncombs = transObj->m_ncombs; + persObj->m_nfits = transObj->m_nfits; + persObj->m_nfits_maj = transObj->m_nfits_maj; + persObj->m_nfits_rec = transObj->m_nfits_rec; + persObj->m_nfits_addrec = transObj->m_nfits_addrec; + persObj->m_nfits_bad = transObj->m_nfits_bad; + persObj->m_nfits_rej = transObj->m_nfits_rej; + persObj->m_nfits_badmaj = transObj->m_nfits_badmaj; + persObj->m_nfits_rejmaj = transObj->m_nfits_rejmaj; +} diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv_p1.h b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv_p1.h new file mode 100644 index 0000000000000000000000000000000000000000..701552f5334e2ca2f18983e68cc6ef6e5f591c47 --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStatsCnv_p1.h @@ -0,0 +1,21 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef FTKTrackFitterStatsCnv_p1_h +#define FTKTrackFitterStatsCnv_p1_h + +#include "TrigFTKPool/FTKTrackFitterStats_p1.h" +#include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" + +class MsgStream; +class FTKTrackFitterStats; + +class FTKTrackFitterStatsCnv_p1 : public T_AthenaPoolTPCnvBase<FTKTrackFitterStats, FTKTrackFitterStats_p1> { +public: + FTKTrackFitterStatsCnv_p1() {;} + + virtual void persToTrans(const FTKTrackFitterStats_p1 *persObj, FTKTrackFitterStats *transObj, MsgStream&); + virtual void transToPers(const FTKTrackFitterStats *transObj, FTKTrackFitterStats_p1 *persObj, MsgStream&); +}; +#endif // FTKTrackFitterStatsCnv_p1_h diff --git a/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStats_p1.cxx b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStats_p1.cxx new file mode 100644 index 0000000000000000000000000000000000000000..bb0d2aa37513f70a8b34831b1208cbbe7a13d75c --- /dev/null +++ b/Trigger/TrigFTK/TrigFTKPool/src/FTKTrackFitterStats_p1.cxx @@ -0,0 +1,10 @@ +/* + Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TrigFTKPool/FTKTrackFitterStats_p1.h" + +FTKTrackFitterStats_p1::FTKTrackFitterStats_p1() : + m_ncombs(0), m_nfits(0), m_nfits_maj(0), m_nfits_rec(0), m_nfits_addrec(0), + m_nfits_bad(0), m_nfits_rej(0), m_nfits_badmaj(0), m_nfits_rejmaj(0) +{}