diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/CMakeLists.txt b/Trigger/TrigAlgorithms/TrigL2MuonSA/CMakeLists.txt index 892479bba6250673dce49841809ff6dc3485c7d8..150f66bcea0ab492ea4d17b9899afeefddcdaabe 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/CMakeLists.txt +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/CMakeLists.txt @@ -54,16 +54,16 @@ atlas_add_library( TrigL2MuonSALib src/*.cxx PUBLIC_HEADERS TrigL2MuonSA INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} ${GSL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives Identifier RegionSelectorLib ByteStreamCnvSvcBaseLib xAODTrigMuon xAODTrigger GaudiKernel MuonMDT_CablingLib MuonTGC_CablingLib RPCcablingInterfaceLib MdtCalibSvcLib MuonRDO CscClusterizationLib MuonPrepRawData MuonRecToolInterfaces TrigMuonEvent TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigT1RPCRecRoiSvcLib TrigTimeAlgsLib StoreGateLib SGtests EventInfo MuonCablingData MuonCalibEvent MuonContainerManager MuonReadoutGeometry MuonIdHelpersLib PathResolver circ_proc MuCalDecode ) + LINK_LIBRARIES ${ROOT_LIBRARIES} ${GSL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives Identifier RegionSelectorLib ByteStreamCnvSvcBaseLib xAODTrigMuon xAODTrigger GaudiKernel MuonMDT_CablingLib MuonTGC_CablingLib RPCcablingInterfaceLib MdtCalibSvcLib MuonRDO CscClusterizationLib MuonPrepRawData MuonRecToolInterfaces TrigMuonEvent TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigT1RPCRecRoiSvcLib TrigTimeAlgsLib StoreGateLib SGtests EventInfo MuonCablingData MuonCalibEvent MuonContainerManager MuonReadoutGeometry MuonIdHelpersLib PathResolver ) atlas_add_component( TrigL2MuonSA src/*.cxx src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${GSL_INCLUDE_DIRS} ${TDAQ-COMMON_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} ${GSL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives Identifier RegionSelectorLib ByteStreamCnvSvcBaseLib xAODTrigMuon xAODTrigger GaudiKernel MuonMDT_CablingLib MuonTGC_CablingLib RPCcablingInterfaceLib MdtCalibSvcLib MuonRDO CscClusterizationLib MuonPrepRawData MuonRecToolInterfaces TrigMuonEvent TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigT1RPCRecRoiSvcLib TrigTimeAlgsLib StoreGateLib SGtests EventInfo MuonCablingData MuonCalibEvent MuonContainerManager MuonReadoutGeometry MuonIdHelpersLib PathResolver circ_proc MuCalDecode ) + LINK_LIBRARIES ${ROOT_LIBRARIES} ${GSL_LIBRARIES} ${TDAQ-COMMON_LIBRARIES} ${EIGEN_LIBRARIES} ${CLHEP_LIBRARIES} AthenaBaseComps GeoPrimitives Identifier RegionSelectorLib ByteStreamCnvSvcBaseLib xAODTrigMuon xAODTrigger GaudiKernel MuonMDT_CablingLib MuonTGC_CablingLib RPCcablingInterfaceLib MdtCalibSvcLib MuonRDO CscClusterizationLib MuonPrepRawData MuonRecToolInterfaces TrigMuonEvent TrigSteeringEvent TrigInterfacesLib TrigT1Interfaces TrigT1RPCRecRoiSvcLib TrigTimeAlgsLib StoreGateLib SGtests EventInfo MuonCablingData MuonCalibEvent MuonContainerManager MuonReadoutGeometry MuonIdHelpersLib PathResolver ) # Install files from the package: atlas_install_headers( TrigL2MuonSA ) atlas_install_python_modules( python/*.py ) -atlas_install_runtime( share/pt_barrel.lut share/pt_barrelSP.lut share/pt_barrel.mc10.lut share/pt_endcap.lut share/pt_endcap.mc10.lut share/dZ_barrel.lut share/pt_endcap_small_large.lut share/pt_endcap_run2.lut ) +atlas_install_runtime( share/pt_barrel.lut share/pt_barrelSP.lut share/pt_barrel.mc10.lut share/pt_endcap.lut share/pt_endcap.mc10.lut share/dZ_barrel.lut share/pt_endcap_small_large.lut share/pt_endcap_run2.lut share/pt_comb_sigma.lut share/pt_comb_mean.lut) diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastDataPreparator.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastDataPreparator.h index 91bc2d0766ef45b60352118d0c137d37a4eb21ec..2dad8ca8e6b9f65de7f1f363b0f75244e59c25dd 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastDataPreparator.h +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastDataPreparator.h @@ -95,6 +95,7 @@ class MuFastDataPreparator: public AthAlgTool void setExtrapolatorTool(ToolHandle<ITrigMuonBackExtrapolator>* backExtrapolator); + bool isRpcFakeRoi() {return m_isRpcFakeRoi;} protected: @@ -126,6 +127,7 @@ class MuFastDataPreparator: public AthAlgTool BooleanProperty m_use_rpc; + bool m_isRpcFakeRoi; }; } // namespace TrigL2MuonSA diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastSteering.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastSteering.h index 295711b1984231e5deb27139c92a1bcb4bfcb244..0682f8059f203de4187e0dddfd82e077ea372def 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastSteering.h +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/MuFastSteering.h @@ -169,6 +169,7 @@ class MuFastSteering : public HLT::FexAlgo, BooleanProperty m_use_RoIBasedDataAccess_CSC; BooleanProperty m_doCalStream; BooleanProperty m_calDataScouting; + BooleanProperty m_rpcErrToDebugStream; IntegerProperty m_esd_rpc_size; IntegerProperty m_esd_tgc_size; diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUT.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUT.h index 04f84943f7bdf5c4b1f03def9fb18cac39801546..ea7c83c8b02e854e697c4be3e267ea9a748233f1 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUT.h +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUT.h @@ -13,6 +13,9 @@ #include <map> #include <cstring> +#define ETAS1 5 +#define PHIS1 6 +#define PTS1 3 namespace TrigL2MuonSA { @@ -33,12 +36,20 @@ class PtEndcapLUT: public AthAlgTool virtual StatusCode finalize (); StatusCode readLUT(std::string lut_fileName); + StatusCode readLUTSigmaMean(std::string lut_mean, std::string lut_sigma); double alpha(double z1, double r1, double z2, double r2) const; double radius(double z1, double r1, double s1, double z2, double r2, double s2, double deltar) const; double lookup(int side, int charge, DataType type, int iEta, int iPhi, double value) const; - + double ptcombined(int iEta, int iPhi, double ApT, double BpT, double &CApT, double &CBpT) const; private: + double m_meana[ETAS1][PHIS1][PTS1]; + double m_meanb[ETAS1][PHIS1][PTS1]; + double m_meanc[ETAS1][PHIS1][PTS1]; + double m_sigmaa[ETAS1][PHIS1][PTS1]; + double m_sigmab[ETAS1][PHIS1][PTS1]; + double m_sigmac[ETAS1][PHIS1][PTS1]; + enum sizes { ETAS = 30, PHIS = 12, PHISEE = 192}; struct KeyType diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUTSvc.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUTSvc.h index e878207c208ce302e51275d8198ddcd12fa44c66..02deed1dbf8803a8e3b93bc159ba5f120d585c33 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUTSvc.h +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/PtEndcapLUTSvc.h @@ -39,6 +39,8 @@ class PtEndcapLUTSvc : public AthService, virtual public IInterface private: StringProperty m_lut_fileName; + StringProperty m_lut_mean; + StringProperty m_lut_sigma; ToolHandle<PtEndcapLUT> m_ptEndcapLUT; diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/RpcDataPreparator.h b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/RpcDataPreparator.h index a035f22a468636fc2872649fb4376a9114604ab2..839514a5f26c93ec8b2a6a35fee8d7abba70e89f 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/RpcDataPreparator.h +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/TrigL2MuonSA/RpcDataPreparator.h @@ -74,6 +74,8 @@ class RpcDataPreparator: public AthAlgTool TrigL2MuonSA::RpcHits& rpcHits, ToolHandle<RpcPatFinder>* rpcPatFinder); + bool isFakeRoi() { return m_isFakeRoi; } + void setRoIBasedDataAccess(bool use_RoIBasedDataAccess); private: @@ -102,6 +104,7 @@ class RpcDataPreparator: public AthAlgTool ToolHandle <Muon::MuonIdHelperTool> m_idHelperTool; //!< Pointer to concrete tool bool m_use_RoIBasedDataAccess; + bool m_isFakeRoi; }; } // namespace TrigL2MuonSA diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/cmt/requirements b/Trigger/TrigAlgorithms/TrigL2MuonSA/cmt/requirements index 496e3f5740e87c83c7a2b600585c0771fb3c188e..0c636cfd445ca5fc3b160feecd0e86c0f217264e 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/cmt/requirements +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/cmt/requirements @@ -67,6 +67,6 @@ apply_pattern component_library apply_pattern declare_joboptions files="*.py" apply_pattern declare_python_modules files="*.py" -apply_pattern declare_runtime files="pt_barrel.lut pt_barrelSP.lut pt_barrel.mc10.lut pt_endcap.lut pt_endcap.mc10.lut dZ_barrel.lut pt_endcap_small_large.lut pt_endcap_run2.lut" +apply_pattern declare_runtime files="pt_barrel.lut pt_barrelSP.lut pt_barrel.mc10.lut pt_endcap.lut pt_endcap.mc10.lut dZ_barrel.lut pt_endcap_small_large.lut pt_endcap_run2.lut pt_comb_mean.lut pt_comb_sigma.lut" ################################################# diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py index 6ff99c59b859a0fee03e13acdb2cd4be8094c9a6..be2b57133af2d8b3f7cfbc6c0ed7f9c316e53d3e 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py @@ -52,11 +52,15 @@ class PtEndcapLUTSvc(TrigL2MuonSA__PtEndcapLUTSvc): def __init__(self,name = 'PtEndcapLUTSvc'): super(PtEndcapLUTSvc ,self).__init__(name) self.FileName = "pt_endcap.lut" + self.EMeanLUT = "pt_comb_mean.lut" + self.ESigmaLUT = "pt_comb_sigma.lut" class PtEndcapLUTSvc_MC(TrigL2MuonSA__PtEndcapLUTSvc): def __init__(self,name = 'PtEndcapLUTSvc_MC'): super(PtEndcapLUTSvc_MC ,self).__init__(name) self.FileName = "pt_endcap.mc10.lut" + self.EMeanLUT = "pt_comb_mean.lut" + self.ESigmaLUT = "pt_comb_sigma.lut" class AlignmentBarrelLUTSvc(TrigL2MuonSA__AlignmentBarrelLUTSvc): def __init__(self,name = 'AlignmentBarrelLUTSvc'): @@ -96,6 +100,8 @@ class TrigL2MuonSAConfig(MuFastSteering): self.USE_ROIBASEDACCESS_CSC = True + self.RpcErrToDebugStream = True + if ( args[0]== '900GeV' ): self.WinPt = 4.0 self.Scale_Road_BarrelInner = 3 diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_mean.lut b/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_mean.lut new file mode 100644 index 0000000000000000000000000000000000000000..bc0530edf39226eed451b38eb8c872eef7195b42 --- /dev/null +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_mean.lut @@ -0,0 +1,90 @@ +0 0 0 -3.59368 3.53716 0.177256 +0 0 1 0.00800264 0.0346493 -24.2264 +0 0 2 -0.136881 0.235226 -5.15315 +0 1 0 -1.29824 1.2733 0.248821 +0 1 1 0.000172867 0.0968489 -28.1465 +0 1 2 -0.0459901 0.262098 -15.492 +0 2 0 -0.0311118 0.00813614 14.6002 +0 2 1 0.0167892 0.117797 -59.4152 +0 2 2 -0.0299643 0.235528 -16.1651 +0 3 0 -0.0145812 2.98114e-06 89.4717 +0 3 1 0.000265107 0.119519 -58.397 +0 3 2 -0.0152659 0.223635 -20.16 +0 4 0 -0.0759671 0.0375533 8.92943 +0 4 1 0.0206984 0.108587 -35.6722 +0 4 2 -0.0322562 0.209495 -15.6387 +0 5 0 -0.0672561 0.036557 6.9842 +0 5 1 0.00549397 0.0939447 -20.2035 +0 5 2 -0.0497705 0.155121 -14.2182 +1 0 0 -3.86461 3.89018 -0.114599 +1 0 1 -13.9315 13.862 0.0623192 +1 0 2 -1.47959 1.54112 -0.297973 +1 1 0 -6.12319 6.16625 -0.104838 +1 1 1 -5.97452 5.91879 0.0943978 +1 1 2 -13.2961 13.3626 -0.0257554 +1 2 0 -7.68358 7.73869 -0.0842705 +1 2 1 -4.37649 4.36043 0.0890422 +1 2 2 -18.054 18.1323 -0.0143612 +1 3 0 -0.210979 0.258982 -2.34788 +1 3 1 -0.14994 0.150085 1.3101 +1 3 2 -5.74409 5.83099 -0.0739788 +1 4 0 -0.0671805 0.104984 -9.59847 +1 4 1 -0.139134 0.160883 0.185064 +1 4 2 -5.34897 5.44995 -0.0703339 +1 5 0 -0.0428581 0.201225 -11.773 +1 5 1 0.0821681 0.0921118 -28.1011 +1 5 2 0.0457153 0.243184 -13.457 +2 0 0 -0.111879 0.111891 0.00245614 +2 0 1 -0.155095 0.144741 0.311223 +2 0 2 -6.02544 6.07963 -0.0297657 +2 1 0 -0.00661012 0.0252825 -26.1876 +2 1 1 -0.00647501 0.0270316 -38.1566 +2 1 2 -11.5165 11.5799 -0.0249735 +2 2 0 -1.37616 1.39011 -0.19204 +2 2 1 -0.00555334 0.0602512 -92.4561 +2 2 2 -8.06338 8.13949 -0.0450208 +2 3 0 -7.52386 7.54159 -0.0384571 +2 3 1 -0.00552002 0.0646935 -84.2978 +2 3 2 -5.28527 5.36055 -0.0732475 +2 4 0 -3.46594 3.48018 -0.0598551 +2 4 1 -0.0049124 0.0281286 -28.5938 +2 4 2 -8.34532 8.42992 -0.0450718 +2 5 0 -0.0217548 0.0684079 -9.07854 +2 5 1 0.00342128 0.0637643 -27.2771 +2 5 2 -4.54114 4.67936 -0.13114 +3 0 0 -0.113182 0.113936 -0.942308 +3 0 1 -0.150271 0.14975 -0.528664 +3 0 2 -2.98081 3.04256 -0.0797893 +3 1 0 -0.112257 0.11239 -0.20786 +3 1 1 -0.14897 0.151042 -0.259068 +3 1 2 -4.32793 4.39005 -0.05741 +3 2 0 -0.113079 0.116739 -1.14225 +3 2 1 -0.150472 0.14953 -0.250625 +3 2 2 -6.16312 6.24178 -0.082664 +3 3 0 -0.113454 0.112716 -0.506312 +3 3 1 -0.155605 0.144203 0.658566 +3 3 2 -4.09325 4.14504 -0.0216998 +3 4 0 -0.113702 0.116655 -1.19144 +3 4 1 -0.152668 0.147257 0.63365 +3 4 2 -4.01265 4.07341 -0.0452124 +3 5 0 -5.04683 5.04945 -0.0212442 +3 5 1 -0.151023 0.14895 0.275547 +3 5 2 -1.47433 1.54889 -0.154913 +4 0 0 -8.73677 8.73235 -0.0105359 +4 0 1 -0.149771 0.150229 -0.0742344 +4 0 2 -12.8713 12.93 -0.0228622 +4 1 0 -0.114604 0.100521 0.068904 +4 1 1 -0.149771 0.150229 -0.0742344 +4 1 2 -6.36802 6.41935 0.00414399 +4 2 0 -9.57314 9.57328 -0.0127188 +4 2 1 -0.149771 0.150229 -0.0742344 +4 2 2 -11.0968 11.1587 -0.0229806 +4 3 0 -9.34833 9.35522 -0.0222449 +4 3 1 -0.149771 0.150229 -0.0742344 +4 3 2 -2.26113 2.32926 -0.112874 +4 4 0 -0.113262 0.110444 -0.421306 +4 4 1 -0.149771 0.150229 -0.0742344 +4 4 2 -7.66408 7.70505 -0.0103456 +4 5 0 -10.0028 10.0033 -0.00681502 +4 5 1 -0.149771 0.150229 -0.0742344 +4 5 2 -5.67568 5.73125 -0.0398479 diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_sigma.lut b/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_sigma.lut new file mode 100644 index 0000000000000000000000000000000000000000..15f9aff0af87c95be351559735534df913811790 --- /dev/null +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_comb_sigma.lut @@ -0,0 +1,90 @@ +0 0 0 8.10769e-06 0.00222116 0.0910595 +0 0 1 2.10056e-05 0.000706016 0.0952584 +0 0 2 8.3454e-06 0.0101788 0.0258514 +0 1 0 5.8745e-06 0.00288405 0.0765274 +0 1 1 1.1293e-05 0.00329308 0.0394403 +0 1 2 2.3697e-05 0.00969903 0.0296885 +0 2 0 1.00352e-05 0.00284628 0.0730156 +0 2 1 -9.74677e-06 0.00529842 0.0260528 +0 2 2 4.8304e-05 0.0087686 0.0334119 +0 3 0 8.29411e-06 0.00308952 0.0683094 +0 3 1 -2.57559e-05 0.00554597 0.0323057 +0 3 2 5.41179e-05 0.008225 0.0446791 +0 4 0 1.14007e-05 0.00312406 0.0760151 +0 4 1 -5.4307e-05 0.00841898 0.0128159 +0 4 2 4.87683e-05 0.00851447 0.0329146 +0 5 0 1.26316e-05 0.00278164 0.0747614 +0 5 1 -5.70778e-05 0.0084958 0.00973779 +0 5 2 1.48862e-05 0.00964095 0.0215871 +1 0 0 -4.003e-05 0.00722708 0.0891993 +1 0 1 -9.88858e-08 0.0019673 0.118546 +1 0 2 -2.58422e-05 0.0110531 0.0905445 +1 1 0 -5.90047e-06 0.00536033 0.0955956 +1 1 1 -6.0294e-07 0.00184061 0.10519 +1 1 2 3.0458e-05 0.00995729 0.083571 +1 2 0 -1.67936e-06 0.00493549 0.0912151 +1 2 1 8.84304e-06 0.00146386 0.10554 +1 2 2 9.6022e-05 0.00648673 0.125343 +1 3 0 7.42503e-06 0.00464419 0.0761121 +1 3 1 1.27969e-05 0.00200635 0.0775154 +1 3 2 9.86069e-05 0.00591394 0.122626 +1 4 0 8.87873e-06 0.00478483 0.088355 +1 4 1 1.23535e-05 0.00372126 0.0732179 +1 4 2 9.68913e-05 0.00691143 0.0830685 +1 5 0 1.57393e-05 0.00619255 0.0771286 +1 5 1 -1.59064e-06 0.00619254 0.0640033 +1 5 2 0.000124951 0.00677542 0.0812014 +2 0 0 1.28605e-05 0.00169931 0.0836223 +2 0 1 6.82412e-06 0.000765819 0.0628034 +2 0 2 1.15866e-05 0.00721693 0.0601342 +2 1 0 1.17595e-05 0.00199904 0.0703774 +2 1 1 2.51274e-06 0.00148398 0.0392734 +2 1 2 1.73932e-05 0.00766027 0.048971 +2 2 0 1.06118e-05 0.00256805 0.0584363 +2 2 1 1.18871e-05 0.00137635 0.0372629 +2 2 2 2.17986e-05 0.00756348 0.0501406 +2 3 0 2.88839e-06 0.00351025 0.0471033 +2 3 1 6.8425e-06 0.0024271 0.0364128 +2 3 2 2.01282e-05 0.00800897 0.0389879 +2 4 0 5.37792e-06 0.00404417 0.0486945 +2 4 1 3.81929e-06 0.00432056 0.0247991 +2 4 2 1.52332e-05 0.00842919 0.0365414 +2 5 0 6.31428e-06 0.00474114 0.0525133 +2 5 1 -1.27226e-05 0.00641321 0.0163023 +2 5 2 1.08506e-05 0.00926773 0.0279202 +3 0 0 7.34482e-06 0.00157073 0.0542773 +3 0 1 -8.70228e-06 0.00212978 0.0337384 +3 0 2 8.18609e-06 0.00772237 0.0237993 +3 1 0 1.15696e-05 0.00144979 0.0538473 +3 1 1 -2.98831e-06 0.0021668 0.0200038 +3 1 2 1.02154e-05 0.0070153 0.0399164 +3 2 0 5.47541e-06 0.00228708 0.0387635 +3 2 1 1.03531e-06 0.00257136 0.01389 +3 2 2 -1.19239e-05 0.00865636 0.0105139 +3 3 0 7.46595e-06 0.00276536 0.0393604 +3 3 1 6.54585e-06 0.00327857 0.0188556 +3 3 2 8.00553e-06 0.00725566 0.0368895 +3 4 0 4.28254e-06 0.00364364 0.0358234 +3 4 1 1.10502e-05 0.00439697 0.0209925 +3 4 2 3.26537e-06 0.00741033 0.029642 +3 5 0 5.36799e-06 0.00423396 0.0291526 +3 5 1 -3.90863e-06 0.00644818 0.00154986 +3 5 2 1.07145e-05 0.00722852 0.0260999 +4 0 0 2.72923e-06 0.00166794 0.0401684 +4 0 1 -1.27295e-06 0.000119105 -0.00212618 +4 0 2 6.32721e-07 0.00678819 0.0308744 +4 1 0 4.28262e-06 0.00161918 0.0441883 +4 1 1 -1.27295e-06 0.000119105 -0.00212618 +4 1 2 2.20954e-05 0.00590342 0.0436611 +4 2 0 5.29382e-06 0.00203998 0.0336522 +4 2 1 -1.27295e-06 0.000119105 -0.00212618 +4 2 2 -1.13812e-05 0.0078567 0.0129103 +4 3 0 7.59397e-06 0.00242973 0.036626 +4 3 1 -1.27295e-06 0.000119105 -0.00212618 +4 3 2 1.15198e-05 0.00621712 0.0400399 +4 4 0 -1.29821e-06 0.00360729 0.0275719 +4 4 1 -1.27295e-06 0.000119105 -0.00212618 +4 4 2 -3.98803e-06 0.00702908 0.0254325 +4 5 0 3.18474e-06 0.00377418 0.0284027 +4 5 1 -1.27295e-06 0.000119105 -0.00212618 +4 5 2 1.35728e-06 0.00683661 0.0310649 diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscSegmentMaker.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscSegmentMaker.cxx index 69e3e4bf9384af5349fccbadf97ffb6313015a0c..0dde19a4cc4ea262bb3843ed411be0b9d4d47a5b 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscSegmentMaker.cxx +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/CscSegmentMaker.cxx @@ -105,10 +105,14 @@ ReturnCode CscSegmentMaker :: FindSuperPointCsc( const TrigL2MuonSA::CscHits &cs int cathodelayer = 2*(cscHit.WireLayer-1)+ cscHit.MeasuresPhi;//cathodelayer is in [0,7] int module_hash = m_cscregdict->get_hash(cscHit.StationName, cscHit.StationEta, cscHit.StationPhi); - clusters[module_hash][cathodelayer].push_back( cscHit ); - - hash_clusters[module_hash]=1;//set modules to read + if( 0<=module_hash && 31>=module_hash ){ + clusters[module_hash][cathodelayer].push_back( cscHit ); + hash_clusters[module_hash]=1;//set modules to read + } else { + continue; + } + }//for clusters @@ -676,7 +680,21 @@ ReturnCode CscSegmentMaker :: display_hits(const std::vector<localCscHit> localH -CscSegment :: CscSegment(){} +CscSegment :: CscSegment(){ + + m_l1id=0; + m_x=0.; + m_y=0.; + m_z=0.; + m_px=0.; + m_py=0.; + m_pz=0.; + m_slopeRZ=0.; + m_interceptRZ=0.; + m_nhit_eta=0; + m_nhit_phi=0; + +} CscSegment :: ~CscSegment(){} diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastDataPreparator.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastDataPreparator.cxx index 8a5ada688f37996ca053740300125ac26ce67c47..08a8d63a2d234c94f92f2e91fddff9b7af18226b 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastDataPreparator.cxx +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastDataPreparator.cxx @@ -274,6 +274,10 @@ StatusCode TrigL2MuonSA::MuFastDataPreparator::prepareData(const LVL1::RecMuonRo roiWord, rpcHits, &m_rpcPatFinder); + + // check if the RoI is fake and se the flag + m_isRpcFakeRoi = m_rpcDataPreparator->isFakeRoi(); + if (!sc.isSuccess()) { ATH_MSG_DEBUG("Error in RPC data prepapration. Continue using RoI"); } diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx index 64ec2c176fe7702e3d8eff5f33fc95232468b440..31f984523cf4fab8e2510767a891a77d548811a6 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/MuFastSteering.cxx @@ -90,6 +90,8 @@ MuFastSteering::MuFastSteering(const std::string& name, ISvcLocator* svc) declareProperty("WinPt",m_winPt=4.0); + declareProperty("RpcErrToDebugStream",m_rpcErrToDebugStream = false); + declareMonitoredVariable("InnMdtHits", m_inner_mdt_hits); declareMonitoredVariable("MidMdtHits", m_middle_mdt_hits); declareMonitoredVariable("OutMdtHits", m_outer_mdt_hits); @@ -361,7 +363,9 @@ HLT::ErrorCode MuFastSteering::hltExecute(const HLT::TriggerElement* inputTE, std::vector<const LVL1::RecMuonRoI*> muonRoIs; std::vector<const LVL1::RecMuonRoI*>::const_iterator p_roi; HLT::ErrorCode hec = getFeatures(inputTE, muonRoIs); + if (hec != HLT::OK && hec2 != HLT::OK) { + ATH_MSG_ERROR("Could not find input TE"); return hec2; } @@ -412,6 +416,13 @@ HLT::ErrorCode MuFastSteering::hltExecute(const HLT::TriggerElement* inputTE, } if (m_timerSvc) m_timers[ITIMER_DATA_PREPARATOR]->pause(); + if ( m_rpcErrToDebugStream && m_dataPreparator->isRpcFakeRoi() ) { + ATH_MSG_WARNING("Invalid RoI in RPC data found: event to debug stream"); + updateOutputTE(outputTE, inputTE, *p_roi, *p_roids, m_muonRoad, m_mdtRegion, m_rpcHits, m_tgcHits, + m_rpcFitResult, m_tgcFitResult, m_mdtHits_normal, m_cscHits, m_trackPatterns); + return HLT::ErrorCode(HLT::Action::ABORT_CHAIN, HLT::Reason::UNKNOWN); + } + // Pattern finding if (m_timerSvc) m_timers[ITIMER_PATTERN_FINDER]->resume(); sc = m_patternFinder->findPatterns(m_muonRoad, @@ -1517,7 +1528,9 @@ HLT::ErrorCode MuFastSteering::prepareRobRequests(const HLT::TriggerElement* inp std::vector<const TrigRoiDescriptor*> roids; HLT::ErrorCode hec = getFeatures(inputTE, roids); + if (hec != HLT::OK) { + ATH_MSG_ERROR("Could not find input TE"); return hec; } diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtEndcapLUT.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtEndcapLUT.cxx index c5d8511d9f5da5a6c8427df2e2809d1956b8a686..1f21f1e55598cf732d2f279d6770d7999ebee8ac 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtEndcapLUT.cxx +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtEndcapLUT.cxx @@ -340,3 +340,142 @@ StatusCode TrigL2MuonSA::PtEndcapLUT::finalize() // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- +double TrigL2MuonSA::PtEndcapLUT::ptcombined(int iEta, int iPhi, double ApT, double BpT, double &CApT, \ + double &CBpT) const +{ + msg() << MSG::DEBUG << "pTcombined(" + << "iEta=" << iEta + << "iPhi=" << iPhi + << "Alpha pT=" << ApT + << "Beta pT=" << BpT + << ")" << endreq; + + if (iEta == -1) iEta = 0; + if (iEta == 30) iEta = 29; + + if (iEta < 0 || iEta >= ETAS || iPhi < 0 || iPhi >= PHIS) { + msg() << MSG::WARNING << "pTcombined("<< iEta << ", " << iPhi << ") Invalid indices" << endreq; + return 0.0; + } + + const float ZERO_LIMIT = 1e-5; + int iphibin=iPhi; + int ietabin=iEta/6; + if(iPhi==5||iPhi==6)iphibin=5; + if(iPhi==4||iPhi==7)iphibin=4; + if(iPhi==3||iPhi==8)iphibin=3; + if(iPhi==2||iPhi==9)iphibin=2; + if(iPhi==1||iPhi==10)iphibin=1; + if(iPhi==0||iPhi==11)iphibin=0; + CApT=0.; + CBpT=0.; + double Ameana = m_meana[ietabin][iphibin][0]; + double Ameanb = m_meanb[ietabin][iphibin][0]; + double Ameanc = m_meanc[ietabin][iphibin][0]; + double Bmeana = m_meana[ietabin][iphibin][1]; + double Bmeanb = m_meanb[ietabin][iphibin][1]; + double Bmeanc = m_meanc[ietabin][iphibin][1]; + + double Asigmaa = m_sigmaa[ietabin][iphibin][0]; + double Asigmab = m_sigmab[ietabin][iphibin][0]; + double Asigmac = m_sigmac[ietabin][iphibin][0]; + double Bsigmaa = m_sigmaa[ietabin][iphibin][1]; + double Bsigmab = m_sigmab[ietabin][iphibin][1]; + double Bsigmac = m_sigmac[ietabin][iphibin][1]; + + + double MeanAP = ( fabs(ApT) > ZERO_LIMIT)? (Ameana + Ameanb * exp( Ameanc / ApT)) : 1.0; + double MeanBP = ( fabs(BpT) > ZERO_LIMIT)? (Bmeana + Bmeanb * exp( Bmeanc / BpT)) : 1.0; + double ApT_tmp = ( fabs(1-MeanAP) > ZERO_LIMIT)? (fabs(ApT) / (1-MeanAP)) : 1.0; + ApT_tmp = fabs(ApT_tmp); + if(ApT_tmp >= 500) ApT_tmp = 500; + double BpT_tmp = ( fabs(1-MeanBP) > ZERO_LIMIT)? (fabs(BpT) / (1-MeanBP)) : 1.0; + BpT_tmp = fabs(BpT_tmp); + if(BpT_tmp >= 500) BpT_tmp = 500; + + CApT = ApT_tmp; + CBpT = BpT_tmp; + + if(ApT == 0. ) CApT = 0.; + if(BpT == 0. ) CBpT = 0.; + double NSigmaA= Asigmaa * fabs(ApT_tmp) * fabs(ApT_tmp) + Asigmab * fabs(ApT_tmp) + Asigmac; + double NSigmaB= Bsigmaa * fabs(BpT_tmp) * fabs(BpT_tmp) + Bsigmab * fabs(BpT_tmp) + Bsigmac; + + double NVsigpTA =(fabs(ApT_tmp) > ZERO_LIMIT&& fabs(NSigmaA) > ZERO_LIMIT)? (1/(NSigmaA * ApT_tmp) ): 1.0; + double NVsigpTB =(fabs(BpT_tmp) > ZERO_LIMIT&& fabs(NSigmaB) > ZERO_LIMIT)? (1/(NSigmaB * BpT_tmp) ): 1.0; + double NVsigAsq =(fabs(NSigmaA) > ZERO_LIMIT)? (1/(NSigmaA * NSigmaA)) : 1.0; + double NVsigBsq =(fabs(NSigmaB) > ZERO_LIMIT)? (1/(NSigmaB * NSigmaB)) : 1.0; + + double NVsigpTAsq = NVsigpTA * NVsigpTA; + double NVsigpTBsq = NVsigpTB * NVsigpTB; + double pt = (fabs(NVsigAsq + NVsigBsq) > ZERO_LIMIT)? (1/sqrt((NVsigpTAsq + NVsigpTBsq)/(NVsigAsq + NVsigBsq))) : 0.; + if(pt>500) pt = 500.; + return pt; +} +// -------------------------------------------------------------------------------- +// -------------------------------------------------------------------------------- + +StatusCode TrigL2MuonSA::PtEndcapLUT::readLUTSigmaMean(std::string lut_mean, std::string lut_sigma) +{ + std::ifstream ifsmean(lut_mean.c_str()); + std::ifstream ifssigma(lut_sigma.c_str()); + if (!ifsmean.is_open()) { + msg() << MSG::ERROR << "Cannot open EndcapLUT Mean file " << lut_mean << endreq; + return StatusCode::FAILURE; + } + if (!ifssigma.is_open()) { + msg() << MSG::ERROR << "Cannot open EndcapLUT Sigma file " << lut_sigma << endreq; + return StatusCode::FAILURE; + } + + std::string line; + + for(int ei=0; ei < ETAS1; ei++){ + for(int pi=0; pi < PHIS1; pi++){ + for(int pti=0; pti < PTS1; pti++){ + m_meana[ei][pi][pti] =0.; + m_meanb[ei][pi][pti] =0.; + m_meanc[ei][pi][pti] =0.; + m_sigmaa[ei][pi][pti]=0.; + m_sigmab[ei][pi][pti]=0.; + m_sigmac[ei][pi][pti]=0.; + } + } + } + + while (!ifsmean.eof()) { + getline(ifsmean, line); + if (line.empty()) continue; + + int iEta, iPhi, iNP; + double tmp_par1, tmp_par2, tmp_par3; + if (sscanf(line.c_str(), "%d %d %d %lf %lf %lf", &iEta, &iPhi, &iNP, &tmp_par1, &tmp_par2, &tmp_par3) != 6) { + msg() << MSG::ERROR << " Invalid data in mean EndcapLUT file " << lut_mean << endreq; + return StatusCode::FAILURE; + } + + m_meana[iEta][iPhi][iNP] = tmp_par1; + m_meanb[iEta][iPhi][iNP] = tmp_par2; + m_meanc[iEta][iPhi][iNP] = tmp_par3; + } + ifsmean.close(); + std::string line2; + while (!ifssigma.eof()) { + getline(ifssigma, line2); + if (line2.empty()) continue; + + int iEta, iPhi, iNP; + double tmp_par1, tmp_par2, tmp_par3; + if (sscanf(line2.c_str(), "%d %d %d %lf %lf %lf", &iEta, &iPhi, &iNP, &tmp_par1, &tmp_par2, &tmp_par3) != 6) { + msg() << MSG::ERROR << " Invalid data in mean EndcapLUT file " << lut_mean << endreq; + return StatusCode::FAILURE; + } + + m_sigmaa[iEta][iPhi][iNP] = tmp_par1; + m_sigmab[iEta][iPhi][iNP] = tmp_par2; + m_sigmac[iEta][iPhi][iNP] = tmp_par3; + } + ifssigma.close(); + + return StatusCode::SUCCESS; +} diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtFromAlphaBeta.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtFromAlphaBeta.cxx index ce1b567b41cf8460e54d827e3077d9644905fc2d..12a475ba00595188dd23e94f7bb7e3d13a47a3bd 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtFromAlphaBeta.cxx +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/PtFromAlphaBeta.cxx @@ -134,7 +134,30 @@ StatusCode TrigL2MuonSA::PtFromAlphaBeta::setPt(TrigL2MuonSA::TrackPattern& trac if (trackPattern.ptEndcapRadius>0 && trackPattern.ptEndcapRadius<500) trackPattern.pt = trackPattern.ptEndcapRadius;//use pt calculated from endcap radius - + + bool pTCB = false; + if( pTCB ){ + double Co_APt = 0.; + double Co_BPt = 0.; + + double tmpalphaPt = (*m_ptEndcapLUT)->lookup(side, charge, PtEndcapLUT::ALPHAPOL2, trackPattern.etaBin, trackPattern.phiBin, trackPattern.endcapAlpha) / 1000; + trackPattern.ptEndcapAlpha = tmpalphaPt; + + double tmpbetaPt = 0.; + if(fabs(trackPattern.endcapBeta)>ZERO_LIMIT) tmpbetaPt = (*m_ptEndcapLUT)->lookup(side, charge, PtEndcapLUT::BETAPOL2, trackPattern.etaBin, trackPattern.phiBin, trackPattern.endcapBeta) / 1000; + trackPattern.ptEndcapBeta = tmpbetaPt; + + double tmp_pt = (*m_ptEndcapLUT)->ptcombined(trackPattern.etaBin, trackPattern.phiBin, tmpalphaPt,tmpbetaPt, Co_APt, Co_BPt); + + float final_pt = 0.; + if(fabs(Co_APt)>ZERO_LIMIT && fabs(Co_BPt)>ZERO_LIMIT && fabs(Co_BPt-Co_APt)/fabs(Co_APt) < 0.5){ + final_pt = tmp_pt; + }else{ + final_pt = Co_APt; + } + if(final_pt == 0.)final_pt = tgcPt; + } + ATH_MSG_DEBUG("pT determined from alpha and beta: endcapAlpha/endcapBeta/endcapRadius3P/cscGamma/pT/charge/s_address=" << trackPattern.endcapAlpha << "/" << trackPattern.endcapBeta << "/" << trackPattern.endcapRadius3P << "/" << trackPattern.cscGamma << "/" << trackPattern.pt diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/RpcDataPreparator.cxx b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/RpcDataPreparator.cxx index 6ea02cb7470be138bd803debdb17dc45568e8ad4..1d91362e76ac60c33ce4a875f4c1682136f7e53b 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/src/RpcDataPreparator.cxx +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/src/RpcDataPreparator.cxx @@ -167,6 +167,9 @@ StatusCode TrigL2MuonSA::RpcDataPreparator::prepareData(const TrigRoiDescriptor* // RPC data extraction referring TrigMuonEFStandaloneTrackTool and MuonHoughPatternFinderTool rpcHits.clear(); + // set to false the flag indicating whether the roi is a fake one. + m_isFakeRoi = false; + // check the roi ID // decode roIWord @@ -183,6 +186,8 @@ StatusCode TrigL2MuonSA::RpcDataPreparator::prepareData(const TrigRoiDescriptor* if ( !m_rpcCablingSvc->give_PAD_address( side, sector, roiNumber, logic_sector, PADId, padIdHash) ) { ATH_MSG_WARNING("Roi Number: " << roiNumber << " not compatible with side, sector: " << side << " " << sector); + // set the bool flag to send the event to the debug stream + m_isFakeRoi = true; // return StatusCode::FAILURE; } else { @@ -359,7 +364,7 @@ StatusCode TrigL2MuonSA::RpcDataPreparator::prepareData(const TrigRoiDescriptor* } } - return StatusCode::SUCCESS; + return StatusCode::SUCCESS; } // --------------------------------------------------------------------------------