diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h b/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h index 025ff006536ceeb5e190477b4a2e650063b1ed47..0adbb77a8c8c05a5c3b11884ffd29a4e6aa0ae72 100644 --- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h +++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h @@ -4,27 +4,27 @@ /** @class MdtDigitizationTool - In the initialize() method, the PileUpMerge and StoreGate services are - initialized, and a pointer to an instance of the class MuonDetectorManager - is retrieved from the detector store and used to obtain a MdtIdHelper.The MdtDigitContainer is initialized and the simulation - identifier helper retrieved, together with the pointer to the digitization + In the initialize() method, the PileUpMerge and StoreGate services are + initialized, and a pointer to an instance of the class MuonDetectorManager + is retrieved from the detector store and used to obtain a MdtIdHelper.The MdtDigitContainer is initialized and the simulation + identifier helper retrieved, together with the pointer to the digitization tool. Random numbers are obtained in the code from a dedicated stream via AtRndmSvc, which is also initialized in the initialize() method. - + In the execute() method, the digits and the SDOs (Simulation Data Object, container for simulation data to be preserved after the digitization procedue, and persistified together with the RDOs) containers are created - and recorded on StoreGate; the MDTSimHit collection are merged using the + and recorded on StoreGate; the MDTSimHit collection are merged using the TimedHitCollection sorted container (done in handleMDTSimhit(TimedHitPtr - \<MDTSimHit\>& hit)) method); into a loop over the TimedHitCollection for + \<MDTSimHit\>& hit)) method); into a loop over the TimedHitCollection for the given DetectorElement, the handleMDTSimhit() method converts the SimID into the Offline ID to be associated to the Digit and pass to the digitization tool the drift radius and the distance to the chamber RO side (for the propagation delay computation). The digitization tool returns a drift time and an ADC count which are used together with the Offline ID, to create the digit object (in createDigits() method). - - The finalize() method returns a SUCCESS StatusCode if the digitization + + The finalize() method returns a SUCCESS StatusCode if the digitization procedure ends succesfully. */ @@ -51,6 +51,7 @@ #include <string> #include <sstream> #include <vector> +#include "CLHEP/Units/PhysicalConstants.h" #include "CLHEP/Random/RandomEngine.h" #include "CLHEP/Geometry/Point3D.h" #include "AthenaKernel/IAthRNGSvc.h" @@ -58,6 +59,8 @@ #include "MuonCondInterface/IMDTConditionsSvc.h" #include "MDT_Digitization/IMDT_DigitizationTool.h" +#include "PileUpTools/PileUpMergeSvc.h" +#include "MdtCalibSvc/MdtCalibrationDbTool.h" //Outputs #include "MuonSimData/MuonSimDataCollection.h" @@ -69,13 +72,9 @@ namespace MuonGM{ class MdtReadoutElement; } -class PileUpMergeSvc; - class MdtIdHelper; class MdtHitIdHelper; -class MdtCalibrationDbTool; - // Digitization class for MDT hits /* +DSL-------------------------------------------------------------------------- @@ -84,10 +83,10 @@ class MdtCalibrationDbTool; chamber phi angle. This drift time delta is turned on/off via m_useWireSagRT It operates only on small wheel and big wheel end cap chambers (EIL/EIS; EML/EMS) The EOL/EOS chambers are presumably built with tubes bent to conform to the wire sag- - so this code does not introduce wire-sag induced RT distortions for these chambers + so this code does not introduce wire-sag induced RT distortions for these chambers + - This drift time delta is turned on/off via m_useWireSagGeom for the geomtrical wiresag effect It operates on all end cap chambers (EIL/EIS; EML/EMS EOL/EOS ) @@ -99,17 +98,17 @@ class MuonSimDataCollection; class MdtDigitizationTool : public PileUpToolBase { - + public: MdtDigitizationTool(const std::string& type, const std::string& name, const IInterface* pIID); - ~MdtDigitizationTool(); + virtual ~MdtDigitizationTool() = default; /** Initialize */ virtual StatusCode initialize() override final; /** When being run from PileUpToolsAlgs, this method is called at the start of the subevts loop. Not able to access SubEvents */ StatusCode prepareEvent(const unsigned int /*nInputEvents*/) override final; - + /** When being run from PileUpToolsAlgs, this method is called for each active bunch-crossing to process current SubEvents bunchXing is in ns */ virtual StatusCode processBunchXing( int bunchXing, @@ -130,16 +129,16 @@ class MdtDigitizationTool : public PileUpToolBase { Amg::Vector3D localPosition; // point of closest approach of the particle to the wire double localSag; }; - + private: CLHEP::HepRandomEngine* getRandomEngine(const std::string& streamName) const; int digitizeTime(double time, bool isHPTDC, CLHEP::HepRandomEngine *rndmEngine) const; double minimumTof(Identifier DigitId) const; - + bool insideMatchingWindow(double time) const; bool insideMaskWindow(double time) const; bool checkMDTSimHit(const MDTSimHit& hit) const; - + bool handleMDTSimhit(const TimedHitPtr<MDTSimHit>& phit, CLHEP::HepRandomEngine *twinRndmEngine, CLHEP::HepRandomEngine *toolRndmEngine); bool createDigits(MdtDigitContainer* digitContainer, MuonSimDataCollection* sdoContainer, CLHEP::HepRandomEngine *rndmEngine); @@ -147,63 +146,65 @@ class MdtDigitizationTool : public PileUpToolBase { GeoCorOut correctGeometricalWireSag( const MDTSimHit& hit, const Identifier& id, const MuonGM::MdtReadoutElement* element ) const ; MDT_SortedHitVector m_hits; - - const MdtIdHelper* m_idHelper; - MdtHitIdHelper* m_muonHelper; - + + const MdtIdHelper* m_idHelper{}; + MdtHitIdHelper* m_muonHelper{}; + MDTSimHit applyDeformations(const MDTSimHit&,const MuonGM::MdtReadoutElement*,const Identifier&); - - const MuonGM::MuonDetectorManager* m_MuonGeoMgr; - - ToolHandle <IMDT_DigitizationTool> m_digiTool; + + const MuonGM::MuonDetectorManager* m_MuonGeoMgr{}; + + ToolHandle <IMDT_DigitizationTool> m_digiTool{this, "DigitizationTool", "MDT_Response_DigiTool", "Tool which handle the digitization process"}; std::list<MDTSimHitCollection*> m_MDTHitCollList; - //TDC ELECTRONICS - double m_offsetTDC; - double m_signalSpeed; - double m_ns2TDCAMT; - double m_ns2TDCHPTDC; - double m_resTDC; - + //TDC ELECTRONICS + Gaudi::Property<double> m_offsetTDC{this, "OffsetTDC", 800., "TDC offset"}; + Gaudi::Property<double> m_signalSpeed{this, "SignalSpeed", 299.792458, "Light speed" }; // TODO use Gaudi::Units contstant? + Gaudi::Property<double> m_ns2TDCAMT{this, "ns2TDCAMT", 0.78125, "Conversion factor TDC/ns for AMT chips"}; + Gaudi::Property<double> m_ns2TDCHPTDC{this, "ns2TDCHPTDC", 0.1953125, "Conversion factor TDC/ns for HPTDC chips"}; + Gaudi::Property<double> m_resTDC{this, "ResolutionTDC", 0.5, "TDC resolution"}; + //CONFIGURATION - bool m_checkMDTSimHits; - bool m_useTof; - bool m_useAttenuation; - bool m_useProp; + Gaudi::Property<bool> m_checkMDTSimHits {this, "CheckSimHits", true, "Control on the hit validity"}; + Gaudi::Property<bool> m_useTof{this, "UseTof", true, "Option for the tof calculation"}; + Gaudi::Property<bool> m_useAttenuation{this, "UseAttenuation", false, ""}; + Gaudi::Property<bool> m_useProp{this, "UseProp", true, ""}; //WIRE SAG - bool m_useWireSagGeom; - bool m_useWireSagRT; - + Gaudi::Property<bool> m_useWireSagGeom{this, "UseWireSagGeom", false, "Option for the wire sagitta correction"}; + Gaudi::Property<bool> m_useWireSagRT{this, "UseWireSagRT", false, "Option for the wire sagitta correction"}; + //TWIN TUBE - bool m_useTwin; - bool m_useAllBOLTwin; - double m_resTwin; - + Gaudi::Property<bool> m_useTwin{this, "UseTwin", false, ""}; + Gaudi::Property<bool> m_useAllBOLTwin{this, "UseAllBOLTwin", false, ""}; + Gaudi::Property<double> m_resTwin{this, "ResolutionTwinTube", 1.05, "Twin Tube resolution"}; + //TIMING SCHEME - bool m_useTimeWindow; - double m_bunchCountOffset; - double m_matchingWindow; - double m_maskWindow; - double m_deadTime; - bool m_DiscardEarlyHits; - - double m_inv_c_light; + Gaudi::Property<bool> m_useTimeWindow{this, "UseTimeWindow", true, ""}; + Gaudi::Property<double> m_bunchCountOffset{this, "BunchCountOffset", -200., "Bunch crossing offset"}; + Gaudi::Property<double> m_matchingWindow{this, "MatchingWindow", 1000., "Matching window"}; + Gaudi::Property<double> m_maskWindow{this, "MaskWindow", 250., "Masked window"}; + Gaudi::Property<double> m_deadTime{this, "DeadTime", 700., "MDT drift tube dead time"}; + Gaudi::Property<bool> m_DiscardEarlyHits{this, "DiscardEarlyHits", true, ""}; + + const double m_inv_c_light{1./CLHEP::c_light}; //COSMICS - bool m_useOffSet1; - bool m_useOffSet2; - bool m_UseDeadChamberSvc; - - + Gaudi::Property<bool> m_useOffSet1{this, "UseOffSet1", true, ""}; + Gaudi::Property<bool> m_useOffSet2{this, "UseOffSet2", true, ""}; + + //Conditions Database + Gaudi::Property<bool> m_UseDeadChamberSvc{this, "UseDeadChamberSvc", false, ""}; + Gaudi::Property<bool> m_t0_from_DB{this, "GetT0FromBD", false, ""}; + //B-lines - bool m_useDeformations; - - //MULTI-CHARGE PARTICLES DIGITIZATION - bool m_DoQballCharge; + Gaudi::Property<bool> m_useDeformations{this, "UseDeformations", false, ""}; + + //MULTI-CHARGE PARTICLES DIGITIZATION + Gaudi::Property<bool> m_DoQballCharge{this, "DoQballCharge", false, "dEdx for Qballs with account of electric charge"}; //STATIONS TO MASK - std::vector<std::string> m_maskedStations; + Gaudi::Property< std::vector<std::string> > m_maskedStations{this, "MaskedStations", {}, "Stations to be masked at digi level"}; struct maskedStation { maskedStation(std::string n, std::string e, std::string p): maskedName(n),maskedEta(e),maskedPhi(p),imaskedEta(0),imaskedPhi(0) @@ -217,20 +218,20 @@ class MdtDigitizationTool : public PileUpToolBase { int imaskedEta; int imaskedPhi; }; - + std::vector<maskedStation> m_vMaskedStations; - + //list of Identifiers returned by the Conditions Service to mask stations std::vector<Identifier> m_IdentifiersToMask; //pile-up - TimedHitCollection<MDTSimHit>* m_thpcMDT; // the hits + TimedHitCollection<MDTSimHit>* m_thpcMDT{}; // the hits //pileup truth veto - bool m_includePileUpTruth; + Gaudi::Property<bool> m_includePileUpTruth{this, "IncludePileUpTruth", true, "Include pile-up truth info"}; - bool m_BMGpresent; - int m_BMGid; + bool m_BMGpresent{false}; + int m_BMGid{-1}; /////////////////////////////////////////////////////////////////// // Access to the event methods: @@ -243,17 +244,15 @@ class MdtDigitizationTool : public PileUpToolBase { const double driftR); protected: - PileUpMergeSvc *m_mergeSvc; // Pile up service - std::string m_inputObjectName; // name of the input objects + ServiceHandle<PileUpMergeSvc> m_mergeSvc{this, "PileUpMergeSvc", "PileUpMergeSvc", ""}; // Pile up service + Gaudi::Property<std::string> m_inputObjectName{this, "InputObjectName", "MDT_Hits", ""}; // name of the input objects SG::WriteHandleKey<MdtDigitContainer> m_outputObjectKey{this,"OutputObjectName","MDT_DIGITS","WriteHandleKey for Output MdtDigitContainer"}; SG::WriteHandleKey<MuonSimDataCollection> m_outputSDOKey{this,"OutputSDOName","MDT_SDO","WriteHandleKey for Output MuonSimDataCollection"}; ServiceHandle <IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc", ""}; // Random number service - ToolHandle<MdtCalibrationDbTool> m_calibrationDbTool; - ServiceHandle<IMDTConditionsSvc> m_pSummarySvc; - bool m_t0_from_DB ; - + ToolHandle<MdtCalibrationDbTool> m_calibrationDbTool{this, "CalibrationDbTool", "MdtCalibrationDbTool", ""}; + ServiceHandle<IMDTConditionsSvc> m_pSummarySvc{this, "MDTCondSummarySvc", "MDTCondSummarySvc", ""}; }; #endif diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx b/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx index bdfc79a9df4b90fd6f73916d6655f032feaff6a9..b5569f4f595280a3c390f17af61aff60ee5c5d92 100644 --- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx +++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx @@ -47,10 +47,8 @@ #include "EventPrimitives/EventPrimitives.h" //Pile-up -#include "PileUpTools/PileUpMergeSvc.h" //Truth -#include "CLHEP/Units/PhysicalConstants.h" #include "GeneratorObjects/HepMcParticleLink.h" #include "HepMC/GenParticle.h" @@ -60,74 +58,13 @@ //Calibration Service #include "MdtCalibData/MdtFullCalibData.h" #include "MdtCalibData/MdtTubeCalibContainer.h" -#include "MdtCalibSvc/MdtCalibrationDbTool.h" MdtDigitizationTool::MdtDigitizationTool(const std::string& type,const std::string& name,const IInterface* pIID) : PileUpToolBase(type, name, pIID) - , m_idHelper(0) - , m_muonHelper(0) - , m_MuonGeoMgr(0) - , m_digiTool("MDT_Response_DigiTool", this) - , m_inv_c_light(1./(CLHEP::c_light)) - , m_thpcMDT(0) - , m_BMGpresent(false) - , m_BMGid(-1) - , m_mergeSvc(0) - , m_inputObjectName("") - , m_calibrationDbTool("MdtCalibrationDbTool",this) - , m_pSummarySvc("MDTCondSummarySvc", name) { - declareProperty("DigitizationTool", m_digiTool, "Tool which handle the digitization process"); - //Conditions Database - declareProperty("CalibrationDbTool", m_calibrationDbTool); - declareProperty("MDTCondSummarySvc", m_pSummarySvc); - declareProperty("UseDeadChamberSvc", m_UseDeadChamberSvc = false ); - declareProperty("GetT0FromBD", m_t0_from_DB = false ); - //TDC electronics - declareProperty("OffsetTDC", m_offsetTDC = 800., "TDC offset"); - declareProperty("ns2TDCAMT", m_ns2TDCAMT = 0.78125, "Conversion factor TDC/ns for AMT chips"); - declareProperty("ns2TDCHPTDC", m_ns2TDCHPTDC = 0.1953125,"Conversion factor TDC/ns for HPTDC chips"); - declareProperty("ResolutionTDC", m_resTDC = 0.5, "TDC resolution"); - declareProperty("SignalSpeed", m_signalSpeed = 299.792458, "Light speed" ); - //Object names - declareProperty("InputObjectName", m_inputObjectName = "MDT_Hits"); - //Corrections - declareProperty("UseAttenuation", m_useAttenuation = false); - declareProperty("UseTof", m_useTof = true, "Option for the tof calculation"); - declareProperty("UseProp", m_useProp = true); - declareProperty("UseWireSagGeom", m_useWireSagGeom = false, "Option for the wire sagitta correction"); - declareProperty("UseWireSagRT", m_useWireSagRT = false, "Option for the wire sagitta correction"); - declareProperty("UseDeformations", m_useDeformations = false); - //Timing scheme - declareProperty("UseTimeWindow", m_useTimeWindow = true); - declareProperty("BunchCountOffset", m_bunchCountOffset = -200., "Bunch crossing offset"); - - declareProperty("MatchingWindow", m_matchingWindow = 1000., "Matching window"); - declareProperty("MaskWindow", m_maskWindow = 250., "Masked window"); // was 700 for large time window - declareProperty("DeadTime", m_deadTime = 700., "MDT drift tube dead time"); - declareProperty("DiscardEarlyHits", m_DiscardEarlyHits = true); - //Configurations - declareProperty("CheckSimHits", m_checkMDTSimHits = true, "Control on the hit validity"); - declareProperty("MaskedStations", m_maskedStations, "Stations to be masked at digi level"); - //Twin Tube - declareProperty("UseTwin", m_useTwin = false); - declareProperty("UseAllBOLTwin", m_useAllBOLTwin = false); - declareProperty("ResolutionTwinTube", m_resTwin = 1.05, "Twin Tube resolution"); - //Multi-charge particle digitization - declareProperty("DoQballCharge", m_DoQballCharge = false, "dEdx for Qballs with account of electric charge"); - //Cosmics - declareProperty("UseOffSet1", m_useOffSet1 = true); - declareProperty("UseOffSet2", m_useOffSet2 = true); - //Truth - declareProperty("IncludePileUpTruth", m_includePileUpTruth = true, "Include pile-up truth info"); - declareProperty("ParticleBarcodeVeto", m_vetoThisBarcode = crazyParticleBarcode, "Barcode of particle to ignore"); } -MdtDigitizationTool::~MdtDigitizationTool() { - -} - StatusCode MdtDigitizationTool::initialize() { ATH_MSG_INFO ( "Configuration MdtDigitizationTool" ); @@ -171,38 +108,24 @@ StatusCode MdtDigitizationTool::initialize() { ATH_MSG_INFO ( "ParticleBarcodeVet " << m_vetoThisBarcode ); - // initialize transient detector store and MuonGeoModel OR MuonDetDescrManager - if(detStore()->contains<MuonGM::MuonDetectorManager>( "Muon" )){ - if (detStore()->retrieve(m_MuonGeoMgr).isFailure()) { - ATH_MSG_FATAL ( "Could not retrieve MuonGeoModelDetectorManager!" ); - return StatusCode::FAILURE; - } - else { - ATH_MSG_DEBUG ( "Retrieved MuonGeoModelDetectorManager from StoreGate" ); - //initialize the MdtIdHelper - m_idHelper = m_MuonGeoMgr->mdtIdHelper(); - if(!m_idHelper) return StatusCode::FAILURE; - ATH_MSG_DEBUG ( "Retrieved MdtIdHelper " << m_idHelper ); - } - } - - if (!m_mergeSvc) { - const bool CREATEIF(true); - if (!(service("PileUpMergeSvc", m_mergeSvc, CREATEIF)).isSuccess() || - 0 == m_mergeSvc) { - ATH_MSG_ERROR ("Could not find PileUpMergeSvc" ); - return StatusCode::FAILURE; - } + // initialize transient detector store and MuonGeoModel OR MuonDetDescrManager + if (detStore()->contains<MuonGM::MuonDetectorManager>( "Muon" )) { + ATH_CHECK(detStore()->retrieve(m_MuonGeoMgr)); + ATH_MSG_DEBUG ( "Retrieved MuonGeoModelDetectorManager from StoreGate" ); + //initialize the MdtIdHelper + m_idHelper = m_MuonGeoMgr->mdtIdHelper(); + if(!m_idHelper) return StatusCode::FAILURE; + ATH_MSG_DEBUG ( "Retrieved MdtIdHelper " << m_idHelper ); } + ATH_CHECK(m_mergeSvc.retrieve()); + // check the input object name if (m_inputObjectName=="") { ATH_MSG_FATAL ( "Property InputObjectName not set !" ); return StatusCode::FAILURE; - } - else { - ATH_MSG_DEBUG ( "Input objects: '" << m_inputObjectName << "'" ); } + ATH_MSG_DEBUG ( "Input objects: '" << m_inputObjectName << "'" ); //initialize the output WriteHandleKeys ATH_CHECK(m_outputObjectKey.initialize()); @@ -211,23 +134,19 @@ StatusCode MdtDigitizationTool::initialize() { ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputSDOKey ); ATH_MSG_DEBUG ( "Output Digits: '" << m_outputObjectKey.key() << "'" ); - //simulation identifier helper + //simulation identifier helper m_muonHelper = MdtHitIdHelper::GetHelper(); - + //get the r->t conversion tool - if( m_digiTool.retrieve().isFailure() ) { - ATH_MSG_FATAL("Could not retrieve digitization tool! " << m_digiTool); - return StatusCode::FAILURE; - } - else { - ATH_MSG_DEBUG("Retrieved digitization tool!" << m_digiTool); - } + ATH_CHECK(m_digiTool.retrieve()); + ATH_MSG_DEBUG("Retrieved digitization tool!" << m_digiTool); - // initialize inverse lightSpeed (c_light in m/s) - m_inv_c_light = 1./(CLHEP::c_light); - ATH_CHECK(m_rndmSvc.retrieve()); + if ( m_t0_from_DB ) { + ATH_CHECK(m_calibrationDbTool.retrieve()); + } + //Gather masked stations for (unsigned int i=0;i<m_maskedStations.size();i++) { std::string mask=m_maskedStations[i]; @@ -237,9 +156,9 @@ StatusCode MdtDigitizationTool::initialize() { std::string maskedPhi=temps.substr(maskedEta.size()+1,std::string::npos); maskedStation ms(maskedName,maskedEta,maskedPhi); m_vMaskedStations.push_back(ms); - if (!m_UseDeadChamberSvc ) ATH_MSG_DEBUG ( "mask = " << mask << " maskedName = " << maskedName << " temps = " << temps << " maskedEta = " <<maskedEta << " maskedPhi = " << maskedPhi ); + if (!m_UseDeadChamberSvc ) ATH_MSG_DEBUG ( "mask = " << mask << " maskedName = " << maskedName << " temps = " << temps << " maskedEta = " <<maskedEta << " maskedPhi = " << maskedPhi ); } - + //Retrieve the Conditions service if (m_UseDeadChamberSvc==true) { ATH_MSG_DEBUG("Using Database DCS MDT Conditions for masking dead/missing chambers"); @@ -252,11 +171,11 @@ StatusCode MdtDigitizationTool::initialize() { } m_BMGpresent = m_idHelper->stationNameIndex("BMG") != -1; - if(m_BMGpresent){ + if (m_BMGpresent) { ATH_MSG_INFO("Processing configuration for layouts with BMG chambers."); m_BMGid = m_idHelper->stationNameIndex("BMG"); } - + return StatusCode::SUCCESS; } @@ -318,16 +237,7 @@ StatusCode MdtDigitizationTool::getNextEvent() { ATH_MSG_DEBUG ( "MdtDigitizationTool::getNextEvent()" ); - - if (!m_mergeSvc) { - const bool CREATEIF(true); - if (!(service("PileUpMergeSvc", m_mergeSvc, CREATEIF)).isSuccess() || - 0 == m_mergeSvc) { - ATH_MSG_ERROR ("Could not find PileUpMergeSvc" ); - return StatusCode::FAILURE; - } - } - + // initialize pointer m_thpcMDT = 0; diff --git a/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py b/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py index be7e62ab5b8acfd4140014b1ef5b38a7ee69ceb9..488995be966d5b9814096aa085eb5fb26e1a1811 100755 --- a/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py +++ b/Simulation/Digitization/test/test_MC16a_Digi_tf_configuration.py @@ -308,7 +308,7 @@ class TestDigitizationMC16a(unittest.TestCase): def test___MdtDigitizationTool_properties(self): tested_configurable_name = 'StandardSignalOnlyTruthPileUpToolsAlg.MdtDigitizationTool' - expected_property_list = ['DetStore', 'DigitizationTool', 'DiscardEarlyHits', 'DoQballCharge', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'LastXing', 'MDTCondSummarySvc', 'MaskedStations', 'MdtCalibrationDbSvc', 'OutputObjectName', 'OutputSDOName', 'RndmSvc', 'UseDeadChamberSvc', 'UseTof'] + expected_property_list = ['CalibrationDbTool', 'DetStore', 'DigitizationTool', 'DiscardEarlyHits', 'DoQballCharge', 'EvtStore', 'ExtraInputs', 'ExtraOutputs', 'FirstXing', 'LastXing', 'MDTCondSummarySvc', 'MaskedStations', 'OutputObjectName', 'OutputSDOName', 'PileUpMergeSvc', 'RndmSvc', 'UseDeadChamberSvc', 'UseTof'] expected_nonstring_properties = {'LastXing': '150', 'FirstXing': '-800'} expected_string_properties = {} # Not checking any specific property values self._detailed_ConfigurablePropertiesCheck(