diff --git a/Calorimeter/CaloClusterCorrection/share/CaloScaleCluster_test.ref b/Calorimeter/CaloClusterCorrection/share/CaloScaleCluster_test.ref index 58db603a23c1739e1cee583fd9d76907bd274c81..3c6af4b6c4a021d2b69deb2dfe376aece85bd6be 100644 --- a/Calorimeter/CaloClusterCorrection/share/CaloScaleCluster_test.ref +++ b/Calorimeter/CaloClusterCorrection/share/CaloScaleCluster_test.ref @@ -125,7 +125,7 @@ CaloIdMgrDetDescrCnv INFO Finished CaloIdMgrDetDescrCnv INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv DetectorStore WARNING retrieve(default): No valid proxy for default object of type TileDetDescrManager(CLID 2941) -CaloMgrDetDescrCnv WARNING Could not get the TileDetectorManager. No Calo Elements will be built for Tile +buildCaloDetDescr WARNING Could not get the TileDetectorManager. No Calo Elements will be built for Tile AthenaEventLoopMgr INFO ===>>> done processing event #1, run #1 1 events processed so far <<<=== ApplicationMgr INFO Application Manager Stopped successfully ToolSvc INFO Removing all tools created by ToolSvc diff --git a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/CMakeLists.txt b/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/CMakeLists.txt index 4ff718cafbd26ae951a36e98874a391f2d9ad522..7f6e9cbdeb2d0237b860a07ca867b1828bd97808 100644 --- a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/CMakeLists.txt +++ b/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/CMakeLists.txt @@ -6,7 +6,7 @@ atlas_subdir( CaloDetMgrDetDescrCnv ) # Component(s) in the package: atlas_add_component( CaloDetMgrDetDescrCnv src/*.cxx - LINK_LIBRARIES DetDescrCnvSvcLib Identifier GaudiKernel CaloDetDescrLib CaloIdentifier AthenaKernel AthenaBaseComps StoreGateLib GeoModelUtilities LArReadoutGeometry TileDetDescr ) + LINK_LIBRARIES DetDescrCnvSvcLib GaudiKernel CaloDetDescrLib CaloIdentifier CaloDetDescrUtils AthenaKernel AthenaBaseComps StoreGateLib ) # Install files from the package: atlas_install_joboptions( share/*.py ) diff --git a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloCellVolumes.cxx b/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloCellVolumes.cxx deleted file mode 100755 index c5d1f5a4747825b6c36fb756d121983f7ddca052..0000000000000000000000000000000000000000 --- a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloCellVolumes.cxx +++ /dev/null @@ -1,190 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration -*/ - -#include "CaloCellVolumes.h" - -#include "Identifier/Identifier.h" -#include "CaloIdentifier/CaloCell_ID.h" - -#include "GaudiKernel/ISvcLocator.h" -#include "GeoModelInterfaces/IGeoModelSvc.h" -#include "GeoModelUtilities/DecodeVersionKey.h" - -#include "RDBAccessSvc/IRDBAccessSvc.h" -#include "RDBAccessSvc/IRDBRecordset.h" -#include "RDBAccessSvc/IRDBRecord.h" - -#include <iostream> -#include <iomanip> -#include <algorithm> - - -struct CaloCellVolume_Compare -{ - bool operator() (const CaloCellVolume& a, const CaloCellVolume& b) - { return a.channelID < b.channelID; } - bool operator() (const CaloCellVolume& a, Identifier b) - { return a.channelID < b; } -}; - - -CaloCellVolumes::CaloCellVolumes(ISvcLocator* svcLocator, - const CaloCell_ID* calocell_id) - : m_calocell_id (calocell_id), - m_svcLocator(svcLocator) -{ - // default values for tube spacings - m_fcalTubeSpacings[1] = 7.5; - m_fcalTubeSpacings[2] = 8.179; - m_fcalTubeSpacings[3] = 9.; - - //Get pointers to the IGeoModelSvc and IRDBAccessSvc - IGeoModelSvc* geoModelSvc = 0; - IRDBAccessSvc* rdbAccessSvc = 0; - - StatusCode sc = m_svcLocator->service("GeoModelSvc",geoModelSvc); - - if(sc.isFailure()) - throw std::runtime_error("CaloCellVolumes error: cannot access GeoModelSvc"); - - sc = m_svcLocator->service("RDBAccessSvc",rdbAccessSvc); - if(sc.isFailure()) - throw std::runtime_error("CaloCellVolumes error: cannot access RDBAccessSvc"); - - DecodeVersionKey detectorKey = DecodeVersionKey(geoModelSvc,"LAr"); - - IRDBRecordset_ptr cellVolRec = rdbAccessSvc->getRecordsetPtr("LArCellVolumes",detectorKey.tag(),detectorKey.node()); - if(cellVolRec->size()==0) - { - cellVolRec = rdbAccessSvc->getRecordsetPtr("LArCellVolumes","LArCellVolumes-00"); - if(cellVolRec->size()==0) - { - throw std::runtime_error("CaloCellVolumes error: 0 size of LArCellVolumes recordset"); - } - } - - // get fcal tube spacings - IRDBRecordset_ptr fcalModRec = rdbAccessSvc->getRecordsetPtr("FCalMod",detectorKey.tag(),detectorKey.node()); - if(fcalModRec->size()==0) - fcalModRec = rdbAccessSvc->getRecordsetPtr("FCalMod","FCalMod-00"); - - for(unsigned int i=0; i<fcalModRec->size(); i++) - { - const IRDBRecord* rec = (*fcalModRec)[i]; - m_fcalTubeSpacings[rec->getInt("FCALSAMPLING")] = rec->getDouble("TUBESPACING"); - } - - std::string LArTag = rdbAccessSvc->getChildTag("LAr",detectorKey.tag(),detectorKey.node()); - - m_geometryLayout = "Atlas"; - if(LArTag.find("H8")!=std::string::npos) - m_geometryLayout = "H8"; - else if(LArTag.find("H6")!=std::string::npos) - m_geometryLayout = "H6"; - else if(LArTag.find("G3")!=std::string::npos) - m_geometryLayout = "G3"; - - // Initialize m_cellVolumes vector - for(unsigned int ind = 0; ind < cellVolRec->size(); ind++) - { - const IRDBRecord* currentRec = (*cellVolRec)[ind]; - - int subcalo = currentRec->getInt("SUBCALO"); - int posneg = currentRec->getInt("POSNEG"); - int sampling = currentRec->getInt("SAMPLING"); - int region = currentRec->getInt("REGION"); - int eta = currentRec->getInt("ETA"); - int phi = currentRec->getInt("PHI"); - - Identifier channelID; - if(m_geometryLayout != "H6" || subcalo == CaloCell_ID::LARFCAL) { - channelID = m_calocell_id->cell_id (subcalo, posneg, sampling, region, eta, phi); - } else { - Identifier reg_id = m_calocell_id->region_id(subcalo, posneg, sampling, region); - int phimin = m_calocell_id->phi_min(reg_id); - channelID = m_calocell_id->cell_id (subcalo, posneg, sampling, region, eta, phimin); - } - - CaloCellVolume cellVol; - cellVol.channelID = channelID; - cellVol.volume = currentRec->getDouble("VOLUME"); - m_cellVolumes.push_back(cellVol); - } - - std::sort (m_cellVolumes.begin(), m_cellVolumes.end(), - CaloCellVolume_Compare()); - -} - -CaloCellVolumes::~CaloCellVolumes() -{ - m_cellVolumes.clear(); -} - -double CaloCellVolumes::CellVolume(Identifier cell_id) -{ - if (m_cellVolumes.size()==0) - std::cerr << "CaloCellVolumes::CellVolume(). Problem in CaloCellVolumes: no cell volumes...\n"; - else - { - // compute Identifier of Cell with same eta, but phi=0 and pos side - // (except for fcal) - Identifier volId; - - if (!m_calocell_id->is_fcal(cell_id)) - { - int subCalo = m_calocell_id->sub_calo(cell_id); - int posneg = std::abs (m_calocell_id->pos_neg(cell_id)); - int sampling = m_calocell_id->sampling(cell_id); - int region = m_calocell_id->region(cell_id); - int eta = m_calocell_id->eta(cell_id); - - if(m_geometryLayout != "H6") { - volId = m_calocell_id->cell_id(subCalo, posneg, sampling, region, eta, 0); - } else { - Identifier reg_id = m_calocell_id->region_id(subCalo, posneg, sampling, region); - int phimin = m_calocell_id->phi_min(reg_id); - volId = m_calocell_id->cell_id(subCalo, posneg, sampling, region, eta, phimin); - } - } - else - volId = cell_id; - - CaloCellVolumeVector::const_iterator it = - std::lower_bound (m_cellVolumes.begin(), m_cellVolumes.end(), volId, - CaloCellVolume_Compare()); - if (it != m_cellVolumes.end() && it->channelID == volId) - return it->volume; - } - - return 0.; -} - -void CaloCellVolumes::print () -{ - if (m_cellVolumes.size()==0) - std::cerr << "CaloCellVolumes::print(). No cell volumes...\n"; - else - { - std::cout << "CaloCellVolumes::print(). Number of volumes found: " - << m_cellVolumes.size(); - - for(unsigned int i = 0; i<m_cellVolumes.size(); i++) - { - const CaloCellVolume vol = m_cellVolumes[i]; - m_calocell_id->print( (Identifier) vol.channelID ); - std::cout<<m_calocell_id->show_to_string( (Identifier) vol.channelID ); - std::cout << " ==> vol= " << vol.volume << " mm3\n"; - } - } -} - -double CaloCellVolumes::getFcalTubeSpacing(int sampling) -{ - TubeSpacingMap::const_iterator it = m_fcalTubeSpacings.find(sampling); - if(it==m_fcalTubeSpacings.end()) - throw std::runtime_error("CaloCellVolumes::getFcalTubeSpacing error: wrong sampling provided"); - - return (*it).second; -} diff --git a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloMgrDetDescrCnv.cxx b/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloMgrDetDescrCnv.cxx index 086d2761bddab2fd2bf3698d8ac311c21487e95b..7ffcbc6dddf8546431e301e0739637e72664483f 100755 --- a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloMgrDetDescrCnv.cxx +++ b/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloMgrDetDescrCnv.cxx @@ -3,7 +3,8 @@ */ #include "CaloMgrDetDescrCnv.h" -#include "CaloCellVolumes.h" + +#include "CaloDetDescrUtils/CaloDetDescrBuilder.h" #include "DetDescrCnvSvc/DetDescrConverter.h" #include "DetDescrCnvSvc/DetDescrAddress.h" @@ -12,38 +13,9 @@ #include "AthenaKernel/getMessageSvc.h" #include "GaudiKernel/ThreadLocalContext.h" #include "AthenaBaseComps/AthCheckMacros.h" +#include "AthenaKernel/StorableConversions.h" #include "CaloDetDescr/CaloDetDescrManager.h" -#include "CaloDetDescr/CaloDetectorElements.h" -#include "CaloDetDescr/CaloDescriptors.h" -#include "CaloDetDescr/CaloDetDescrElementContainer.h" - -#include "LArReadoutGeometry/LArDetectorManager.h" - -#include "LArReadoutGeometry/EMBCell.h" -#include "LArReadoutGeometry/EMBDetectorRegion.h" -#include "LArReadoutGeometry/EMBDetDescr.h" -#include "LArReadoutGeometry/EMBDetectorManager.h" - -#include "LArReadoutGeometry/EMECCell.h" -#include "LArReadoutGeometry/EMECDetectorRegion.h" -#include "LArReadoutGeometry/EMECDetDescr.h" -#include "LArReadoutGeometry/EMECDetectorManager.h" - -#include "LArReadoutGeometry/HECCell.h" -#include "LArReadoutGeometry/HECDetectorRegion.h" -#include "LArReadoutGeometry/HECDetDescr.h" -#include "LArReadoutGeometry/HECDetectorManager.h" - -#include "LArReadoutGeometry/FCALTile.h" -#include "LArReadoutGeometry/FCALModule.h" -#include "LArReadoutGeometry/FCALDetectorManager.h" - -#include "CaloIdentifier/CaloCell_ID.h" -#include "CaloIdentifier/CaloIdManager.h" - -#include "TileDetDescr/TileDetDescrManager.h" - CaloMgrDetDescrCnv::CaloMgrDetDescrCnv(ISvcLocator* svcloc) : DetDescrConverter(ClassID_traits<CaloDetDescrManager>::ID(), svcloc) @@ -92,657 +64,12 @@ StatusCode CaloMgrDetDescrCnv::createObj(IOpaqueAddress* pAddr, DataObject*& pOb ATH_MSG_DEBUG("Manager key is " << mgrKey); } - // --- --- Get CaloCell_ID and CaloIdManager helpers --- --- - StoreGateSvc* detStore{nullptr}; - ATH_CHECK(serviceLocator()->service("DetectorStore", detStore)); - - const CaloCell_ID* cell_id{nullptr}; - ATH_CHECK(detStore->retrieve(cell_id, "CaloCell_ID")); - ATH_MSG_DEBUG(" Found the CaloCell_ID helper. "); - - const CaloIdManager* caloId_mgr{nullptr}; - ATH_CHECK(detStore->retrieve(caloId_mgr, "CaloIdManager")); - ATH_MSG_DEBUG(" Found the CaloIdManager helper. "); - // --- --- Get CaloCell_ID and CaloIdManager helpers --- --- - // --- --- Create CaloDetDescrManager object --- --- - CaloDetDescrManager* caloMgr = new CaloDetDescrManager(); - pObj = StoreGateSvc::asStorable(caloMgr); - - // set helpers - caloMgr->set_helper(cell_id); - caloMgr->set_helper(caloId_mgr); - - caloMgr->initialize(); - // --- --- Create CaloDetDescrManager object --- --- - - // Cell volumes - CaloCellVolumes cellVol (serviceLocator(), cell_id); - - // geometry layout - caloMgr->set_lar_geometry(cellVol.layout()); - - //unsigned int idhash; - IdentifierHash min; - IdentifierHash max; - - const LArEM_ID* em_id = caloId_mgr->getEM_ID(); - const LArHEC_ID* hec_id = caloId_mgr->getHEC_ID(); - const LArFCAL_ID* fcal_id = caloId_mgr->getFCAL_ID(); - - // Create Calo Detector Elements - - // Check whether we are working with Test Beam geometry - bool isTestBeam = false; - const LArDetectorManager* larMgr{nullptr}; - StatusCode status = detStore->retrieve(larMgr); - if(status.isFailure()) { - ATH_MSG_WARNING("Could not get LArDetectorManager. Assuming TestBeam=false"); - } - else { - isTestBeam = larMgr->isTestBeam(); - } - - // **************************************************************** - // ** --- --- EMB --- --- ** - // **************************************************************** - - // --- Retrieve Emec Detector Manager - const EMBDetectorManager* embManager{nullptr}; - status = detStore->retrieve(embManager); - if(status.isFailure()) { - ATH_MSG_WARNING("Could not get the EMBDetectorManager. No Calo Elements will be built for EMB"); - } - else { - // --- --- Iterate over EMB regions and cells --- --- - EMBDetectorManager::DetectorRegionConstIterator embregIt; - - for (embregIt=embManager->beginDetectorRegion(); embregIt!=embManager->endDetectorRegion(); embregIt++) { - const EMBDetectorRegion *embRegion = *embregIt; - - // *** *** Create descriptor for this region *** *** - // Region identifier. - // Do some mapping between LArReadoutGeometry and CaloID - - int barrel_ec = 0; - switch(embRegion->getEndcapIndex()) { - case EMBDetectorRegion::NEG: - barrel_ec = -1; // negative side - break; - case EMBDetectorRegion::POS: - barrel_ec = 1; // positive side - break; - default: - ATH_MSG_ERROR("Wrong Side Index for EMB region " << embRegion->getEndcapIndex()); - return StatusCode::FAILURE; - } - - Identifier regId = em_id->region_id(barrel_ec - , embRegion->getSamplingIndex() - , embRegion->getRegionIndex()); - - EMBDescriptor* embDescr = new EMBDescriptor(regId,(AtlasDetectorID *)cell_id,cell_id,embRegion); - caloMgr->add(embDescr); - - double phi_min = 0.; - double z_min = 10000.; - double z_max = -10000.; - double r_min = 10000.; - double r_max = -10000.; - - double reg_min = 10000.; - double reg_max = -10000.; - - std::vector<double> depth_in; - std::vector<double> depth_out; - - // *** *** Create descriptor for this region *** *** - - // - // *** *** *** Iterate over cells *** *** *** - // - for (unsigned int iPhi=embRegion->beginPhiIndex();iPhi<embRegion->endPhiIndex();iPhi++) { - for (unsigned int iEta=embRegion->beginEtaIndex();iEta<embRegion->endEtaIndex();iEta++) { - EMBCellConstLink cellPtr = embRegion->getEMBCell(iEta,iPhi); - - // build hash identifier for this cell - Identifier chanId = em_id->channel_id(barrel_ec - , cellPtr->getSamplingIndex() - , cellPtr->getRegionIndex() - , iEta - , iPhi); - - // Create the element and store it - EMBDetectorElement* embElement = new EMBDetectorElement(em_id->channel_hash(chanId) - , 0 - , 0 - , embDescr - , cellPtr - , embRegion - , isTestBeam); - if(iPhi==embRegion->beginPhiIndex()) { - phi_min = embElement->phi() - 0.5*embElement->dphi(); - } - - // cell volume - embElement->set_volume(cellVol.CellVolume(chanId)); - - caloMgr->add(embElement); - - if(r_min > embElement->r()-0.5*embElement->dr()) - r_min = embElement->r()-0.5*embElement->dr(); - if(r_max < embElement->r()+0.5*embElement->dr()) - r_max = embElement->r()+0.5*embElement->dr(); - - if(z_min > std::abs(embElement->z_raw())-0.5*embElement->dz()) - z_min = std::abs(embElement->z_raw())-0.5*embElement->dz(); - if(z_max < std::abs(embElement->z_raw())+0.5*embElement->dz()) - z_max = std::abs(embElement->z_raw())+0.5*embElement->dz(); - - if(reg_min > embElement->eta()-0.5*embElement->deta()) - reg_min = embElement->eta()-0.5*embElement->deta(); - if(reg_max < embElement->eta()+0.5*embElement->deta()) - reg_max = embElement->eta()+0.5*embElement->deta(); - - // deal with depth - if(iPhi==embRegion->beginPhiIndex()) { - depth_in.push_back(cellPtr->getRLocal(EMBCell::FRONT)); - depth_out.push_back(cellPtr->getRLocal(EMBCell::BACK)); - } - } // Eta loop - } // Phi loop - // *** *** *** Iterate over cells *** *** *** - - double eta_min = (embRegion->getSamplingIndex()==1 && embRegion->getRegionIndex()==0) - ? embRegion->getDescriptor()->getEtaBinning().getStart() - embRegion->getDescriptor()->getEtaBinning().getDelta() - : embRegion->getDescriptor()->getEtaBinning().getStart(); - - double eta_max = (embRegion->getDescriptor()->getEtaBinning()).getEnd(); - double phi_max = phi_min + std::abs((embRegion->getDescriptor()->getPhiBinning()).getDelta())*embDescr->n_phi(); - - // 'ideal' values - embDescr->setCaloEtaMin(eta_min); - embDescr->setCaloEtaMax(eta_max); - embDescr->setCaloPhiMin(phi_min); - embDescr->setCaloPhiMax(phi_max); - embDescr->setCaloZMin(z_min); - embDescr->setCaloZMax(z_max); - embDescr->setCaloRMin(r_min); - embDescr->setCaloRMax(r_max); - - // depths - embDescr->set_n_calo_depth(depth_in.size()); - embDescr->set_depth_in(depth_in); - embDescr->set_depth_out(depth_out); - - // 'alignable' values - embDescr->setLArRegMin(reg_min); - embDescr->setLArRegMax(reg_max); - embDescr->setLArEtaMin(eta_min); - embDescr->setLArPhiMin(phi_min); - - }// Region loop - } // if EMB manager has been retrieved - - // **************************************************************** - // ** --- --- EMB --- --- ** - // **************************************************************** - - // **************************************************************** - // ** --- --- EMEC --- --- ** - // **************************************************************** - - // --- Retrieve Emec Detector Manager - const EMECDetectorManager* emecManager{nullptr}; - status = detStore->retrieve(emecManager); - if(status.isFailure()) { - ATH_MSG_WARNING("Could not get the EMECDetectorManager. No Calo Elements will be built for EMEC"); - } - else { - // --- --- Iterate over EMEC regions and cells --- --- - EMECDetectorManager::DetectorRegionConstIterator emecregIt; - - for (emecregIt=emecManager->beginDetectorRegion(); emecregIt!=emecManager->endDetectorRegion(); emecregIt++) { - const EMECDetectorRegion *emecRegion = *emecregIt; - - // *** *** Create descriptor for this region *** *** - // Region identifier. - // Do some mapping between LArReadoutGeometry and CaloID - EMECDetectorRegion::DetectorSide endcapInd = emecRegion->getEndcapIndex(); - - unsigned int radialInd = emecRegion->getRadialIndex(); - int barrel_ec; - - switch(endcapInd) { - case EMECDetectorRegion::NEG: - barrel_ec = -1; // negative side - break; - case EMECDetectorRegion::POS: - barrel_ec = 1; // positive side - break; - default: - ATH_MSG_ERROR("Wrong Endcap Index for EMEC region " << endcapInd); - return StatusCode::FAILURE; - }// switch(endcapInd) - - switch(radialInd) { - case 0: - barrel_ec *= 2; // outer wheel - break; - case 1: - barrel_ec *= 3; // inner wheel - break; - default: - ATH_MSG_ERROR("Wrong Radial Index for EMEC region " << radialInd); - return StatusCode::FAILURE; - }// switch(radialInd) - - Identifier regId = em_id->region_id(barrel_ec - , emecRegion->getSamplingIndex() - , emecRegion->getRegionIndex()); - - EMECDescriptor* emecDescr = new EMECDescriptor(regId,(AtlasDetectorID *)cell_id,cell_id,emecRegion); - caloMgr->add(emecDescr); - - double phi_min = 0.; - double z_min = 10000.; - double z_max = -10000.; - double r_min = 10000.; - double r_max = -10000.; - - double reg_min = 10000.; - double reg_max = -10000.; - - std::vector<double> depth_in; - std::vector<double> depth_out; - // *** *** Create descriptor for this region *** *** - - // - // *** *** *** Iterate over cells *** *** *** - // - for (unsigned int iPhi=emecRegion->beginPhiIndex();iPhi<emecRegion->endPhiIndex();iPhi++) { - for (unsigned int iEta=emecRegion->beginEtaIndex();iEta<emecRegion->endEtaIndex();iEta++) { - EMECCellConstLink cellPtr = emecRegion->getEMECCell(iEta,iPhi); - - Identifier chanId = em_id->channel_id(barrel_ec - , cellPtr->getSamplingIndex() - , cellPtr->getRegionIndex() - , iEta - , iPhi); - - // Create the element and store it - EMECDetectorElement* emecElement = new EMECDetectorElement(em_id->channel_hash(chanId) - , 0 - , 0 - , emecDescr - , cellPtr - , emecRegion - , isTestBeam); - if(iPhi==emecRegion->beginPhiIndex()) { - phi_min = emecElement->phi() - 0.5*emecElement->dphi(); - } - - // cell volume - emecElement->set_volume(cellVol.CellVolume(chanId)); - caloMgr->add(emecElement); - - if(r_min > emecElement->r()-0.5*emecElement->dr()) - r_min = emecElement->r()-0.5*emecElement->dr(); - if(r_max < emecElement->r()+0.5*emecElement->dr()) - r_max = emecElement->r()+0.5*emecElement->dr(); - - if(z_min > std::abs(emecElement->z_raw())-0.5*emecElement->dz()) - z_min = std::abs(emecElement->z_raw())-0.5*emecElement->dz(); - if(z_max < std::abs(emecElement->z_raw())+0.5*emecElement->dz()) - z_max = std::abs(emecElement->z_raw())+0.5*emecElement->dz(); - - if(reg_min > emecElement->eta()-0.5*emecElement->deta()) - reg_min = emecElement->eta()-0.5*emecElement->deta(); - if(reg_max < emecElement->eta()+0.5*emecElement->deta()) - reg_max = emecElement->eta()+0.5*emecElement->deta(); - - // depths - if(iPhi==emecRegion->beginPhiIndex()) { - depth_in.push_back(std::abs(emecElement->z_raw())-emecElement->dz()); - depth_out.push_back(std::abs(emecElement->z_raw())+emecElement->dz()); - } - } // Eta loop - } // Phi loop - // *** *** *** Iterate over cells *** *** *** - - double eta_min = emecRegion->getDescriptor()->getEtaBinning().getStart(); - double eta_max = emecRegion->getDescriptor()->getEtaBinning().getEnd(); - double phi_max = phi_min + std::abs(emecRegion->getDescriptor()->getPhiBinning().getDelta())*emecDescr->n_phi(); - - // 'ideal' values - emecDescr->setCaloEtaMin(eta_min); - emecDescr->setCaloEtaMax(eta_max); - emecDescr->setCaloPhiMin(phi_min); - emecDescr->setCaloPhiMax(phi_max); - emecDescr->setCaloZMin(z_min); - emecDescr->setCaloZMax(z_max); - emecDescr->setCaloRMin(r_min); - emecDescr->setCaloRMax(r_max); - - // depths - emecDescr->set_n_calo_depth(depth_in.size()); - emecDescr->set_depth_in(depth_in); - emecDescr->set_depth_out(depth_out); - - // 'alignable' values - emecDescr->setLArRegMin(reg_min); - emecDescr->setLArRegMax(reg_max); - emecDescr->setLArEtaMin(eta_min); - emecDescr->setLArPhiMin(phi_min); - }// Region loop - }// if EMEC manager has been retrieved - - // **************************************************************** - // ** --- --- EMEC --- --- ** - // **************************************************************** - - - // **************************************************************** - // ** --- --- HEC --- --- ** - // **************************************************************** - - // --- Retrieve Hec Detector Manager - const HECDetectorManager* hecManager{nullptr}; - status = detStore->retrieve(hecManager); - if(status.isFailure()) { - ATH_MSG_WARNING("Could not get the HECDetectorManager. No Calo Elements will be built for HEC"); - } - else { - // --- --- Iterate over HEC regions and cells --- --- - HECDetectorManager::DetectorRegionConstIterator hecregIt; - - for (hecregIt=hecManager->beginDetectorRegion(); hecregIt!=hecManager->endDetectorRegion(); hecregIt++) { - const HECDetectorRegion *hecregion = *hecregIt; - - // *** *** Create descriptor for this region *** *** - // Region identifier. - // Do some mapping between LArReadoutGeometry and CaloID - HECDetectorRegion::DetectorSide endcapInd = hecregion->getEndcapIndex(); - int pos_neg = endcapInd==HECDetectorRegion::NEG ? -2 : 2; - - Identifier regId = hec_id->region_id(pos_neg - , hecregion->getSamplingIndex() - , hecregion->getRegionIndex()); - - HECDescriptor* hecDescr = new HECDescriptor(regId,(AtlasDetectorID *)cell_id,cell_id,hecregion); - caloMgr->add(hecDescr); - - double phi_min = 0.; - float z_min = 10000.f; - float z_max = -10000.f; - double r_min = 10000.; - double r_max = -10000.; - - double reg_min = 10000.; - double reg_max = -10000.; - - std::vector<double> depth_in; - std::vector<double> depth_out; - - // - // *** *** *** Iterate over cells *** *** *** - // - for (unsigned int iPhi=hecregion->beginPhiIndex();iPhi<hecregion->endPhiIndex();iPhi++) { - for (unsigned int iEta=hecregion->beginEtaIndex();iEta<hecregion->endEtaIndex();iEta++) { - HECCellConstLink cellPtr = hecregion->getHECCell(iEta,iPhi); - // build hash identifier for this cell - // Do some mapping between LArReadoutGeometry and CaloID - - if(cellPtr) { - Identifier chanId = hec_id->channel_id(pos_neg - , cellPtr->getSamplingIndex() - , cellPtr->getRegionIndex() - , iEta - , iPhi); - - // Create the element and store it - HECDetectorElement* hecElement = new HECDetectorElement(hec_id->channel_hash(chanId) - , 0 - , 0 - , hecDescr - , cellPtr - , hecregion - , isTestBeam); - if(iPhi==hecregion->beginPhiIndex()) { - phi_min = hecElement->phi() - 0.5*hecElement->dphi(); - } - - // cell volume - hecElement->set_volume(cellVol.CellVolume(chanId)); - - caloMgr->add(hecElement); - - if(r_min > cellPtr->getRMinLocalNominal(HECCell::FRONT)) - r_min = cellPtr->getRMinLocalNominal(HECCell::FRONT); - if(r_max < cellPtr->getRMaxLocalNominal(HECCell::FRONT)) - r_max = cellPtr->getRMaxLocalNominal(HECCell::FRONT); - - if(z_min > std::abs(hecElement->z_raw())-hecElement->dz()) - z_min = std::abs(hecElement->z_raw())-hecElement->dz(); - if(z_max < std::abs(hecElement->z_raw())+hecElement->dz()) - z_max = std::abs(hecElement->z_raw())+hecElement->dz(); - - if(reg_min > hecElement->eta()-0.5*hecElement->deta()) - reg_min = hecElement->eta()-0.5*hecElement->deta(); - if(reg_max < hecElement->eta()+0.5*hecElement->deta()) - reg_max = hecElement->eta()+0.5*hecElement->deta(); - - if(iPhi==hecregion->beginPhiIndex() && iEta==hecregion->beginEtaIndex()) { - depth_in.push_back(std::abs(hecElement->z_raw())-hecElement->dz()); - depth_out.push_back(std::abs(hecElement->z_raw())+hecElement->dz()); - } - - } - } // Eta loop - } // Phi loop - // *** *** *** Iterate over cells *** *** *** - - double eta_min = hecregion->getDescriptor()->getEtaBinning().getStart(); - double eta_max = hecregion->getDescriptor()->getEtaBinning().getEnd(); - double phi_max = phi_min + std::abs(hecregion->getDescriptor()->getPhiBinning().getDelta())*hecDescr->n_phi(); - - // 'ideal' values - hecDescr->setCaloEtaMin(eta_min); - hecDescr->setCaloEtaMax(eta_max); - hecDescr->setCaloPhiMin(phi_min); - hecDescr->setCaloPhiMax(phi_max); - hecDescr->setCaloZMin(z_min); - hecDescr->setCaloZMax(z_max); - hecDescr->setCaloRMin(r_min); - hecDescr->setCaloRMax(r_max); - - // depths - hecDescr->set_n_calo_depth(depth_in.size()); - hecDescr->set_depth_in(depth_in); - hecDescr->set_depth_out(depth_out); - - // 'alignable' values - hecDescr->setLArRegMin(reg_min); - hecDescr->setLArRegMax(reg_max); - hecDescr->setLArEtaMin(eta_min); - hecDescr->setLArPhiMin(phi_min); - }// Region loop - } // if HEC manager has been retrieved - - // **************************************************************** - // ** --- --- HEC --- --- ** - // **************************************************************** - - - // **************************************************************** - // ** --- --- FCAL --- --- ** - // **************************************************************** - - // --- Retrieve Fcal Detector Manager - const FCALDetectorManager* fcalManager{nullptr}; - status = detStore->retrieve(fcalManager); - if(status.isFailure()) { - ATH_MSG_WARNING("Could not get the FCALDetectorManager. No Calo Elements will be built for FCAL"); - } - else { - // --- --- Iterate over FCAL modules and tiles --- --- - FCALDetectorManager::ConstIterator fcalmodIt; - - for (fcalmodIt=fcalManager->beginFCAL(); fcalmodIt!=fcalManager->endFCAL(); fcalmodIt++) { - const FCALModule* fcalmodule = *fcalmodIt; - - // *** *** Create descriptor for this module *** *** - // Module identifier. - // Do some mapping between LArReadoutGeometry and CaloID - - FCALModule::Endcap endcapInd = fcalmodule->getEndcapIndex(); - - int pos_neg = endcapInd==FCALModule::NEG ? -2 : 2; - - Identifier regId = fcal_id->module_id(pos_neg,(int)fcalmodule->getModuleIndex()); - - FCALDescriptor* fcalDescr = new FCALDescriptor(regId - ,(AtlasDetectorID *)cell_id - ,cell_id - ,fcalmodule); - caloMgr->add(fcalDescr); - - double eta_min = 10000.; - double eta_max = -10000.; - double z_min = 10000.; - double z_max = -10000.; - double r_min = 10000.; - double r_max = -10000.; - - double reg_min = 10000.; - double reg_max = -10000.; - - std::vector<double> depth_in; - std::vector<double> depth_out; - - // - // *** *** *** Iterate over cells *** *** *** - // - FCALModule::ConstIterator fcaltileIt; - for (fcaltileIt=fcalmodule->beginTiles();fcaltileIt!=fcalmodule->endTiles();fcaltileIt++) { - Identifier chanId = fcal_id->channel_id(pos_neg - , (int)fcalmodule->getModuleIndex() - , fcaltileIt->getIndexJ() // eta - , fcaltileIt->getIndexI()); // phi - - FCALDetectorElement* fcalElement = new FCALDetectorElement(fcal_id->channel_hash(chanId) - , 0 - , 0 - , fcalDescr - , &(*fcaltileIt) - , fcalmodule - , isTestBeam); - // calculate cell volume - double tubeSpacing = cellVol.getFcalTubeSpacing((int)fcalmodule->getModuleIndex()); - unsigned int numTubes = fcaltileIt->getNumTubes(); - double dz = fcalmodule->getFullDepthZ(*fcaltileIt); - fcalElement->set_volume(.5*sqrt(3)*numTubes*tubeSpacing*tubeSpacing*dz); - - caloMgr->add(fcalElement); - - if(eta_min > std::abs(fcalElement->eta_raw())-0.5*fcalElement->deta()) - eta_min = std::abs(fcalElement->eta_raw())-0.5*fcalElement->deta(); - if(eta_max < std::abs(fcalElement->eta_raw())+0.5*fcalElement->deta()) - eta_max = std::abs(fcalElement->eta_raw())+0.5*fcalElement->deta(); - if(r_min > fcalElement->r() - 0.5*fcalElement->dr()) - r_min = fcalElement->r() - 0.5*fcalElement->dr(); - if(r_max < fcalElement->r() + 0.5*fcalElement->dr()) - r_max = fcalElement->r() + 0.5*fcalElement->dr(); - if(z_min > std::abs(fcalElement->z_raw()) - 0.5*fcalElement->dz()) - z_min = std::abs(fcalElement->z_raw()) - 0.5*fcalElement->dz(); - if(z_max < std::abs(fcalElement->z_raw()) + 0.5*fcalElement->dz()) - z_max = std::abs(fcalElement->z_raw()) + 0.5*fcalElement->dz(); - if(reg_min > fcalElement->eta()-0.5*fcalElement->deta()) - reg_min = fcalElement->eta()-0.5*fcalElement->deta(); - if(reg_max < fcalElement->eta()+0.5*fcalElement->deta()) - reg_max = fcalElement->eta()+0.5*fcalElement->deta(); - - if(fcaltileIt==fcalmodule->beginTiles()) { - depth_in.push_back(std::abs(fcalElement->z_raw()) - fcalElement->dz()); - depth_out.push_back(std::abs(fcalElement->z_raw()) + fcalElement->dz()); - } - } - - // These values have no importance for FCAL - hardwire them here. - fcalDescr->setCaloPhiMin(0.); - fcalDescr->setCaloPhiMax(2*M_PI); - fcalDescr->setLArPhiMin(0.); - - - fcalDescr->setCaloEtaMin(eta_min); - fcalDescr->setCaloEtaMax(eta_max); - fcalDescr->setCaloZMin(z_min); - fcalDescr->setCaloZMax(z_max); - fcalDescr->setCaloRMin(r_min); - fcalDescr->setCaloRMax(r_max); - fcalDescr->setLArRegMin(reg_min); - fcalDescr->setLArRegMax(reg_max); - - // depths - fcalDescr->set_n_calo_depth(depth_in.size()); - fcalDescr->set_depth_in(depth_in); - fcalDescr->set_depth_out(depth_out); - - if(fcalmodule->getEndcapIndex()==FCALModule::NEG) { - fcalDescr->setLArEtaMin(-reg_max); - } - else { - fcalDescr->setLArEtaMin(reg_min); - } - }// Module loop - }// if FCAL manager has been retrieved - - // **************************************************************** - // ** --- --- FCAL --- --- ** - // **************************************************************** - - - // **************************************************************** - // ** --- --- Tile --- --- ** - // **************************************************************** - const TileDetDescrManager* tile_mgr{nullptr}; - status = detStore->retrieve(tile_mgr); - if (status.isFailure()) { - ATH_MSG_WARNING("Could not get the TileDetectorManager. No Calo Elements will be built for Tile"); - } - else { - ATH_MSG_DEBUG(" Found the TileDetDescrManager "); - cell_id->calo_cell_hash_range((int)CaloCell_ID::TILE,min,max); - for(unsigned int idhash=0; idhash < max-min; idhash++) { - CaloDetDescrElement* newelt = tile_mgr->get_cell_element(idhash); - if(newelt) { - caloMgr->add(newelt); - } - } - - std::vector<CaloDetDescriptor*>::const_iterator itr = tile_mgr->calo_descriptors_begin(); - std::vector<CaloDetDescriptor*>::const_iterator end = tile_mgr->calo_descriptors_end(); - - for(; itr != end; ++itr) { - caloMgr->add_tile(*itr); - } - } - // **************************************************************** - // ** --- --- Tile --- --- ** - // **************************************************************** - - // **************************************************************** - // ** --- Additional elements --- ** - // **************************************************************** - if(isTestBeam) { - CaloDetDescrElementContainer *cDDEvec; - if(detStore->retrieve(cDDEvec) == StatusCode::SUCCESS) { - // We have additional elements - for (CaloDetDescrElement* elt : *cDDEvec) { - caloMgr->add (elt); - } - } - } + std::unique_ptr<CaloDetDescrManager> caloMgr = buildCaloDetDescr(serviceLocator() + , Athena::getMessageSvc() + , nullptr + , nullptr); + pObj = SG::asStorable<CaloDetDescrManager>(caloMgr.release()); return StatusCode::SUCCESS; } diff --git a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloSuperCellMgrDetDescrCnv.cxx b/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloSuperCellMgrDetDescrCnv.cxx index 8ddff395fe68fc04c236f719066ee762f9779433..ecd0852cc9e5afd5fd866bb66099ebf7ffe6f029 100755 --- a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloSuperCellMgrDetDescrCnv.cxx +++ b/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloSuperCellMgrDetDescrCnv.cxx @@ -17,7 +17,6 @@ #include "CaloSuperCellMgrDetDescrCnv.h" #include "CaloDetDescr/ICaloSuperCellIDTool.h" -#include "TileDetDescr/TileDetDescrManager.h" #include "CaloDetDescr/CaloDetDescrManager.h" #include "CaloDetDescr/CaloDetDescriptor.h" #include "CaloDetDescr/CaloDetDescrElement.h" diff --git a/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/ATLAS_CHECK_THREAD_SAFETY b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..c6324b3a074fefe6300b0f78e15828b0aab8f46b --- /dev/null +++ b/Calorimeter/CaloCnv/CaloTPCnv/CaloTPCnv/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +Calorimeter/CaloCnv/CaloTPCnv diff --git a/Calorimeter/CaloCnv/CaloTPCnv/src/CaloCellPacker_400_500.cxx b/Calorimeter/CaloCnv/CaloTPCnv/src/CaloCellPacker_400_500.cxx index 6e686d157f60b18c510939aa10375ee5d0397e43..857a03f1bdc0c48d5b89ca71f6d134dd56b62b48 100644 --- a/Calorimeter/CaloCnv/CaloTPCnv/src/CaloCellPacker_400_500.cxx +++ b/Calorimeter/CaloCnv/CaloTPCnv/src/CaloCellPacker_400_500.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // $Id: CaloCellPacker_400_500.cxx,v 1.5 2009-03-31 19:04:04 ssnyder Exp $ @@ -965,11 +965,6 @@ void CaloCellPacker_400_500::unpack } cells.reserve (totcells); - // To speed things up, we'll use the underlying vector from the cell - // container. - std::vector<CaloCell*>& cellsv = - const_cast<std::vector<CaloCell*>&>(cells.stdcont()); - // Iterator for scanning the input. CaloCompactCellContainer::compact_input_iterator it = packed.compact_begin_input(); @@ -1138,7 +1133,7 @@ void CaloCellPacker_400_500::unpack // Add the cell to the container. if (dde) - cellsv.push_back (cell); + cells.push_back (cell); // Move to next cell. ++hash; diff --git a/Calorimeter/CaloCnv/CaloTPCnv/test/CaloCellLinkContainerCnv_p2_test.cxx b/Calorimeter/CaloCnv/CaloTPCnv/test/CaloCellLinkContainerCnv_p2_test.cxx index 3847b16d0634ca45ad1c4f602922c067d939bc24..97c1b743a9a150b7cc05b1ff1f7e6a8748de553f 100644 --- a/Calorimeter/CaloCnv/CaloTPCnv/test/CaloCellLinkContainerCnv_p2_test.cxx +++ b/Calorimeter/CaloCnv/CaloTPCnv/test/CaloCellLinkContainerCnv_p2_test.cxx @@ -22,6 +22,7 @@ #include "TestTools/random.h" #include "TestTools/leakcheck.h" #include "TestTools/FLOATassert.h" +#include "CxxUtils/checker_macros.h" #include <vector> #include <algorithm> #include <cassert> @@ -31,8 +32,8 @@ const std::string cont_name = "cells"; -using Athena_test::randi; -using Athena_test::randf; +using Athena_test::randi_seed; +using Athena_test::randf_seed; struct cell_t @@ -63,7 +64,8 @@ void CaloCellLinkTest::push (int icell, float weight, const std::string& name) } -CaloCellLink* make_cluslinks (int ncell_min, +CaloCellLink* make_cluslinks (uint32_t& seed, + int ncell_min, int ncell_max, int nrange_min, int nrange_max, @@ -73,16 +75,16 @@ CaloCellLink* make_cluslinks (int ncell_min, float wmax) { CaloCellLinkTest* lnk = new CaloCellLinkTest; - int ncell = randi (ncell_max+1, ncell_min); + int ncell = randi_seed (seed, ncell_max+1, ncell_min); if (ncell == 0) return lnk; std::vector<cell_t> cells (ncell); - int nrange = randi (nrange_max+1, nrange_min); + int nrange = randi_seed (seed, nrange_max+1, nrange_min); if (nrange < 1) nrange = 1; std::vector<int> ranges (nrange); for (int i = 0; i < nrange-1; i++) - ranges[i] = randi (ncell); + ranges[i] = randi_seed (seed, ncell); std::sort (ranges.begin(), ranges.end()-1); ranges.back() = ncell; @@ -90,7 +92,7 @@ CaloCellLink* make_cluslinks (int ncell_min, for (int i = 0; i < nrange; i++) { int nthis = ranges[i] - icell; assert (nthis >= 0); - int istart = randi (200000); + int istart = randi_seed (seed, 200000); for (int i = 0; i < nthis; i++) { assert (icell < ncell); cells[icell++].cell = istart + i; @@ -98,11 +100,11 @@ CaloCellLink* make_cluslinks (int ncell_min, } assert (icell == ncell); - nrange = randi (nwrange_max+1, nwrange_min); + nrange = randi_seed (seed, nwrange_max+1, nwrange_min); if (nrange < 1) nrange = 1; ranges.resize (nrange); for (int i = 0; i < nrange-1; i++) - ranges[i] = randi (ncell); + ranges[i] = randi_seed (seed, ncell); std::sort (ranges.begin(), ranges.end()-1); ranges.back() = ncell; @@ -110,7 +112,7 @@ CaloCellLink* make_cluslinks (int ncell_min, for (int i = 0; i < nrange; i++) { int nthis = ranges[i] - icell; assert (nthis >= 0); - float w = randf (wmax, wmin); + float w = randf_seed (seed, wmax, wmin); for (int i = 0; i < nthis; i++) { assert (icell < ncell); cells[icell++].weight = w; @@ -231,7 +233,8 @@ void compare (const CaloCellLinkContainer& c1, } -void runtest (int nclus_max, +void runtest (uint32_t& seed, + int nclus_max, int ncell_min, int ncell_max, int nrange_min, @@ -249,9 +252,10 @@ void runtest (int nclus_max, CaloCellLinkContainer c1; CaloCellLinkContainer c1out; - int nclus = randi (nclus_max); + int nclus = randi_seed (seed, nclus_max); for (int i = 0; i < nclus; i++) - c1.push_back (make_cluslinks (ncell_min, ncell_max, + c1.push_back (make_cluslinks (seed, + ncell_min, ncell_max, nrange_min, nrange_max, nwrange_min, nwrange_max, wmin, wmax)); @@ -446,7 +450,7 @@ void test_thinning() } -void tests() +void tests ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; (void)Gaudi::Hive::currentContext(); @@ -458,19 +462,21 @@ void tests() ElementLink<CaloCellContainer> dum4 ("cellx", 0); ElementLink<CaloCellContainer> dum5 ("", 0); + uint32_t seed = 1; + { Athena_test::Leakcheck check; - runtest (10, 100, 100, 4, 4, 4, 4, 0.5, 2); + runtest (seed, 10, 100, 100, 4, 4, 4, 4, 0.5, 2); std::cout << "test2\n"; - runtest (10, 100, 100, 1, 1, 1, 1, 1, 1); + runtest (seed, 10, 100, 100, 1, 1, 1, 1, 1, 1); for (int i = 0; i < 10; i++) { std::cout << "test3 " << i << "\n"; - runtest (10, 100, 10000, 1, 50, 1, 20, 0.5, 2, false); + runtest (seed, 10, 100, 10000, 1, 50, 1, 20, 0.5, 2, false); } std::cout << "test4\n"; - runtest (10, 20000, 20000, 1, 1, 4, 4, 0.5, 2, false); + runtest (seed, 10, 20000, 20000, 1, 1, 4, 4, 0.5, 2, false); std::cout << "test5\n"; - runtest (10, 0, 0, 1, 1, 1, 1, 0.5, 2, false); + runtest (seed, 10, 0, 0, 1, 1, 1, 1, 0.5, 2, false); test_pack_errors(); test_unpack_errors(); @@ -480,12 +486,12 @@ void tests() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "CaloTPCnv/CaloCellLinkContainerCnv_p2\n"; errorcheck::ReportMessage::hideErrorLocus(); - SGTest::initTestStore(); + std::unique_ptr<SGTest::TestStore> store = SGTest::getTestStore(); tests(); return 0; } diff --git a/Calorimeter/CaloCnv/CaloTPCnv/test/CaloClusterCellLinkContainerCnv_p1_test.cxx b/Calorimeter/CaloCnv/CaloTPCnv/test/CaloClusterCellLinkContainerCnv_p1_test.cxx index 9795bae19332dec055b8fe38553ab0ee8d7657cd..f0e01d2f62a17bce28aeb9fef926876eef3c438c 100644 --- a/Calorimeter/CaloCnv/CaloTPCnv/test/CaloClusterCellLinkContainerCnv_p1_test.cxx +++ b/Calorimeter/CaloCnv/CaloTPCnv/test/CaloClusterCellLinkContainerCnv_p1_test.cxx @@ -12,6 +12,7 @@ #include "CaloEvent/CaloClusterCellLinkContainer.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/ThreadLocalContext.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -52,7 +53,7 @@ void testit (const CaloClusterCellLinkContainer& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; (void)Gaudi::Hive::currentContext(); @@ -78,7 +79,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Calorimeter/CaloCnv/CaloTPCnv/test/CaloClusterContainerCnv_test.cxx b/Calorimeter/CaloCnv/CaloTPCnv/test/CaloClusterContainerCnv_test.cxx index e7279631fcc44514f0116fe4cb1afc3fdc2fde93..49bdcab68b59e3ed87b4ccddac2d5d9f55e5c902 100644 --- a/Calorimeter/CaloCnv/CaloTPCnv/test/CaloClusterContainerCnv_test.cxx +++ b/Calorimeter/CaloCnv/CaloTPCnv/test/CaloClusterContainerCnv_test.cxx @@ -25,7 +25,9 @@ #include "CLHEP/Vector/ThreeVector.h" #include "CLHEP/Vector/LorentzVector.h" #include "TestTools/leakcheck.h" +#include "TestTools/random.h" #include "GaudiKernel/ThreadLocalContext.h" +#include "CxxUtils/checker_macros.h" #include <cassert> @@ -34,36 +36,12 @@ #include "CaloClusterContainerCnvTest_p6.icc" +using Athena_test::randi_seed; +using Athena_test::randf_seed; using CLHEP::Hep3Vector; using CLHEP::HepLorentzVector; -// Dufus-quality RNG, using LCG. Constants from numerical recipies. -// I don't particularly care about RNG quality here, just about -// getting something that's reproducible. -#include <stdint.h> -uint32_t seed = 1; -uint32_t rngmax = static_cast<uint32_t> (-1); -uint32_t rng() -{ - seed = (1664525*seed + 1013904223); - return seed; -} - -float randf (float rmax, float rmin = 0) -{ - return static_cast<float>(rng()) / rngmax * (rmax-rmin) + rmin; -} -int randi (int rmax, int rmin = 0) -{ - return static_cast<int> (randf(rmax, rmin)); -} -struct randi_fn -{ - int operator() (int rmax) { return randi(rmax); } -}; - - std::vector<CaloSampling::CaloSample> getSamplingList() { std::vector<CaloSampling::CaloSample> v; @@ -75,17 +53,17 @@ std::vector<CaloSampling::CaloSample> getSamplingList() } -CaloCluster* make_cluster (int iclus) +CaloCluster* make_cluster (uint32_t& seed, int iclus) { - float eta0 = randf (4, -4); - float phi0 = randf (3, -3); + float eta0 = randf_seed (seed, 4, -4); + float phi0 = randf_seed (seed, 3, -3); int nvars = 10; std::vector<CaloVariableType::VariableType> vtypes (nvars); unsigned int mask = 0; for (int i = 0; i < nvars; i++) { - vtypes[i] = (CaloVariableType::VariableType)randi - (CaloVariableType::getNumberOfVariables()); + vtypes[i] = (CaloVariableType::VariableType)randi_seed + (seed, CaloVariableType::getNumberOfVariables()); mask |= CaloVariableType::getVariableBit (vtypes[i]); } @@ -94,50 +72,50 @@ CaloCluster* make_cluster (int iclus) std::vector<CaloSampling::CaloSample> vsamp = getSamplingList(); for (int i = 0; i < nvars; i++) { assert (c->setVariable (vtypes[i], - vsamp[randi(vsamp.size())], - randf(100000))); + vsamp[randi_seed(seed, vsamp.size())], + randf_seed(seed, 100000))); } Hep3Vector dir; HepLorentzVector hlv; - dir.setREtaPhi (randf (100000), randf (4, -4), randf (3, -3)); - hlv.setVectM (Hep3Vector(dir), randf (100000)); + dir.setREtaPhi (randf_seed (seed, 100000), randf_seed (seed, 4, -4), randf_seed (seed, 3, -3)); + hlv.setVectM (Hep3Vector(dir), randf_seed (seed, 100000)); c->set4Mom (hlv); { SignalStateHelper sig (c); sig.setSignalState(P4SignalState::UNCALIBRATED); - dir.setREtaPhi (randf (100000), randf (4, -4), randf (3, -3)); - hlv.setVectM (Hep3Vector(dir), randf (100000)); + dir.setREtaPhi (randf_seed (seed, 100000), randf_seed (seed, 4, -4), randf_seed (seed, 3, -3)); + hlv.setVectM (Hep3Vector(dir), randf_seed (seed, 100000)); c->set4Mom (hlv); } - c->setBasicEnergy (randf (100000, -10000)); - c->setTime (randf (32, -32)); - c->setClusterSize (randi (14)); + c->setBasicEnergy (randf_seed (seed, 100000, -10000)); + c->setTime (randf_seed (seed, 32, -32)); + c->setClusterSize (randi_seed (seed, 14)); - c->setBarrel (randi (2)); - c->setEndcap (randi (2)); + c->setBarrel (randi_seed (seed, 2)); + c->setEndcap (randi_seed (seed, 2)); - c->setAthenaBarCode (randi (1000000) + 10LL*1000*1000*1000); + c->setAthenaBarCode (randi_seed (seed, 1000000) + 10LL*1000*1000*1000); - c->insertMoment (CaloClusterMoment::SECOND_R, randf(100000), false); - c->insertMoment (CaloClusterMoment::ISOLATION, randf(100000)); - c->insertMoment (CaloClusterMoment::DELTA_PHI, randf(100000)); + c->insertMoment (CaloClusterMoment::SECOND_R, randf_seed(seed, 100000), false); + c->insertMoment (CaloClusterMoment::ISOLATION, randf_seed(seed, 100000)); + c->insertMoment (CaloClusterMoment::DELTA_PHI, randf_seed(seed, 100000)); c->addBadChannel (CaloClusterBadChannelData - (randf (4, -4), - randf (3, -3), - vsamp[randi(vsamp.size())], - CaloBadChannel (randi (256)))); + (randf_seed (seed, 4, -4), + randf_seed (seed, 3, -3), + vsamp[randi_seed(seed, vsamp.size())], + CaloBadChannel (randi_seed (seed, 256)))); c->addBadChannel (CaloClusterBadChannelData - (randf (4, -4), - randf (3, -3), - vsamp[randi(vsamp.size())], - CaloBadChannel (randi (256)))); + (randf_seed (seed, 4, -4), + randf_seed (seed, 3, -3), + vsamp[randi_seed(seed, vsamp.size())], + CaloBadChannel (randi_seed (seed, 256)))); c->setRecoStatus (CaloRecoStatus - ((CaloRecoStatus::StatusIndicator)randi (100000))); + ((CaloRecoStatus::StatusIndicator)randi_seed (seed, 100000))); ElementLink<CaloCellLinkContainer> el ("celllinkkey", iclus); c->resetCellLink (el); @@ -151,8 +129,9 @@ std::unique_ptr<const CaloClusterContainer> make_clusters() auto ccc = std::make_unique<CaloClusterContainer>(); ccc->setROIAuthor ("theauthor"); ccc->setTowerSeg (CaloTowerSeg (20, 10, -4, 4, -3, 3)); + uint32_t seed = 1; for (int i=0; i < 5; i++) - ccc->push_back (make_cluster(i)); + ccc->push_back (make_cluster(seed, i)); return std::unique_ptr<const CaloClusterContainer>(ccc.release()); } @@ -301,7 +280,7 @@ void compare (const CaloClusterContainer& clust1, for (size_t i = 0; i < clust1.size(); i++) { compare (*clust1[i], *clust2[i], version); - CaloCluster& cl = *const_cast<CaloCluster*> (clust2[i]); + const CaloCluster& cl = *clust2[i]; assert (cl.cellLink().index() == i); assert (cl.cellLink().dataID() == "celllinkkey"); } @@ -326,11 +305,11 @@ void testit (const CaloClusterContainer& clust, int version) } -int main() +int main ATLAS_NOT_THREAD_SAFE () { errorcheck::ReportMessage::hideErrorLocus(); (void)Gaudi::Hive::currentContext(); - SGTest::initTestStore(); + auto store = SGTest::getTestStore(); Athena::getMessageSvc(); AthenaBarCodeImpl abci; ElementLink<CaloCellLinkContainer> dum ("celllinkkey", 0); diff --git a/Calorimeter/CaloCnv/CaloTPCnv/test/CaloCompactCellTool_test.cxx b/Calorimeter/CaloCnv/CaloTPCnv/test/CaloCompactCellTool_test.cxx index 5b55b744c76eaba43be207812ee4f085b6ec0839..b55718623e7d641e9bf82828c0f89d780b6cb9ee 100644 --- a/Calorimeter/CaloCnv/CaloTPCnv/test/CaloCompactCellTool_test.cxx +++ b/Calorimeter/CaloCnv/CaloTPCnv/test/CaloCompactCellTool_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @@ -54,15 +54,8 @@ using CLHEP::TeV; typedef long double efloat_t; -SG::Arena* arena = 0; - -CaloDetDescrManager* g_mgr = 0; -IToolSvc* g_toolsvc = 0; -ISvcLocator* g_svcloc = 0; - - #undef CHECK -#define CHECK(s) do { if (!(s).isSuccess()) {printf("error: %s\n", #s);exit(1);}} while(0) +#define CHECK(s) do { if (!(s).isSuccess()) {printf("error: %s\n", #s);std::abort();}} while(0) // Dufus-quality RNG, using LCG. Constants from numerical recipies. @@ -162,32 +155,45 @@ CaloIdManager* make_idmgr (const CaloCell_ID* cellhelper, } -typedef std::map<Identifier, CaloDetDescriptor*> ddmap_t; -ddmap_t ddmap_ol; -ddmap_t ddmap_sc; -CaloDetDescriptor* find_dd (int hashid, - const CaloDetDescrManager_Base* mgr) +class DDLookup +{ +public: + DDLookup (const CaloDetDescrManager_Base* mgr); + CaloDetDescriptor* find (int hashid); + +private: + typedef std::map<Identifier, CaloDetDescriptor*> ddmap_t; + ddmap_t m_ddmap; + const CaloCell_Base_ID* m_helper; +}; + + +DDLookup::DDLookup (const CaloDetDescrManager_Base* mgr) + : m_helper (mgr->getCaloCell_ID()) +{ +} + + +CaloDetDescriptor* DDLookup::find (int hashid) { - const CaloCell_Base_ID* helper = mgr->getCaloCell_ID(); - Identifier id = helper->cell_id (hashid); + Identifier id = m_helper->cell_id (hashid); Identifier reg_id; - int subcalo = helper->sub_calo (id); + int subcalo = m_helper->sub_calo (id); if (subcalo == CaloCell_ID::TILE) { - int section = helper->section (id); - int side = helper->side (id); - reg_id = helper->region_id (subcalo, section, side, 0); + int section = m_helper->section (id); + int side = m_helper->side (id); + reg_id = m_helper->region_id (subcalo, section, side, 0); } else { - int sampling = helper->sampling (id); - int posneg = helper->pos_neg (id); - int region = helper->region (id); - reg_id = helper->region_id (subcalo, posneg, sampling, region); + int sampling = m_helper->sampling (id); + int posneg = m_helper->pos_neg (id); + int region = m_helper->region (id); + reg_id = m_helper->region_id (subcalo, posneg, sampling, region); } - ddmap_t& ddmap = helper->is_supercell(id) ? ddmap_sc : ddmap_ol; - CaloDetDescriptor* dd = ddmap[reg_id]; + CaloDetDescriptor* dd = m_ddmap[reg_id]; if (!dd) { - dd = new CaloDetDescriptor (reg_id, helper->tile_idHelper(), helper); - ddmap[reg_id] = dd; + dd = new CaloDetDescriptor (reg_id, m_helper->tile_idHelper(), m_helper); + m_ddmap[reg_id] = dd; } return dd; } @@ -195,9 +201,10 @@ CaloDetDescriptor* find_dd (int hashid, CaloCell* make_cell (int hashid, CaloDetDescrManager* mgr, + DDLookup& ddlookup, URNG& rng) { - CaloDetDescriptor* descr = find_dd (hashid, mgr); + CaloDetDescriptor* descr = ddlookup.find (hashid); CaloDetDescrElement* dde = new DummyDetDescrElement (hashid - descr->caloCellMin(), 0, @@ -313,13 +320,14 @@ CaloCell* make_cell (int hashid, std::vector<CaloCell*> make_cells (CaloDetDescrManager* mgr, + DDLookup& ddlookup, URNG& rng) { size_t hashmax = mgr->getCaloCell_ID()->calo_cell_hash_max(); std::vector<CaloCell*> v; v.reserve (hashmax); for (size_t i = 0; i < hashmax; i++) - v.push_back (make_cell (i, mgr, rng)); + v.push_back (make_cell (i, mgr, ddlookup, rng)); // Give a few cells off-scale energies, to test saturation. IdentifierHash tilemin, tilemax; @@ -397,15 +405,19 @@ CaloCellContainer* fill_cells (int n, } -CaloCellContainer* fill_supercells (const std::vector<CaloCell*>& cells) +CaloCellContainer* fill_supercells (const std::vector<CaloCell*>& cells, + ISvcLocator* svcloc) { CaloCellContainer* cont = new CaloCellContainer; + IToolSvc* toolsvc = 0; + CHECK( svcloc->service ("ToolSvc", toolsvc, true) ); + ICaloSuperCellIDTool* sctool = 0; - CHECK( g_toolsvc->retrieveTool ("CaloSuperCellIDTool", sctool) ); + CHECK( toolsvc->retrieveTool ("CaloSuperCellIDTool", sctool) ); StoreGateSvc* detstore = 0; - CHECK( g_svcloc->service ("DetectorStore", detstore) ); + CHECK( svcloc->service ("DetectorStore", detstore) ); const CaloIdManager* idmgr = 0; CHECK( detstore->retrieve (idmgr, "CaloIdManager") ); const CaloCell_SuperCell_ID* schelper = @@ -414,6 +426,8 @@ CaloCellContainer* fill_supercells (const std::vector<CaloCell*>& cells) CaloSuperCellDetDescrManager* scmgr = 0; CHECK( detstore->retrieve (scmgr, "CaloSuperCellMgr") ); + DDLookup ddlookup (scmgr); + std::vector<CaloCell*> scells (schelper->calo_cell_hash_max()); for (const CaloCell* cell : cells) { Identifier scid = sctool->offlineToSuperCellID (cell->ID()); @@ -423,7 +437,7 @@ CaloCellContainer* fill_supercells (const std::vector<CaloCell*>& cells) if (scells[hash] == 0) { const CaloDetDescrElement* dde = scmgr->get_element (hash); if (!dde) { - CaloDetDescriptor* descr = find_dd (hash, scmgr); + CaloDetDescriptor* descr = ddlookup.find (hash); CaloDetDescrElement* dde_nc = new DummyDetDescrElement (hash - descr->caloCellMin(), @@ -778,6 +792,7 @@ void test_one (int n, const std::vector<CaloCell*>& cells, CaloCompactCellTool& tool, URNG& rng, + SG::Arena& arena, bool clustery = false, bool dump = false, bool ordered = true, @@ -796,7 +811,7 @@ void test_one (int n, dump_packed (ccc); CaloCellContainer* cont2 = new CaloCellContainer (SG::VIEW_ELEMENTS); - SG::Arena::Push push (*arena); + SG::Arena::Push push (arena); assert (tool.getTransient (ccc, cont2)); if (dump) @@ -810,23 +825,25 @@ void test_one (int n, delete cont; delete cont2; - arena->reset(); + arena.reset(); } void test_supercells (int version, const std::vector<CaloCell*>& cells, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena, + ISvcLocator* svcloc) { printf ("*** test SC %d\n", version); - CaloCellContainer* cont = fill_supercells (cells); + CaloCellContainer* cont = fill_supercells (cells, svcloc); //dump_cells (*cont); CaloCompactCellContainer ccc; assert (tool.getPersistent (*cont, &ccc, nullptr, version)); CaloCellContainer* cont2 = new CaloCellContainer (SG::VIEW_ELEMENTS); - SG::Arena::Push push (*arena); + SG::Arena::Push push (arena); assert (tool.getTransient (ccc, cont2)); //dump_cells (*cont2); @@ -834,7 +851,7 @@ void test_supercells (int version, delete cont; delete cont2; - arena->reset(); + arena.reset(); } @@ -850,60 +867,74 @@ public: static void test_fin (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err1 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err2 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err3 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err4 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err5 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err6 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err7 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err8 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err9 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); static void test_err10 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena, + CaloDetDescrManager* mgr); static void test_err11 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool); + CaloCompactCellTool& tool, + SG::Arena& arena); }; void CaloCellPacker_400_500_test::test_fin (const CaloCompactCellContainer& ccc2, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { CaloCellContainer cont2 (SG::VIEW_ELEMENTS); - SG::Arena::Push push (*arena); + SG::Arena::Push push (arena); assert (tool.getTransient (ccc2, &cont2)); } @@ -911,117 +942,125 @@ CaloCellPacker_400_500_test::test_fin (const CaloCompactCellContainer& void CaloCellPacker_400_500_test::test_err1 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err1\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); header_t& header = *reinterpret_cast<header_t*> (&*vec.begin()); header.m_ncells_larhec = 1000000; - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } void CaloCellPacker_400_500_test::test_err2 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err2\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); header_t& header = *reinterpret_cast<header_t*> (&*vec.begin()); header.m_seq_larem = 1000000; - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } void CaloCellPacker_400_500_test::test_err3 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err3\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); header_t& header = *reinterpret_cast<header_t*> (&*vec.begin()); header.m_seq_larem = 10000; - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } void CaloCellPacker_400_500_test::test_err4 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err4\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); vec.resize (vec.size() + 100); - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } void CaloCellPacker_400_500_test::test_err5 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err5\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); vec.resize (vec.size() - 100); - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } void CaloCellPacker_400_500_test::test_err6 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err6\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); vec.resize (vec.size() - 100); header_t& header = *reinterpret_cast<header_t*> (&*vec.begin()); value_type val = vec[header.m_length]; vec[header.m_length] = (10000<<2) | (val & 0xffff0003); - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } void CaloCellPacker_400_500_test::test_err7 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err7\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); vec.resize (vec.size() - 100); header_t& header = *reinterpret_cast<header_t*> (&*vec.begin()); value_type val = vec[header.m_length]; int newhash = 200000; vec[header.m_length] = (newhash>>16) | ((newhash&0xffff)<<16) | (val&0xfffc); - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } void CaloCellPacker_400_500_test::test_err8 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err8\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); header_t* header = reinterpret_cast<header_t*> (&*vec.begin()); vec.insert (vec.begin() + header->m_length, 10, 0); header = reinterpret_cast<header_t*> (&*vec.begin()); header->m_length += 10; - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } @@ -1029,57 +1068,63 @@ CaloCellPacker_400_500_test::test_err8 (const CaloCompactCellContainer& void CaloCellPacker_400_500_test::test_err9 (const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err9\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); header_t* header = reinterpret_cast<header_t*> (&*vec.begin()); vec.erase (vec.begin() + header->m_length-1); header = reinterpret_cast<header_t*> (&*vec.begin()); --header->m_length; - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } void CaloCellPacker_400_500_test::test_err10(const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena, + CaloDetDescrManager* mgr) { printf (" --- err10\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); header_t& header = *reinterpret_cast<header_t*> (&*vec.begin()); value_type val = vec[header.m_length]; int nseq = (val & 0xfffc) >> 2; int hash = (val & 3) << 16 | ((val & 0xffff0000)>>16); int target = hash + std::min (10, nseq); - CaloDetDescrElement* dde = g_mgr->release_element (target); - test_fin (ccc2, tool); - g_mgr->add (dde); + CaloDetDescrElement* dde = mgr->release_element (target); + test_fin (ccc2, tool, arena); + mgr->add (dde); } void CaloCellPacker_400_500_test::test_err11(const CaloCompactCellContainer& ccc, - CaloCompactCellTool& tool) + CaloCompactCellTool& tool, + SG::Arena& arena) { printf (" --- err11\n"); CaloCompactCellContainer ccc2 = ccc; - vec_t& vec = const_cast<vec_t&>(ccc2.getData()); + vec_t& vec = ccc2.getData(); header_t& header = *reinterpret_cast<header_t*> (&*vec.begin()); header.m_lengthProvenance = 9999999; - test_fin (ccc2, tool); + test_fin (ccc2, tool, arena); } // Test handling of corrupt data. void test_errs (const std::vector<CaloCell*>& cells, CaloCompactCellTool& tool, - URNG& rng) + URNG& rng, + SG::Arena& arena, + CaloDetDescrManager* mgr) { printf ("*** test_errs\n"); CaloCellContainer* cont = fill_cells (10000, cells, true, true, rng); @@ -1088,17 +1133,17 @@ void test_errs (const std::vector<CaloCell*>& cells, typedef CaloCellPacker_400_500_test T; - T::test_err1 (ccc, tool); - T::test_err2 (ccc, tool); - T::test_err3 (ccc, tool); - T::test_err4 (ccc, tool); - T::test_err5 (ccc, tool); - T::test_err6 (ccc, tool); - T::test_err7 (ccc, tool); - T::test_err8 (ccc, tool); - T::test_err9 (ccc, tool); - T::test_err10 (ccc, tool); - T::test_err11 (ccc, tool); + T::test_err1 (ccc, tool, arena); + T::test_err2 (ccc, tool, arena); + T::test_err3 (ccc, tool, arena); + T::test_err4 (ccc, tool, arena); + T::test_err5 (ccc, tool, arena); + T::test_err6 (ccc, tool, arena); + T::test_err7 (ccc, tool, arena); + T::test_err8 (ccc, tool, arena); + T::test_err9 (ccc, tool, arena); + T::test_err10 (ccc, tool, arena, mgr); + T::test_err11 (ccc, tool, arena); // Unordered printf (" --- err unordered\n"); @@ -1106,7 +1151,7 @@ void test_errs (const std::vector<CaloCell*>& cells, CaloCellContainer* cont2 = fill_cells (10000, cells, true, false, rng); CaloCompactCellContainer ccc2; assert (tool.getPersistent (*cont2, &ccc2, nullptr, CaloCompactCellTool::VERSION_500)); - T::test_fin (ccc2, tool); + T::test_fin (ccc2, tool, arena); delete cont; } @@ -1115,19 +1160,20 @@ void test_errs (const std::vector<CaloCell*>& cells, //============================================================================ -std::vector<CaloCell*> init (IdDictParser* parser, URNG& rng) +std::vector<CaloCell*> init (IdDictParser* parser, + URNG& rng, + ISvcLocator*& svcloc, + CaloDetDescrManager*& mgr) { - ISvcLocator* svcloc; if (!Athena_test::initGaudi("CaloCompactCellTool_test.txt", svcloc)) { std::cerr << "This test can not be run" << std::endl; - exit(0); + std::abort(); } - g_svcloc = svcloc; CaloCell_ID* helper = make_helper (); CaloCell_SuperCell_ID* schelper = make_sc_helper (parser); CaloIdManager* idmgr = make_idmgr (helper, schelper); - CaloDetDescrManager* mgr = new CaloDetDescrManager; + mgr = new CaloDetDescrManager; mgr->set_helper (helper); mgr->initialize(); @@ -1135,11 +1181,8 @@ std::vector<CaloCell*> init (IdDictParser* parser, URNG& rng) scmgr->set_helper (schelper); scmgr->initialize(); - std::vector<CaloCell*> cells = make_cells (mgr, rng); - - IToolSvc* toolsvc = 0; - CHECK( svcloc->service ("ToolSvc", toolsvc, true) ); - g_toolsvc = toolsvc; + DDLookup ddlookup (mgr); + std::vector<CaloCell*> cells = make_cells (mgr, ddlookup, rng); StoreGateSvc* detstore = 0; CHECK( svcloc->service ("DetectorStore", detstore) ); @@ -1150,10 +1193,6 @@ std::vector<CaloCell*> init (IdDictParser* parser, URNG& rng) CHECK( detstore->record (helper, "CaloCell_ID") ); CHECK( detstore->record (schelper, "CaloCell_SuperCell_ID") ); - arena = new SG::Arena ("arena"); - - g_mgr = mgr; - return cells; } @@ -1162,88 +1201,91 @@ void runtests (IdDictParser* parser) { Athena_test::URNG rng; CaloCompactCellTool tool; - std::vector<CaloCell*> cells = init (parser, rng); + ISvcLocator* svcloc = nullptr; + CaloDetDescrManager* mgr = nullptr; + std::vector<CaloCell*> cells = init (parser, rng, svcloc, mgr); + auto arena = std::make_unique<SG::Arena> ("arena"); rng.seed = 10; - test_one (400, CaloCompactCellTool::VERSION_400, cells, tool, rng, false, true); - test_one (400, CaloCompactCellTool::VERSION_400, cells, tool, rng, true, true); - test_one (10000, CaloCompactCellTool::VERSION_400, cells, tool, rng); - test_one (10000, CaloCompactCellTool::VERSION_400, cells, tool, rng, true); + test_one (400, CaloCompactCellTool::VERSION_400, cells, tool, rng, *arena, false, true); + test_one (400, CaloCompactCellTool::VERSION_400, cells, tool, rng, *arena, true, true); + test_one (10000, CaloCompactCellTool::VERSION_400, cells, tool, rng, *arena); + test_one (10000, CaloCompactCellTool::VERSION_400, cells, tool, rng, *arena, true); - test_one (100000, CaloCompactCellTool::VERSION_400, cells, tool, rng); - test_one (100000, CaloCompactCellTool::VERSION_400, cells, tool, rng, true); + test_one (100000, CaloCompactCellTool::VERSION_400, cells, tool, rng, *arena); + test_one (100000, CaloCompactCellTool::VERSION_400, cells, tool, rng, *arena, true); - test_one (cells.size(), CaloCompactCellTool::VERSION_400, cells, tool, rng); + test_one (cells.size(), CaloCompactCellTool::VERSION_400, cells, tool, rng, *arena); rng.seed = 20; - test_one (400, CaloCompactCellTool::VERSION_500, cells, tool, rng, false, true); - test_one (400, CaloCompactCellTool::VERSION_500, cells, tool, rng, true, true); + test_one (400, CaloCompactCellTool::VERSION_500, cells, tool, rng, *arena, false, true); + test_one (400, CaloCompactCellTool::VERSION_500, cells, tool, rng, *arena, true, true); - test_one (10000, CaloCompactCellTool::VERSION_500, cells, tool, rng); - test_one (10000, CaloCompactCellTool::VERSION_500, cells, tool, rng, true); + test_one (10000, CaloCompactCellTool::VERSION_500, cells, tool, rng, *arena); + test_one (10000, CaloCompactCellTool::VERSION_500, cells, tool, rng, *arena, true); - test_one (100000, CaloCompactCellTool::VERSION_500, cells, tool, rng); - test_one (100000, CaloCompactCellTool::VERSION_500, cells, tool, rng, true); + test_one (100000, CaloCompactCellTool::VERSION_500, cells, tool, rng, *arena); + test_one (100000, CaloCompactCellTool::VERSION_500, cells, tool, rng, *arena, true); - test_one (cells.size(), CaloCompactCellTool::VERSION_500, cells, tool, rng); + test_one (cells.size(), CaloCompactCellTool::VERSION_500, cells, tool, rng, *arena); rng.seed = 40; - test_one (400, CaloCompactCellTool::VERSION_501, cells, tool, rng, false); - test_one (400, CaloCompactCellTool::VERSION_501, cells, tool, rng, true); + test_one (400, CaloCompactCellTool::VERSION_501, cells, tool, rng, *arena, false); + test_one (400, CaloCompactCellTool::VERSION_501, cells, tool, rng, *arena, true); - test_one (10000, CaloCompactCellTool::VERSION_501, cells, tool, rng); - test_one (10000, CaloCompactCellTool::VERSION_501, cells, tool, rng, true); + test_one (10000, CaloCompactCellTool::VERSION_501, cells, tool, rng, *arena); + test_one (10000, CaloCompactCellTool::VERSION_501, cells, tool, rng, *arena, true); - test_one (100000, CaloCompactCellTool::VERSION_501, cells, tool, rng); - test_one (100000, CaloCompactCellTool::VERSION_501, cells, tool, rng, true); + test_one (100000, CaloCompactCellTool::VERSION_501, cells, tool, rng, *arena); + test_one (100000, CaloCompactCellTool::VERSION_501, cells, tool, rng, *arena, true); - test_one (cells.size(), CaloCompactCellTool::VERSION_501, cells, tool, rng); + test_one (cells.size(), CaloCompactCellTool::VERSION_501, cells, tool, rng, *arena); // Unordered - test_one (400, CaloCompactCellTool::VERSION_501, cells, tool, rng, false, + test_one (400, CaloCompactCellTool::VERSION_501, cells, tool, rng, *arena, false, true, false); rng.seed = 50; - test_one (400, CaloCompactCellTool::VERSION_502, cells, tool, rng, false); - test_one (400, CaloCompactCellTool::VERSION_502, cells, tool, rng, true); + test_one (400, CaloCompactCellTool::VERSION_502, cells, tool, rng, *arena, false); + test_one (400, CaloCompactCellTool::VERSION_502, cells, tool, rng, *arena, true); - test_one (10000, CaloCompactCellTool::VERSION_502, cells, tool, rng); - test_one (10000, CaloCompactCellTool::VERSION_502, cells, tool, rng, true); + test_one (10000, CaloCompactCellTool::VERSION_502, cells, tool, rng, *arena); + test_one (10000, CaloCompactCellTool::VERSION_502, cells, tool, rng, *arena, true); - test_one (100000, CaloCompactCellTool::VERSION_502, cells, tool, rng); - test_one (100000, CaloCompactCellTool::VERSION_502, cells, tool, rng, true); + test_one (100000, CaloCompactCellTool::VERSION_502, cells, tool, rng, *arena); + test_one (100000, CaloCompactCellTool::VERSION_502, cells, tool, rng, *arena, true); - test_one (cells.size(), CaloCompactCellTool::VERSION_502, cells, tool, rng); + test_one (cells.size(), CaloCompactCellTool::VERSION_502, cells, tool, rng, *arena); rng.seed = 60; - test_one (400, CaloCompactCellTool::VERSION_503, cells, tool, rng, false); - test_one (400, CaloCompactCellTool::VERSION_503, cells, tool, rng, true); + test_one (400, CaloCompactCellTool::VERSION_503, cells, tool, rng, *arena, false); + test_one (400, CaloCompactCellTool::VERSION_503, cells, tool, rng, *arena, true); - test_one (10000, CaloCompactCellTool::VERSION_503, cells, tool, rng); - test_one (10000, CaloCompactCellTool::VERSION_503, cells, tool, rng, true); + test_one (10000, CaloCompactCellTool::VERSION_503, cells, tool, rng, *arena); + test_one (10000, CaloCompactCellTool::VERSION_503, cells, tool, rng, *arena, true); - test_one (100000, CaloCompactCellTool::VERSION_503, cells, tool, rng); - test_one (100000, CaloCompactCellTool::VERSION_503, cells, tool, rng, true); + test_one (100000, CaloCompactCellTool::VERSION_503, cells, tool, rng, *arena); + test_one (100000, CaloCompactCellTool::VERSION_503, cells, tool, rng, *arena, true); - test_one (cells.size(), CaloCompactCellTool::VERSION_503, cells, tool, rng); + test_one (cells.size(), CaloCompactCellTool::VERSION_503, cells, tool, rng, *arena); rng.seed = 70; - test_one (400, CaloCompactCellTool::VERSION_504, cells, tool, rng, false); - test_one (400, CaloCompactCellTool::VERSION_504, cells, tool, rng, true); + test_one (400, CaloCompactCellTool::VERSION_504, cells, tool, rng, *arena, false); + test_one (400, CaloCompactCellTool::VERSION_504, cells, tool, rng, *arena, true); - test_one (10000, CaloCompactCellTool::VERSION_504, cells, tool, rng); - test_one (10000, CaloCompactCellTool::VERSION_504, cells, tool, rng, true); + test_one (10000, CaloCompactCellTool::VERSION_504, cells, tool, rng, *arena); + test_one (10000, CaloCompactCellTool::VERSION_504, cells, tool, rng, *arena, true); - test_one (100000, CaloCompactCellTool::VERSION_504, cells, tool, rng); - test_one (100000, CaloCompactCellTool::VERSION_504, cells, tool, rng, true); + test_one (100000, CaloCompactCellTool::VERSION_504, cells, tool, rng, *arena); + test_one (100000, CaloCompactCellTool::VERSION_504, cells, tool, rng, *arena, true); - test_one (cells.size(), CaloCompactCellTool::VERSION_504, cells, tool, rng); + test_one (cells.size(), CaloCompactCellTool::VERSION_504, cells, tool, rng, *arena); rng.seed = 80; - test_supercells (CaloCompactCellTool::VERSION_504, cells, tool); + test_supercells (CaloCompactCellTool::VERSION_504, cells, tool, *arena, svcloc); rng.seed = 30; - test_errs (cells, tool, rng); + test_errs (cells, tool, rng, *arena, mgr); // Test thinning. rng.seed = 100; @@ -1253,7 +1295,7 @@ void runtests (IdDictParser* parser) if ((i%3) == 0) dec.thin (i); } test_one (cells.size(), CaloCompactCellTool::VERSION_501, cells, tool, rng, - false, false, true, &dec); + *arena, false, false, true, &dec); } @@ -1267,7 +1309,9 @@ void timetests (IdDictParser* parser, int nrep) { Athena_test::URNG rng; CaloCompactCellTool tool; - std::vector<CaloCell*> cells = init (parser, rng); + ISvcLocator* svcloc = nullptr; + CaloDetDescrManager* mgr = nullptr; + std::vector<CaloCell*> cells = init (parser, rng, svcloc, mgr); CaloCellContainer* cont = fill_cells (10000, cells, true, true, rng); rusage ru0, ru1, ru2, ru3; @@ -1278,6 +1322,7 @@ void timetests (IdDictParser* parser, int nrep) assert (tool.getPersistent (*cont, &ccc, nullptr)); getrusage (RUSAGE_SELF, &ru1); + auto arena = std::make_unique<SG::Arena> ("arena"); SG::Arena::Push push (*arena); CaloCellContainer* cont2 = new CaloCellContainer (SG::VIEW_ELEMENTS); getrusage (RUSAGE_SELF, &ru2); diff --git a/Calorimeter/CaloDetDescr/src/CaloDescriptors.cxx b/Calorimeter/CaloDetDescr/src/CaloDescriptors.cxx index 8acab38d834b097c16761301f6f6096e5d7ebd08..e70ddf73cd13367358dc71065f047c129b39ce9a 100755 --- a/Calorimeter/CaloDetDescr/src/CaloDescriptors.cxx +++ b/Calorimeter/CaloDetDescr/src/CaloDescriptors.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "CaloDetDescr/CaloDescriptors.h" @@ -83,8 +83,8 @@ void EMBDescriptor::init_description() */ // -- m_transform - const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransformAmg(); - const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransformAmg(); + const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransform(); + const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransform(); m_transform = xfAbs*xfDef.inverse(); } @@ -156,7 +156,7 @@ void EMECDescriptor::init_description() m_calo_r_max = m_calo_z_min/sinh(eta_min); */ // -- m_transform - const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransformAmg(); + const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransform(); // we need to apply the famous ZShift. Amg::Transform3D xfNominal; if(m_region->getEndcapIndex()==0) @@ -164,7 +164,7 @@ void EMECDescriptor::init_description() else xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,-m_region->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Positive EMEC - const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransformAmg(); + const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransform(); m_transform = xfAbs*xfNominal.inverse(); } @@ -237,7 +237,7 @@ void HECDescriptor::init_description() */ // -- m_transform - const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransformAmg(); + const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransform(); // we need to apply the famous ZShift Amg::Transform3D xfNominal; if(m_region->getEndcapIndex()==0) @@ -245,7 +245,7 @@ void HECDescriptor::init_description() else xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,-m_region->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Positive HEC - const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransformAmg(); + const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransform(); m_transform = xfAbs*xfNominal.inverse(); } @@ -273,7 +273,7 @@ FCALDescriptor::~FCALDescriptor() void FCALDescriptor::init_description() { // -- m_transform - const Amg::Transform3D &xfDef = m_module->getDefAbsoluteTransformAmg(); + const Amg::Transform3D &xfDef = m_module->getDefAbsoluteTransform(); // we need to apply the famous ZShift. Amg::Transform3D xfNominal; if(m_module->getEndcapIndex()==FCALModule::POS) @@ -281,7 +281,7 @@ void FCALDescriptor::init_description() else xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,-m_module->getProjectivityDisplacement()*Gaudi::Units::cm))*xfDef; // Positive FCAL - const Amg::Transform3D &xfAbs = m_module->getAbsoluteTransformAmg(); + const Amg::Transform3D &xfAbs = m_module->getAbsoluteTransform(); m_transform = xfAbs*xfNominal.inverse(); } diff --git a/Calorimeter/CaloDetDescr/src/CaloDetectorElements.cxx b/Calorimeter/CaloDetDescr/src/CaloDetectorElements.cxx index f4f809388f888587348cf1daf6e51f5aa96f8786..0d3a50d7614240a0a17e92c40f6269dc43a6a81b 100755 --- a/Calorimeter/CaloDetDescr/src/CaloDetectorElements.cxx +++ b/Calorimeter/CaloDetDescr/src/CaloDetectorElements.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "CaloDetDescr/CaloDetectorElements.h" @@ -81,8 +81,8 @@ void EMBDetectorElement::init_description(const CaloElementPositionShift* posShi const double phi_loc = (m_cell->getPhiLocalLower() + m_cell->getPhiLocalUpper())/2.; double x_loc, y_loc, z_loc, r_loc; - const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransformAmg(); - const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransformAmg(); + const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransform(); + const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransform(); z_loc = (m_cell->getZMaxLocal(EMBCell::CENTER) + m_cell->getZMinLocal(EMBCell::CENTER))/2.; r_loc = m_cell->getRLocal(EMBCell::CENTER); @@ -192,7 +192,7 @@ void EMECDetectorElement::init_description(bool isTestBeam, const CaloElementPos m_phi_raw = static_cast<float> ((m_cell->getPhiLocalLower() + m_cell->getPhiLocalUpper())/2.); double x_loc, y_loc, z_loc, r_loc; - const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransformAmg(); + const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransform(); // we need to apply the famous ZShift. Amg::Transform3D xfNominal; @@ -205,7 +205,7 @@ void EMECDetectorElement::init_description(bool isTestBeam, const CaloElementPos xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0.,3689.5*Gaudi::Units::mm)); } - const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransformAmg(); + const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransform(); z_loc = m_cell->getZLocal(EMECCell::CENTER); r_loc = (m_cell->getRMinLocal(EMECCell::CENTER) + m_cell->getRMaxLocal(EMECCell::CENTER))/2.; @@ -329,7 +329,7 @@ void HECDetectorElement::init_description(bool isTestBeam, const CaloElementPosi z_loc = m_cell->getZLocal(HECCell::CENTER); - const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransformAmg(); + const Amg::Transform3D &xfDef = m_region->getDefAbsoluteTransform(); // we need to apply the famous ZShift. Amg::Transform3D xfNominal; @@ -342,7 +342,7 @@ void HECDetectorElement::init_description(bool isTestBeam, const CaloElementPosi xfNominal = Amg::Translation3D(Amg::Vector3D(0.,0., 4277.*Gaudi::Units::mm)); } - const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransformAmg(); + const Amg::Transform3D &xfAbs = m_region->getAbsoluteTransform(); x_loc = r_loc*cos(m_phi_raw); y_loc = r_loc*sin(m_phi_raw); @@ -462,7 +462,7 @@ void FCALDetectorElement::init_description(bool isTestBeam, const CaloElementPos // double z_loc = -m_module->getFullDepthZ(*m_tile)/2.; double z_loc = 0.; - const Amg::Transform3D &xfDef = m_module->getDefAbsoluteTransformAmg(); + const Amg::Transform3D &xfDef = m_module->getDefAbsoluteTransform(); // we need to apply the famous ZShift. Amg::Transform3D xfNominal; if(m_module->getEndcapIndex()==FCALModule::POS) @@ -481,7 +481,7 @@ void FCALDetectorElement::init_description(bool isTestBeam, const CaloElementPos } } - const Amg::Transform3D &xfAbs = m_module->getAbsoluteTransformAmg(); + const Amg::Transform3D &xfAbs = m_module->getAbsoluteTransform(); Amg::Vector3D globalDefCoords = xfNominal*Amg::Vector3D(x_loc,y_loc,z_loc); Amg::Vector3D globalAbsCoords = (posShift!=nullptr ? diff --git a/Calorimeter/CaloDetDescrUtils/CMakeLists.txt b/Calorimeter/CaloDetDescrUtils/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..0a31db4c47c694f9b05c72255121db263bd0cc9f --- /dev/null +++ b/Calorimeter/CaloDetDescrUtils/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +# Declare the package name. +atlas_subdir( CaloDetDescrUtils ) + +# Component(s) in the package. +atlas_add_library( CaloDetDescrUtils + src/*.cxx + PUBLIC_HEADERS CaloDetDescrUtils + PRIVATE_LINK_LIBRARIES GaudiKernel CaloIdentifier GeoModelUtilities LArReadoutGeometry TileDetDescr StoreGateLib RDBAccessSvcLib ) diff --git a/Calorimeter/CaloDetDescrUtils/CaloDetDescrUtils/CaloDetDescrBuilder.h b/Calorimeter/CaloDetDescrUtils/CaloDetDescrUtils/CaloDetDescrBuilder.h new file mode 100644 index 0000000000000000000000000000000000000000..3b6fc6e0c6ac5d847fdac2ca16c7888814066c69 --- /dev/null +++ b/Calorimeter/CaloDetDescrUtils/CaloDetDescrUtils/CaloDetDescrBuilder.h @@ -0,0 +1,23 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CALODETDESCRUTILS_CALODETDESCRBUILDER_H +#define CALODETDESCRUTILS_CALODETDESCRBUILDER_H + +#include <memory> + +class CaloDetDescrManager; +class ISvcLocator; +class IMessageSvc; +class GeoAlignmentStore; +namespace CaloRec { + class CaloCellPositionShift; +} + +std::unique_ptr<CaloDetDescrManager> buildCaloDetDescr(ISvcLocator* svcLocator + , IMessageSvc* msgSvc + , const GeoAlignmentStore* geoAlignStore + , const CaloRec::CaloCellPositionShift* cellPosShift); + +#endif diff --git a/Calorimeter/CaloDetDescrUtils/src/CaloCellVolumes.cxx b/Calorimeter/CaloDetDescrUtils/src/CaloCellVolumes.cxx new file mode 100755 index 0000000000000000000000000000000000000000..88eee03c31421be7ec6e92ee7732b7efa48b6874 --- /dev/null +++ b/Calorimeter/CaloDetDescrUtils/src/CaloCellVolumes.cxx @@ -0,0 +1,188 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloCellVolumes.h" + +#include "CaloIdentifier/CaloCell_ID.h" + +#include "GaudiKernel/ISvcLocator.h" +#include "GeoModelInterfaces/IGeoModelSvc.h" +#include "GeoModelInterfaces/IGeoDbTagSvc.h" +#include "GeoModelUtilities/DecodeVersionKey.h" + +#include "RDBAccessSvc/IRDBAccessSvc.h" +#include "RDBAccessSvc/IRDBRecordset.h" +#include "RDBAccessSvc/IRDBRecord.h" + +#include <iostream> +#include <iomanip> +#include <algorithm> + +struct CaloCellVolume_Compare +{ + bool operator() (const CaloCellVolume& a, const CaloCellVolume& b) + { return a.channelID < b.channelID; } + bool operator() (const CaloCellVolume& a, Identifier b) + { return a.channelID < b; } +}; + + +CaloCellVolumes::CaloCellVolumes(ISvcLocator* svcLocator + , const CaloCell_ID* calocell_id) + : m_calocell_id(calocell_id) +{ + // Retrieve input parameters from the database + IGeoModelSvc* geoModel{nullptr}; + IGeoDbTagSvc* geoDbTagSvc{nullptr}; + IRDBAccessSvc* rdbAccess{nullptr}; + + if(svcLocator->service("GeoModelSvc",geoModel) == StatusCode::FAILURE) + throw std::runtime_error("CellVolumes error: cannot access GeoModelSvc"); + + if(svcLocator->service("GeoDbTagSvc",geoDbTagSvc) == StatusCode::FAILURE) + throw std::runtime_error("CellVolumes error: cannot access GeoDbTagSvc"); + + if(svcLocator->service(geoDbTagSvc->getParamSvcName(),rdbAccess) == StatusCode::FAILURE) + throw std::runtime_error("CellVolumes error: cannot access RDBAccessSvc"); + + std::string larKey, larNode; + if(geoDbTagSvc->getSqliteReader()==nullptr) { + DecodeVersionKey detectorKey = DecodeVersionKey(geoModel,"LAr"); + larKey = detectorKey.tag(); + larNode = detectorKey.node(); + } + + IRDBRecordset_ptr cellVolRec = rdbAccess->getRecordsetPtr("LArCellVolumes",larKey,larNode); + if(cellVolRec->size()==0) { + cellVolRec = rdbAccess->getRecordsetPtr("LArCellVolumes","LArCellVolumes-00"); + if(cellVolRec->size()==0) { + throw std::runtime_error("CaloCellVolumes error: 0 size of LArCellVolumes recordset"); + } + } + + // get fcal tube spacings + IRDBRecordset_ptr fcalModRec = rdbAccess->getRecordsetPtr("FCalMod",larKey,larNode); + if(fcalModRec->size()==0) { + fcalModRec = rdbAccess->getRecordsetPtr("FCalMod","FCalMod-00"); + if(fcalModRec->size()==0) { + throw std::runtime_error("CaloCellVolumes error: 0 size of FCalMod recordset"); + } + } + + for(const IRDBRecord* rec : *fcalModRec) { + m_fcalTubeSpacings[rec->getInt("FCALSAMPLING")] = rec->getDouble("TUBESPACING"); + } + + m_geometryLayout = "Atlas"; + if(geoDbTagSvc->getSqliteReader()==nullptr) { + std::string LArTag = rdbAccess->getChildTag("LAr",larKey,larNode); + if(LArTag.find("H8")!=std::string::npos) { + m_geometryLayout = "H8"; + } + else if(LArTag.find("H6")!=std::string::npos) { + m_geometryLayout = "H6"; + } + else if(LArTag.find("G3")!=std::string::npos) { + m_geometryLayout = "G3"; + } + } + + // Initialize m_cellVolumes vector + for(const IRDBRecord* rec : *cellVolRec) { + + int subcalo = rec->getInt("SUBCALO"); + int posneg = rec->getInt("POSNEG"); + int sampling = rec->getInt("SAMPLING"); + int region = rec->getInt("REGION"); + int eta = rec->getInt("ETA"); + int phi = rec->getInt("PHI"); + + Identifier channelID; + if(m_geometryLayout != "H6" || subcalo == CaloCell_ID::LARFCAL) { + channelID = m_calocell_id->cell_id (subcalo, posneg, sampling, region, eta, phi); + } + else { + Identifier reg_id = m_calocell_id->region_id(subcalo, posneg, sampling, region); + int phimin = m_calocell_id->phi_min(reg_id); + channelID = m_calocell_id->cell_id (subcalo, posneg, sampling, region, eta, phimin); + } + + CaloCellVolume cellVol; + cellVol.channelID = channelID; + cellVol.volume = rec->getDouble("VOLUME"); + m_cellVolumes.push_back(cellVol); + } + + if (m_cellVolumes.size()==0) { + throw std::runtime_error("CaloCellVolumes error: 0 volumes have been built!"); + } + + std::sort (m_cellVolumes.begin(), m_cellVolumes.end(), + CaloCellVolume_Compare()); +} + +CaloCellVolumes::~CaloCellVolumes() +{ + m_cellVolumes.clear(); +} + +double CaloCellVolumes::CellVolume(Identifier cell_id) +{ + // compute Identifier of Cell with same eta, but phi=0 and pos side + // (except for fcal) + Identifier volId; + + if (!m_calocell_id->is_fcal(cell_id)) { + int subCalo = m_calocell_id->sub_calo(cell_id); + int posneg = std::abs (m_calocell_id->pos_neg(cell_id)); + int sampling = m_calocell_id->sampling(cell_id); + int region = m_calocell_id->region(cell_id); + int eta = m_calocell_id->eta(cell_id); + + if(m_geometryLayout != "H6") { + volId = m_calocell_id->cell_id(subCalo, posneg, sampling, region, eta, 0); + } + else { + Identifier reg_id = m_calocell_id->region_id(subCalo, posneg, sampling, region); + int phimin = m_calocell_id->phi_min(reg_id); + volId = m_calocell_id->cell_id(subCalo, posneg, sampling, region, eta, phimin); + } + } + else { + volId = cell_id; + } + + CaloCellVolumeVector::const_iterator it = + std::lower_bound (m_cellVolumes.begin(), m_cellVolumes.end(), volId, + CaloCellVolume_Compare()); + if (it != m_cellVolumes.end() && it->channelID == volId) return it->volume; + + return 0.; +} + +void CaloCellVolumes::print () +{ + if (m_cellVolumes.size()==0) { + std::cerr << "CaloCellVolumes::print(). No cell volumes..." << std::endl; + } + else { + std::cout << "CaloCellVolumes::print(). Number of volumes found: " + << m_cellVolumes.size() << std::endl; + + for(const CaloCellVolume& vol : m_cellVolumes) { + m_calocell_id->print( (Identifier) vol.channelID ); + std::cout << m_calocell_id->show_to_string( (Identifier) vol.channelID ); + std::cout << " ==> vol= " << vol.volume << " mm3" << std::endl; + } + } +} + +double CaloCellVolumes::getFcalTubeSpacing(int sampling) +{ + TubeSpacingMap::const_iterator it = m_fcalTubeSpacings.find(sampling); + if(it==m_fcalTubeSpacings.end()) + throw std::runtime_error("CaloCellVolumes::getFcalTubeSpacing error: wrong sampling provided"); + + return (*it).second; +} diff --git a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloCellVolumes.h b/Calorimeter/CaloDetDescrUtils/src/CaloCellVolumes.h similarity index 59% rename from Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloCellVolumes.h rename to Calorimeter/CaloDetDescrUtils/src/CaloCellVolumes.h index a21145ebcd4caa8390c6d3662c1d0cf8d6e74c32..747963b672c75dffde24291ccbbba9c75b514805 100755 --- a/Calorimeter/CaloCnv/CaloDetMgrDetDescrCnv/src/CaloCellVolumes.h +++ b/Calorimeter/CaloDetDescrUtils/src/CaloCellVolumes.h @@ -1,23 +1,18 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -#ifndef CALOCELLVOLUMES_H -#define CALOCELLVOLUMES_H +#ifndef CALODETDESCRUTILS_CALOCELLVOLUMES_H +#define CALODETDESCRUTILS_CALOCELLVOLUMES_H +#include "Identifier/Identifier.h" #include <vector> #include <string> #include <map> -#include "Identifier/Identifier.h" class CaloCell_ID; class ISvcLocator; -/** This class is a modification of LArDetDescr/LArCellVolumes. - Presently it provides volumes for LAr cells only. - -*/ - struct CaloCellVolume { Identifier channelID; @@ -28,12 +23,10 @@ typedef std::vector<CaloCellVolume> CaloCellVolumeVector; class CaloCellVolumes { -public: - - // Constructors: + public: CaloCellVolumes(ISvcLocator* svcLocator, const CaloCell_ID* calocell_id); - virtual ~CaloCellVolumes(); + ~CaloCellVolumes(); double CellVolume(Identifier cell_id); inline std::string layout() { return m_geometryLayout; } @@ -41,18 +34,20 @@ public: // For FCAL cell volumes which are calculated on the fly double getFcalTubeSpacing(int sampling); - virtual void print(); + void print(); -private: - const CaloCell_ID* m_calocell_id ; - ISvcLocator* m_svcLocator; + private: + const CaloCell_ID* m_calocell_id{nullptr}; CaloCellVolumeVector m_cellVolumes; std::string m_geometryLayout; // map fcal samplings on tube spacings - typedef std::map<int, double, std::less<int> > TubeSpacingMap; - TubeSpacingMap m_fcalTubeSpacings; + typedef std::map<int, double> TubeSpacingMap; + TubeSpacingMap m_fcalTubeSpacings{ + {1, 7.5} + , {2, 8.179} + , {3, 9.} + }; }; - #endif diff --git a/Calorimeter/CaloDetDescrUtils/src/CaloDetDescrBuilder.cxx b/Calorimeter/CaloDetDescrUtils/src/CaloDetDescrBuilder.cxx new file mode 100644 index 0000000000000000000000000000000000000000..ea36850618ae59f5fec4b06237d6645cb1632173 --- /dev/null +++ b/Calorimeter/CaloDetDescrUtils/src/CaloDetDescrBuilder.cxx @@ -0,0 +1,703 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CaloDetDescrUtils/CaloDetDescrBuilder.h" +#include "CaloCellVolumes.h" + +#include "CaloIdentifier/CaloCell_ID.h" +#include "CaloIdentifier/CaloIdManager.h" + +#include "CaloDetDescr/CaloDetDescrManager.h" +#include "CaloDetDescr/CaloDetectorElements.h" +#include "CaloDetDescr/CaloDescriptors.h" +#include "CaloDetDescr/CaloDetDescrElementContainer.h" + +#include "LArReadoutGeometry/LArDetectorManager.h" + +#include "LArReadoutGeometry/EMBCell.h" +#include "LArReadoutGeometry/EMBDetectorRegion.h" +#include "LArReadoutGeometry/EMBDetDescr.h" +#include "LArReadoutGeometry/EMBDetectorManager.h" + +#include "LArReadoutGeometry/EMECCell.h" +#include "LArReadoutGeometry/EMECDetectorRegion.h" +#include "LArReadoutGeometry/EMECDetDescr.h" +#include "LArReadoutGeometry/EMECDetectorManager.h" + +#include "LArReadoutGeometry/HECCell.h" +#include "LArReadoutGeometry/HECDetectorRegion.h" +#include "LArReadoutGeometry/HECDetDescr.h" +#include "LArReadoutGeometry/HECDetectorManager.h" + +#include "LArReadoutGeometry/FCALTile.h" +#include "LArReadoutGeometry/FCALModule.h" +#include "LArReadoutGeometry/FCALDetectorManager.h" + +#include "TileDetDescr/TileDetDescrManager.h" + +#include "GaudiKernel/ISvcLocator.h" +#include "GaudiKernel/MsgStream.h" +#include "GaudiKernel/IMessageSvc.h" +#include "StoreGate/StoreGateSvc.h" + +std::unique_ptr<CaloDetDescrManager> buildCaloDetDescr(ISvcLocator* svcLocator + , IMessageSvc* msgSvc + , const GeoAlignmentStore* /*geoAlignStore*/ + , const CaloRec::CaloCellPositionShift* /*cellPosShift*/) +{ + MsgStream log(msgSvc, "buildCaloDetDescr"); + + // --- --- Get CaloCell_ID and CaloIdManager helpers --- --- + StoreGateSvc* detStore{nullptr}; + if(svcLocator->service("DetectorStore", detStore)!=StatusCode::SUCCESS) + throw std::runtime_error("buildCaloDetDescr failed to acquire a pointer to DetectorStore"); + + const CaloCell_ID* cell_id{nullptr}; + if(detStore->retrieve(cell_id, "CaloCell_ID")!=StatusCode::SUCCESS) + throw std::runtime_error("buildCaloDetDescr failed to acquire a pointer to CaloCell_ID helper"); + log << MSG::DEBUG << "Found the CaloCell_ID helper. " << endmsg; + + const CaloIdManager* caloId_mgr{nullptr}; + if(detStore->retrieve(caloId_mgr, "CaloIdManager")!=StatusCode::SUCCESS) + throw std::runtime_error("buildCaloDetDescr failed to acquire a pointer to CaloIdManager helper"); + log << MSG::DEBUG << "Found the CaloIdManager helper. " << endmsg; + // --- --- Get CaloCell_ID and CaloIdManager helpers --- --- + + // --- --- Create CaloDetDescrManager object --- --- + std::unique_ptr<CaloDetDescrManager> caloMgr = std::make_unique<CaloDetDescrManager>(); + + // set helpers + caloMgr->set_helper(cell_id); + caloMgr->set_helper(caloId_mgr); + + caloMgr->initialize(); + // --- --- Create CaloDetDescrManager object --- --- + + // Cell volumes + CaloCellVolumes cellVol(svcLocator, cell_id); + + // geometry layout + caloMgr->set_lar_geometry(cellVol.layout()); + + //unsigned int idhash; + IdentifierHash min; + IdentifierHash max; + + const LArEM_ID* em_id = caloId_mgr->getEM_ID(); + const LArHEC_ID* hec_id = caloId_mgr->getHEC_ID(); + const LArFCAL_ID* fcal_id = caloId_mgr->getFCAL_ID(); + + // Create Calo Detector Elements + + // Check whether we are working with Test Beam geometry + bool isTestBeam = false; + const LArDetectorManager* larMgr{nullptr}; + StatusCode status = detStore->retrieve(larMgr); + if(status.isFailure()) { + log << MSG::WARNING << "Could not get LArDetectorManager. Assuming TestBeam=false" << endmsg; + } + else { + isTestBeam = larMgr->isTestBeam(); + } + + // **************************************************************** + // ** --- --- EMB --- --- ** + // **************************************************************** + + // --- Retrieve Emec Detector Manager + const EMBDetectorManager* embManager{nullptr}; + status = detStore->retrieve(embManager); + if(status.isFailure()) { + log << MSG::WARNING << "Could not get the EMBDetectorManager. No Calo Elements will be built for EMB" << endmsg; + } + else { + // --- --- Iterate over EMB regions and cells --- --- + EMBDetectorManager::DetectorRegionConstIterator embregIt; + + for (embregIt=embManager->beginDetectorRegion(); embregIt!=embManager->endDetectorRegion(); embregIt++) { + const EMBDetectorRegion *embRegion = *embregIt; + + // *** *** Create descriptor for this region *** *** + // Region identifier. + // Do some mapping between LArReadoutGeometry and CaloID + + int barrel_ec = 0; + switch(embRegion->getEndcapIndex()) { + case EMBDetectorRegion::NEG: + barrel_ec = -1; // negative side + break; + case EMBDetectorRegion::POS: + barrel_ec = 1; // positive side + break; + default: + throw std::runtime_error("buildCaloDetDescr Wrong Side Index for EMB region " + std::to_string(embRegion->getEndcapIndex())); + } + + Identifier regId = em_id->region_id(barrel_ec + , embRegion->getSamplingIndex() + , embRegion->getRegionIndex()); + + EMBDescriptor* embDescr = new EMBDescriptor(regId,(AtlasDetectorID *)cell_id,cell_id,embRegion); + caloMgr->add(embDescr); + + double phi_min = 0.; + double z_min = 10000.; + double z_max = -10000.; + double r_min = 10000.; + double r_max = -10000.; + + double reg_min = 10000.; + double reg_max = -10000.; + + std::vector<double> depth_in; + std::vector<double> depth_out; + + // *** *** Create descriptor for this region *** *** + + // + // *** *** *** Iterate over cells *** *** *** + // + for (unsigned int iPhi=embRegion->beginPhiIndex();iPhi<embRegion->endPhiIndex();iPhi++) { + for (unsigned int iEta=embRegion->beginEtaIndex();iEta<embRegion->endEtaIndex();iEta++) { + EMBCellConstLink cellPtr = embRegion->getEMBCell(iEta,iPhi); + + // build hash identifier for this cell + Identifier chanId = em_id->channel_id(barrel_ec + , cellPtr->getSamplingIndex() + , cellPtr->getRegionIndex() + , iEta + , iPhi); + + // Create the element and store it + EMBDetectorElement* embElement = new EMBDetectorElement(em_id->channel_hash(chanId) + , 0 + , 0 + , embDescr + , cellPtr + , embRegion + , isTestBeam); + if(iPhi==embRegion->beginPhiIndex()) { + phi_min = embElement->phi() - 0.5*embElement->dphi(); + } + + // cell volume + embElement->set_volume(cellVol.CellVolume(chanId)); + + caloMgr->add(embElement); + + if(r_min > embElement->r()-0.5*embElement->dr()) + r_min = embElement->r()-0.5*embElement->dr(); + if(r_max < embElement->r()+0.5*embElement->dr()) + r_max = embElement->r()+0.5*embElement->dr(); + + if(z_min > std::abs(embElement->z_raw())-0.5*embElement->dz()) + z_min = std::abs(embElement->z_raw())-0.5*embElement->dz(); + if(z_max < std::abs(embElement->z_raw())+0.5*embElement->dz()) + z_max = std::abs(embElement->z_raw())+0.5*embElement->dz(); + + if(reg_min > embElement->eta()-0.5*embElement->deta()) + reg_min = embElement->eta()-0.5*embElement->deta(); + if(reg_max < embElement->eta()+0.5*embElement->deta()) + reg_max = embElement->eta()+0.5*embElement->deta(); + + // deal with depth + if(iPhi==embRegion->beginPhiIndex()) { + depth_in.push_back(cellPtr->getRLocal(EMBCell::FRONT)); + depth_out.push_back(cellPtr->getRLocal(EMBCell::BACK)); + } + } // Eta loop + } // Phi loop + // *** *** *** Iterate over cells *** *** *** + + double eta_min = (embRegion->getSamplingIndex()==1 && embRegion->getRegionIndex()==0) + ? embRegion->getDescriptor()->getEtaBinning().getStart() - embRegion->getDescriptor()->getEtaBinning().getDelta() + : embRegion->getDescriptor()->getEtaBinning().getStart(); + + double eta_max = (embRegion->getDescriptor()->getEtaBinning()).getEnd(); + double phi_max = phi_min + std::abs((embRegion->getDescriptor()->getPhiBinning()).getDelta())*embDescr->n_phi(); + + // 'ideal' values + embDescr->setCaloEtaMin(eta_min); + embDescr->setCaloEtaMax(eta_max); + embDescr->setCaloPhiMin(phi_min); + embDescr->setCaloPhiMax(phi_max); + embDescr->setCaloZMin(z_min); + embDescr->setCaloZMax(z_max); + embDescr->setCaloRMin(r_min); + embDescr->setCaloRMax(r_max); + + // depths + embDescr->set_n_calo_depth(depth_in.size()); + embDescr->set_depth_in(depth_in); + embDescr->set_depth_out(depth_out); + + // 'alignable' values + embDescr->setLArRegMin(reg_min); + embDescr->setLArRegMax(reg_max); + embDescr->setLArEtaMin(eta_min); + embDescr->setLArPhiMin(phi_min); + + }// Region loop + } // if EMB manager has been retrieved + + // **************************************************************** + // ** --- --- EMB --- --- ** + // **************************************************************** + + // **************************************************************** + // ** --- --- EMEC --- --- ** + // **************************************************************** + + // --- Retrieve Emec Detector Manager + const EMECDetectorManager* emecManager{nullptr}; + status = detStore->retrieve(emecManager); + if(status.isFailure()) { + log << MSG::WARNING << "Could not get the EMECDetectorManager. No Calo Elements will be built for EMEC" << endmsg; + } + else { + // --- --- Iterate over EMEC regions and cells --- --- + EMECDetectorManager::DetectorRegionConstIterator emecregIt; + + for (emecregIt=emecManager->beginDetectorRegion(); emecregIt!=emecManager->endDetectorRegion(); emecregIt++) { + const EMECDetectorRegion *emecRegion = *emecregIt; + + // *** *** Create descriptor for this region *** *** + // Region identifier. + // Do some mapping between LArReadoutGeometry and CaloID + EMECDetectorRegion::DetectorSide endcapInd = emecRegion->getEndcapIndex(); + + unsigned int radialInd = emecRegion->getRadialIndex(); + int barrel_ec; + + switch(endcapInd) { + case EMECDetectorRegion::NEG: + barrel_ec = -1; // negative side + break; + case EMECDetectorRegion::POS: + barrel_ec = 1; // positive side + break; + default: + throw std::runtime_error("Wrong Endcap Index for EMEC region " + std::to_string(endcapInd)); + }// switch(endcapInd) + + switch(radialInd) { + case 0: + barrel_ec *= 2; // outer wheel + break; + case 1: + barrel_ec *= 3; // inner wheel + break; + default: + throw std::runtime_error("Wrong Radial Index for EMEC region " + std::to_string(radialInd)); + }// switch(radialInd) + + Identifier regId = em_id->region_id(barrel_ec + , emecRegion->getSamplingIndex() + , emecRegion->getRegionIndex()); + + EMECDescriptor* emecDescr = new EMECDescriptor(regId,(AtlasDetectorID *)cell_id,cell_id,emecRegion); + caloMgr->add(emecDescr); + + double phi_min = 0.; + double z_min = 10000.; + double z_max = -10000.; + double r_min = 10000.; + double r_max = -10000.; + + double reg_min = 10000.; + double reg_max = -10000.; + + std::vector<double> depth_in; + std::vector<double> depth_out; + // *** *** Create descriptor for this region *** *** + + // + // *** *** *** Iterate over cells *** *** *** + // + for (unsigned int iPhi=emecRegion->beginPhiIndex();iPhi<emecRegion->endPhiIndex();iPhi++) { + for (unsigned int iEta=emecRegion->beginEtaIndex();iEta<emecRegion->endEtaIndex();iEta++) { + EMECCellConstLink cellPtr = emecRegion->getEMECCell(iEta,iPhi); + + Identifier chanId = em_id->channel_id(barrel_ec + , cellPtr->getSamplingIndex() + , cellPtr->getRegionIndex() + , iEta + , iPhi); + + // Create the element and store it + EMECDetectorElement* emecElement = new EMECDetectorElement(em_id->channel_hash(chanId) + , 0 + , 0 + , emecDescr + , cellPtr + , emecRegion + , isTestBeam); + if(iPhi==emecRegion->beginPhiIndex()) { + phi_min = emecElement->phi() - 0.5*emecElement->dphi(); + } + + // cell volume + emecElement->set_volume(cellVol.CellVolume(chanId)); + caloMgr->add(emecElement); + + if(r_min > emecElement->r()-0.5*emecElement->dr()) + r_min = emecElement->r()-0.5*emecElement->dr(); + if(r_max < emecElement->r()+0.5*emecElement->dr()) + r_max = emecElement->r()+0.5*emecElement->dr(); + + if(z_min > std::abs(emecElement->z_raw())-0.5*emecElement->dz()) + z_min = std::abs(emecElement->z_raw())-0.5*emecElement->dz(); + if(z_max < std::abs(emecElement->z_raw())+0.5*emecElement->dz()) + z_max = std::abs(emecElement->z_raw())+0.5*emecElement->dz(); + + if(reg_min > emecElement->eta()-0.5*emecElement->deta()) + reg_min = emecElement->eta()-0.5*emecElement->deta(); + if(reg_max < emecElement->eta()+0.5*emecElement->deta()) + reg_max = emecElement->eta()+0.5*emecElement->deta(); + + // depths + if(iPhi==emecRegion->beginPhiIndex()) { + depth_in.push_back(std::abs(emecElement->z_raw())-emecElement->dz()); + depth_out.push_back(std::abs(emecElement->z_raw())+emecElement->dz()); + } + } // Eta loop + } // Phi loop + // *** *** *** Iterate over cells *** *** *** + + double eta_min = emecRegion->getDescriptor()->getEtaBinning().getStart(); + double eta_max = emecRegion->getDescriptor()->getEtaBinning().getEnd(); + double phi_max = phi_min + std::abs(emecRegion->getDescriptor()->getPhiBinning().getDelta())*emecDescr->n_phi(); + + // 'ideal' values + emecDescr->setCaloEtaMin(eta_min); + emecDescr->setCaloEtaMax(eta_max); + emecDescr->setCaloPhiMin(phi_min); + emecDescr->setCaloPhiMax(phi_max); + emecDescr->setCaloZMin(z_min); + emecDescr->setCaloZMax(z_max); + emecDescr->setCaloRMin(r_min); + emecDescr->setCaloRMax(r_max); + + // depths + emecDescr->set_n_calo_depth(depth_in.size()); + emecDescr->set_depth_in(depth_in); + emecDescr->set_depth_out(depth_out); + + // 'alignable' values + emecDescr->setLArRegMin(reg_min); + emecDescr->setLArRegMax(reg_max); + emecDescr->setLArEtaMin(eta_min); + emecDescr->setLArPhiMin(phi_min); + }// Region loop + }// if EMEC manager has been retrieved + + // **************************************************************** + // ** --- --- EMEC --- --- ** + // **************************************************************** + + + // **************************************************************** + // ** --- --- HEC --- --- ** + // **************************************************************** + + // --- Retrieve Hec Detector Manager + const HECDetectorManager* hecManager{nullptr}; + status = detStore->retrieve(hecManager); + if(status.isFailure()) { + log << MSG::WARNING << "Could not get the HECDetectorManager. No Calo Elements will be built for HEC" << endmsg; + } + else { + // --- --- Iterate over HEC regions and cells --- --- + HECDetectorManager::DetectorRegionConstIterator hecregIt; + + for (hecregIt=hecManager->beginDetectorRegion(); hecregIt!=hecManager->endDetectorRegion(); hecregIt++) { + const HECDetectorRegion *hecregion = *hecregIt; + + // *** *** Create descriptor for this region *** *** + // Region identifier. + // Do some mapping between LArReadoutGeometry and CaloID + HECDetectorRegion::DetectorSide endcapInd = hecregion->getEndcapIndex(); + int pos_neg = endcapInd==HECDetectorRegion::NEG ? -2 : 2; + + Identifier regId = hec_id->region_id(pos_neg + , hecregion->getSamplingIndex() + , hecregion->getRegionIndex()); + + HECDescriptor* hecDescr = new HECDescriptor(regId,(AtlasDetectorID *)cell_id,cell_id,hecregion); + caloMgr->add(hecDescr); + + double phi_min = 0.; + float z_min = 10000.f; + float z_max = -10000.f; + double r_min = 10000.; + double r_max = -10000.; + + double reg_min = 10000.; + double reg_max = -10000.; + + std::vector<double> depth_in; + std::vector<double> depth_out; + + // + // *** *** *** Iterate over cells *** *** *** + // + for (unsigned int iPhi=hecregion->beginPhiIndex();iPhi<hecregion->endPhiIndex();iPhi++) { + for (unsigned int iEta=hecregion->beginEtaIndex();iEta<hecregion->endEtaIndex();iEta++) { + HECCellConstLink cellPtr = hecregion->getHECCell(iEta,iPhi); + // build hash identifier for this cell + // Do some mapping between LArReadoutGeometry and CaloID + + if(cellPtr) { + Identifier chanId = hec_id->channel_id(pos_neg + , cellPtr->getSamplingIndex() + , cellPtr->getRegionIndex() + , iEta + , iPhi); + + // Create the element and store it + HECDetectorElement* hecElement = new HECDetectorElement(hec_id->channel_hash(chanId) + , 0 + , 0 + , hecDescr + , cellPtr + , hecregion + , isTestBeam); + if(iPhi==hecregion->beginPhiIndex()) { + phi_min = hecElement->phi() - 0.5*hecElement->dphi(); + } + + // cell volume + hecElement->set_volume(cellVol.CellVolume(chanId)); + + caloMgr->add(hecElement); + + if(r_min > cellPtr->getRMinLocalNominal(HECCell::FRONT)) + r_min = cellPtr->getRMinLocalNominal(HECCell::FRONT); + if(r_max < cellPtr->getRMaxLocalNominal(HECCell::FRONT)) + r_max = cellPtr->getRMaxLocalNominal(HECCell::FRONT); + + if(z_min > std::abs(hecElement->z_raw())-hecElement->dz()) + z_min = std::abs(hecElement->z_raw())-hecElement->dz(); + if(z_max < std::abs(hecElement->z_raw())+hecElement->dz()) + z_max = std::abs(hecElement->z_raw())+hecElement->dz(); + + if(reg_min > hecElement->eta()-0.5*hecElement->deta()) + reg_min = hecElement->eta()-0.5*hecElement->deta(); + if(reg_max < hecElement->eta()+0.5*hecElement->deta()) + reg_max = hecElement->eta()+0.5*hecElement->deta(); + + if(iPhi==hecregion->beginPhiIndex() && iEta==hecregion->beginEtaIndex()) { + depth_in.push_back(std::abs(hecElement->z_raw())-hecElement->dz()); + depth_out.push_back(std::abs(hecElement->z_raw())+hecElement->dz()); + } + + } + } // Eta loop + } // Phi loop + // *** *** *** Iterate over cells *** *** *** + + double eta_min = hecregion->getDescriptor()->getEtaBinning().getStart(); + double eta_max = hecregion->getDescriptor()->getEtaBinning().getEnd(); + double phi_max = phi_min + std::abs(hecregion->getDescriptor()->getPhiBinning().getDelta())*hecDescr->n_phi(); + + // 'ideal' values + hecDescr->setCaloEtaMin(eta_min); + hecDescr->setCaloEtaMax(eta_max); + hecDescr->setCaloPhiMin(phi_min); + hecDescr->setCaloPhiMax(phi_max); + hecDescr->setCaloZMin(z_min); + hecDescr->setCaloZMax(z_max); + hecDescr->setCaloRMin(r_min); + hecDescr->setCaloRMax(r_max); + + // depths + hecDescr->set_n_calo_depth(depth_in.size()); + hecDescr->set_depth_in(depth_in); + hecDescr->set_depth_out(depth_out); + + // 'alignable' values + hecDescr->setLArRegMin(reg_min); + hecDescr->setLArRegMax(reg_max); + hecDescr->setLArEtaMin(eta_min); + hecDescr->setLArPhiMin(phi_min); + }// Region loop + } // if HEC manager has been retrieved + + // **************************************************************** + // ** --- --- HEC --- --- ** + // **************************************************************** + + + // **************************************************************** + // ** --- --- FCAL --- --- ** + // **************************************************************** + + // --- Retrieve Fcal Detector Manager + const FCALDetectorManager* fcalManager{nullptr}; + status = detStore->retrieve(fcalManager); + if(status.isFailure()) { + log << MSG::WARNING << "Could not get the FCALDetectorManager. No Calo Elements will be built for FCAL" << endmsg; + } + else { + // --- --- Iterate over FCAL modules and tiles --- --- + FCALDetectorManager::ConstIterator fcalmodIt; + + for (fcalmodIt=fcalManager->beginFCAL(); fcalmodIt!=fcalManager->endFCAL(); fcalmodIt++) { + const FCALModule* fcalmodule = *fcalmodIt; + + // *** *** Create descriptor for this module *** *** + // Module identifier. + // Do some mapping between LArReadoutGeometry and CaloID + + FCALModule::Endcap endcapInd = fcalmodule->getEndcapIndex(); + + int pos_neg = endcapInd==FCALModule::NEG ? -2 : 2; + + Identifier regId = fcal_id->module_id(pos_neg,(int)fcalmodule->getModuleIndex()); + + FCALDescriptor* fcalDescr = new FCALDescriptor(regId + ,(AtlasDetectorID *)cell_id + ,cell_id + ,fcalmodule); + caloMgr->add(fcalDescr); + + double eta_min = 10000.; + double eta_max = -10000.; + double z_min = 10000.; + double z_max = -10000.; + double r_min = 10000.; + double r_max = -10000.; + + double reg_min = 10000.; + double reg_max = -10000.; + + std::vector<double> depth_in; + std::vector<double> depth_out; + + // + // *** *** *** Iterate over cells *** *** *** + // + FCALModule::ConstIterator fcaltileIt; + for (fcaltileIt=fcalmodule->beginTiles();fcaltileIt!=fcalmodule->endTiles();fcaltileIt++) { + Identifier chanId = fcal_id->channel_id(pos_neg + , (int)fcalmodule->getModuleIndex() + , fcaltileIt->getIndexJ() // eta + , fcaltileIt->getIndexI()); // phi + + FCALDetectorElement* fcalElement = new FCALDetectorElement(fcal_id->channel_hash(chanId) + , 0 + , 0 + , fcalDescr + , &(*fcaltileIt) + , fcalmodule + , isTestBeam); + // calculate cell volume + double tubeSpacing = cellVol.getFcalTubeSpacing((int)fcalmodule->getModuleIndex()); + unsigned int numTubes = fcaltileIt->getNumTubes(); + double dz = fcalmodule->getFullDepthZ(*fcaltileIt); + fcalElement->set_volume(.5*sqrt(3)*numTubes*tubeSpacing*tubeSpacing*dz); + + caloMgr->add(fcalElement); + + if(eta_min > std::abs(fcalElement->eta_raw())-0.5*fcalElement->deta()) + eta_min = std::abs(fcalElement->eta_raw())-0.5*fcalElement->deta(); + if(eta_max < std::abs(fcalElement->eta_raw())+0.5*fcalElement->deta()) + eta_max = std::abs(fcalElement->eta_raw())+0.5*fcalElement->deta(); + if(r_min > fcalElement->r() - 0.5*fcalElement->dr()) + r_min = fcalElement->r() - 0.5*fcalElement->dr(); + if(r_max < fcalElement->r() + 0.5*fcalElement->dr()) + r_max = fcalElement->r() + 0.5*fcalElement->dr(); + if(z_min > std::abs(fcalElement->z_raw()) - 0.5*fcalElement->dz()) + z_min = std::abs(fcalElement->z_raw()) - 0.5*fcalElement->dz(); + if(z_max < std::abs(fcalElement->z_raw()) + 0.5*fcalElement->dz()) + z_max = std::abs(fcalElement->z_raw()) + 0.5*fcalElement->dz(); + if(reg_min > fcalElement->eta()-0.5*fcalElement->deta()) + reg_min = fcalElement->eta()-0.5*fcalElement->deta(); + if(reg_max < fcalElement->eta()+0.5*fcalElement->deta()) + reg_max = fcalElement->eta()+0.5*fcalElement->deta(); + + if(fcaltileIt==fcalmodule->beginTiles()) { + depth_in.push_back(std::abs(fcalElement->z_raw()) - fcalElement->dz()); + depth_out.push_back(std::abs(fcalElement->z_raw()) + fcalElement->dz()); + } + } + + // These values have no importance for FCAL - hardwire them here. + fcalDescr->setCaloPhiMin(0.); + fcalDescr->setCaloPhiMax(2*M_PI); + fcalDescr->setLArPhiMin(0.); + + + fcalDescr->setCaloEtaMin(eta_min); + fcalDescr->setCaloEtaMax(eta_max); + fcalDescr->setCaloZMin(z_min); + fcalDescr->setCaloZMax(z_max); + fcalDescr->setCaloRMin(r_min); + fcalDescr->setCaloRMax(r_max); + fcalDescr->setLArRegMin(reg_min); + fcalDescr->setLArRegMax(reg_max); + + // depths + fcalDescr->set_n_calo_depth(depth_in.size()); + fcalDescr->set_depth_in(depth_in); + fcalDescr->set_depth_out(depth_out); + + if(fcalmodule->getEndcapIndex()==FCALModule::NEG) { + fcalDescr->setLArEtaMin(-reg_max); + } + else { + fcalDescr->setLArEtaMin(reg_min); + } + }// Module loop + }// if FCAL manager has been retrieved + + // **************************************************************** + // ** --- --- FCAL --- --- ** + // **************************************************************** + + + // **************************************************************** + // ** --- --- Tile --- --- ** + // **************************************************************** + const TileDetDescrManager* tile_mgr{nullptr}; + status = detStore->retrieve(tile_mgr); + if (status.isFailure()) { + log << MSG::WARNING << "Could not get the TileDetectorManager. No Calo Elements will be built for Tile" << endmsg; + } + else { + log << MSG::DEBUG << " Found the TileDetDescrManager " << endmsg; + cell_id->calo_cell_hash_range((int)CaloCell_ID::TILE,min,max); + for(unsigned int idhash=0; idhash < max-min; idhash++) { + CaloDetDescrElement* newelt = tile_mgr->get_cell_element(idhash); + if(newelt) { + caloMgr->add(newelt); + } + } + + std::vector<CaloDetDescriptor*>::const_iterator itr = tile_mgr->calo_descriptors_begin(); + std::vector<CaloDetDescriptor*>::const_iterator end = tile_mgr->calo_descriptors_end(); + + for(; itr != end; ++itr) { + caloMgr->add_tile(*itr); + } + } + // **************************************************************** + // ** --- --- Tile --- --- ** + // **************************************************************** + + // **************************************************************** + // ** --- Additional elements --- ** + // **************************************************************** + if(isTestBeam) { + CaloDetDescrElementContainer *cDDEvec; + if(detStore->retrieve(cDDEvec) == StatusCode::SUCCESS) { + // We have additional elements + for (CaloDetDescrElement* elt : *cDDEvec) { + caloMgr->add (elt); + } + } + } + + return caloMgr; +} diff --git a/Calorimeter/CaloEvent/CaloEvent/CaloCompactCellContainer.h b/Calorimeter/CaloEvent/CaloEvent/CaloCompactCellContainer.h index 5a24503299a5570e4872c26c9951b7ac3ef461e4..6ab5853456ff41c70342f6107b91ae1a28f2cae1 100644 --- a/Calorimeter/CaloEvent/CaloEvent/CaloCompactCellContainer.h +++ b/Calorimeter/CaloEvent/CaloEvent/CaloCompactCellContainer.h @@ -1,7 +1,7 @@ ///////////////////////// -*- C++ -*- ///////////////////////////// /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef CALOEVENT_CALOCOMPACTCELLCONTAINER_H @@ -98,6 +98,14 @@ class CaloCompactCellContainer return m_compactData; }; + /** + * @brief returns the entire compact cell container (includes header) + * @return a reference to the vector holding the compact data + */ + inline std::vector<value_type> & getData() { + return m_compactData; + }; + /** * @brief returns header portion of the compact cell container * @return a const vector holding the header data diff --git a/Calorimeter/CaloRec/python/CaloRecFlags.py b/Calorimeter/CaloRec/python/CaloRecFlags.py index 3f12fbcfd6f2144a4c53155d017f6890ad05526c..6bbfdd37ce05d3869d3557e473b4f8cb44d6485e 100644 --- a/Calorimeter/CaloRec/python/CaloRecFlags.py +++ b/Calorimeter/CaloRec/python/CaloRecFlags.py @@ -102,7 +102,7 @@ class doCaloTopoSignal(CaloRecFlagsJobProperty): allowedTypes=['bool'] StoredValue=False -class doExtendedClusterMoments(CaloRecFlagsJobProperty): +class doExtendedClusterMoments(JobProperty): """ add more cluster moments for R&D """ statusOn=True diff --git a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h deleted file mode 100644 index 3d472dc3a6c4ccf531ae7da600ce2f8dd4b114fb..0000000000000000000000000000000000000000 --- a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h +++ /dev/null @@ -1,35 +0,0 @@ -// Dear emacs, this is -*- c++ -*- -// Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -#ifndef FlattenInput_H -#define FlattenInput_H - -#include <string> -#include <iostream> -#include <fstream> -#include <arpa/inet.h> -#include <vector> -#include <iterator> - - -namespace AthONNX { - template<typename T> - - inline std::vector<T> FlattenInput_multiD_1D( std::vector<std::vector<T>> features){ - // 1. Compute the total size required. - int total_size = 0; - for (auto& feature : features) total_size += feature.size(); - - // 2. Create a vector to hold the data. - std::vector<T> Flatten1D; - Flatten1D.reserve(total_size); - - // 3. Fill it - for (auto& feature : features) - for (auto& elem : feature) - Flatten1D.push_back(elem); - - return Flatten1D; - } - -} -#endif diff --git a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/OnnxUtils.h b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/OnnxUtils.h new file mode 100644 index 0000000000000000000000000000000000000000..60af06d2abd3889797a61e308c168a32e70e4506 --- /dev/null +++ b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/OnnxUtils.h @@ -0,0 +1,141 @@ +// Dear emacs, this is -*- c++ -*- +// Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +#ifndef ONNX_UTILS_H +#define ONNX_UTILS_H + +#include <string> +#include <iostream> +#include <fstream> +#include <arpa/inet.h> +#include <vector> +#include <iterator> +#include <tuple> + +// ONNX Runtime include(s). +#include <core/session/onnxruntime_cxx_api.h> +// Local include(s). +#include "AthOnnxruntimeService/IONNXRuntimeSvc.h" +#include "GaudiKernel/ServiceHandle.h" + +namespace AthONNX { + +/************************Flattening of Input Data***************************/ +/***************************************************************************/ + + template<typename T> + + inline std::vector<T> FlattenInput_multiD_1D( std::vector<std::vector<T>> features){ + // 1. Compute the total size required. + int total_size = 0; + for (const auto& feature : features) total_size += feature.size(); + + // 2. Create a vector to hold the data. + std::vector<T> Flatten1D; + Flatten1D.reserve(total_size); + + // 3. Fill it + for (const auto& feature : features) + for (const auto& elem : feature) + Flatten1D.push_back(elem); + + return Flatten1D; + } + +/*********************************Creation of ORT tensor*********************************/ +/****************************************************************************************/ + + template<typename T> + inline Ort::Value TensorCreator(std::vector<T> flattenData, std::vector<int64_t> input_node_dims ){ + /************** Create input tensor object from input data values to feed into your model *********************/ + auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault); + Ort::Value input_tensor = Ort::Value::CreateTensor<float>(memory_info, + flattenData.data(), + flattenData.size(), /*** 1x28x28 = 784 ***/ + input_node_dims.data(), + input_node_dims.size()); /*** [1, 28, 28] = 3 ***/ + return input_tensor; + } + + +/*********************************Creation of ORT Session*********************************/ +/*****************************************************************************************/ + + //template<typename T> + inline std::unique_ptr< Ort::Session > CreateORTSession(const std::string& modelFile){ + + // Set up the ONNX Runtime session. + Ort::SessionOptions sessionOptions; + sessionOptions.SetIntraOpNumThreads( 1 ); + sessionOptions.SetGraphOptimizationLevel( ORT_ENABLE_BASIC ); + + ServiceHandle< IONNXRuntimeSvc > svc("AthONNX::ONNXRuntimeSvc", + "AthONNX::ONNXRuntimeSvc"); + + return std::make_unique<Ort::Session>( svc->env(), + modelFile.c_str(), + sessionOptions ); + } + +/*********************************Input Node Structure of Model*********************************/ +/***********************************************************************************************/ + + inline std::tuple<std::vector<int64_t>, std::vector<const char*> > GetInputNodeInfo(const std::unique_ptr< Ort::Session >& session){ + + std::vector<int64_t> input_node_dims; + size_t num_input_nodes = session->GetInputCount(); + std::vector<const char*> input_node_names(num_input_nodes); + Ort::AllocatorWithDefaultOptions allocator; + for( std::size_t i = 0; i < num_input_nodes; i++ ) { + + char* input_name = session->GetInputName(i, allocator); + input_node_names[i] = input_name; + Ort::TypeInfo type_info = session->GetInputTypeInfo(i); + auto tensor_info = type_info.GetTensorTypeAndShapeInfo(); + + input_node_dims = tensor_info.GetShape(); + } + return std::make_tuple(input_node_dims, input_node_names); + } + +/*********************************Output Node Structure of Model*********************************/ +/***********************************************************************************************/ + + inline std::tuple<std::vector<int64_t>, std::vector<const char*> > GetOutputNodeInfo(const std::unique_ptr< Ort::Session >& session){ + + //output nodes + std::vector<int64_t> output_node_dims; + size_t num_output_nodes = session->GetOutputCount(); + std::vector<const char*> output_node_names(num_output_nodes); + Ort::AllocatorWithDefaultOptions allocator; + + for( std::size_t i = 0; i < num_output_nodes; i++ ) { + char* output_name = session->GetOutputName(i, allocator); + output_node_names[i] = output_name; + + Ort::TypeInfo type_info = session->GetOutputTypeInfo(i); + auto tensor_info = type_info.GetTensorTypeAndShapeInfo(); + + output_node_dims = tensor_info.GetShape(); + } + return std::make_tuple(output_node_dims, output_node_names); + } + + +/*********************************Running Inference through ORT*********************************/ +/***********************************************************************************************/ + inline float* Inference(const std::unique_ptr< Ort::Session >& session,std::vector<const char*>& input_node_names, Ort::Value& input_tensor, std::vector<const char*>& output_node_names){ + auto output_tensor = session->Run(Ort::RunOptions{nullptr}, + input_node_names.data(), + &input_tensor, + input_node_names.size(), /** 1, flatten_input:0 **/ + output_node_names.data(), + output_node_names.size()); /** 1, dense_1/Softmax:0 **/ + + //assert(output_tensor.size() == output_node_names.size() && output_tensor.front().IsTensor()); + // Get pointer to output tensor float values + float* floatarr = output_tensor.front().GetTensorMutableData<float>(); + return floatarr; + } + +} +#endif diff --git a/Control/AthOnnxruntimeUtils/CMakeLists.txt b/Control/AthOnnxruntimeUtils/CMakeLists.txt index 4889ec32ea928507ae6a10b6d9e9c247fd37107e..42e610f5cac2849698f32714d34be088b862f9bb 100644 --- a/Control/AthOnnxruntimeUtils/CMakeLists.txt +++ b/Control/AthOnnxruntimeUtils/CMakeLists.txt @@ -7,5 +7,6 @@ atlas_subdir( AthOnnxruntimeUtils ) atlas_add_library( AthOnnxruntimeUtilsLib INTERFACE PUBLIC_HEADERS AthOnnxruntimeUtils - LINK_LIBRARIES AthenaKernel GaudiKernel ) + INCLUDE_DIRS ${ONNXRUNTIME_INCLUDE_DIRS} + LINK_LIBRARIES ${ONNXRUNTIME_LIBRARIES} AthOnnxruntimeServiceLib AthenaKernel GaudiKernel AsgServicesLib ) diff --git a/Control/AthViews/src/View.cxx b/Control/AthViews/src/View.cxx index d6fa3c1a80b0a8a95bd3a0eb90ffda1cc8450b65..9569d8c9a4d94bf56665cf826dbeb1563ef93b08 100644 --- a/Control/AthViews/src/View.cxx +++ b/Control/AthViews/src/View.cxx @@ -14,7 +14,8 @@ View::View(const std::string& name, const int index, const bool AllowFallThrough } else { m_index = index; - fullName += "_" + std::to_string( index ); + fullName += '_'; + fullName += std::to_string( index ); } #ifdef ATHVIEWS_DEBUG diff --git a/Control/AthenaBaseComps/src/AthHistogramming.cxx b/Control/AthenaBaseComps/src/AthHistogramming.cxx index 99ea58c5390aa865d334e535cc080864a10b5823..f5daf6cf4e451d516d5101ee51ea8893f1dfd154 100644 --- a/Control/AthenaBaseComps/src/AthHistogramming.cxx +++ b/Control/AthenaBaseComps/src/AthHistogramming.cxx @@ -467,7 +467,8 @@ void AthHistogramming::buildBookingString( std::string& bookingString, if(tDir.empty()) tDir = m_rootDir; size_t pos = histName.rfind('/'); if(pos != std::string::npos){ - tDir+="/"+histName.substr(0,pos); + tDir+='/'; + tDir.append(histName, 0,pos); histName.erase(0,pos+1); }; if(stream.empty()) stream = m_streamName; diff --git a/Control/AthenaConfiguration/python/DetectorConfigFlags.py b/Control/AthenaConfiguration/python/DetectorConfigFlags.py index 5cdc4c8130c64c1b82e7ca425da1a8137fe1b3cf..a27bb7115a95c247ee72bb62448830bfc61319f1 100644 --- a/Control/AthenaConfiguration/python/DetectorConfigFlags.py +++ b/Control/AthenaConfiguration/python/DetectorConfigFlags.py @@ -1,7 +1,7 @@ # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags -from AthenaConfiguration.AutoConfigFlags import DetDescrInfo, getDefaultDetectors +from AthenaConfiguration.AutoConfigFlags import getDefaultDetectors # This module is based upon Control/AthenaCommon/python/DetFlags.py # Only some flags have been migrated. A full list of what the old # DetFlags provided is given for reference below: @@ -55,45 +55,46 @@ allGroups = { def createDetectorConfigFlags(): dcf = AthConfigFlags() - ## Detector.Geometry* flags (will) represent the default full geometry, + ## Detector.Geometry* flags represent the default full geometry, ## autoconfigured from the geometry tag - ## currently keeping the behaviour the same until all clients are identified - dcf.addFlag('Detector.GeometryBpipe', False) + dcf.addFlag('Detector.GeometryBpipe', True) # always enabled by default # Inner Detector - dcf.addFlag('Detector.GeometryBCM', False) - dcf.addFlag('Detector.GeometryDBM', False) - dcf.addFlag('Detector.GeometryPixel', False) - dcf.addFlag('Detector.GeometrySCT', False) - dcf.addFlag('Detector.GeometryTRT', False) # Set default according to prevFlags.GeoModel.Run? - dcf.addFlag('Detector.GeometryID', lambda prevFlags : (prevFlags.Detector.GeometryBCM or prevFlags.Detector.GeometryDBM or - prevFlags.Detector.GeometryPixel or prevFlags.Detector.GeometrySCT or - prevFlags.Detector.GeometryTRT)) + dcf.addFlag('Detector.GeometryBCM', lambda prevFlags : 'BCM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryDBM', lambda prevFlags : 'DBM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryPixel', lambda prevFlags : 'Pixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometrySCT', lambda prevFlags : 'SCT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryTRT', lambda prevFlags : 'TRT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryID', lambda prevFlags : (prevFlags.Detector.GeometryBCM or prevFlags.Detector.GeometryDBM + or prevFlags.Detector.GeometryPixel or prevFlags.Detector.GeometrySCT + or prevFlags.Detector.GeometryTRT)) # Upgrade ITk Inner Tracker is a separate and parallel detector - dcf.addFlag('Detector.GeometryBCMPrime', False) - dcf.addFlag('Detector.GeometryITkPixel', False) - dcf.addFlag('Detector.GeometryITkStrip', False) - dcf.addFlag('Detector.GeometryITk', lambda prevFlags : (prevFlags.Detector.GeometryBCMPrime or prevFlags.Detector.GeometryITkPixel or prevFlags.Detector.GeometryITkStrip)) - - dcf.addFlag('Detector.GeometryHGTD', False) + dcf.addFlag('Detector.GeometryBCMPrime', lambda prevFlags : 'BCMPrime' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryITkPixel', lambda prevFlags : 'ITkPixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryITkStrip', lambda prevFlags : 'ITkStrip' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryITk', lambda prevFlags : (prevFlags.Detector.GeometryBCMPrime + or prevFlags.Detector.GeometryITkPixel + or prevFlags.Detector.GeometryITkStrip)) + # HGTD + dcf.addFlag('Detector.GeometryHGTD', lambda prevFlags : 'HGTD' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) # Calorimeters - dcf.addFlag('Detector.GeometryLAr', False) # Add separate em HEC and FCAL flags? - dcf.addFlag('Detector.GeometryTile', False) - dcf.addFlag('Detector.GeometryMBTS', True) # for backwards compatibility for now + dcf.addFlag('Detector.GeometryLAr', lambda prevFlags : 'LAr' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) # Add separate em HEC and FCAL flags? + dcf.addFlag('Detector.GeometryTile', lambda prevFlags : 'Tile' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryMBTS', lambda prevFlags : (prevFlags.Detector.GeometryLAr and 'MBTS' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion))) dcf.addFlag('Detector.GeometryCalo', lambda prevFlags : (prevFlags.Detector.GeometryLAr or prevFlags.Detector.GeometryTile)) # Muon Spectrometer - dcf.addFlag('Detector.GeometryCSC', lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasCSC']) - dcf.addFlag('Detector.GeometryMDT', False) - dcf.addFlag('Detector.GeometryRPC', False) - dcf.addFlag('Detector.GeometryTGC', False) - dcf.addFlag('Detector.GeometrysTGC', lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasSTGC']) - dcf.addFlag('Detector.GeometryMM', lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion)['Muon']['HasMM']) - dcf.addFlag('Detector.GeometryMuon', lambda prevFlags : (prevFlags.Detector.GeometryCSC or prevFlags.Detector.GeometryMDT or - prevFlags.Detector.GeometryRPC or prevFlags.Detector.GeometryTGC or - prevFlags.Detector.GeometrysTGC or prevFlags.Detector.GeometryMM)) + dcf.addFlag('Detector.GeometryCSC', lambda prevFlags : 'CSC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryMDT', lambda prevFlags : 'MDT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryRPC', lambda prevFlags : 'RPC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryTGC', lambda prevFlags : 'TGC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometrysTGC', lambda prevFlags : 'sTGC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryMM', lambda prevFlags : 'MM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.GeometryMuon', lambda prevFlags : (prevFlags.Detector.GeometryCSC or prevFlags.Detector.GeometryMDT + or prevFlags.Detector.GeometryRPC or prevFlags.Detector.GeometryTGC + or prevFlags.Detector.GeometrysTGC or prevFlags.Detector.GeometryMM)) # Forward detectors (disabled by default) dcf.addFlag('Detector.GeometryLucid', False) @@ -101,53 +102,53 @@ def createDetectorConfigFlags(): dcf.addFlag('Detector.GeometryALFA', False) dcf.addFlag('Detector.GeometryAFP', False) dcf.addFlag('Detector.GeometryFwdRegion', False) - dcf.addFlag('Detector.GeometryForward', lambda prevFlags : (prevFlags.Detector.GeometryLucid or prevFlags.Detector.GeometryZDC or - prevFlags.Detector.GeometryALFA or prevFlags.Detector.GeometryAFP or - prevFlags.Detector.GeometryFwdRegion)) + dcf.addFlag('Detector.GeometryForward', lambda prevFlags : (prevFlags.Detector.GeometryLucid or prevFlags.Detector.GeometryZDC + or prevFlags.Detector.GeometryALFA or prevFlags.Detector.GeometryAFP + or prevFlags.Detector.GeometryFwdRegion)) # Cavern (disabled by default) - dcf.addFlag('Detector.GeometryCavern',False) + dcf.addFlag('Detector.GeometryCavern', False) - ## Detector.Enable* flags (currently) represent the default full geometry, - ## autoconfigured from the geometry tag + ## Detector.Enable* flags represent the default full geometry, + ## autoconfigured from geometry flags # Inner Detector - dcf.addFlag('Detector.EnableBCM', lambda prevFlags : 'BCM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableDBM', lambda prevFlags : 'DBM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnablePixel', lambda prevFlags : 'Pixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableSCT', lambda prevFlags : 'SCT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableTRT', lambda prevFlags : 'TRT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableID', lambda prevFlags : (prevFlags.Detector.EnableBCM or prevFlags.Detector.EnableDBM or - prevFlags.Detector.EnablePixel or prevFlags.Detector.EnableSCT or - prevFlags.Detector.EnableTRT)) + dcf.addFlag('Detector.EnableBCM', lambda prevFlags : prevFlags.Detector.GeometryBCM) + dcf.addFlag('Detector.EnableDBM', lambda prevFlags : prevFlags.Detector.GeometryDBM) + dcf.addFlag('Detector.EnablePixel', lambda prevFlags : prevFlags.Detector.GeometryPixel) + dcf.addFlag('Detector.EnableSCT', lambda prevFlags : prevFlags.Detector.GeometrySCT) + dcf.addFlag('Detector.EnableTRT', lambda prevFlags : prevFlags.Detector.GeometryTRT) + dcf.addFlag('Detector.EnableID', lambda prevFlags : (prevFlags.Detector.EnableBCM or prevFlags.Detector.EnableDBM + or prevFlags.Detector.EnablePixel or prevFlags.Detector.EnableSCT + or prevFlags.Detector.EnableTRT)) # Upgrade ITk Inner Tracker is a separate and parallel detector - dcf.addFlag('Detector.EnableBCMPrime', lambda prevFlags : 'BCMPrime' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableITkPixel', lambda prevFlags : 'ITkPixel' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableITkStrip', lambda prevFlags : 'ITkStrip' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableITk', lambda prevFlags : (prevFlags.Detector.EnableBCMPrime or - prevFlags.Detector.EnableITkPixel or - prevFlags.Detector.EnableITkStrip)) - - dcf.addFlag('Detector.EnableHGTD', lambda prevFlags : 'HGTD' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.EnableBCMPrime', lambda prevFlags : prevFlags.Detector.GeometryBCMPrime) + dcf.addFlag('Detector.EnableITkPixel', lambda prevFlags : prevFlags.Detector.GeometryITkPixel) + dcf.addFlag('Detector.EnableITkStrip', lambda prevFlags : prevFlags.Detector.GeometryITkStrip) + dcf.addFlag('Detector.EnableITk', lambda prevFlags : (prevFlags.Detector.EnableBCMPrime + or prevFlags.Detector.EnableITkPixel + or prevFlags.Detector.EnableITkStrip)) + # HGTD + dcf.addFlag('Detector.EnableHGTD', lambda prevFlags : prevFlags.Detector.GeometryHGTD) # Calorimeters - dcf.addFlag('Detector.EnableLAr', lambda prevFlags : 'LAr' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) # Add separate em HEC and FCAL flags? - dcf.addFlag('Detector.EnableTile', lambda prevFlags : 'Tile' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableMBTS', lambda prevFlags : 'MBTS' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) + dcf.addFlag('Detector.EnableLAr', lambda prevFlags : prevFlags.Detector.GeometryLAr) + dcf.addFlag('Detector.EnableTile', lambda prevFlags : prevFlags.Detector.GeometryTile) + dcf.addFlag('Detector.EnableMBTS', lambda prevFlags : prevFlags.Detector.GeometryMBTS) dcf.addFlag('Detector.EnableL1Calo', lambda prevFlags : (prevFlags.Detector.EnableLAr or prevFlags.Detector.EnableTile)) dcf.addFlag('Detector.EnableCalo', lambda prevFlags : (prevFlags.Detector.EnableLAr or prevFlags.Detector.EnableTile)) # Muon Spectrometer - dcf.addFlag('Detector.EnableCSC', lambda prevFlags : 'CSC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableMDT', lambda prevFlags : 'MDT' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableRPC', lambda prevFlags : 'RPC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableTGC', lambda prevFlags : 'TGC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnablesTGC', lambda prevFlags : 'sTGC' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableMM', lambda prevFlags : 'MM' in getDefaultDetectors(prevFlags.GeoModel.AtlasVersion)) - dcf.addFlag('Detector.EnableMuon', lambda prevFlags : (prevFlags.Detector.EnableCSC or prevFlags.Detector.EnableMDT or - prevFlags.Detector.EnableRPC or prevFlags.Detector.EnableTGC or - prevFlags.Detector.EnablesTGC or prevFlags.Detector.EnableMM)) + dcf.addFlag('Detector.EnableCSC', lambda prevFlags : prevFlags.Detector.GeometryCSC) + dcf.addFlag('Detector.EnableMDT', lambda prevFlags : prevFlags.Detector.GeometryMDT) + dcf.addFlag('Detector.EnableRPC', lambda prevFlags : prevFlags.Detector.GeometryRPC) + dcf.addFlag('Detector.EnableTGC', lambda prevFlags : prevFlags.Detector.GeometryTGC) + dcf.addFlag('Detector.EnablesTGC', lambda prevFlags : prevFlags.Detector.GeometrysTGC) + dcf.addFlag('Detector.EnableMM', lambda prevFlags : prevFlags.Detector.GeometryMM) + dcf.addFlag('Detector.EnableMuon', lambda prevFlags : (prevFlags.Detector.EnableCSC or prevFlags.Detector.EnableMDT + or prevFlags.Detector.EnableRPC or prevFlags.Detector.EnableTGC + or prevFlags.Detector.EnablesTGC or prevFlags.Detector.EnableMM)) # Forward detectors (disabled by default) dcf.addFlag('Detector.EnableLucid', False) @@ -155,9 +156,9 @@ def createDetectorConfigFlags(): dcf.addFlag('Detector.EnableALFA', False) dcf.addFlag('Detector.EnableAFP', False) dcf.addFlag('Detector.EnableFwdRegion', False) - dcf.addFlag('Detector.EnableForward', lambda prevFlags : (prevFlags.Detector.EnableLucid or prevFlags.Detector.EnableZDC or - prevFlags.Detector.EnableALFA or prevFlags.Detector.EnableAFP or - prevFlags.Detector.EnableFwdRegion)) + dcf.addFlag('Detector.EnableForward', lambda prevFlags : (prevFlags.Detector.EnableLucid or prevFlags.Detector.EnableZDC + or prevFlags.Detector.EnableALFA or prevFlags.Detector.EnableAFP + or prevFlags.Detector.EnableFwdRegion)) return dcf diff --git a/Control/AthenaConfiguration/python/iconfTool/models/loaders.py b/Control/AthenaConfiguration/python/iconfTool/models/loaders.py index ffd594ddc16738324dfff330c6c6b5bdc765c2e4..94a9449094ed11ed5ee101c9c03b1d04026023e7 100755 --- a/Control/AthenaConfiguration/python/iconfTool/models/loaders.py +++ b/Control/AthenaConfiguration/python/iconfTool/models/loaders.py @@ -138,7 +138,16 @@ def renameComps(dic, args) -> Dict: }) def rename_comps(comp_name): - return componentRenamingDict.get(comp_name, comp_name) # get new name or default to original when no renaming for that name + """Renames component if it is in the dict or, when name fragment is in the dict + The later is for cases like: ToolSvc.ToolA.X.Y is renamed to ToolSvc.ToolB.X.Y + """ + renamed = componentRenamingDict.get(comp_name, comp_name) # get new name or default to original when no renaming for that name + if renamed != comp_name: + return renamed + for k,v in componentRenamingDict.items(): + if f"{k}." in comp_name or f".{k}" in comp_name: + return v.replace(k, v) + return comp_name conf = {} for (key, value) in dic.items(): diff --git a/Control/AthenaConfiguration/share/confTool.py b/Control/AthenaConfiguration/share/confTool.py index 2f65811d8c313d1d4500efcf8720120bb6aedb95..6272a35a28e2111ad9c6505c9a61dace285698f9 100755 --- a/Control/AthenaConfiguration/share/confTool.py +++ b/Control/AthenaConfiguration/share/confTool.py @@ -12,6 +12,7 @@ import pickle import pprint import re import sys +import collections from AthenaConfiguration.iconfTool.models.loaders import loadConfigFile, baseParser, componentRenamingDict, loadDifferencesFile class color: @@ -208,6 +209,23 @@ def _knownDifference(comp, prop, chkVal, refVal): return refVal == acceptedDifference[0] and chkVal == acceptedDifference[1] return False +def _handleComponentsReanaming( refVal ): + """ Rename values in reference as long as they are hashable (and in renamingDict) + It is a bit of heuristics that is invoved, the assumption is that the property has value of the form A/B if it is name of the compoemnt or it is a just single string""" + refList = refVal if isinstance(refVal, list) else [refVal] + updatedRef = [] + for v in refList: + if isinstance(v, str): + if "/" in v and len(v.split("/")) == 2: + compType,compName = v.split("/") + newName = componentRenamingDict.get(compName, compName) + updatedRef.append( f"{compType}/{newName}" ) + else: + updatedRef.append( componentRenamingDict.get(v, v) ) + else: + updatedRef.append(v) + return updatedRef if isinstance(refVal, list) else updatedRef[0] + def _compareComponent(compRef, compChk, prefix, args, component): if isinstance(compRef, dict): @@ -241,6 +259,8 @@ def _compareComponent(compRef, compChk, prefix, args, component): except ValueError: pass # literal_eval exception when parsing particular strings + refVal = _handleComponentsReanaming( refVal ) + refVal, chkVal = _parseNumericalValues(refVal, chkVal) diffmarker = "" if str(chkVal) == str(refVal): @@ -256,9 +276,7 @@ def _compareComponent(compRef, compChk, prefix, args, component): if not (component == "IOVDbSvc" and prop == "Folders"): print(f"{prefix}{color.property}{prop} = {color.first} {refVal} {color.reset} vs {color.second} {chkVal} {color.reset} {diffmarker}") - if refVal and ( - isinstance(refVal, list) or isinstance(refVal, dict) - ): + if refVal and ( isinstance(refVal, list) or isinstance(refVal, dict) ): if component == "IOVDbSvc" and prop == "Folders": _compareIOVDbFolders(refVal, chkVal, "\t", args) else: diff --git a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx index 45200d5e44da705e512dca5072138f965c14a664..6ed46b37e26137bbff050ef7fdef197129faa802 100644 --- a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx +++ b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx @@ -2,12 +2,12 @@ // Local include(s). #include "EvaluateModel.h" +#include <tuple> // Framework include(s). #include "PathResolver/PathResolver.h" -#include "AthOnnxruntimeUtils/FlattenInput.h" +#include "AthOnnxruntimeUtils/OnnxUtils.h" -//class AthONNX::FlattenInput; namespace AthONNX { //******************************************************************* @@ -68,7 +68,7 @@ namespace AthONNX { StatusCode EvaluateModel::initialize() { // Access the service. - ATH_CHECK( m_svc.retrieve() ); + //ATH_CHECK( m_svc.retrieve() ); /***** The combination of no. of batches and batch size shouldn't cross @@ -89,13 +89,8 @@ namespace AthONNX { ATH_MSG_INFO( "Using pixel file: " << pixelFileName ); ATH_MSG_INFO( "Using pixel file: " << labelFileName ); // Set up the ONNX Runtime session. - Ort::SessionOptions sessionOptions; - sessionOptions.SetIntraOpNumThreads( 1 ); - sessionOptions.SetGraphOptimizationLevel( ORT_ENABLE_BASIC ); - Ort::AllocatorWithDefaultOptions allocator; - m_session = std::make_unique< Ort::Session >( m_svc->env(), - modelFileName.c_str(), - sessionOptions ); + + m_session = AthONNX::CreateORTSession(modelFileName); ATH_MSG_INFO( "Created the ONNX Runtime session" ); m_input_tensor_values_notFlat = read_mnist_pixel_notFlat(pixelFileName); std::vector<std::vector<float>> c = m_input_tensor_values_notFlat[0]; @@ -107,51 +102,42 @@ namespace AthONNX { StatusCode EvaluateModel::execute( const EventContext& /*ctx*/ ) const { Ort::AllocatorWithDefaultOptions allocator; - auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault); + /************************** Input Nodes *****************************/ /*********************************************************************/ - std::vector<int64_t> input_node_dims; - size_t num_input_nodes = m_session->GetInputCount(); - std::vector<const char*> input_node_names(num_input_nodes); - for( std::size_t i = 0; i < num_input_nodes; i++ ) { + + std::tuple<std::vector<int64_t>, std::vector<const char*> > inputInfo = AthONNX::GetInputNodeInfo(m_session); + std::vector<int64_t> input_node_dims = std::get<0>(inputInfo); + std::vector<const char*> input_node_names = std::get<1>(inputInfo); + + for( std::size_t i = 0; i < input_node_names.size(); i++ ) { // print input node names - char* input_name = m_session->GetInputName(i, allocator); - ATH_MSG_DEBUG("Input "<<i<<" : "<<" name= "<<input_name); - input_node_names[i] = input_name; - Ort::TypeInfo type_info = m_session->GetInputTypeInfo(i); - auto tensor_info = type_info.GetTensorTypeAndShapeInfo(); + ATH_MSG_DEBUG("Input "<<i<<" : "<<" name= "<<input_node_names[i]); + // print input shapes/dims - input_node_dims = tensor_info.GetShape(); ATH_MSG_DEBUG("Input "<<i<<" : num_dims= "<<input_node_dims.size()); for (std::size_t j = 0; j < input_node_dims.size(); j++){ ATH_MSG_DEBUG("Input "<<i<<" : dim "<<j<<"= "<<input_node_dims[j]); - } + } } - + /************************** Output Nodes *****************************/ /*********************************************************************/ - //output nodes - std::vector<int64_t> output_node_dims; - size_t num_output_nodes = m_session->GetOutputCount(); - std::vector<const char*> output_node_names(num_output_nodes); - - for( std::size_t i = 0; i < num_output_nodes; i++ ) { - // print output node names - char* output_name = m_session->GetOutputName(i, allocator); - ATH_MSG_DEBUG("Output "<<i<<" : "<<" name= "<<output_name); - output_node_names[i] = output_name; + + std::tuple<std::vector<int64_t>, std::vector<const char*> > outputInfo = AthONNX::GetOutputNodeInfo(m_session); + std::vector<int64_t> output_node_dims = std::get<0>(outputInfo); + std::vector<const char*> output_node_names = std::get<1>(outputInfo); - Ort::TypeInfo type_info = m_session->GetOutputTypeInfo(i); - auto tensor_info = type_info.GetTensorTypeAndShapeInfo(); + for( std::size_t i = 0; i < output_node_names.size(); i++ ) { + // print input node names + ATH_MSG_DEBUG("Output "<<i<<" : "<<" name= "<<output_node_names[i]); - // print output shapes/dims - output_node_dims = tensor_info.GetShape(); + // print input shapes/dims ATH_MSG_DEBUG("Output "<<i<<" : num_dims= "<<output_node_dims.size()); for (std::size_t j = 0; j < output_node_dims.size(); j++){ - ATH_MSG_DEBUG("Output "<<i<<" : dim "<<j<<"= "<<output_node_dims[j]); - } - } - + ATH_MSG_DEBUG("Output "<<i<<" : dim "<<j<<"= "<<output_node_dims[j]); + } + } /************************* Score if input is not a batch ********************/ /****************************************************************************/ if(m_doBatches == false){ @@ -175,11 +161,8 @@ namespace AthONNX { ATH_MSG_DEBUG("Size of Flatten Input tensor: "<<flatten.size()); /************** Create input tensor object from input data values to feed into your model *********************/ - Ort::Value input_tensor = Ort::Value::CreateTensor<float>(memory_info, - flatten.data(), - flatten.size(), /*** 1x28x28 = 784 ***/ - input_node_dims.data(), - input_node_dims.size()); /*** [1, 28, 28] = 3 ***/ + + Ort::Value input_tensor = AthONNX::TensorCreator(flatten, input_node_dims ); /********* Convert 784 elements long flattened 1D array to 3D (1, 28, 28) onnx compatible tensor ************/ ATH_MSG_DEBUG("Input tensor size after converted to Ort tensor: "<<input_tensor.GetTensorTypeAndShapeInfo().GetShape()); @@ -188,17 +171,8 @@ namespace AthONNX { input_tensor.GetTensorTypeAndShapeInfo().GetShape() == input_node_dims); /********* Score model by feeding input tensor and get output tensor in return *****************************/ - auto output_tensor = m_session->Run(Ort::RunOptions{nullptr}, - input_node_names.data(), - &input_tensor, - input_node_names.size(), /** 1, flatten_input:0 **/ - output_node_names.data(), - output_node_names.size()); /** 1, dense_1/Softmax:0 **/ - assert(output_tensor.size() == output_node_names.size() && output_tensor.front().IsTensor()); - - // Get pointer to output tensor float values - float* floatarr = output_tensor.front().GetTensorMutableData<float>(); + float* floatarr = AthONNX::Inference(m_session, input_node_names, input_tensor, output_node_names); // show true label for the test input ATH_MSG_INFO("Label for the input test data = "<<output_tensor_values); @@ -240,32 +214,11 @@ namespace AthONNX { batch_input_tensor_values.insert(batch_input_tensor_values.end(), flattened_input.begin(), flattened_input.end()); } - Ort::Value batch_input_tensors = Ort::Value::CreateTensor<float>(memory_info, - batch_input_tensor_values.data(), - batch_input_tensor_values.size(), /*** 5x28x28 = 3920 ***/ - input_node_dims.data(), - input_node_dims.size()); /*** [5, 28, 28] = 3 ***/ + Ort::Value batch_input_tensors = AthONNX::TensorCreator(batch_input_tensor_values, input_node_dims ); - assert(batch_input_tensors.IsTensor()&& - batch_input_tensors.GetTensorTypeAndShapeInfo().GetShape() == input_node_dims); - - auto batch_output_tensors = m_session->Run(Ort::RunOptions{nullptr}, - input_node_names.data(), - &batch_input_tensors, - input_node_names.size(), /** 1, flatten_input:0 **/ - output_node_names.data(), - output_node_names.size()); /** 1, dense_1/Softmax:0 **/ - - assert(batch_output_tensors.size() == output_node_names.size() && - !batch_output_tensors.empty() && - batch_output_tensors[0].IsTensor() && - batch_output_tensors[0].GetTensorTypeAndShapeInfo().GetShape()[0] == m_sizeOfBatch); - // Get pointer to output tensor float values - ATH_MSG_DEBUG("output vector size: "<<batch_output_tensors[0].GetTensorTypeAndShapeInfo().GetShape()); - float* floatarr = batch_output_tensors.front().GetTensorMutableData<float>(); - + float* floatarr = AthONNX::Inference(m_session, input_node_names, batch_input_tensors, output_node_names); // show true label for the test input for(int i = l; i<l+m_sizeOfBatch; i++){ ATH_MSG_INFO("Label for the input test data = "<<m_output_tensor_values[i]); diff --git a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h index e4a3c0424cee7c433e1f18044e9b1804d3851322..db0ef8bea8ce61523c0e46433617f778da76f424 100644 --- a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h +++ b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h @@ -69,14 +69,6 @@ namespace AthONNX { Gaudi::Property<int> m_numberOfBatches {this, "NumberOfBatches", 1, "No. of batches to be passed"}; Gaudi::Property<int> m_sizeOfBatch {this, "SizeOfBatch", 1, "No. of elements/example in a batch"}; - /// Handle to @c AthONNX::IONNXRuntimeSvc - ServiceHandle< IONNXRuntimeSvc > m_svc{ this, "ONNXRuntimeSvc", - "AthONNX::ONNXRuntimeSvc", - "Name of the service to use" }; - - /// @} - - /// The "session" of ONNX Runtime that we'll be using std::unique_ptr< Ort::Session > m_session; std::vector<std::vector<std::vector<float>>> m_input_tensor_values_notFlat; std::vector<int> m_output_tensor_values; diff --git a/Control/AthenaKernel/src/DsoDb.cxx b/Control/AthenaKernel/src/DsoDb.cxx index b45ac9797c95e9adcf05e2fedbe94320050c4a5e..9a386c58e4c124b3dd7dcc72e905d8fe10948adb 100644 --- a/Control/AthenaKernel/src/DsoDb.cxx +++ b/Control/AthenaKernel/src/DsoDb.cxx @@ -357,7 +357,7 @@ DsoDb::build_repository() if ( line.empty() ) continue; - else if (line.substr (0, 8) == "Library.") { + else if (line.compare (0, 8, "Library.")==0) { Strings_t ll; boost::algorithm::split(ll, line, boost::is_any_of(" "), @@ -378,8 +378,8 @@ DsoDb::build_repository() libname = ::getlibname(libname); boost::algorithm::replace_all(dso_key, "Library.", ""); boost::algorithm::replace_all(dso_key, ":", ""); - boost::algorithm::replace_all(dso_key, "@", ":"); - boost::algorithm::replace_all(dso_key, "-", " "); + std::replace(dso_key.begin(), dso_key.end(), '@', ':'); + std::replace(dso_key.begin(), dso_key.end(), '-', ' '); } else if (line[0] == '[') { @@ -394,26 +394,26 @@ DsoDb::build_repository() continue; } - else if (line.substr(0, 8) == "# --End ") { + else if (line.compare(0, 8, "# --End ")==0) { lastlib.clear(); continue; } - else if (line.substr(0, 6) == "class ") { + else if (line.compare(0, 6, "class ")==0) { libname = lastlib; line.erase (0, 6); dso_key = line; } - else if (is_components && line.substr(0, 3) == "lib") { + else if (is_components && line.compare(0, 3, "lib") ==0) { std::string::size_type pos = line.find (':'); if (pos == std::string::npos) continue; libname = line.substr(0, pos); line.erase (0, pos+1); dso_key = line; - if (dso_key.substr(0, 6) == "_PERS_" || - dso_key.substr(0, 7) == "_TRANS_") + if (dso_key.compare(0, 6, "_PERS_")==0 || + dso_key.compare(0, 7, "_TRANS_")==0) continue; if (libname.find ("AthenaPoolPoolCnv") != std::string::npos) diff --git a/Control/AthenaKernel/src/errorcheck.cxx b/Control/AthenaKernel/src/errorcheck.cxx index 1b02884f2f7b50e57c965aeb870a4f3a267cb588..93743eca238969a2fd27b4fe2fa14c43c4e8e1b5 100644 --- a/Control/AthenaKernel/src/errorcheck.cxx +++ b/Control/AthenaKernel/src/errorcheck.cxx @@ -278,7 +278,9 @@ MsgStream& ReportMessage::doOutput() // need to do anything. But if so, we insert a `: ' after the header. if (m_pos != stream().str().size()) { std::string tmp1 = stream().str(); - std::string tmp2 = tmp1.substr(0, m_pos) + ": " + tmp1.substr(m_pos); + std::string tmp2 = tmp1.substr(0, m_pos); + tmp2 += ": "; + tmp2.append( tmp1, m_pos); stream().str (tmp2); } return MsgStream::doOutput(); diff --git a/Control/AthenaMP/python/PyComps.py b/Control/AthenaMP/python/PyComps.py index 46f82a2edb6043aecbf5387ed2435a2f468b307f..0a92640a5fdf7cc9b931291d4a4804bb06c3fae8 100644 --- a/Control/AthenaMP/python/PyComps.py +++ b/Control/AthenaMP/python/PyComps.py @@ -112,8 +112,8 @@ class MpEvtLoopMgr(AthMpEvtLoopMgr): if 'AthenaPoolCnvSvc.ReadAthenaPool' in sys.modules: svcMgr.AthenaPoolCnvSvc.InputStreamingTool = AthenaSharedMemoryTool("InputStreamingTool", SharedMemoryName="InputStream"+str(os.getpid()), UseMultipleSegments=True) if use_shared_writer: + from AthenaCommon.AppMgr import ServiceMgr as svcMgr if 'AthenaPoolCnvSvc.WriteAthenaPool' in sys.modules: - from AthenaCommon.AppMgr import ServiceMgr as svcMgr from AthenaIPCTools.AthenaIPCToolsConf import AthenaSharedMemoryTool svcMgr.AthenaPoolCnvSvc.OutputStreamingTool += [ AthenaSharedMemoryTool("OutputStreamingTool_0", SharedMemoryName="OutputStream"+str(os.getpid())) ] svcMgr.AthenaPoolCnvSvc.ParallelCompression=use_parallel_compression diff --git a/Control/AthenaMonitoring/python/AthenaMonitoringCfg.py b/Control/AthenaMonitoring/python/AthenaMonitoringCfg.py index 8b290460fdb8c78746d89ee03c0eb138aac63bf4..68602c3dfad07b97577cebe9c7a1ffc4044692ce 100644 --- a/Control/AthenaMonitoring/python/AthenaMonitoringCfg.py +++ b/Control/AthenaMonitoring/python/AthenaMonitoringCfg.py @@ -77,12 +77,24 @@ def AthenaMonitoringCfg(flags): info('Set up Jet monitoring') from JetMonitoring.JetMonitoringStandard import standardJetMonitoring result.merge(standardJetMonitoring(flags)) + + if flags.DQ.Steering.doJetInputsMon: + info('Set up Jet Inputs monitoring') + from JetInputsMonitoring.ClusterMonitorAlgorithm import ClusterMonitoringConfig + result.merge(ClusterMonitoringConfig(flags)) + from JetInputsMonitoring.PFOMonitorAlgorithm import PFOMonitoringConfig + result.merge(PFOMonitoringConfig(flags)) if flags.DQ.Steering.doMissingEtMon: - info("Set up MET monitoring") + info('Set up MET monitoring') from MissingETMonitoring.METMonitorAlgorithm import METMonitoringConfig result.merge(METMonitoringConfig(flags)) + if flags.DQ.Steering.doDataFlowMon: + info('Set up Data Flow monitoring') + from DataQualityTools.DQTDataFlowMonAlg import DQTDataFlowMonAlgConfig + result.merge(DQTDataFlowMonAlgConfig(flags)) + if flags.DQ.Steering.doGlobalMon: info('Set up Global monitoring') from DataQualityTools.DataQualityToolsConfig import DataQualityToolsConfig diff --git a/Control/AthenaMonitoring/python/DQConfigFlags.py b/Control/AthenaMonitoring/python/DQConfigFlags.py index fdeb2701cde796f593d35d5663a71dce68f08f01..b76cc75f52bccf1b2cf1f4c50f2ccde54171f12f 100644 --- a/Control/AthenaMonitoring/python/DQConfigFlags.py +++ b/Control/AthenaMonitoring/python/DQConfigFlags.py @@ -10,7 +10,8 @@ _steeringFlags = [ 'doGlobalMon', 'doLVL1CaloMon', 'doCTPMon', 'doHLTMon', 'doCaloGlobalMon', 'doMuonMon', 'doLucidMon', 'doAFPMon', 'doHIMon', 'doEgammaMon', 'doJetMon', 'doMissingEtMon', - 'doTauMon', 'doJetTagMon' ] + 'doJetInputsMon', + 'doTauMon', 'doJetTagMon', 'doDataFlowMon' ] _lowLevelSteeringFlags = [ 'InDet.doGlobalMon', 'InDet.doAlignMon', 'InDet.doPerfMon', 'Muon.doRawMon', diff --git a/Control/AthenaMonitoring/share/DQMonFlagsConfig_jobOptions.py b/Control/AthenaMonitoring/share/DQMonFlagsConfig_jobOptions.py index d1eb5f757ce7032ca8b62c8c7bc8f1fc7b5ed018..2708f69f93962a53de111ba5a5f7813cf4fd4682 100644 --- a/Control/AthenaMonitoring/share/DQMonFlagsConfig_jobOptions.py +++ b/Control/AthenaMonitoring/share/DQMonFlagsConfig_jobOptions.py @@ -506,6 +506,7 @@ from AthenaMonitoring.DQConfigFlags import allSteeringFlagsOff from AthenaMonitoring import AthenaMonitoringConf Steering = ConfigFlags.DQ.Steering +Steering.doDataFlowMon=DQMonFlags.doDataFlowMon() Steering.doGlobalMon=DQMonFlags.doGlobalMon() # do not enable new trigger monitoring in mixed mode if we are not in Run 3 EDM mixedModeFlag = (DQMonFlags.triggerMixedMode() and ConfigFlags.Trigger.EDMVersion == 2) diff --git a/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx b/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx index a6e1437b5089ae7513a9ddd824cb62626804a0c2..7b15f74ee404abcaf7a7e98271b06d25ff6710f7 100644 --- a/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx +++ b/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx @@ -344,7 +344,7 @@ void AthMonitorAlgorithm::unpackTriggerCategories(std::vector<std::string>& vTri for (size_t i = 0; i < vTrigChainNames.size(); ++i) { std::string& thisName = vTrigChainNames[i]; - if (thisName.substr(0,9) == "CATEGORY_") { + if (thisName.compare(0,9, "CATEGORY_")==0) { ATH_MSG_DEBUG("Found a trigger category: " << thisName << ". Unpacking."); std::vector<std::string> triggers = m_trigTranslator->translate(thisName.substr(9,std::string::npos)); std::ostringstream oss; diff --git a/Control/AthenaMonitoring/src/ManagedMonitorToolBase.cxx b/Control/AthenaMonitoring/src/ManagedMonitorToolBase.cxx index ba7021ccad7d993e5a434a0d9a050b004ddfbd92..14410accd53b38c90a7e53b4d6f5ea44396af0dc 100644 --- a/Control/AthenaMonitoring/src/ManagedMonitorToolBase.cxx +++ b/Control/AthenaMonitoring/src/ManagedMonitorToolBase.cxx @@ -2367,7 +2367,7 @@ ManagedMonitorToolBase:: updateTriggersForGroups(std::vector<std::string>& vTrigChainNames) { for (size_t i = 0; i < vTrigChainNames.size(); ++i) { std::string& thisName = vTrigChainNames[i]; - if (thisName.substr(0, 9) == "CATEGORY_") { + if (thisName.compare(0, 9, "CATEGORY_") ==0) { ATH_MSG_DEBUG("Found a trigger category: " << thisName << ". We will unpack it."); std::vector<std::string> triggers = m_trigTranslator->translate(thisName.substr(9,std::string::npos)); std::ostringstream oss; diff --git a/Control/AthenaServices/src/AthenaOutputStream.cxx b/Control/AthenaServices/src/AthenaOutputStream.cxx index d8e681318624421be55cf25642e294391de1b93e..690509763bf4fab3c659cdaf19418dfe1f7a0e23 100644 --- a/Control/AthenaServices/src/AthenaOutputStream.cxx +++ b/Control/AthenaServices/src/AthenaOutputStream.cxx @@ -352,7 +352,7 @@ StatusCode AthenaOutputStream::initialize() { // For CreateOutputStream.py, the algorithm name is the same as the stream // name. But OutputStreamConfig.py adds `OutputStream' to the front. std::string streamName = this->name(); - if (streamName.substr (0, 12) == "OutputStream") { + if (streamName.compare (0, 12, "OutputStream")==0) { streamName.erase (0, 12); } m_selVetoesKey = "SelectionVetoes_" + streamName; @@ -1041,7 +1041,7 @@ void AthenaOutputStream::handleVariableSelection (const SG::IConstAuxStore& auxs } std::string key = itemProxy.name(); - if (key.size() >= 4 && key.substr (key.size()-4, 4) == "Aux.") + if (key.size() >= 4 && key.compare (key.size()-4, 4, "Aux.")==0) { key.erase (key.size()-4, 4); } diff --git a/Control/AthenaServices/src/AthenaOutputStreamTool.cxx b/Control/AthenaServices/src/AthenaOutputStreamTool.cxx index 4a560b51b5635f768e281ebbd1aa2326af209afb..30ea479a9e6fe90cce9df0f929458b7693af6b44 100644 --- a/Control/AthenaServices/src/AthenaOutputStreamTool.cxx +++ b/Control/AthenaServices/src/AthenaOutputStreamTool.cxx @@ -516,9 +516,9 @@ StatusCode AthenaOutputStreamTool::getInputItemList(SG::IFolder* p2BWrittenFromT } ATH_MSG_DEBUG("Adding " << typeName << "#" << it->getKey() << " (clid " << clid << ") to itemlist"); const std::string keyName = it->getKey(); - if (keyName.size() > 10 && keyName.substr(0, 10) == hltKey) { + if (keyName.size() > 10 && keyName.compare(0, 10,hltKey)==0) { p2BWrittenFromTool->add(clid, hltKey + "*").ignore(); - } else if (keyName.size() > 10 && keyName.substr(keyName.size() - 10, 10) == hltKey) { + } else if (keyName.size() > 10 && keyName.compare(keyName.size() - 10, 10, hltKey)==0) { p2BWrittenFromTool->add(clid, "*" + hltKey).ignore(); } else { p2BWrittenFromTool->add(clid, keyName).ignore(); diff --git a/Control/AthenaServices/src/AthenaSummarySvc.cxx b/Control/AthenaServices/src/AthenaSummarySvc.cxx index b3236b23415b03616fb8ff8e07ca5ee56887a10f..26c59fad065217f2cf1400baee158b075afd8170 100644 --- a/Control/AthenaServices/src/AthenaSummarySvc.cxx +++ b/Control/AthenaServices/src/AthenaSummarySvc.cxx @@ -89,23 +89,23 @@ public: map<string,vector<string> >::const_iterator itr; unsigned int iv; for (itr=m_dat.begin(); itr != m_dat.end(); ++itr) { - if (x.length() > 1) { x+= ","; } + if (x.length() > 1) { x+= ','; } x += "\"" + itr->first + "\":"; vector<string> v = itr->second; - if (v.size() > 1) { x += "["; } + if (v.size() > 1) { x += '['; } for (iv = 0; iv < v.size(); ++iv) { - if (iv > 0) { x += ","; } - if (v[iv].substr(0,1) == "{") { + if (iv > 0) { x += ','; } + if (v[iv][0] == '{') { x += v[iv]; - } else if (v[iv].substr(0,1) == II) { - x += v[iv].substr(1,v[iv].length()); + } else if (v[iv].compare(0,1, II)==0) { + x.append( v[iv], 1,v[iv].length()); } else { x += "\"" + v[iv] + "\""; } } - if (v.size() > 1) { x += "]"; } + if (v.size() > 1) { x += ']'; } } - x += "}"; + x += '}'; return x; } diff --git a/Control/AthenaServices/src/DecisionSvc.cxx b/Control/AthenaServices/src/DecisionSvc.cxx index e85a57b8b9bfc1f79952decdff35a5f14656aa78..263962d55bdac4183d4395c313305f8107576e42 100644 --- a/Control/AthenaServices/src/DecisionSvc.cxx +++ b/Control/AthenaServices/src/DecisionSvc.cxx @@ -126,8 +126,6 @@ DecisionSvc::fillMap(std::map<std::string, std::vector<std::string> >& streamsMo if(it != streamsModeMap.end()){ // ok, it exists, then check if the algname was already been inserted - // save the list - std::vector<std::string> tmpvec = it->second; bool algexist = false; // Check if alg already registered for this stream @@ -147,16 +145,15 @@ DecisionSvc::fillMap(std::map<std::string, std::vector<std::string> >& streamsMo // So, if the stream exist but the alg has not been registered // update its content std::vector with a alg if(algexist == false){ + std::vector<std::string> &tmpvec = it->second; tmpvec.push_back(name); - streamsModeMap.erase(stream); - streamsModeMap.insert(std::make_pair(stream, tmpvec)); } //if the stream doesn't exist yet, then insert it } else { std::vector<std::string> tmpvec; tmpvec.push_back(name); - streamsModeMap.insert(std::make_pair(stream, tmpvec)); + streamsModeMap[stream] = std::move(tmpvec); } return StatusCode::SUCCESS; @@ -396,31 +393,31 @@ void DecisionSvc::DeclareToCutFlowSvc() std::string accstring(""), reqstring(""), vetstring(""); for (auto it = accFilt.begin(); it != accFilt.end(); ++it) { if(accstring.size()>0) accstring += "||"; - else accstring += "("; + else accstring += '('; accstring+=*it; } for (auto it = reqFilt.begin(); it != reqFilt.end(); ++it) { if(reqstring.size()>0) reqstring += "&&"; - else reqstring += "("; + else reqstring += '('; reqstring+=*it; } for (auto it = vetFilt.begin(); it != vetFilt.end(); ++it) { if(vetstring.size()>0) vetstring += "||"; - else vetstring += "("; + else vetstring += '('; vetstring+=*it; } std::string logicalKey(""); if(accstring.size()>0) { - accstring += ")"; + accstring += ')'; logicalKey += accstring; } if(reqstring.size()>0) { - reqstring += ")"; + reqstring += ')'; if (logicalKey.size()>0) logicalKey += "&&"; logicalKey += reqstring; } if(vetstring.size()>0) { - vetstring += ")"; + vetstring += ')'; if (logicalKey.size()>0) logicalKey += "&&"; logicalKey = logicalKey + "!" + vetstring; } diff --git a/Control/AthenaServices/src/LoggedMessageSvc.cxx b/Control/AthenaServices/src/LoggedMessageSvc.cxx index 57934e7a567a8241999d3b34c33ffe2246ecbd85..cef99573ae4f234e9371a2a4e9a3f61f4e29d573 100644 --- a/Control/AthenaServices/src/LoggedMessageSvc.cxx +++ b/Control/AthenaServices/src/LoggedMessageSvc.cxx @@ -221,9 +221,9 @@ void LoggedMessageSvc::setupColors(Gaudi::Details::PropertyBase& prop) { if ( m_logColors[ic].value().size() == 1 ) { - if (*itr == "") { + if (itr->empty() ) { code = ""; - } else if (itr->substr(0,1) == "[") { + } else if ((*itr)[0] == '[') { code = "\033" + *itr; } else { code = "\033[" + colTrans(*itr, 90) + ";1m"; @@ -237,7 +237,7 @@ void LoggedMessageSvc::setupColors(Gaudi::Details::PropertyBase& prop) { } - m_logColorCodes[ic] = code; + m_logColorCodes[ic] = std::move(code); } //############################################################################# diff --git a/Control/AthenaServices/src/MetaDataSvc.cxx b/Control/AthenaServices/src/MetaDataSvc.cxx index 71f13b1fbcf110492643c450a0003c40f22f4f86..fe387873ba5b07715e8342583822f572aa3aba99 100644 --- a/Control/AthenaServices/src/MetaDataSvc.cxx +++ b/Control/AthenaServices/src/MetaDataSvc.cxx @@ -550,7 +550,7 @@ StatusCode MetaDataSvc::initInputMetaDataStore(const std::string& fileName) { } if (fileName.find("BSF:") == 0) { ATH_MSG_DEBUG("MetaDataSvc called for non ROOT file."); - } else if (fileName.substr(0, 3) == "SHM") { + } else if (fileName.compare(0, 3, "SHM")==0) { ATH_MSG_DEBUG("MetaDataSvc called for shared memory."); } else { const std::string par[2] = { fileName, m_metaDataCont.value() + "(DataHeader)" }; diff --git a/Control/CxxUtils/CxxUtils/features.h b/Control/CxxUtils/CxxUtils/features.h index 4351f14e3c317cc03063672a96be6da0048fef72..e063f476568470b1fd6d0ed2b1d4a557e7870b5e 100644 --- a/Control/CxxUtils/CxxUtils/features.h +++ b/Control/CxxUtils/CxxUtils/features.h @@ -67,19 +67,10 @@ # define HAVE_VECTOR_SIZE_ATTRIBUTE 0 #endif -// Do we additionally support the ternary operator for vectorizes types. -// GCC and llvm clang >=10 -#if HAVE_VECTOR_SIZE_ATTRIBUTE && \ - !(defined(__clang__) && ((__clang_major__ < 10) || defined(__APPLE__))) -#define HAVE_VECTOR_TERNARY_OPERATOR 1 -#else -#define HAVE_VECTOR_TERNARY_OPERATOR 0 -#endif - // Do we additionally support the clang // __builtin_convertvector -// GCC>11 does -#if HAVE_VECTOR_SIZE_ATTRIBUTE && (defined(__clang__) || (__GNUC__ >= 11)) +// GCC>=9 does +#if HAVE_VECTOR_SIZE_ATTRIBUTE && (defined(__clang__) || (__GNUC__ >= 9)) #define HAVE_CONVERT_VECTOR 1 #else #define HAVE_CONVERT_VECTOR 0 diff --git a/Control/CxxUtils/CxxUtils/vec.h b/Control/CxxUtils/CxxUtils/vec.h index b1e78a3dec273115deefd1183d3947b0e1569482..3e90a7a2e21ca514ff11921cc034fe98795367bb 100644 --- a/Control/CxxUtils/CxxUtils/vec.h +++ b/Control/CxxUtils/CxxUtils/vec.h @@ -31,7 +31,7 @@ * ++, --, +,-,*,/,%, =, &,|,^,~, >>,<<, !, &&, ||, * ==, !=, >, <, >=, <=, =, sizeof and Initialization from brace-enclosed lists * - * Furthemore the GCC and clang>=10 vector types support the ternary operator. + * Furthemore the GCC and clang (>=10) vector types support the ternary operator. * * We also support some additional operations. * @@ -465,7 +465,7 @@ template<typename VEC> inline void vselect(VEC& dst, const VEC& a, const VEC& b, const mask_type_t<VEC>& mask) { -#if !HAVE_VECTOR_TERNARY_OPERATOR || WANT_VECTOR_FALLBACK +#if !HAVE_VECTOR_SIZE_ATTRIBUTE || WANT_VECTOR_FALLBACK constexpr size_t N = vec_size<VEC>(); for (size_t i = 0; i < N; ++i) { dst[i] = mask[i] ? a[i] : b[i]; @@ -483,7 +483,7 @@ template<typename VEC> inline void vmin(VEC& dst, const VEC& a, const VEC& b) { -#if !HAVE_VECTOR_TERNARY_OPERATOR || WANT_VECTOR_FALLBACK +#if !HAVE_VECTOR_SIZE_ATTRIBUTE || WANT_VECTOR_FALLBACK constexpr size_t N = vec_size<VEC>(); for (size_t i = 0; i < N; ++i) { dst[i] = a[i] < b[i] ? a[i] : b[i]; @@ -501,7 +501,7 @@ template<typename VEC> inline void vmax(VEC& dst, const VEC& a, const VEC& b) { -#if !HAVE_VECTOR_TERNARY_OPERATOR || WANT_VECTOR_FALLBACK +#if !HAVE_VECTOR_SIZE_ATTRIBUTE || WANT_VECTOR_FALLBACK constexpr size_t N = vec_size<VEC>(); for (size_t i = 0; i < N; ++i) { dst[i] = a[i] > b[i] ? a[i] : b[i]; diff --git a/Control/CxxUtils/Root/ClassName.cxx b/Control/CxxUtils/Root/ClassName.cxx index 718aa11b142e9ccace2e277c20472a47fddafc7b..94a12b46fc81ac3804637dbbc68e233b6576fa8b 100644 --- a/Control/CxxUtils/Root/ClassName.cxx +++ b/Control/CxxUtils/Root/ClassName.cxx @@ -430,11 +430,11 @@ std::string ClassName::applyRules (const std::string& name, void ClassName::parse (const std::string& name, std::string::size_type& pos) { m_name = parsePrimary (name, pos); - if (m_name.substr (0, 6) == "const ") { + if (m_name.compare (0, 6, "const ") ==0) { m_const = true; m_name.erase (0, 6); } - if (m_name.size() >= 6 && m_name.substr (m_name.size()-6, 6) == " const") { + if (m_name.size() >= 6 && m_name.compare (m_name.size()-6, 6, " const") ==0) { m_const = true; m_name.erase (m_name.size()-6, 6); } @@ -449,7 +449,7 @@ void ClassName::parse (const std::string& name, std::string::size_type& pos) break; } skipSpaces (name, pos); - if (name.substr (pos, 5) == "const") { + if (name.compare (pos, 5, "const")==0) { m_const = true; pos += 5; } diff --git a/Control/CxxUtils/Root/StringUtils.cxx b/Control/CxxUtils/Root/StringUtils.cxx index fc8f1600fe94f25c178ae0a62a4517186e62dead..ca784cce986960829aabe502bc27496b200c17f4 100644 --- a/Control/CxxUtils/Root/StringUtils.cxx +++ b/Control/CxxUtils/Root/StringUtils.cxx @@ -16,6 +16,7 @@ #include <algorithm> #include <iostream> +#include <cmath> namespace CxxUtils { @@ -394,11 +395,11 @@ namespace CxxUtils { } } if(nextIndex != std::string::npos){ - output += str.substr(index,nextIndex-index); + output.append( str, index,nextIndex-index); output += map_format[symbolId][outputFormat]; index = nextIndex + map_format[symbolId][inputFormat].size(); } else { - output += str.substr(index); + output.append(str, index); break; } // in the case of LATEX-code, we need to take care about the @@ -444,11 +445,11 @@ namespace CxxUtils { } } if(nextIndex != std::string::npos){ - output += str.substr(index,nextIndex-index); + output.append(str, index,nextIndex-index); output += map_specialscript[symbolId][outputType]; index = nextIndex + map_specialscript[symbolId][inputType].size(); } else { - output += str.substr(index); + output.append(str,index); index = nextIndex; } } @@ -526,7 +527,7 @@ namespace CxxUtils { size_t length = utf8_skip_data[c]; if(c > 31){ if(c < 128 || allowNonAscii){ - output += str.substr(i,length); + output.append(str,i,length); } } i+=length; @@ -594,7 +595,7 @@ namespace CxxUtils { size_type startSuperScript = findBeginSpecialScript(input,StringUtils::SUPERSCRIPT,pos); size_type startSubScript = findBeginSpecialScript(input,StringUtils::SUBSCRIPT,pos); if(startSuperScript == std::string::npos && startSubScript == std::string::npos){ - scriptreplaced += input.substr(pos); + scriptreplaced.append(input, pos); break; } if(startSuperScript < startSubScript){ @@ -626,11 +627,11 @@ namespace CxxUtils { size_t nextpos = latex.find_first_of("\\${^_",pos); if(nextpos == std::string::npos){ // we are at the end of the string -- copy the rest - retval += latex.substr(pos); + retval.append(latex, pos); break; } // copy everything up to the special symbol we found - retval += latex.substr(pos,nextpos-pos); + retval.append( latex, pos,nextpos-pos); switch(latex[nextpos]){ case '^': { @@ -708,7 +709,7 @@ namespace CxxUtils { size_t endpos = latex.find('$',nextpos+1); if(endpos == std::string::npos){ // it's unterminated, break - retval += latex.substr(pos); + retval.append( latex,pos); pos = endpos; break; } diff --git a/Control/SGComps/src/AddressRemappingSvc.cxx b/Control/SGComps/src/AddressRemappingSvc.cxx index 0c6f98bc56d2386a140944282261dd48d87e2daa..d0b7f4edefece111d977214936720865ecc8163d 100644 --- a/Control/SGComps/src/AddressRemappingSvc.cxx +++ b/Control/SGComps/src/AddressRemappingSvc.cxx @@ -363,7 +363,7 @@ StatusCode AddressRemappingSvc::renameTads (IAddressProvider::tadList& tads) if (strncmp (a_renamed.c_str(), tad->name().c_str(), namelen) == 0 && a_renamed[namelen] == '.') { - a_renamed = name_renamed + a_renamed.substr (namelen, std::string::npos); + a_renamed = name_renamed + a_renamed.substr (namelen, std::string::npos); } newAliases.insert (a_renamed); @@ -455,7 +455,7 @@ void AddressRemappingSvc::initDeletes() for (const DataObjID& dobj : alg->outputDataObjs()) { static const std::string pref = "StoreGateSvc+"; - if (dobj.key().substr (0, pref.size()) == pref) { + if (dobj.key().compare (0, pref.size(), pref)==0) { std::string key = dobj.key().substr (pref.size()); m_deletes.emplace (key, dobj.clid()); diff --git a/Control/SGTools/src/SGVersionedKey.cxx b/Control/SGTools/src/SGVersionedKey.cxx index e5324bba49551fd811c7afa31469ff851c48f688..e02ea7c41385eb137bb890e739abde8af71aeb80 100644 --- a/Control/SGTools/src/SGVersionedKey.cxx +++ b/Control/SGTools/src/SGVersionedKey.cxx @@ -26,7 +26,7 @@ VersionedKey::isVersionedKey(const std::string& vkey) { bool VersionedKey::isAuto(const std::string& vkey) { - return (vkey.substr(0,4) == VersionedKey::autoVS()); + return (vkey.compare(0,4, VersionedKey::autoVS())==0); } VersionedKey::VersionedKey(const char* key, unsigned char version) { diff --git a/DataQuality/DataQualityConfigurations/config/AFP/collisions_run.config b/DataQuality/DataQualityConfigurations/config/AFP/collisions_run.config index 70bba8c726f98079ace28fa416d4e14c10915264..7d4c2ff5ad29df417585a7a1e80bafe28be7b6a7 100644 --- a/DataQuality/DataQualityConfigurations/config/AFP/collisions_run.config +++ b/DataQuality/DataQualityConfigurations/config/AFP/collisions_run.config @@ -11,8 +11,8 @@ # Reference reference AFPOfficialReference { location = /afs/cern.ch/work/n/ndikic/public/reference/ - file = data18_13TeV.00355754.physics_Main.merge.AOD.f950_m1999.AFP-3.root - path = run_355754 + file = AFPTest-337176-300k-FMETrains-MU.root + path = run_337176 name = same_name } ############################################################ @@ -74,7 +74,7 @@ output top_level { } output HitsPerPlanesVsLb { } - output OnlyHitsPerPlanesVsLb { + output HitsPerPlanesVsLb_full { } output Cluster { output nearAside { @@ -88,6 +88,8 @@ output top_level { } output ClustersPerPlanesPP { } + output ClusterToT { + } output Track { } output TracksVsLb { @@ -128,6 +130,32 @@ output top_level { output farCside { } } + output StationHits { + } + output ToFHitsVsLb { + output sideA { + output All { + } + output Front { + } + output Middle { + } + output End { + } + } + output sideC { + output All { + } + output Front { + } + output Middle { + } + output End { + } + } + } + output Events { + } } } } @@ -332,7 +360,7 @@ dir AFP { display = Draw=HIST } hist pixelColIDChip_farAside_P3 { - algorithm = AFPBinContentComp + algorithm = HNE output = AFP/SiT/PixelColIDChip/farAside display = Draw=HIST } @@ -422,7 +450,7 @@ dir AFP { display = Draw=HIST } hist pixelRowIDChip_farAside_P3 { - algorithm = AFPBinContentComp + algorithm = HNE output = AFP/SiT/PixelRowIDChip/farAside display = Draw=HIST } @@ -475,88 +503,88 @@ dir AFP { dir SiTimeOverThreshold { dir nearAside { hist timeOverThreshold_nearAside_P0 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018NearA0 output = AFP/SiT/SiTimeOverThreshold/nearAside display = Draw=HIST } hist timeOverThreshold_nearAside_P1 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018NearA1 output = AFP/SiT/SiTimeOverThreshold/nearAside display = Draw=HIST } hist timeOverThreshold_nearAside_P2 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018NearA2 output = AFP/SiT/SiTimeOverThreshold/nearAside display = Draw=HIST } hist timeOverThreshold_nearAside_P3 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018NearA3 output = AFP/SiT/SiTimeOverThreshold/nearAside display = Draw=HIST } } dir farAside { hist timeOverThreshold_farAside_P0 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018FarA0 output = AFP/SiT/SiTimeOverThreshold/farAside display = Draw=HIST } hist timeOverThreshold_farAside_P1 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018FarA1 output = AFP/SiT/SiTimeOverThreshold/farAside display = Draw=HIST } hist timeOverThreshold_farAside_P2 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018FarA2 output = AFP/SiT/SiTimeOverThreshold/farAside display = Draw=HIST } hist timeOverThreshold_farAside_P3 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018FarA3 output = AFP/SiT/SiTimeOverThreshold/farAside display = Draw=HIST } } dir nearCside { hist timeOverThreshold_nearCside_P0 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018NearC0 output = AFP/SiT/SiTimeOverThreshold/nearCside display = Draw=HIST } hist timeOverThreshold_nearCside_P1 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018NearC1 output = AFP/SiT/SiTimeOverThreshold/nearCside display = Draw=HIST } hist timeOverThreshold_nearCside_P2 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018NearC2 output = AFP/SiT/SiTimeOverThreshold/nearCside display = Draw=HIST } hist timeOverThreshold_nearCside_P3 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018NearC3 output = AFP/SiT/SiTimeOverThreshold/nearCside display = Draw=HIST } } dir farCside { hist timeOverThreshold_farCside_P0 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018FarC0 output = AFP/SiT/SiTimeOverThreshold/farCside display = Draw=HIST } hist timeOverThreshold_farCside_P1 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018FarC1 output = AFP/SiT/SiTimeOverThreshold/farCside display = Draw=HIST } hist timeOverThreshold_farCside_P2 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018FarC2 output = AFP/SiT/SiTimeOverThreshold/farCside display = Draw=HIST } hist timeOverThreshold_farCside_P3 { - algorithm = AFPBinContentComp + algorithm = AFPBinContentCompToT2018FarC3 output = AFP/SiT/SiTimeOverThreshold/farCside display = Draw=HIST } @@ -676,85 +704,85 @@ dir AFP { display = Draw=HIST } } - dir OnlyHitsPerPlanesVsLb { - hist lbOnlyHitsPerPlanes_nearAside_P0 { + dir HitsPerPlanesVsLb_full { + hist lbHitsPerPlanes_full_nearAside_P0 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E,StatBox } - hist lbOnlyHitsPerPlanes_nearAside_P1 { + hist lbHitsPerPlanes_full_nearAside_P1 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E,StatBox } - hist lbOnlyHitsPerPlanes_nearAside_P2 { + hist lbHitsPerPlanes_full_nearAside_P2 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E4,StatBox } - hist lbOnlyHitsPerPlanes_nearAside_P3 { + hist lbHitsPerPlanes_full_nearAside_P3 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E4,StatBox } - hist lbOnlyHitsPerPlanes_nearCside_P0 { + hist lbHitsPerPlanes_full_nearCside_P0 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E5,StatBox } - hist lbOnlyHitsPerPlanes_nearCside_P1 { + hist lbHitsPerPlanes_full_nearCside_P1 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E5,StatBox } - hist lbOnlyHitsPerPlanes_nearCside_P2 { + hist lbHitsPerPlanes_full_nearCside_P2 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E6 } - hist lbOnlyHitsPerPlanes_nearCside_P3 { + hist lbHitsPerPlanes_full_nearCside_P3 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E6 } - hist lbOnlyHitsPerPlanes_farAside_P0 { + hist lbHitsPerPlanes_full_farAside_P0 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E0 } - hist lbOnlyHitsPerPlanes_farAside_P1 { + hist lbHitsPerPlanes_full_farAside_P1 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E0 } - hist lbOnlyHitsPerPlanes_farAside_P2 { + hist lbHitsPerPlanes_full_farAside_P2 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E1 } - hist lbOnlyHitsPerPlanes_farAside_P3 { + hist lbHitsPerPlanes_full_farAside_P3 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E1 } - hist lbOnlyHitsPerPlanes_farCside_P0 { + hist lbHitsPerPlanes_full_farCside_P0 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E2 } - hist lbOnlyHitsPerPlanes_farCside_P1 { + hist lbHitsPerPlanes_full_farCside_P1 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E2 } - hist lbOnlyHitsPerPlanes_farCside_P2 { + hist lbHitsPerPlanes_full_farCside_P2 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E3 } - hist lbOnlyHitsPerPlanes_farCside_P3 { + hist lbHitsPerPlanes_full_farCside_P3 { algorithm = HNE - output = AFP/SiT/OnlyHitsPerPlanesVsLb + output = AFP/SiT/HitsPerPlanesVsLb_full display = DRAW=E3 } } @@ -1012,6 +1040,83 @@ dir AFP { } } } + dir ClusterToT { + hist clusterToT_nearAside_P0 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_nearAside_P1 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_nearAside_P2 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_nearAside_P3 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_nearCside_P0 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_nearCside_P1 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_nearCside_P2 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_nearCside_P3 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_farAside_P0 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_farAside_P1 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_farAside_P2 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_farCside_P0 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_farCside_P1 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_farCside_P2 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + hist clusterToT_farCside_P3 { + algorithm = HNE + output = AFP/SiT/ClusterToT + display = Draw=HIST + } + } dir Track { hist trackX_vs_trackY_nearAside { algorithm = HNE @@ -1264,22 +1369,22 @@ dir AFP { } dir Front { hist lbTracksFront_vs_lb_nearCside { - algorithm = HNE + algorithm = AFPLBsOutOfRangeTrackFE2018NearC output = AFP/SiT/PP/TrackFME/Front display = Draw=HIST } hist lbTracksFront_vs_lb_nearAside { - algorithm = HNE + algorithm = AFPLBsOutOfRangeTrackFE2018NearA output = AFP/SiT/PP/TrackFME/Front display = Draw=HIST } hist lbTracksFront_vs_lb_farCside { - algorithm = HNE + algorithm = AFPLBsOutOfRangeTrackFE2018FarC output = AFP/SiT/PP/TrackFME/Front display = Draw=HIST } hist lbTracksFront_vs_lb_farAside { - algorithm = HNE + algorithm = AFPLBsOutOfRangeTrackFE2018FarA output = AFP/SiT/PP/TrackFME/Front display = Draw=HIST } @@ -1308,22 +1413,22 @@ dir AFP { } dir End { hist lbTracksEnd_vs_lb_nearCside { - algorithm = HNE + algorithm = AFPLBsOutOfRangeTrackFE2018NearC output = AFP/SiT/PP/TrackFME/End display = Draw=HIST } hist lbTracksEnd_vs_lb_nearAside { - algorithm = HNE + algorithm = AFPLBsOutOfRangeTrackFE2018NearA output = AFP/SiT/PP/TrackFME/End display = Draw=HIST } hist lbTracksEnd_vs_lb_farCside { - algorithm = HNE + algorithm = AFPLBsOutOfRangeTrackFE2018FarC output = AFP/SiT/PP/TrackFME/End display = Draw=HIST } hist lbTracksEnd_vs_lb_farAside { - algorithm = HNE + algorithm = AFPLBsOutOfRangeTrackFE2018FarA output = AFP/SiT/PP/TrackFME/End display = Draw=HIST } @@ -1386,7 +1491,7 @@ dir AFP { display = Draw=HIST } hist farAside_P3 { - algorithm = HNE + algorithm = AFPLBsOutOfRangeClusterFME2018FarA3 output = AFP/SiT/PP/ClustersFME display = Draw=HIST } @@ -1450,12 +1555,12 @@ dir AFP { hist barInTrainAllA { algorithm = HNE output = AFP/ToF/HitsPerBarsInTrain - display = Draw=COLZ + display = Draw=HIST } hist barInTrainAllC { algorithm = HNE output = AFP/ToF/HitsPerBarsInTrain - display = Draw=COLZ + display = Draw=HIST } dir farAside { hist barInTrainIDA_train0 { @@ -1502,167 +1607,1006 @@ dir AFP { } } } - } -} - -############################################################ -# Algorithms - -algorithm HNE { - libname = libdqm_algorithms.so - name = Histogram_Not_Empty -} - -algorithm AFPBinContentComp { - libname = libdqm_algorithms.so - name = BinContentComp - thresholds = AFPTestThreshold - NSigma = 3 - reference = AFPOfficialReference - publish = 4 - NormRef = 1 -} - -algorithm AFPBinsOutOfRangeOccupancy2018FarA0 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.061789056797195 - RANGE_U = 0.095892918611016 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018FarA1 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.074662461718807 - RANGE_U = 0.104501384948554 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018FarA2 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.090290622392475 - RANGE_U = 0.125676372520129 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018FarA3 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.135 - RANGE_U = 0.16 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018NearA0 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.036226795609285 - RANGE_U = 0.054107382368605 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018NearA1 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.043821248963427 - RANGE_U = 0.062959185604291 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018NearA2 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.05094534790969 - RANGE_U = 0.079118366094141 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018NearA3 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.066592735798167 - RANGE_U = 0.095993365257831 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018FarC0 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.058999763929308 - RANGE_U = 0.086273653475891 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018FarC1 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.004631793226854 - RANGE_U = 0.107485126838435 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018FarC2 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.075138850045184 - RANGE_U = 0.1778867226952 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018FarC3 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.088196440131696 - RANGE_U = 0.141099728559779 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018NearC0 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.034514145585625 - RANGE_U = 0.113911177198451 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - -algorithm AFPBinsOutOfRangeOccupancy2018NearC1 { - libname = libdqm_algorithms.so - name = BinsOutOfRange - RANGE_D = 0.036386393139167 - RANGE_U = 0.113312810412906 - ignoreval = 0 - thresholds = AFPBinsOutOfRangeThreshold - MaxPublish = 50 -} - + dir StationHits { + hist ToFHits_sideA { + algorithm = HNE + output = AFP/ToF/StationHits + display = Draw=COLZ + } + hist ToFHits_sideC { + algorithm = HNE + output = AFP/ToF/StationHits + display = Draw=COLZ + } + } + dir Events { + hist lbAToFEvents { + algorithm = HNE + output = AFP/ToF/Events + display = Draw=COLZ + } + hist lbCToFEvents { + algorithm = HNE + output = AFP/ToF/Events + display = Draw=COLZ + } + hist lbAandCToFEvents { + algorithm = HNE + output = AFP/ToF/Events + display = Draw=COLZ + } + } + dir ToFHitsVsLb { + dir sideA { + dir All { + hist lbAToF_T0 { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/All + display = Draw=HIST + } + hist lbAToF_T1 { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/All + display = Draw=HIST + } + hist lbAToF_T2 { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/All + display = Draw=HIST + } + hist lbAToF_T3 { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/All + display = Draw=HIST + } + } + dir Front { + hist lbAToF_T0_Front { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/Front + display = Draw=HIST + } + hist lbAToF_T1_Front { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/Front + display = Draw=HIST + } + hist lbAToF_T2_Front { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/Front + display = Draw=HIST + } + hist lbAToF_T3_Front { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/Front + display = Draw=HIST + } + } + dir Middle { + hist lbAToF_T0_Middle { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/Middle + display = Draw=HIST + } + hist lbAToF_T1_Middle { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/Middle + display = Draw=HIST + } + hist lbAToF_T2_Middle { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/Middle + display = Draw=HIST + } + hist lbAToF_T3_Middle { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/Middle + display = Draw=HIST + } + } + dir End { + hist lbAToF_T0_End { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/End + display = Draw=HIST + } + hist lbAToF_T1_End { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/End + display = Draw=HIST + } + hist lbAToF_T2_End { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/End + display = Draw=HIST + } + hist lbAToF_T3_End { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA/End + display = Draw=HIST + } + } + hist lbAToF_T0_A { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T0_B { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T0_C { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T0_D { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T1_A { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T1_B { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T1_C { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T1_D { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T2_A { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T2_B { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T2_C { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T2_D { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T3_A { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T3_B { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T3_C { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + hist lbAToF_T3_D { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideA + display = Draw=HIST + } + } + dir sideC { + dir All { + hist lbCToF_T0 { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/All + display = Draw=HIST + } + hist lbCToF_T1 { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/All + display = Draw=HIST + } + hist lbCToF_T2 { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/All + display = Draw=HIST + } + hist lbCToF_T3 { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/All + display = Draw=HIST + } + } + dir Front { + hist lbCToF_T0_Front { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/Front + display = Draw=HIST + } + hist lbCToF_T1_Front { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/Front + display = Draw=HIST + } + hist lbCToF_T2_Front { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/Front + display = Draw=HIST + } + hist lbCToF_T3_Front { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/Front + display = Draw=HIST + } + } + dir Middle { + hist lbCToF_T0_Middle { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/Middle + display = Draw=HIST + } + hist lbCToF_T1_Middle { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/Middle + display = Draw=HIST + } + hist lbCToF_T2_Middle { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/Middle + display = Draw=HIST + } + hist lbCToF_T3_Middle { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/Middle + display = Draw=HIST + } + } + dir End { + hist lbCToF_T0_End { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/End + display = Draw=HIST + } + hist lbCToF_T1_End { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/End + display = Draw=HIST + } + hist lbCToF_T2_End { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/End + display = Draw=HIST + } + hist lbCToF_T3_End { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC/End + display = Draw=HIST + } + } + hist lbCToF_T0_A { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T0_B { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T0_C { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T0_D { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T1_A { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T1_B { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T1_C { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T1_D { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T2_A { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T2_B { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T2_C { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T2_D { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T3_A { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T3_B { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T3_C { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + hist lbCToF_T3_D { + algorithm = HNE + output = AFP/ToF/ToFHitsVsLb/sideC + display = Draw=HIST + } + } + } + } +} + +############################################################ +# Algorithms + +algorithm HNE { + libname = libdqm_algorithms.so + name = Histogram_Not_Empty +} + +algorithm AFPBinContentComp { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 3 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +##### AFPBinContentCompToT2017 + +algorithm AFPBinContentCompToT2017NearA0 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 290.712331067686 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017NearA1 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 316.684303913076 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017NearA2 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 358.752647078107 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017NearA3 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 313.697123770129 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017FarA0 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 435.22592102144 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017FarA1 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 507.930957667639 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017FarA2 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 519.895877176801 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017NearC0 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 347.123372535644 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017NearC1 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 344.280843343399 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017NearC2 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 370.000144656172 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017NearC3 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 390.892193752344 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017FarC0 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 288.696902600624 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017FarC1 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 416.637879941265 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017FarC2 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 372.472028534828 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2017FarC3 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 296.824017348296 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +##### AFPBinContentCompToT2018 + +algorithm AFPBinContentCompToT2018NearA0 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 2338.13428279481 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018NearA1 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 3890.47877427942 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018NearA2 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 3017.89289262347 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018NearA3 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 3506.68744836573 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018FarA0 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 3487.39180182068 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018FarA1 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 4130.0961828058 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018FarA2 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 3822.50323919157 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018FarA3 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 10886.905831021 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018NearC0 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 2325.15975735307 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018NearC1 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 2414.62001343553 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018NearC2 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 4242.3533454526 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018NearC3 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 4646.83252766699 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018FarC0 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 3229.53116814604 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018FarC1 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 3316.80958254239 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018FarC2 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 4458.80843929721 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +algorithm AFPBinContentCompToT2018FarC3 { + libname = libdqm_algorithms.so + name = BinContentComp + thresholds = AFPTestThreshold + NSigma = 4100.89129413606 + reference = AFPOfficialReference + publish = 1 + NormRef = 1 +} + +##### AFPBinsOutOfRangeOccupancy2017 + +algorithm AFPBinsOutOfRangeOccupancy2017FarA0 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.064623201730579 + RANGE_U = 0.082074196601526 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017FarA1 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.069210760996736 + RANGE_U = 0.091298127631908 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017FarA2 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.011390473243954 + RANGE_U = 0.056488146158625 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017NearA0 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.036528025554269 + RANGE_U = 0.047734777429346 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017NearA1 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.042102300740159 + RANGE_U = 0.056155446119697 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017NearA2 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.050365976880481 + RANGE_U = 0.065725886148604 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017NearA3 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.067090599418169 + RANGE_U = 0.084797032284963 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017FarC0 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.056301586864145 + RANGE_U = 0.077068084699265 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017FarC1 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.016128092507202 + RANGE_U = 0.029998648464199 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017FarC2 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.071307409102957 + RANGE_U = 0.096288712524791 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017FarC3 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.089866811133015 + RANGE_U = 0.12027871559395 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017NearC0 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.032829272673564 + RANGE_U = 0.044755449187577 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017NearC1 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.040389786593796 + RANGE_U = 0.052695470105802 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017NearC2 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.048510322299615 + RANGE_U = 0.06161289457124 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2017NearC3 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.060693038117471 + RANGE_U = 0.077891768660102 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +##### AFPBinsOutOfRangeOccupancy2018 + +algorithm AFPBinsOutOfRangeOccupancy2018FarA0 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.061789056797195 + RANGE_U = 0.095892918611016 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018FarA1 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.074662461718807 + RANGE_U = 0.104501384948554 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018FarA2 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.090290622392475 + RANGE_U = 0.125676372520129 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018FarA3 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.11578670021417752 + RANGE_U = 0.17417208030690026 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018NearA0 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.036226795609285 + RANGE_U = 0.054107382368605 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018NearA1 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.043821248963427 + RANGE_U = 0.062959185604291 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018NearA2 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.05094534790969 + RANGE_U = 0.079118366094141 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018NearA3 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.066592735798167 + RANGE_U = 0.095993365257831 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018FarC0 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.058999763929308 + RANGE_U = 0.086273653475891 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018FarC1 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.004631793226854 + RANGE_U = 0.107485126838435 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018FarC2 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.075138850045184 + RANGE_U = 0.1778867226952 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018FarC3 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.088196440131696 + RANGE_U = 0.141099728559779 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018NearC0 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.034514145585625 + RANGE_U = 0.113911177198451 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + +algorithm AFPBinsOutOfRangeOccupancy2018NearC1 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.036386393139167 + RANGE_U = 0.113312810412906 + ignoreval = 0 + thresholds = AFPBinsOutOfRangeThreshold + MaxPublish = 50 +} + algorithm AFPBinsOutOfRangeOccupancy2018NearC2 { libname = libdqm_algorithms.so name = BinsOutOfRange @@ -1838,7 +2782,7 @@ algorithm AFPLBsOutOfRangeClusterFME2017FarC3 { # End Algorithm LBs out of range in ClustersFME histograms 2017 -# Algorithm LBs out of range in ClustersFME histograms 2018 +##### Algorithm LBs out of range in ClustersFME histograms 2018 algorithm AFPLBsOutOfRangeClusterFME2018NearA0 { libname = libdqm_algorithms.so @@ -1910,6 +2854,16 @@ algorithm AFPLBsOutOfRangeClusterFME2018FarA2 { MaxPublish = 50 } +algorithm AFPLBsOutOfRangeClusterFME2018FarA3 { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.05281070917017858 + RANGE_U = 0.08882132193038537 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeClusterFME + MaxPublish = 50 +} + algorithm AFPLBsOutOfRangeClusterFME2018NearC0 { libname = libdqm_algorithms.so name = BinsOutOfRange @@ -1993,6 +2947,86 @@ algorithm AFPLBsOutOfRangeClusterFME2018FarC3 { # End Algorithm LBs out of range in ClustersFME histograms 2018 ##### +##### Algorithm LBs out of range in TrackFE histograms 2017 + +algorithm AFPLBsOutOfRangeTrackFE2017NearA { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.014799335 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeTrackFE + MaxPublish = 50 +} + +algorithm AFPLBsOutOfRangeTrackFE2017FarA { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.001809334 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeTrackFE + MaxPublish = 50 +} + +algorithm AFPLBsOutOfRangeTrackFE2017NearC { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.014350775 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeTrackFE + MaxPublish = 50 +} + +algorithm AFPLBsOutOfRangeTrackFE2017FarC { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.020306089 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeTrackFE + MaxPublish = 50 +} + +##### End Algorithm LBs out of range in TrackFE histograms 2017 + +##### Algorithm LBs out of range in TrackFE histograms 2018 + +algorithm AFPLBsOutOfRangeTrackFE2018NearA { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.015930577 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeTrackFE + MaxPublish = 50 +} + +algorithm AFPLBsOutOfRangeTrackFE2018FarA { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.02267065 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeTrackFE + MaxPublish = 50 +} + +algorithm AFPLBsOutOfRangeTrackFE2018NearC { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.013442334 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeTrackFE + MaxPublish = 50 +} + +algorithm AFPLBsOutOfRangeTrackFE2018FarC { + libname = libdqm_algorithms.so + name = BinsOutOfRange + RANGE_D = 0.019617263 + ignoreval = 0 + thresholds = AFPLBsOutOfRangeTrackFE + MaxPublish = 50 +} + +##### End Algorithm LBs out of range in TrackFE histograms 2018 + ############################################################ @@ -2014,8 +3048,15 @@ thresholds AFPBinsOutOfRangeThreshold { thresholds AFPLBsOutOfRangeClusterFME { limits NbadBins { - warning = 3 + warning = 16 error = 25 } } + +thresholds AFPLBsOutOfRangeTrackFE { + limits NbadBins { + warning = 31 + error = 35 + } +} ########################################################### diff --git a/DataQuality/DataQualityTools/python/DataQualityToolsConfig.py b/DataQuality/DataQualityTools/python/DataQualityToolsConfig.py index 34d2ae7b29cea32f5df844ce7b382ccf222ed522..beec7691cdb696fab80c255df8d1e57350c4388e 100644 --- a/DataQuality/DataQualityTools/python/DataQualityToolsConfig.py +++ b/DataQuality/DataQualityTools/python/DataQualityToolsConfig.py @@ -4,14 +4,11 @@ def DataQualityToolsConfig(flags): from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator - from .DQTDataFlowMonAlg import DQTDataFlowMonAlgConfig from .DQTLumiMonAlg import DQTLumiMonAlgConfig from .DQTBackgroundMon import DQTBackgroundMonAlgConfig from .DQTDetSynchMonAlg import DQTDetSynchMonAlgConfig result = ComponentAccumulator() - # the following should run in all configurations - result.merge(DQTDataFlowMonAlgConfig(flags)) # the following should not run in RAW to ESD, if we're in two-step if flags.DQ.Environment != 'tier0Raw': diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolConverter.cxx b/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolConverter.cxx index f7ba27e56eafad8bc18a2629406a076d1c10d4c3..ea6f3e2cbb1c5e17bdd39b3087292b15b2fa777c 100644 --- a/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolConverter.cxx +++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/src/AthenaPoolConverter.cxx @@ -197,15 +197,15 @@ Placement AthenaPoolConverter::setPlacementWithType(const std::string& tname, co } pos1 = output.find('[', pos3); } - if (tname.substr(0, 14) == "DataHeaderForm") { + if (tname.compare(0, 14, "DataHeaderForm") == 0) { containerName = dhContainerPrefix + "Form" + "(" + tname + ")"; - } else if (tname.substr(0, 10) == "DataHeader") { - if (key.substr(key.size() - 1) == "/") { + } else if (tname.compare(0, 10, "DataHeader") == 0) { + if (key[key.size() - 1] == '/') { containerName = dhContainerPrefix + "(" + key + tname + ")"; } else { containerName = dhContainerPrefix + "(" + tname + ")"; } - } else if (tname.substr(0, 13) == "AttributeList") { + } else if (tname.compare(0, 13, "AttributeList") == 0) { containerName = "ROOTTREE:POOLCollectionTree(" + key + ")"; } else { const std::string typeTok = "<type>", keyTok = "<key>"; diff --git a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx index d223abd5cd5e9668283989b448b46fabab8bc4d0..9c6a333179cf69c8b87fecdc0567c4d01929c638 100644 --- a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx +++ b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx @@ -69,7 +69,7 @@ StatusCode PoolSvc::initialize() { if (!m_shareCat) { bool allGood = true; for (auto& catalog : m_readCatalog.value()) { - if (catalog.substr(0, 16) == "xmlcatalog_file:") { + if (catalog.compare(0, 16, "xmlcatalog_file:") == 0) { const std::string& fileName = catalog.substr(16); if (!iomgr->io_register(this, IIoComponentMgr::IoMode::READ, fileName, fileName).isSuccess()) { ATH_MSG_FATAL("could not register [" << catalog << "] for input !"); @@ -79,7 +79,7 @@ StatusCode PoolSvc::initialize() { } } } - if (m_writeCatalog.value().substr(0, 16) == "xmlcatalog_file:") { + if (m_writeCatalog.value().compare(0, 16, "xmlcatalog_file:") == 0) { const std::string& fileName = m_writeCatalog.value().substr(16); if (!iomgr->io_register(this, IIoComponentMgr::IoMode::WRITE, fileName, fileName).isSuccess()) { ATH_MSG_FATAL("could not register [" << m_writeCatalog.value() << "] for input !"); @@ -151,7 +151,7 @@ StatusCode PoolSvc::io_reinit() { if (!m_shareCat) { std::vector<std::string> readcat = m_readCatalog.value(); for (std::size_t icat = 0, imax = readcat.size(); icat < imax; icat++) { - if (readcat[icat].substr(0, 16) == "xmlcatalog_file:") { + if (readcat[icat].compare(0, 16, "xmlcatalog_file:") == 0) { std::string fileName = readcat[icat].substr(16); if (iomgr->io_contains(this, fileName)) { if (!iomgr->io_retrieve(this, fileName).isSuccess()) { @@ -164,7 +164,7 @@ StatusCode PoolSvc::io_reinit() { } // all good... copy over. m_readCatalog = readcat; - if (m_writeCatalog.value().substr(0, 16) == "xmlcatalog_file:") { + if (m_writeCatalog.value().compare(0, 16, "xmlcatalog_file:") == 0) { std::string fileName = m_writeCatalog.value().substr(16); if (iomgr->io_contains(this, fileName)) { if (!iomgr->io_retrieve(this, fileName).isSuccess()) { @@ -288,9 +288,9 @@ Token* PoolSvc::registerForWrite(const Placement* placement, unsigned int contextId = IPoolSvc::kOutputStream; const std::string& auxString = placement->auxString(); if (!auxString.empty()) { - if (auxString.substr(0, 6) == "[CTXT=") { + if (auxString.compare(0, 6, "[CTXT=") == 0) { ::sscanf(auxString.c_str(), "[CTXT=%08X]", &contextId); - } else if (auxString.substr(0, 8) == "[CLABEL=") { + } else if (auxString.compare(0, 8, "[CLABEL=") == 0) { contextId = this->getOutputContext(auxString); } if (contextId >= m_persistencySvcVec.size()) { @@ -310,9 +310,9 @@ void PoolSvc::setObjPtr(void*& obj, const Token* token) { unsigned int contextId = IPoolSvc::kInputStream; const std::string& auxString = token->auxString(); if (!auxString.empty()) { - if (auxString.substr(0, 6) == "[CTXT=") { + if (auxString.compare(0, 6, "[CTXT=") == 0) { ::sscanf(auxString.c_str(), "[CTXT=%08X]", &contextId); - } else if (auxString.substr(0, 8) == "[CLABEL=") { + } else if (auxString.compare(0, 8, "[CLABEL=") == 0) { contextId = this->getInputContext(auxString); } if (contextId >= m_persistencySvcVec.size()) { @@ -404,11 +404,11 @@ const pool::IFileCatalog* PoolSvc::catalog() const { //__________________________________________________________________________ void PoolSvc::lookupBestPfn(const std::string& token, std::string& pfn, std::string& type) const { std::string dbID; - if (token.substr(0, 4) == "PFN:") { + if (token.compare(0, 4, "PFN:") == 0) { m_catalog->lookupFileByPFN(token.substr(4), dbID, type); // PFN -> FID - } else if (token.substr(0, 4) == "LFN:") { + } else if (token.compare(0, 4, "LFN:") == 0) { m_catalog->lookupFileByLFN(token.substr(4), dbID); // LFN -> FID - } else if (token.substr(0, 4) == "FID:") { + } else if (token.compare(0, 4, "FID:") == 0) { dbID = token.substr(4); } else if (token.size() > Guid::null().toString().size()) { // full token Token tok; @@ -457,7 +457,7 @@ pool::ICollection* PoolSvc::createCollection ATLAS_NOT_THREAD_SAFE std::lock_guard<CallMutex> lock(*m_pers_mut[contextId]); // Check POOL FileCatalog entry. bool insertFile = false; - if (connection.substr(0, 4) == "PFN:") { + if (connection.compare(0, 4, "PFN:") == 0) { std::string fid, fileType; m_catalog->lookupFileByPFN(connection.substr(4), fid, fileType); if (fid.empty()) { // No entry in file catalog @@ -804,7 +804,7 @@ StatusCode PoolSvc::setAttribute(const std::string& optName, } bool retError = false; std::string objName; - bool hasTTreeName = (contName.length() > 6 && contName.substr(0, 6) == "TTree="); + bool hasTTreeName = (contName.length() > 6 && contName.compare(0, 6, "TTree=") == 0); if (contName.empty() || hasTTreeName || m_persistencySvcVec[contextId]->session().defaultConnectionPolicy().writeModeForNonExisting() == pool::DatabaseConnectionPolicy::RAISE_ERROR) { objName = hasTTreeName ? contName.substr(6) : contName; if (data[data.size() - 1] == 'L') { @@ -871,7 +871,7 @@ StatusCode PoolSvc::setFrontierCache(const std::string& conn) const { if (dbset != nullptr) { for (int irep = 0, nrep = dbset->numberOfReplicas(); irep < nrep; ++irep) { const std::string pcon = dbset->replica(irep).connectionString(); - if (pcon.substr(0, 9) == "frontier:") { + if (pcon.compare(0, 9, "frontier:") == 0) { physcons.push_back(pcon); } } @@ -879,7 +879,7 @@ StatusCode PoolSvc::setFrontierCache(const std::string& conn) const { } else { ATH_MSG_DEBUG("setFrontierCache: Could not find any replicas for " << conn); } - } else if (conn.substr(0, 9) == "frontier:") { + } else if (conn.compare(0, 9, "frontier:") == 0) { physcons.push_back(conn); } // check if any replicas will try and use frontier @@ -914,7 +914,7 @@ pool::IFileCatalog* PoolSvc::createCatalog() { ctlg->removeCatalog("*"); for (auto& catalog : m_readCatalog.value()) { ATH_MSG_DEBUG("POOL ReadCatalog is " << catalog); - if (catalog.substr(0, 8) == "apcfile:" || catalog.substr(0, 7) == "prfile:") { + if (catalog.compare(0, 8,"apcfile:") == 0 || catalog.compare(0, 7, "prfile:") == 0) { std::string::size_type cpos = catalog.find(':'); // check for file accessed via ATLAS_POOLCOND_PATH std::string file = poolCondPath(catalog.substr(cpos + 1)); diff --git a/Database/EventIndex/EventIndexProducer/python/POOL2EI_Lib.py b/Database/EventIndex/EventIndexProducer/python/POOL2EI_Lib.py index aa9e0639bbb4c0cc108df988877653cb95b851cf..0386489d1bec9d1e7f247143f92ac4bc81ae6fce 100755 --- a/Database/EventIndex/EventIndexProducer/python/POOL2EI_Lib.py +++ b/Database/EventIndex/EventIndexProducer/python/POOL2EI_Lib.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration # @file POOL2EI_Lib.py # @purpose provide components to get EventIndex data from pool files @@ -146,7 +146,6 @@ class POOL2EI(PyAthena.Alg): TriggerFlags.configurationSourceList=['ds'] import AthenaPython.PyAthena as PyAthena self.trigDec = PyAthena.py_tool('Trig::TrigDecisionTool/TrigDecisionTool') - self.trigDec.ExperimentalAndExpertMethods().enable() if self.HaveXHlt: self.trigDec.setProperty("ConfigTool","TrigConf::xAODConfigTool") self.trigDec.setProperty("TrigDecisionKey","xTrigDecision") diff --git a/Database/IOVDbSvc/src/IOVDbStringFunctions.cxx b/Database/IOVDbSvc/src/IOVDbStringFunctions.cxx index 2d8571b8f496b12e8c44abf88f829fa41ab008aa..29fd17833019a66b601cef2423d500558eec4be9 100644 --- a/Database/IOVDbSvc/src/IOVDbStringFunctions.cxx +++ b/Database/IOVDbSvc/src/IOVDbStringFunctions.cxx @@ -23,7 +23,7 @@ namespace IOVDbNamespace{ makeChannel(const std::string& strval, const int defchan) { // construct a cool channelId from the string value (numeric) // if empty, use the default value - if (strval!="") return std::stoi(strval); + if (!strval.empty()) return std::stoi(strval); return defchan; } @@ -136,7 +136,7 @@ namespace IOVDbNamespace{ bool looksLikeMagicTag(const std::string & candidateTag){ - return (candidateTag.substr(0,7)=="TagInfo" and + return (candidateTag.compare(0,7, "TagInfo")==0 and candidateTag.find('/')!=std::string::npos); } diff --git a/Database/IOVDbSvc/src/IOVDbSvc.cxx b/Database/IOVDbSvc/src/IOVDbSvc.cxx index 3bd167605cae24f4199c07d8874ee80080cca23b..40d73835d0bed5d6024a3e676b9a88b09473cddd 100644 --- a/Database/IOVDbSvc/src/IOVDbSvc.cxx +++ b/Database/IOVDbSvc/src/IOVDbSvc.cxx @@ -1000,8 +1000,8 @@ StatusCode IOVDbSvc::setupFolders() { for (auto& folderdata : allFolderdata) { const std::string& ifname=folderdata.folderName(); - if (ifname.substr(0,prefix.size())==prefix && - (ifname.size()==prefix.size() || ifname.substr(prefix.size(),1)=="/")) { + if (ifname.compare(0,prefix.size(), prefix)==0 && + (ifname.size()==prefix.size() || ifname[prefix.size()]=='/')) { //Match! folderdata.applyOverrides(keys,msg()); }// end if @@ -1090,7 +1090,7 @@ StatusCode IOVDbSvc::setupFolders() { } for (const auto & thisFolder : m_foldermap) { IOVDbFolder* fptr=thisFolder.second; - if ((fptr->folderName()).substr(0,match.size())==match) { + if ((fptr->folderName()).compare(0,match.size(), match)==0) { fptr->setWriteMeta(); ATH_MSG_INFO( "Folder " << fptr->folderName() << " will be written to file metadata" ); } diff --git a/Event/EventCommonTPCnv/EventCommonTPCnv/ATLAS_CHECK_THREAD_SAFETY b/Event/EventCommonTPCnv/EventCommonTPCnv/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..6d7d899d53afde0a21605e758f24b96c83251a5a --- /dev/null +++ b/Event/EventCommonTPCnv/EventCommonTPCnv/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +EventCommonTPCnv/EventCommonTPCnv diff --git a/Event/EventCommonTPCnv/test/HepLorentzVectorCnv_p1_test.cxx b/Event/EventCommonTPCnv/test/HepLorentzVectorCnv_p1_test.cxx index 222bc5020b1ba9417a3fa36ea2bdc726058d56e9..54d7332559864944c4c904bb3305be9ddff8d628 100644 --- a/Event/EventCommonTPCnv/test/HepLorentzVectorCnv_p1_test.cxx +++ b/Event/EventCommonTPCnv/test/HepLorentzVectorCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/HepLorentzVectorCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "CLHEP/Vector/LorentzVector.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -38,7 +37,7 @@ void testit (const CLHEP::HepLorentzVector& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -49,7 +48,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "HepLorentzVectorCnv_p1_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p1_test.cxx b/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p1_test.cxx index 0a499cd727847ed92ec7a56e5aa928bcce4e6849..13b04077f5fe0a1f606676405bb43d85053bf290 100644 --- a/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p1_test.cxx +++ b/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p1_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** * @file EventCommonTPCnv/test/INav4MomAssocsCnv_p1_test.cxx @@ -18,6 +18,7 @@ #include "StoreGate/StoreGateSvc.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/ServiceHandle.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -65,7 +66,7 @@ void testit (const INav4MomAssocs& trans1, StoreGateSvc* sg) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -98,7 +99,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "INav4MomAssocsCnv_p1_test\n"; diff --git a/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p2_test.cxx b/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p2_test.cxx index 133acf63a16e0b00ac015d0f9774c99f633573c2..65a7010946d60ea01cf64b847decbff05458ac57 100644 --- a/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p2_test.cxx +++ b/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p2_test.cxx @@ -17,6 +17,7 @@ #include "SGTools/TestStore.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/ThreadLocalContext.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -64,7 +65,7 @@ void testit (const INav4MomAssocs& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; (void)Gaudi::Hive::currentContext(); @@ -96,7 +97,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "INav4MomAssocsCnv_p2_test\n"; SGTest::initTestStore(); diff --git a/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p3_test.cxx b/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p3_test.cxx index 5931e6e173c4441f30bfec207e01ae16809365fe..be56da407f339f8fc81fef415be0524f64cd3ac7 100644 --- a/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p3_test.cxx +++ b/Event/EventCommonTPCnv/test/INav4MomAssocsCnv_p3_test.cxx @@ -17,6 +17,7 @@ #include "SGTools/TestStore.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/ThreadLocalContext.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -64,7 +65,7 @@ void testit (const INav4MomAssocs& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; (void)Gaudi::Hive::currentContext(); @@ -96,7 +97,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "INav4MomAssocsCnv_p3_test\n"; SGTest::initTestStore(); diff --git a/Event/EventCommonTPCnv/test/P4EEtaPhiMCnv_p1_test.cxx b/Event/EventCommonTPCnv/test/P4EEtaPhiMCnv_p1_test.cxx index adf9cc98eb4587e9c741a0ab511bf1b206383638..1996ceb751fc807617b383bce9837a6586ac8ecf 100644 --- a/Event/EventCommonTPCnv/test/P4EEtaPhiMCnv_p1_test.cxx +++ b/Event/EventCommonTPCnv/test/P4EEtaPhiMCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4EEtaPhiMCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4EEtaPhiMCnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4EEtaPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4EEtaPhiMCnv_p1_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4EEtaPhiMCnv_p2_test.cxx b/Event/EventCommonTPCnv/test/P4EEtaPhiMCnv_p2_test.cxx index 41cd8b3cc69abf8a336ed68341da18a9a7caddbf..127ad822e345244e99c97700078033d63845779c 100644 --- a/Event/EventCommonTPCnv/test/P4EEtaPhiMCnv_p2_test.cxx +++ b/Event/EventCommonTPCnv/test/P4EEtaPhiMCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4EEtaPhiMCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4EEtaPhiMCnv_p2.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4EEtaPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4EEtaPhiMCnv_p2_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4IPtCotThPhiMCnv_p1_test.cxx b/Event/EventCommonTPCnv/test/P4IPtCotThPhiMCnv_p1_test.cxx index de1d3510e29005ef2c2bb1f8c388a7264fbe112f..e1d57279604d6fa52a2406656dedaab44f0f5958 100644 --- a/Event/EventCommonTPCnv/test/P4IPtCotThPhiMCnv_p1_test.cxx +++ b/Event/EventCommonTPCnv/test/P4IPtCotThPhiMCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4IPtCotThPhiMCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4IPtCotThPhiMCnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4IPtCotThPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4IPtCotThPhiMCnv_p1_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p1_test.cxx b/Event/EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p1_test.cxx index 7eb80e4e2923b2488f8ad665497f55a73d18a4b1..26c5a2e2856bf1049dc6863565d1ba5a5386e257 100644 --- a/Event/EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p1_test.cxx +++ b/Event/EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4ImplEEtaPhiMCnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4ImplEEtaPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4ImplEEtaPhiMCnv_p1_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p2_test.cxx b/Event/EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p2_test.cxx index b003b177a82abf9c828b9d2fef3a279778159cea..11866c0e883c07b58f9da31be52ed44fc47bf844 100644 --- a/Event/EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p2_test.cxx +++ b/Event/EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4ImplEEtaPhiMCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4ImplEEtaPhiMCnv_p2.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4ImplEEtaPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4ImplEEtaPhiMCnv_p2_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p1_test.cxx b/Event/EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p1_test.cxx index 193c23a4fe3c5073ccc30c60ff01b3dffb4b17c3..0c39f2826d8d40dcd734c34aed6209a3f64b0897 100644 --- a/Event/EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p1_test.cxx +++ b/Event/EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4ImplPtEtaPhiMCnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4ImplPtEtaPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4ImplPtEtaPhiMCnv_p1_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p2_test.cxx b/Event/EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p2_test.cxx index 20ebb62d2eb69caa5b0236ea316b3fbb9a6bdb86..c031675476c67c1f51ada419210ee8cbd2e32c9f 100644 --- a/Event/EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p2_test.cxx +++ b/Event/EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4ImplPtEtaPhiMCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4ImplPtEtaPhiMCnv_p2.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4ImplPtEtaPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4ImplPtEtaPhiMCnv_p2_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4PtEtaPhiMCnv_p1_test.cxx b/Event/EventCommonTPCnv/test/P4PtEtaPhiMCnv_p1_test.cxx index d557b8b839b160eec0909fb4e1f6d4b807be3d67..db3c2d94ae35f21050848bd61ff421aa0b04f392 100644 --- a/Event/EventCommonTPCnv/test/P4PtEtaPhiMCnv_p1_test.cxx +++ b/Event/EventCommonTPCnv/test/P4PtEtaPhiMCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4PtEtaPhiMCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4PtEtaPhiMCnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4PtEtaPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4PtEtaPhiMCnv_p1_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4PtEtaPhiMCnv_p2_test.cxx b/Event/EventCommonTPCnv/test/P4PtEtaPhiMCnv_p2_test.cxx index c48c84ba98613643383b6f60d8ecc2f4c0ba4951..40c84e4d2d69e66cca5bfc25390c5213ff6513e4 100644 --- a/Event/EventCommonTPCnv/test/P4PtEtaPhiMCnv_p2_test.cxx +++ b/Event/EventCommonTPCnv/test/P4PtEtaPhiMCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4PtEtaPhiMCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4PtEtaPhiMCnv_p2.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4PtEtaPhiM& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4PtEtaPhiMCnv_p2_test\n"; test1(); diff --git a/Event/EventCommonTPCnv/test/P4PxPyPzECnv_p1_test.cxx b/Event/EventCommonTPCnv/test/P4PxPyPzECnv_p1_test.cxx index e72695e13cda888d52160fd234b6e1bb4d3e52c3..fc0a21771d9e3adec19d5589fee9a369f3c7bffc 100644 --- a/Event/EventCommonTPCnv/test/P4PxPyPzECnv_p1_test.cxx +++ b/Event/EventCommonTPCnv/test/P4PxPyPzECnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/* - */ /** * @file EventCommonTPCnv/test/P4PxPyPzECnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventCommonTPCnv/P4PxPyPzECnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -40,7 +39,7 @@ void testit (const P4PxPyPzE& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; @@ -51,7 +50,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "P4PxPyPzECnv_p1_test\n"; test1(); diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/L1Signal_jobOptions.py b/Event/EventOverlay/EventOverlayJobTransforms/share/L1Signal_jobOptions.py deleted file mode 100644 index ec4fcc9c95bd97a4d3cd10cf2af8ea3edd5f3fda..0000000000000000000000000000000000000000 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/L1Signal_jobOptions.py +++ /dev/null @@ -1,114 +0,0 @@ - -include.block ( "EventOverlayJobTransforms/L1Signal_jobOptions.py" ) - -from AthenaCommon.Logging import logging - -from AthenaCommon.DetFlags import DetFlags -from AthenaCommon.GlobalFlags import globalflags -from Digitization.DigitizationFlags import jobproperties - -if DetFlags.overlay.LVL1_on(): - - from AthenaCommon.AlgSequence import AlgSequence - topSequence = AlgSequence() - - if DetFlags.simulateLVL1.LAr_on(): - from LArL1Sim.LArL1SimConf import * - newLArTTL1Maker=LArTTL1Maker("newLArTTL1Maker") - # check if LArdigitization is run before. If yes, uses hit map from detector store produces from lardigitization - if not hasattr(topSequence,"digitmaker2"): - newLArTTL1Maker.useMapFromStore = False - - job += newLArTTL1Maker - # Noise - if not jobproperties.Digitization.doCaloNoise.get_Value(): - job.newLArTTL1Maker.NoiseOnOff= False #(default:True) - # PileUp - job.newLArTTL1Maker.PileUp = True - job.newLArTTL1Maker.EventStore = "BkgEvent_0_SG" - - if DetFlags.simulateLVL1.Tile_on(): - from TileSimAlgs.TileSimAlgsConf import TileHitToTTL1 - newTileHitToTTL1=TileHitToTTL1("newTileHitToTTL1") - newTileHitToTTL1.TileHitContainer=job.TileHitToTTL1.TileHitContainer - newTileHitToTTL1.TileInfoName=job.TileHitToTTL1.TileInfoName - newTileHitToTTL1.TileTTL1Container=job.TileHitToTTL1.TileTTL1Container - newTileHitToTTL1.EvtStore = "BkgEvent_0_SG" - job += newTileHitToTTL1 - - from Digitization.DigitizationFlags import jobproperties - newTileHitToTTL1.RndmSvc=jobproperties.Digitization.rndmSvc() - jobproperties.Digitization.rndmSeedList.addSeed("newTile_HitToTTL1", 2789801, 189245514) - - from AthenaCommon.BeamFlags import jobproperties - if jobproperties.Beam.beamType == 'cosmics': - newTileTTL1Cosmics=TileHitToTTL1("newTileTTL1Cosmics") - newTileTTL1Cosmics.RndmSvc=jobproperties.Digitization.rndmSvc() - jobproperties.Digitization.rndmSeedList.addSeed("newTile_TTL1Cosmics", 1789891, 189240513) - newTileTTL1Cosmics.EvtStore = "BkgEvent_0_SG" - job += newTileTTL1Cosmics - job.newTileTTL1Cosmics.TileTTL1Type = job.TileHitToTTL1_Cosmics.TileTTL1Type - job.newTileTTL1Cosmics.TileHitContainer = job.TileHitToTTL1_Cosmics.TileHitContainer - job.newTileTTL1Cosmics.TileTTL1Container = job.TileHitToTTL1_Cosmics.TileTTL1Container - job.newTileTTL1Cosmics.TileMBTSTTL1Container = job.TileHitToTTL1_Cosmics.TileMBTSTTL1Container - - if DetFlags.digitize.LVL1_on(): - - #-------------------------------------------------------------- - # RPC stuff - #-------------------------------------------------------------- - if DetFlags.simulateLVL1.RPC_on(): - from TrigT1RPCsteering.TrigT1RPCsteeringConf import * - newTrigT1RPC = TrigT1RPC("newTrigT1RPC") - newTrigT1RPC.EventStore = "BkgEvent_0_SG" - job += newTrigT1RPC - - #-------------------------------------------------------------- - # TGC stuff - #-------------------------------------------------------------- - if DetFlags.simulateLVL1.TGC_on(): - from TrigT1TGC.TrigT1TGCConf import LVL1TGCTrigger__LVL1TGCTrigger - newTrigT1TGC = LVL1TGCTrigger__LVL1TGCTrigger ("newTrigT1TGC") - newTrigT1TGC.EventStore = "BkgEvent_0_SG" - job += newTrigT1TGC - job.newTrigT1TGC.InputData_perEvent = "TGC_DIGITS" - job.newTrigT1TGC.MuCTPIInput_TGC = "L1MuctpiStoreTGC" - job.newTrigT1TGC.MaskFileName12 = "TrigT1TGCMaskedChannel._12.db" - - #-------------------------------------------------------------- - # TrigT1Muctpi Algos - #-------------------------------------------------------------- - if DetFlags.simulateLVL1.RPC_on() or DetFlags.simulateLVL1.TGC_on(): - from TrigT1Muctpi.TrigT1MuctpiConfig import L1Muctpi - #ACH job += L1Muctpi("newL1Muctpi") - #ACH job.newL1Muctpi.StoreGateSvc = "BkgEvent_0_SG" - #------------------------------------------------------- - # TrigT1MBTS Alg - #------------------------------------------------------- - if DetFlags.simulateLVL1.Calo_on(): - from TrigT1MBTS.TrigT1MBTSConf import LVL1__TrigT1MBTS - job += LVL1__TrigT1MBTS("newTrigT1MBTS") - job.newTrigT1MBTS.EvtStore = "BkgEvent_0_SG" - - #------------------------------------------------------- - # TrigT1BCM Alg - #------------------------------------------------------- - if DetFlags.simulateLVL1.BCM_on(): - from TrigT1BCM.TrigT1BCMConf import LVL1__TrigT1BCM - job += LVL1__TrigT1BCM("newTrigT1BCM") - job.newTrigT1BCM.EvtStore = "BkgEvent_0_SG" - - #------------------------------------------------------- - # TrigT1CTP Algos - #------------------------------------------------------- - from TrigT1CTP.TrigT1CTPConfig import CTPSimulationInOverlay - job += CTPSimulationInOverlay("newCTPSimulationInDigi","CTPSimulation2") - job.newCTPSimulationInDigi.EvtStore = "BkgEvent_0_SG" - - #------------------------------------------------------- - # TrigT1RoIB Algos - #------------------------------------------------------- - from TrigT1RoIB.TrigT1RoIBConfig import RoIBuilderInDigi - job += RoIBuilderInDigi("newRoIBuilder") - job.newRoIBuilder.StoreGateSvc = "BkgEvent_0_SG" - diff --git a/Event/EventTPCnv/EventTPCnv/ATLAS_CHECK_THREAD_SAFETY b/Event/EventTPCnv/EventTPCnv/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..16047dac0bcbb1aba09a6c8f6dc30d0e4f575518 --- /dev/null +++ b/Event/EventTPCnv/EventTPCnv/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +Event/EventTPCnv/EventTPCnv diff --git a/Event/EventTPCnv/EventTPCnv/EventIDCnv_p1.h b/Event/EventTPCnv/EventTPCnv/EventIDCnv_p1.h index a0e9abb38a8a76d1d3a84bfbf8840df309fdbd48..811486748021704a1742af1ee06fede7e1f94553 100644 --- a/Event/EventTPCnv/EventTPCnv/EventIDCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/EventIDCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTIDCNV_P1_H @@ -11,16 +11,16 @@ class MsgStream; -class EventIDCnv_p1 : public T_AthenaPoolTPCnvBase<EventID, EventID_p1> { +class EventIDCnv_p1 : public T_AthenaPoolTPCnvConstBase<EventID, EventID_p1> { public: EventIDCnv_p1() {} - virtual void persToTrans(const EventID_p1* persObj, EventID* transObj, MsgStream &log) override; - virtual void transToPers(const EventID* transObj, EventID_p1* persObj, MsgStream &log) override; - void persToTrans(const EventID_p1* persObj, EventID* transObj, MsgStream &log) const; - void transToPers(const EventID* transObj, EventID_p1* persObj, MsgStream &log) const; + using base_class::persToTrans; + using base_class::transToPers; - virtual EventID* createTransient (const EventID_p1* persObj, MsgStream& log) override; - EventID* createTransient (const EventID_p1* persObj, MsgStream& log) const; + virtual void persToTrans(const EventID_p1* persObj, EventID* transObj, MsgStream &log) const override; + virtual void transToPers(const EventID* transObj, EventID_p1* persObj, MsgStream &log) const override; + + virtual EventID* createTransientConst (const EventID_p1* persObj, MsgStream& log) const override; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p1.h b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p1.h index 7a86776a33ff2c432825e399934796eceb0b6157..07dd4a5bf6d073214ac7e68d63dee6cbce610eda 100644 --- a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTINFOCNV_P1_H @@ -10,17 +10,17 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class EventInfoCnv_p1 : public T_AthenaPoolTPCnvBase<EventInfo, EventInfo_p1> { +class EventInfoCnv_p1 : public T_AthenaPoolTPCnvConstBase<EventInfo, EventInfo_p1> { public: EventInfoCnv_p1() {} - virtual void persToTrans(const EventInfo_p1* persObj, EventInfo* transObj, MsgStream &log) override; - virtual void transToPers(const EventInfo* transObj, EventInfo_p1* persObj, MsgStream &log) override; - void persToTrans(const EventInfo_p1* persObj, EventInfo* transObj, MsgStream &log) const; - void transToPers(const EventInfo* transObj, EventInfo_p1* persObj, MsgStream &log) const; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const EventInfo_p1* persObj, EventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const EventInfo* transObj, EventInfo_p1* persObj, MsgStream &log) const override; // needed to handle specific default constructor of EventInfo - virtual EventInfo *createTransient( const EventInfo_p1* persObj, MsgStream &log) override; - EventInfo *createTransient( const EventInfo_p1* persObj, MsgStream &log) const; + virtual EventInfo *createTransientConst( const EventInfo_p1* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p2.h b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p2.h index dbd9c29b196ff6741572269a40f7a975cd0d4cce..a5b1310c510292e43ec8d314127ceecbc362eeff 100644 --- a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTINFOCNV_P2_H @@ -10,18 +10,17 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class EventInfoCnv_p2 : public T_AthenaPoolTPCnvBase<EventInfo, EventInfo_p2> { +class EventInfoCnv_p2 : public T_AthenaPoolTPCnvConstBase<EventInfo, EventInfo_p2> { public: EventInfoCnv_p2() {} - virtual void persToTrans(const EventInfo_p2* persObj, EventInfo* transObj, MsgStream &log) override; - virtual void transToPers(const EventInfo* transObj, EventInfo_p2* persObj, MsgStream &log) override; + using base_class::persToTrans; + using base_class::transToPers; - void persToTrans(const EventInfo_p2* persObj, EventInfo* transObj, MsgStream &log) const; - void transToPers(const EventInfo* transObj, EventInfo_p2* persObj, MsgStream &log) const; + virtual void persToTrans(const EventInfo_p2* persObj, EventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const EventInfo* transObj, EventInfo_p2* persObj, MsgStream &log) const override; // needed to handle specific default constructor of EventInfo - virtual EventInfo *createTransient( const EventInfo_p2* persObj, MsgStream &log) override; - EventInfo *createTransient( const EventInfo_p2* persObj, MsgStream &log) const; + virtual EventInfo *createTransientConst( const EventInfo_p2* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p3.h b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p3.h index 84d12821da3b675791cb251daa8179c832b52c3b..3d7d2afb0b387bb174dbc7654d33715d8bc2a444 100644 --- a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p3.h +++ b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p3.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTINFOCNV_P3_H @@ -10,18 +10,17 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class EventInfoCnv_p3 : public T_AthenaPoolTPCnvBase<EventInfo, EventInfo_p3> { +class EventInfoCnv_p3 : public T_AthenaPoolTPCnvConstBase<EventInfo, EventInfo_p3> { public: EventInfoCnv_p3() {} - virtual void persToTrans(const EventInfo_p3* persObj, EventInfo* transObj, MsgStream &log) override; - virtual void transToPers(const EventInfo* transObj, EventInfo_p3* persObj, MsgStream &log) override; + using base_class::persToTrans; + using base_class::transToPers; - void persToTrans(const EventInfo_p3* persObj, EventInfo* transObj, MsgStream &log) const; - void transToPers(const EventInfo* transObj, EventInfo_p3* persObj, MsgStream &log) const; + virtual void persToTrans(const EventInfo_p3* persObj, EventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const EventInfo* transObj, EventInfo_p3* persObj, MsgStream &log) const override; // needed to handle specific default constructor of EventInfo - virtual EventInfo *createTransient( const EventInfo_p3* persObj, MsgStream &log) override; - EventInfo *createTransient( const EventInfo_p3* persObj, MsgStream &log) const; + virtual EventInfo *createTransientConst( const EventInfo_p3* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p4.h b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p4.h index de23426dd30a2823fe6c52b2f75e86b06725c6b8..0dd2c4f173f103c30a5a5680d3a24e865f22617e 100644 --- a/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p4.h +++ b/Event/EventTPCnv/EventTPCnv/EventInfoCnv_p4.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTINFOCNV_P4_H @@ -10,19 +10,17 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class EventInfoCnv_p4 : public T_AthenaPoolTPCnvBase<EventInfo, EventInfo_p4> { +class EventInfoCnv_p4 : public T_AthenaPoolTPCnvConstBase<EventInfo, EventInfo_p4> { public: EventInfoCnv_p4() {} - virtual void persToTrans(const EventInfo_p4* persObj, EventInfo* transObj, MsgStream &log) override; - virtual void transToPers(const EventInfo* transObj, EventInfo_p4* persObj, MsgStream &log) override; + using base_class::persToTrans; + using base_class::transToPers; - void persToTrans(const EventInfo_p4* persObj, EventInfo* transObj, MsgStream &log) const; - void transToPers(const EventInfo* transObj, EventInfo_p4* persObj, MsgStream &log) const; + virtual void persToTrans(const EventInfo_p4* persObj, EventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const EventInfo* transObj, EventInfo_p4* persObj, MsgStream &log) const override; // needed to handle specific default constructor of EventInfo - virtual EventInfo *createTransient( const EventInfo_p4* persObj, MsgStream &log) override; - - EventInfo *createTransient( const EventInfo_p4* persObj, MsgStream &log) const; + virtual EventInfo *createTransientConst( const EventInfo_p4* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p1.h b/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p1.h index 32e8c0ba4975b712d7dc3c523e5e5ed46781edd3..7e10ceb49c0899bfdf501bb6815c477e0458f727 100644 --- a/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTSTREAMINFOCNV_P1_H @@ -20,12 +20,14 @@ class MsgStream; /** @class EventStreamInfoCnv_p1 * @brief This class provides the converter to customize the saving of EventStreamInfo_p1. **/ -class EventStreamInfoCnv_p1 : public T_AthenaPoolTPCnvBase<EventStreamInfo, EventStreamInfo_p1> { +class EventStreamInfoCnv_p1 : public T_AthenaPoolTPCnvConstBase<EventStreamInfo, EventStreamInfo_p1> { public: EventStreamInfoCnv_p1() {} + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const EventStreamInfo_p1* persObj, EventStreamInfo* transObj, MsgStream &log); - virtual void transToPers(const EventStreamInfo* transObj, EventStreamInfo_p1* persObj, MsgStream &log); + virtual void persToTrans(const EventStreamInfo_p1* persObj, EventStreamInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const EventStreamInfo* transObj, EventStreamInfo_p1* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p2.h b/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p2.h index 39da9a377733c472e236fd501911bfae2081464c..8420904eb52cbdcbb4ef8a5a066d7b889c18a225 100644 --- a/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTSTREAMINFOCNV_P2_H @@ -20,12 +20,14 @@ class MsgStream; /** @class EventStreamInfoCnv_p2 * @brief This class provides the converter to customize the saving of EventStreamInfo_p2. **/ -class EventStreamInfoCnv_p2 : public T_AthenaPoolTPCnvBase<EventStreamInfo, EventStreamInfo_p2> { +class EventStreamInfoCnv_p2 : public T_AthenaPoolTPCnvConstBase<EventStreamInfo, EventStreamInfo_p2> { public: EventStreamInfoCnv_p2() {} + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const EventStreamInfo_p2* persObj, EventStreamInfo* transObj, MsgStream &log); - virtual void transToPers(const EventStreamInfo* transObj, EventStreamInfo_p2* persObj, MsgStream &log); + virtual void persToTrans(const EventStreamInfo_p2* persObj, EventStreamInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const EventStreamInfo* transObj, EventStreamInfo_p2* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p3.h b/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p3.h index 97014a5db28e09920f9ff45701684bdc8842b817..b23f8cca477085c92dc2b03a8a3d24e6f58a8803 100644 --- a/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p3.h +++ b/Event/EventTPCnv/EventTPCnv/EventStreamInfoCnv_p3.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTSTREAMINFOCNV_P3_H @@ -20,12 +20,14 @@ class MsgStream; /** @class EventStreamInfoCnv_p3 * @brief This class provides the converter to customize the saving of EventStreamInfo_p3. **/ -class EventStreamInfoCnv_p3 : public T_AthenaPoolTPCnvBase<EventStreamInfo, EventStreamInfo_p3> { +class EventStreamInfoCnv_p3 : public T_AthenaPoolTPCnvConstBase<EventStreamInfo, EventStreamInfo_p3> { public: EventStreamInfoCnv_p3() {} + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const EventStreamInfo_p3* persObj, EventStreamInfo* transObj, MsgStream &log); - virtual void transToPers(const EventStreamInfo* transObj, EventStreamInfo_p3* persObj, MsgStream &log); + virtual void persToTrans(const EventStreamInfo_p3* persObj, EventStreamInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const EventStreamInfo* transObj, EventStreamInfo_p3* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p1.h b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p1.h index 01491394badd4475825c9dc5918ccce815ac45c6..041f9b96e386f683dc705115716058bb31e86a32 100644 --- a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTTYPECNV_P1_H @@ -10,16 +10,16 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class EventTypeCnv_p1 : public T_AthenaPoolTPCnvBase<EventType, EventType_p1> { +class EventTypeCnv_p1 : public T_AthenaPoolTPCnvConstBase<EventType, EventType_p1> { public: EventTypeCnv_p1() {} - virtual void persToTrans(const EventType_p1* persObj, EventType* transObj, MsgStream &log) override; - virtual void transToPers(const EventType* transObj, EventType_p1* persObj, MsgStream &log) override; - void persToTrans(const EventType_p1* persObj, EventType* transObj, MsgStream &log) const; - void transToPers(const EventType* transObj, EventType_p1* persObj, MsgStream &log) const; + using base_class::persToTrans; + using base_class::transToPers; - virtual EventType* createTransient (const EventType_p1* persObj, MsgStream& log) override; - EventType* createTransient (const EventType_p1* persObj, MsgStream& log) const; + virtual void persToTrans(const EventType_p1* persObj, EventType* transObj, MsgStream &log) const override; + virtual void transToPers(const EventType* transObj, EventType_p1* persObj, MsgStream &log) const override; + + virtual EventType* createTransientConst (const EventType_p1* persObj, MsgStream& log) const override; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p3.h b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p3.h index b7227da81e93878b1a8424c7e1b70e5f3941a11b..72e5c5904fbc1852b780cb236ccbeae9270f4ae3 100644 --- a/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p3.h +++ b/Event/EventTPCnv/EventTPCnv/EventTypeCnv_p3.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_EVENTTYPECNV_P3_H @@ -10,16 +10,16 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class EventTypeCnv_p3 : public T_AthenaPoolTPCnvBase<EventType, EventType_p3> { +class EventTypeCnv_p3 : public T_AthenaPoolTPCnvConstBase<EventType, EventType_p3> { public: EventTypeCnv_p3() {} - virtual void persToTrans(const EventType_p3* persObj, EventType* transObj, MsgStream &log) override; - virtual void transToPers(const EventType* transObj, EventType_p3* persObj, MsgStream &log) override; - void persToTrans(const EventType_p3* persObj, EventType* transObj, MsgStream &log) const; - void transToPers(const EventType* transObj, EventType_p3* persObj, MsgStream &log) const; + using base_class::persToTrans; + using base_class::transToPers; - virtual EventType* createTransient (const EventType_p3* persObj, MsgStream& log) override; - EventType* createTransient (const EventType_p3* persObj, MsgStream& log) const; + virtual void persToTrans(const EventType_p3* persObj, EventType* transObj, MsgStream &log) const override; + virtual void transToPers(const EventType* transObj, EventType_p3* persObj, MsgStream &log) const override; + + virtual EventType* createTransientConst (const EventType_p3* persObj, MsgStream& log) const override; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/EventType_p1.h b/Event/EventTPCnv/EventTPCnv/EventType_p1.h index 8ec5c1bfa219dacce738d0cc78f9f42985ea16b8..58887800c84a50a89d98f6e58dc46b72fbbb78b2 100644 --- a/Event/EventTPCnv/EventTPCnv/EventType_p1.h +++ b/Event/EventTPCnv/EventTPCnv/EventType_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTTPCNV_EVENTTYPE_P1_H @@ -42,7 +42,7 @@ bool EventType_p1::operator<(const EventType_p1& rhs) const return(this->m_bit_mask.size() < rhs.m_bit_mask.size()); } for (BitMaskIterator i = this->m_bit_mask.begin(), j = rhs.m_bit_mask.begin(); - i != this->m_bit_mask.end(); i++, j++) { + i != this->m_bit_mask.end(); ++i, ++j) { if (*i != *j) { return(*i < *j); } diff --git a/Event/EventTPCnv/EventTPCnv/EventType_p3.h b/Event/EventTPCnv/EventTPCnv/EventType_p3.h index ca2199472f785940d10e52f8e9b4f22fcd50baa6..029ca4aba61bb6f30bf5719b7b124fff801ecbd4 100644 --- a/Event/EventTPCnv/EventTPCnv/EventType_p3.h +++ b/Event/EventTPCnv/EventTPCnv/EventType_p3.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTTPCNV_EVENTTYPE_P3_H @@ -46,7 +46,7 @@ bool EventType_p3::operator<(const EventType_p3& rhs) const return(this->m_bit_mask.size() < rhs.m_bit_mask.size()); } for (BitMaskIterator i = this->m_bit_mask.begin(), j = rhs.m_bit_mask.begin(); - i != this->m_bit_mask.end(); i++, j++) { + i != this->m_bit_mask.end(); ++i, ++j) { if (*i != *j) { return(*i < *j); } diff --git a/Event/EventTPCnv/EventTPCnv/MergedEventInfoCnv_p1.h b/Event/EventTPCnv/EventTPCnv/MergedEventInfoCnv_p1.h index f0429a5a296dba7a2c07c86bdce6175691722b9b..15c09712167a0ba9a07030fe6d1ae9705d89a66d 100644 --- a/Event/EventTPCnv/EventTPCnv/MergedEventInfoCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/MergedEventInfoCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_MERGEDEVENTINFOCNV_P1_H @@ -10,11 +10,14 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class MergedEventInfoCnv_p1 : public T_AthenaPoolTPCnvBase<MergedEventInfo, MergedEventInfo_p1> { +class MergedEventInfoCnv_p1 : public T_AthenaPoolTPCnvConstBase<MergedEventInfo, MergedEventInfo_p1> { public: MergedEventInfoCnv_p1() {} - virtual void persToTrans(const MergedEventInfo_p1* persObj, MergedEventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const MergedEventInfo* transObj, MergedEventInfo_p1* persObj, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const MergedEventInfo_p1* persObj, MergedEventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const MergedEventInfo* transObj, MergedEventInfo_p1* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/MergedEventInfoCnv_p2.h b/Event/EventTPCnv/EventTPCnv/MergedEventInfoCnv_p2.h index b0078384a524b53dc6f13bf042aec6308bc3cb32..6a19ee32cf94afee2d56893bdbc17a5580a82eb7 100644 --- a/Event/EventTPCnv/EventTPCnv/MergedEventInfoCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/MergedEventInfoCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_MERGEDEVENTINFOCNV_P2_H @@ -10,11 +10,14 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class MergedEventInfoCnv_p2 : public T_AthenaPoolTPCnvBase<MergedEventInfo, MergedEventInfo_p2> { +class MergedEventInfoCnv_p2 : public T_AthenaPoolTPCnvConstBase<MergedEventInfo, MergedEventInfo_p2> { public: MergedEventInfoCnv_p2() {} - virtual void persToTrans(const MergedEventInfo_p2* persObj, MergedEventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const MergedEventInfo* transObj, MergedEventInfo_p2* persObj, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const MergedEventInfo_p2* persObj, MergedEventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const MergedEventInfo* transObj, MergedEventInfo_p2* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p1.h b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p1.h index 21b4318a36440291475aefdaea29f4ca9a3e5d9e..b2df162afc5ebea7ace16ae7e6937563bbdbddc0 100644 --- a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_PILEUPEVENTINFOCNV_P1_H @@ -10,11 +10,14 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class PileUpEventInfoCnv_p1 : public T_AthenaPoolTPCnvBase<PileUpEventInfo, PileUpEventInfo_p1> { +class PileUpEventInfoCnv_p1 : public T_AthenaPoolTPCnvConstBase<PileUpEventInfo, PileUpEventInfo_p1> { public: PileUpEventInfoCnv_p1() {} - virtual void persToTrans(const PileUpEventInfo_p1* persObj, PileUpEventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p1* persObj, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const PileUpEventInfo_p1* persObj, PileUpEventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p1* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p2.h b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p2.h index 6354ca060a3f3a5fc774b43c68200dd176952682..5534027fc643d7e3cfd9944d943d07ce0efe126f 100644 --- a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_PILEUPEVENTINFOCNV_P2_H @@ -10,11 +10,14 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class PileUpEventInfoCnv_p2 : public T_AthenaPoolTPCnvBase<PileUpEventInfo, PileUpEventInfo_p2> { +class PileUpEventInfoCnv_p2 : public T_AthenaPoolTPCnvConstBase<PileUpEventInfo, PileUpEventInfo_p2> { public: PileUpEventInfoCnv_p2() {} - virtual void persToTrans(const PileUpEventInfo_p2* persObj, PileUpEventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p2* persObj, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const PileUpEventInfo_p2* persObj, PileUpEventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p2* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p3.h b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p3.h index fc03c87fe6193f454f72e4976b3f4e4faec39670..b724ab31584b0b381e234f18709d64fa07b6a9c0 100644 --- a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p3.h +++ b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p3.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_PILEUPEVENTINFOCNV_P3_H @@ -10,11 +10,14 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class PileUpEventInfoCnv_p3 : public T_AthenaPoolTPCnvBase<PileUpEventInfo, PileUpEventInfo_p3> { +class PileUpEventInfoCnv_p3 : public T_AthenaPoolTPCnvConstBase<PileUpEventInfo, PileUpEventInfo_p3> { public: PileUpEventInfoCnv_p3() {} - virtual void persToTrans(const PileUpEventInfo_p3* persObj, PileUpEventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p3* persObj, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const PileUpEventInfo_p3* persObj, PileUpEventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p3* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p4.h b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p4.h index c0a99f3754193ae56dde705c730d5a252152f8f3..dbb77ee4ca5f89f52740a96837a6375e047ea547 100644 --- a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p4.h +++ b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p4.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_PILEUPEVENTINFOCNV_P4_H @@ -10,11 +10,14 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class PileUpEventInfoCnv_p4 : public T_AthenaPoolTPCnvBase<PileUpEventInfo, PileUpEventInfo_p4> { +class PileUpEventInfoCnv_p4 : public T_AthenaPoolTPCnvConstBase<PileUpEventInfo, PileUpEventInfo_p4> { public: PileUpEventInfoCnv_p4() {} - virtual void persToTrans(const PileUpEventInfo_p4* persObj, PileUpEventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p4* persObj, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const PileUpEventInfo_p4* persObj, PileUpEventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p4* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p5.h b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p5.h index f8d2ebbad97301df06021b2db9f348690341f516..43c3ad5c088cb3491df48c5438685d82736a9dfb 100644 --- a/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p5.h +++ b/Event/EventTPCnv/EventTPCnv/PileUpEventInfoCnv_p5.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_PILEUPEVENTINFOCNV_P5_H @@ -10,11 +10,14 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class PileUpEventInfoCnv_p5 : public T_AthenaPoolTPCnvBase<PileUpEventInfo, PileUpEventInfo_p5> { +class PileUpEventInfoCnv_p5 : public T_AthenaPoolTPCnvConstBase<PileUpEventInfo, PileUpEventInfo_p5> { public: PileUpEventInfoCnv_p5() {} - virtual void persToTrans(const PileUpEventInfo_p5* persObj, PileUpEventInfo* transObj, MsgStream &log) ; - virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p5* persObj, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const PileUpEventInfo_p5* persObj, PileUpEventInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const PileUpEventInfo* transObj, PileUpEventInfo_p5* persObj, MsgStream &log) const override; }; template<> diff --git a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p1.h b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p1.h index 2e9bbcc1d5235c0f2a8b9049e7bac07e542fc3db..d61e444f0bfe025bc2b6675ca5caa4e50bcb1bc2 100644 --- a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p1.h +++ b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_TRIGGERINFOCNV_P1_H @@ -10,19 +10,18 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class TriggerInfoCnv_p1 : public T_AthenaPoolTPCnvBase<TriggerInfo, TriggerInfo_p1> { +class TriggerInfoCnv_p1 : public T_AthenaPoolTPCnvConstBase<TriggerInfo, TriggerInfo_p1> { public: TriggerInfoCnv_p1() {} - virtual void persToTrans(const TriggerInfo_p1* persObj, TriggerInfo* transObj, MsgStream &log) override; - virtual void transToPers(const TriggerInfo* transObj, TriggerInfo_p1* persObj, MsgStream &log) override; - void persToTrans(const TriggerInfo_p1* persObj, TriggerInfo* transObj, MsgStream &log) const; - void transToPers(const TriggerInfo* transObj, TriggerInfo_p1* persObj, MsgStream &log) const; + using base_class::persToTrans; + using base_class::transToPers; - virtual TriggerInfo* createTransient (const TriggerInfo_p1* persObj, MsgStream& log) override; - TriggerInfo* createTransient (const TriggerInfo_p1* persObj, MsgStream& log) const; + virtual void persToTrans(const TriggerInfo_p1* persObj, TriggerInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const TriggerInfo* transObj, TriggerInfo_p1* persObj, MsgStream &log) const override; - virtual TriggerInfo_p1* createPersistent (const TriggerInfo* transObj, MsgStream& log) override; - TriggerInfo_p1* createPersistent (const TriggerInfo* transObj, MsgStream& log) const; + virtual TriggerInfo* createTransientConst (const TriggerInfo_p1* persObj, MsgStream& log) const override; + + virtual TriggerInfo_p1* createPersistentConst (const TriggerInfo* transObj, MsgStream& log) const override; }; #endif diff --git a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p2.h b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p2.h index 191b4cfdd44360d207c43a4b42577e7b463bac2f..0a846e22c7bf924182b917689d87c68779b38ade 100644 --- a/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p2.h +++ b/Event/EventTPCnv/EventTPCnv/TriggerInfoCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef EVENTATHENAPOOL_TRIGGERINFOCNV_P2_H @@ -10,16 +10,16 @@ #include "AthenaPoolCnvSvc/T_AthenaPoolTPConverter.h" class MsgStream; -class TriggerInfoCnv_p2 : public T_AthenaPoolTPCnvBase<TriggerInfo, TriggerInfo_p2> { +class TriggerInfoCnv_p2 : public T_AthenaPoolTPCnvConstBase<TriggerInfo, TriggerInfo_p2> { public: TriggerInfoCnv_p2() {} - virtual void persToTrans(const TriggerInfo_p2* persObj, TriggerInfo* transObj, MsgStream &log) override; - virtual void transToPers(const TriggerInfo* transObj, TriggerInfo_p2* persObj, MsgStream &log) override; - void persToTrans(const TriggerInfo_p2* persObj, TriggerInfo* transObj, MsgStream &log) const; - void transToPers(const TriggerInfo* transObj, TriggerInfo_p2* persObj, MsgStream &log) const; + using base_class::persToTrans; + using base_class::transToPers; - virtual TriggerInfo* createTransient (const TriggerInfo_p2* persObj, MsgStream& log) override; - TriggerInfo* createTransient (const TriggerInfo_p2* persObj, MsgStream& log) const; + virtual void persToTrans(const TriggerInfo_p2* persObj, TriggerInfo* transObj, MsgStream &log) const override; + virtual void transToPers(const TriggerInfo* transObj, TriggerInfo_p2* persObj, MsgStream &log) const override; + + virtual TriggerInfo* createTransientConst (const TriggerInfo_p2* persObj, MsgStream& log) const override; }; #endif diff --git a/Event/EventTPCnv/src/AtlasMcWeight.cxx b/Event/EventTPCnv/src/AtlasMcWeight.cxx index 95ad40ff04733fde623b09067f4ea52439de2a83..caa794449a67e0138f32d01f7f7dc5d07139f9ed 100644 --- a/Event/EventTPCnv/src/AtlasMcWeight.cxx +++ b/Event/EventTPCnv/src/AtlasMcWeight.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @@ -75,7 +75,7 @@ AtlasMcWeight::encode(double weight) { number_type wt_pref = d_sign+2*e_sign; char senc[13]; - snprintf(senc,13,"%d%d%d",wt_pref, wt_exp, wt_prec); + snprintf(senc,13,"%u%u%u",wt_pref, wt_exp, wt_prec); number_type wt_encode=atoll(senc); #ifdef AMC_DEBUG diff --git a/Event/EventTPCnv/src/EventIDCnv_p1.cxx b/Event/EventTPCnv/src/EventIDCnv_p1.cxx index 57aeec5647c2bf3fb195842fe276bb6e879e48ee..e286f423a8adffccb95702fc0fdd6acb5d07ded5 100644 --- a/Event/EventTPCnv/src/EventIDCnv_p1.cxx +++ b/Event/EventTPCnv/src/EventIDCnv_p1.cxx @@ -1,16 +1,10 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/EventID.h" #include "EventTPCnv/EventIDCnv_p1.h" -void EventIDCnv_p1::transToPers(const EventID* trans, EventID_p1* pers, MsgStream &log) -{ - const EventIDCnv_p1* cthis = this; - cthis->transToPers (trans, pers, log); -} - void EventIDCnv_p1::transToPers(const EventID* trans, EventID_p1* pers, MsgStream &) const { pers->m_run_number = trans->run_number(); pers->m_event_number = trans->event_number(); @@ -24,12 +18,6 @@ void EventIDCnv_p1::transToPers(const EventID* trans, EventID_p1* pers, MsgStrea pers->m_detector_mask3 = trans->detector_mask3(); } -void EventIDCnv_p1::persToTrans(const EventID_p1* pers, EventID* trans, MsgStream &log) -{ - const EventIDCnv_p1* cthis = this; - cthis->persToTrans (pers, trans, log); -} - void EventIDCnv_p1::persToTrans(const EventID_p1* pers, EventID* trans, MsgStream &) const { trans->set_run_number (pers->m_run_number); trans->set_event_number (pers->m_event_number); @@ -43,13 +31,7 @@ void EventIDCnv_p1::persToTrans(const EventID_p1* pers, EventID* trans, MsgStrea pers->m_detector_mask3); } -EventID* EventIDCnv_p1::createTransient (const EventID_p1* persObj, MsgStream& log) -{ - const EventIDCnv_p1* cthis = this; - return cthis->createTransient (persObj, log); -} - -EventID* EventIDCnv_p1::createTransient (const EventID_p1* persObj, MsgStream& log) const +EventID* EventIDCnv_p1::createTransientConst (const EventID_p1* persObj, MsgStream& log) const { auto trans = std::make_unique<EventID>(); persToTrans(persObj, trans.get(), log); diff --git a/Event/EventTPCnv/src/EventInfoCnv_p1.cxx b/Event/EventTPCnv/src/EventInfoCnv_p1.cxx index 2fc8b16195bc7d376bcc865d19621fd5204ae85e..bc3d35fb52e2c762e3c2a5a4afe1d2a1ede35fb5 100644 --- a/Event/EventTPCnv/src/EventInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/EventInfoCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/EventInfo.h" @@ -18,31 +18,19 @@ static const EventTypeCnv_p1 typeConv; static const TriggerInfoCnv_p1 trigInfoCnv; -void EventInfoCnv_p1::transToPers(const EventInfo* trans, EventInfo_p1* pers, MsgStream &log) -{ - const EventInfoCnv_p1* cthis = this; - cthis->transToPers (trans, pers, log); -} - void EventInfoCnv_p1::transToPers(const EventInfo* trans, EventInfo_p1* pers, MsgStream &log) const { idConv.transToPers(trans->event_ID(), &pers->m_event_ID, log); typeConv.transToPers(trans->event_type(), &pers->m_event_type, log); if( trans->trigger_info() ) { - pers->m_trigger_info = trigInfoCnv.createPersistent(trans->trigger_info(), log); + pers->m_trigger_info = trigInfoCnv.createPersistentConst(trans->trigger_info(), log); } } -void EventInfoCnv_p1::persToTrans(const EventInfo_p1* pers, EventInfo* trans, MsgStream &log) -{ - const EventInfoCnv_p1* cthis = this; - cthis->persToTrans (pers, trans, log); -} - void EventInfoCnv_p1::persToTrans(const EventInfo_p1* pers, EventInfo* trans, MsgStream &log) const { - trans->setEventID (idConv.createTransient(&pers->m_event_ID, log)); - EventType* event_type = typeConv.createTransient(&pers->m_event_type, log); + trans->setEventID (idConv.createTransientConst(&pers->m_event_ID, log)); + EventType* event_type = typeConv.createTransientConst(&pers->m_event_type, log); if( pers->m_trigger_info) { - trans->setTriggerInfo (trigInfoCnv.createTransient(pers->m_trigger_info, log)); + trans->setTriggerInfo (trigInfoCnv.createTransientConst(pers->m_trigger_info, log)); // Fill MC event weight in transient EventType from persistent // TriggerInfo. This is only needed for MC events: if the @@ -66,13 +54,7 @@ void EventInfoCnv_p1::persToTrans(const EventInfo_p1* pers, EventInfo* trans, Ms } // work around the default constructor of EventInfo allocating memory -EventInfo* EventInfoCnv_p1::createTransient( const EventInfo_p1* persObj, MsgStream &log) -{ - const EventInfoCnv_p1* cthis = this; - return cthis->createTransient (persObj, log); -} - -EventInfo* EventInfoCnv_p1::createTransient( const EventInfo_p1* persObj, MsgStream &log) const { +EventInfo* EventInfoCnv_p1::createTransientConst( const EventInfo_p1* persObj, MsgStream &log) const { std::unique_ptr<EventInfo> trans( new EventInfo(0,0,0) ); persToTrans(persObj, trans.get(), log); return(trans.release()); diff --git a/Event/EventTPCnv/src/EventInfoCnv_p2.cxx b/Event/EventTPCnv/src/EventInfoCnv_p2.cxx index 1867250544c296b3e799d3c38e0fa74b810ab2bc..34747072614ce6fdfe92dbb1b127389c967f23c3 100644 --- a/Event/EventTPCnv/src/EventInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/EventInfoCnv_p2.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/EventInfo.h" @@ -18,12 +18,6 @@ static const EventTypeCnv_p1 typeConv; static const TriggerInfoCnv_p2 trigInfoCnv; -void EventInfoCnv_p2::transToPers(const EventInfo* trans, EventInfo_p2* pers, MsgStream &log) -{ - const EventInfoCnv_p2* cthis = this; - cthis->transToPers (trans, pers, log); -} - void EventInfoCnv_p2::transToPers(const EventInfo* trans, EventInfo_p2* pers, MsgStream &log) const { idConv.transToPers(trans->event_ID(), &pers->m_event_ID, log); typeConv.transToPers(trans->event_type(), &pers->m_event_type, log); @@ -41,27 +35,15 @@ void EventInfoCnv_p2::transToPers(const EventInfo* trans, EventInfo_p2* pers, Ms } } -void EventInfoCnv_p2::persToTrans(const EventInfo_p2* pers, EventInfo* trans, MsgStream &log) -{ - const EventInfoCnv_p2* cthis = this; - cthis->persToTrans (pers, trans, log); -} - void EventInfoCnv_p2::persToTrans(const EventInfo_p2* pers, EventInfo* trans, MsgStream &log) const { - trans->setEventID (idConv.createTransient(&pers->m_event_ID, log)); - trans->setEventType (typeConv.createTransient(&pers->m_event_type, log)); - trans->setTriggerInfo (trigInfoCnv.createTransient(&pers->m_trigger_info, log)); + trans->setEventID (idConv.createTransientConst(&pers->m_event_ID, log)); + trans->setEventType (typeConv.createTransientConst(&pers->m_event_type, log)); + trans->setTriggerInfo (trigInfoCnv.createTransientConst(&pers->m_trigger_info, log)); if (pers->m_event_flags.size()) trans->m_event_flags = pers->m_event_flags; } // work around the default constructor of EventInfo allocating memory -EventInfo* EventInfoCnv_p2::createTransient( const EventInfo_p2* persObj, MsgStream &log) -{ - const EventInfoCnv_p2* cthis = this; - return cthis->createTransient (persObj, log); -} - -EventInfo* EventInfoCnv_p2::createTransient( const EventInfo_p2* persObj, MsgStream &log) const { +EventInfo* EventInfoCnv_p2::createTransientConst( const EventInfo_p2* persObj, MsgStream &log) const { std::unique_ptr<EventInfo> trans( new EventInfo(0,0,0) ); persToTrans(persObj, trans.get(), log); return(trans.release()); diff --git a/Event/EventTPCnv/src/EventInfoCnv_p3.cxx b/Event/EventTPCnv/src/EventInfoCnv_p3.cxx index 5fd30710836f87498d2fc91edcdb9f52a3363059..71c881480c750c8ada94191fcd5052aa53971f22 100644 --- a/Event/EventTPCnv/src/EventInfoCnv_p3.cxx +++ b/Event/EventTPCnv/src/EventInfoCnv_p3.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/EventInfo.h" @@ -17,17 +17,11 @@ static const EventTypeCnv_p2 typeConv; static const TriggerInfoCnv_p3 trigInfoCnv; -void EventInfoCnv_p3::persToTrans(const EventInfo_p3* pers, EventInfo* trans, MsgStream &log) -{ - const EventInfoCnv_p3* cthis = this; - return cthis->persToTrans (pers, trans, log); -} - void EventInfoCnv_p3::persToTrans(const EventInfo_p3* pers, EventInfo* trans, MsgStream &/* log */) const { *trans = EventInfo(); std::vector<unsigned int>::const_iterator i= pers->m_AllTheData.begin(); - int vers = (*i); i++; + int vers = (*i); ++i; // std::cout<<"EventInfo vers EventID: "<<(vers&0x003f)<<"\t EventType: "<< ((vers>>6)&0x003f)<<"\tTriggerInfo: "<<((vers>>12)&0x003f) <<"\t Local vars: "<<(vers>>18)<<std::endl; bool bugcompat = (vers&(1<<24)) == 0; @@ -56,18 +50,12 @@ void EventInfoCnv_p3::persToTrans(const EventInfo_p3* pers, EventInfo* trans, Ms trans->m_event_flags.reserve(n); } while(i!=pers->m_AllTheData.end()){ // there is still some data: m_event_flags - trans->m_event_flags.push_back((*i)); i++; + trans->m_event_flags.push_back((*i)); ++i; } // std::cout<<"persToTrans of EventInfo \t"<<trans->m_event_flags.size()<<std::endl; } -void EventInfoCnv_p3::transToPers(const EventInfo* trans, EventInfo_p3* pers, MsgStream &log) -{ - const EventInfoCnv_p3* cthis = this; - cthis->transToPers (trans, pers, log); -} - void EventInfoCnv_p3::transToPers(const EventInfo* trans, EventInfo_p3* pers, MsgStream &/* log */) const { @@ -113,13 +101,7 @@ void EventInfoCnv_p3::transToPers(const EventInfo* trans, EventInfo_p3* pers, Ms // work around the default constructor of EventInfo allocating memory -EventInfo* EventInfoCnv_p3::createTransient( const EventInfo_p3* persObj, MsgStream &log) -{ - const EventInfoCnv_p3* cthis = this; - return cthis->createTransient (persObj, log); -} - -EventInfo* EventInfoCnv_p3::createTransient( const EventInfo_p3* persObj, MsgStream &log) const { +EventInfo* EventInfoCnv_p3::createTransientConst ( const EventInfo_p3* persObj, MsgStream &log) const { std::unique_ptr<EventInfo> trans( new EventInfo() ); persToTrans(persObj, trans.get(), log); return(trans.release()); diff --git a/Event/EventTPCnv/src/EventInfoCnv_p4.cxx b/Event/EventTPCnv/src/EventInfoCnv_p4.cxx index 4b47b88b751c36e8f8d6b8b2a1224f0858e3f52a..745620c80d6a38e4d14a0a353dca4761a1be6a67 100644 --- a/Event/EventTPCnv/src/EventInfoCnv_p4.cxx +++ b/Event/EventTPCnv/src/EventInfoCnv_p4.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/EventInfo.h" @@ -18,12 +18,6 @@ static const EventTypeCnv_p3 typeConv; static const TriggerInfoCnv_p2 trigInfoCnv; -void EventInfoCnv_p4::transToPers(const EventInfo* trans, EventInfo_p4* pers, MsgStream &log) -{ - const EventInfoCnv_p4* cthis = this; - cthis->transToPers (trans, pers, log); -} - void EventInfoCnv_p4::transToPers(const EventInfo* trans, EventInfo_p4* pers, MsgStream &log) const { idConv.transToPers(trans->m_event_ID, &pers->m_event_ID, log); typeConv.transToPers(trans->m_event_type, &pers->m_event_type, log); @@ -40,32 +34,20 @@ void EventInfoCnv_p4::transToPers(const EventInfo* trans, EventInfo_p4* pers, Ms } } -void EventInfoCnv_p4::persToTrans(const EventInfo_p4* pers, EventInfo* trans, MsgStream &log) -{ - const EventInfoCnv_p4* cthis = this; - cthis->persToTrans (pers, trans, log); -} - void EventInfoCnv_p4::persToTrans(const EventInfo_p4* pers, EventInfo* trans, MsgStream &log) const { delete trans->m_event_ID; - trans->m_event_ID = idConv.createTransient(&pers->m_event_ID, log); + trans->m_event_ID = idConv.createTransientConst(&pers->m_event_ID, log); delete trans->m_event_type; - trans->m_event_type = typeConv.createTransient(&pers->m_event_type, log); + trans->m_event_type = typeConv.createTransientConst(&pers->m_event_type, log); delete trans->m_trigger_info; - trans->m_trigger_info = trigInfoCnv.createTransient(&pers->m_trigger_info, log); + trans->m_trigger_info = trigInfoCnv.createTransientConst(&pers->m_trigger_info, log); if (pers->m_event_flags.size()) trans->m_event_flags = pers->m_event_flags; } // work around the default constructor of EventInfo allocating memory -EventInfo* EventInfoCnv_p4::createTransient( const EventInfo_p4* persObj, MsgStream &log) const { +EventInfo* EventInfoCnv_p4::createTransientConst( const EventInfo_p4* persObj, MsgStream &log) const { std::unique_ptr<EventInfo> trans( new EventInfo(0,0,0) ); persToTrans(persObj, trans.get(), log); return(trans.release()); } -EventInfo* EventInfoCnv_p4::createTransient( const EventInfo_p4* persObj, MsgStream &log) -{ - const EventInfoCnv_p4* cthis = this; - return cthis->createTransient (persObj, log); -} - diff --git a/Event/EventTPCnv/src/EventStreamInfoCnv_p1.cxx b/Event/EventTPCnv/src/EventStreamInfoCnv_p1.cxx index 46501c183e00b46101a847a3a728e44ccedbcbdf..576ba4d19956c683c29838b863ad1dc662485cb5 100644 --- a/Event/EventTPCnv/src/EventStreamInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/EventStreamInfoCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @file EventStreamInfoCnv_p1.cxx @@ -16,7 +16,7 @@ static const EventTypeCnv_p1 typeConv; -void EventStreamInfoCnv_p1::persToTrans(const EventStreamInfo_p1* pers, EventStreamInfo* trans, MsgStream &log) { +void EventStreamInfoCnv_p1::persToTrans(const EventStreamInfo_p1* pers, EventStreamInfo* trans, MsgStream &log) const { *trans = EventStreamInfo(); trans->addEvent (pers->m_numberOfEvents); for (unsigned int rn : pers->m_runNumbers) @@ -29,12 +29,12 @@ void EventStreamInfoCnv_p1::persToTrans(const EventStreamInfo_p1* pers, EventStr trans->insertItemList (p.first, p.second); for (const EventType_p1& ptype : pers->m_eventTypes) { - std::unique_ptr<EventType> p (typeConv.createTransient(&ptype, log)); + std::unique_ptr<EventType> p (typeConv.createTransientConst(&ptype, log)); trans->insertEventType(*p); } } -void EventStreamInfoCnv_p1::transToPers(const EventStreamInfo* trans, EventStreamInfo_p1* pers, MsgStream &log) { +void EventStreamInfoCnv_p1::transToPers(const EventStreamInfo* trans, EventStreamInfo_p1* pers, MsgStream &log) const { pers->m_numberOfEvents = trans->getNumberOfEvents(); pers->m_runNumbers = trans->getRunNumbers(); pers->m_lumiBlockNumbers = trans->getLumiBlockNumbers(); diff --git a/Event/EventTPCnv/src/EventStreamInfoCnv_p2.cxx b/Event/EventTPCnv/src/EventStreamInfoCnv_p2.cxx index 4bf9b5ceaf1c63d44dd903132d6c428c1f21c8a1..6841a60f43e87e00e283a5daf608f791b1fb44de 100644 --- a/Event/EventTPCnv/src/EventStreamInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/EventStreamInfoCnv_p2.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @file EventStreamInfoCnv_p2.cxx @@ -16,7 +16,7 @@ static const EventTypeCnv_p1 typeConv; -void EventStreamInfoCnv_p2::persToTrans(const EventStreamInfo_p2* pers, EventStreamInfo* trans, MsgStream &log) { +void EventStreamInfoCnv_p2::persToTrans(const EventStreamInfo_p2* pers, EventStreamInfo* trans, MsgStream &log) const { *trans = EventStreamInfo(); trans->addEvent (pers->m_numberOfEvents); for (unsigned int rn : pers->m_runNumbers) @@ -29,12 +29,12 @@ void EventStreamInfoCnv_p2::persToTrans(const EventStreamInfo_p2* pers, EventStr trans->insertItemList (p.first, p.second); for (const EventType_p1& ptype : pers->m_eventTypes) { - std::unique_ptr<EventType> p (typeConv.createTransient(&ptype, log)); + std::unique_ptr<EventType> p (typeConv.createTransientConst(&ptype, log)); trans->insertEventType(*p); } } -void EventStreamInfoCnv_p2::transToPers(const EventStreamInfo* trans, EventStreamInfo_p2* pers, MsgStream &log) { +void EventStreamInfoCnv_p2::transToPers(const EventStreamInfo* trans, EventStreamInfo_p2* pers, MsgStream &log) const { pers->m_numberOfEvents = trans->getNumberOfEvents(); pers->m_runNumbers.assign (trans->getRunNumbers().begin(), diff --git a/Event/EventTPCnv/src/EventStreamInfoCnv_p3.cxx b/Event/EventTPCnv/src/EventStreamInfoCnv_p3.cxx index 4113a2f159558f046c99eef68217da6d861c7be1..79c64ad4927d7d15be4c7240533a5236d251ada4 100644 --- a/Event/EventTPCnv/src/EventStreamInfoCnv_p3.cxx +++ b/Event/EventTPCnv/src/EventStreamInfoCnv_p3.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @file EventStreamInfoCnv_p3.cxx @@ -16,7 +16,7 @@ static const EventTypeCnv_p3 typeConv; -void EventStreamInfoCnv_p3::persToTrans(const EventStreamInfo_p3* pers, EventStreamInfo* trans, MsgStream &log) { +void EventStreamInfoCnv_p3::persToTrans(const EventStreamInfo_p3* pers, EventStreamInfo* trans, MsgStream &log) const { *trans = EventStreamInfo(); trans->addEvent (pers->m_numberOfEvents); @@ -30,12 +30,12 @@ void EventStreamInfoCnv_p3::persToTrans(const EventStreamInfo_p3* pers, EventStr trans->insertItemList (p.first, p.second); for (const EventType_p3& ptype : pers->m_eventTypes) { - std::unique_ptr<EventType> p (typeConv.createTransient(&ptype, log)); + std::unique_ptr<EventType> p (typeConv.createTransientConst(&ptype, log)); trans->insertEventType(*p); } } -void EventStreamInfoCnv_p3::transToPers(const EventStreamInfo* trans, EventStreamInfo_p3* pers, MsgStream &log) { +void EventStreamInfoCnv_p3::transToPers(const EventStreamInfo* trans, EventStreamInfo_p3* pers, MsgStream &log) const { pers->m_numberOfEvents = trans->getNumberOfEvents(); pers->m_runNumbers.assign (trans->getRunNumbers().begin(), diff --git a/Event/EventTPCnv/src/EventTypeCnv_p1.cxx b/Event/EventTPCnv/src/EventTypeCnv_p1.cxx index 6d2aa636919d3d3088e5a2d0571ce3aec5bd6e04..83776e0376f3491086d48c688e7e8f9cfd4f5d17 100644 --- a/Event/EventTPCnv/src/EventTypeCnv_p1.cxx +++ b/Event/EventTPCnv/src/EventTypeCnv_p1.cxx @@ -1,17 +1,10 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/EventType.h" #include "EventTPCnv/EventTypeCnv_p1.h" -void EventTypeCnv_p1::transToPers(const EventType* trans, EventType_p1* pers, MsgStream &log) -{ - const EventTypeCnv_p1* cthis = this; - cthis->transToPers (trans, pers, log); -} - - void EventTypeCnv_p1::transToPers(const EventType* trans, EventType_p1* pers, MsgStream &) const { // Deprecated - writing out with _p3 RDS 2013/10 pers->m_user_type = trans->user_type_raw(); @@ -21,12 +14,6 @@ void EventTypeCnv_p1::transToPers(const EventType* trans, EventType_p1* pers, Ms pers->m_mc_event_weight = trans->mc_event_weight(0); } -void EventTypeCnv_p1::persToTrans(const EventType_p1* pers, EventType* trans, MsgStream &log) -{ - const EventTypeCnv_p1* cthis = this; - cthis->persToTrans (pers, trans, log); -} - void EventTypeCnv_p1::persToTrans(const EventType_p1* pers, EventType* trans, MsgStream &) const { *trans = EventType(); trans->set_user_type (pers->m_user_type); @@ -37,13 +24,7 @@ void EventTypeCnv_p1::persToTrans(const EventType_p1* pers, EventType* trans, Ms trans->set_mc_event_weight ((float)pers->m_mc_event_weight, 0, 1); } -EventType* EventTypeCnv_p1::createTransient (const EventType_p1* persObj, MsgStream& log) -{ - const EventTypeCnv_p1* cthis = this; - return cthis->createTransient (persObj, log); -} - -EventType* EventTypeCnv_p1::createTransient (const EventType_p1* persObj, MsgStream& log) const +EventType* EventTypeCnv_p1::createTransientConst (const EventType_p1* persObj, MsgStream& log) const { auto trans = std::make_unique<EventType>(); persToTrans(persObj, trans.get(), log); diff --git a/Event/EventTPCnv/src/EventTypeCnv_p3.cxx b/Event/EventTPCnv/src/EventTypeCnv_p3.cxx index 7959b24a4977cae8e95860d40c2960481f18b3f4..202ea5ef7eae476d304680efb4d895863660e049 100644 --- a/Event/EventTPCnv/src/EventTypeCnv_p3.cxx +++ b/Event/EventTPCnv/src/EventTypeCnv_p3.cxx @@ -1,16 +1,10 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/EventType.h" #include "EventTPCnv/EventTypeCnv_p3.h" -void EventTypeCnv_p3::transToPers(const EventType* trans, EventType_p3* pers, MsgStream &log) -{ - const EventTypeCnv_p3* cthis = this; - cthis->transToPers (trans, pers, log); -} - void EventTypeCnv_p3::transToPers(const EventType* trans, EventType_p3* pers, MsgStream &) const { pers->m_bit_mask = trans->bit_mask(); pers->m_user_type = trans->user_type_raw(); @@ -25,12 +19,6 @@ void EventTypeCnv_p3::transToPers(const EventType* trans, EventType_p3* pers, Ms pers->m_mc_event_number = trans->mc_event_number(); } -void EventTypeCnv_p3::persToTrans(const EventType_p3* pers, EventType* trans, MsgStream &log) -{ - const EventTypeCnv_p3* cthis = this; - cthis->persToTrans (pers, trans, log); -} - void EventTypeCnv_p3::persToTrans(const EventType_p3* pers, EventType* trans, MsgStream &) const { *trans = EventType(); @@ -49,13 +37,7 @@ void EventTypeCnv_p3::persToTrans(const EventType_p3* pers, EventType* trans, Ms trans->set_mc_event_number (pers->m_mc_event_number); } -EventType* EventTypeCnv_p3::createTransient (const EventType_p3* persObj, MsgStream& log) -{ - const EventTypeCnv_p3* cthis = this; - return cthis->createTransient (persObj, log); -} - -EventType* EventTypeCnv_p3::createTransient (const EventType_p3* persObj, MsgStream& log) const +EventType* EventTypeCnv_p3::createTransientConst (const EventType_p3* persObj, MsgStream& log) const { auto trans = std::make_unique<EventType>(); persToTrans(persObj, trans.get(), log); diff --git a/Event/EventTPCnv/src/MergedEventInfoCnv_p1.cxx b/Event/EventTPCnv/src/MergedEventInfoCnv_p1.cxx index 7b734480f11fc44c573acf9a344ccfc265ddeb23..c47dad156682fd6974090fb86e4e4a8e5ec47f47 100644 --- a/Event/EventTPCnv/src/MergedEventInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/MergedEventInfoCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/MergedEventInfo.h" @@ -14,12 +14,12 @@ static const EventIDCnv_p1 idConv; static const EventInfoCnv_p1 baseConv; -void MergedEventInfoCnv_p1::transToPers(const MergedEventInfo* trans, MergedEventInfo_p1* pers, MsgStream &log) { +void MergedEventInfoCnv_p1::transToPers(const MergedEventInfo* trans, MergedEventInfo_p1* pers, MsgStream &log) const { baseConv.transToPers(trans, pers, log); idConv.transToPers(trans->event_ID(), &pers->m_newEventID, log); } -void MergedEventInfoCnv_p1::persToTrans(const MergedEventInfo_p1* pers, MergedEventInfo* trans, MsgStream &log) { +void MergedEventInfoCnv_p1::persToTrans(const MergedEventInfo_p1* pers, MergedEventInfo* trans, MsgStream &log) const { EventInfo base; baseConv.persToTrans(pers, &base, log); EventID newid; diff --git a/Event/EventTPCnv/src/MergedEventInfoCnv_p2.cxx b/Event/EventTPCnv/src/MergedEventInfoCnv_p2.cxx index 2d3dd23c997df15bf8b9c63794f44beff99302ec..7bd8d5d21d9f373cd3c8143457a198daa77b4f25 100644 --- a/Event/EventTPCnv/src/MergedEventInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/MergedEventInfoCnv_p2.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/MergedEventInfo.h" @@ -13,7 +13,7 @@ static const EventIDCnv_p2 idConv; static const EventInfoCnv_p3 baseConv; -void MergedEventInfoCnv_p2::persToTrans(const MergedEventInfo_p2* pers, MergedEventInfo* trans, MsgStream &log) { +void MergedEventInfoCnv_p2::persToTrans(const MergedEventInfo_p2* pers, MergedEventInfo* trans, MsgStream &log) const { EventInfo base; baseConv.persToTrans(pers, &base, log); std::vector<unsigned int>::const_iterator i=pers->m_newEventIDdata.begin(); @@ -25,7 +25,7 @@ void MergedEventInfoCnv_p2::persToTrans(const MergedEventInfo_p2* pers, MergedEv newid.time_stamp()); } -void MergedEventInfoCnv_p2::transToPers(const MergedEventInfo* trans, MergedEventInfo_p2* pers, MsgStream &log) { +void MergedEventInfoCnv_p2::transToPers(const MergedEventInfo* trans, MergedEventInfo_p2* pers, MsgStream &log) const { baseConv.transToPers(trans, pers, log); idConv.transToPers(trans->event_ID(), pers->m_newEventIDdata); } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p1.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p1.cxx index 7529e0718986256976858616df24b1faee151f6b..12abc4b39c3227386ddaa0ffa4d2c90fd00aac52 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/PileUpEventInfo.h" @@ -13,7 +13,7 @@ namespace { const double MINTIME(-2000.0); //ns } -void PileUpEventInfoCnv_p1::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p1* pers, MsgStream &log) { +void PileUpEventInfoCnv_p1::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p1* pers, MsgStream &log) const { evInfoConv.transToPers(trans, pers, log); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); @@ -25,11 +25,11 @@ void PileUpEventInfoCnv_p1::transToPers(const PileUpEventInfo* trans, PileUpEven short index = sub_iter->index(); p_sub_iter->m_timeIndex = (time - MINTIME) + MODULO * index; evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); - p_sub_iter++; sub_iter++; + ++p_sub_iter; ++sub_iter; } } -void PileUpEventInfoCnv_p1::persToTrans(const PileUpEventInfo_p1* pers, PileUpEventInfo* trans, MsgStream &log) +void PileUpEventInfoCnv_p1::persToTrans(const PileUpEventInfo_p1* pers, PileUpEventInfo* trans, MsgStream &log) const { *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); @@ -43,8 +43,8 @@ void PileUpEventInfoCnv_p1::persToTrans(const PileUpEventInfo_p1* pers, PileUpEv //index1 PileUpTimeEventIndex::Unknown, std::unique_ptr<EventInfo> - (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + (evInfoConv.createTransientConst(&p_sub_iter->m_subEventInfo, log)), nullptr); - p_sub_iter++; + ++p_sub_iter; } } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p2.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p2.cxx index 3d7296e28d5d5b866f5e04d42e90e37e7b21ae1c..fe0996a3405ecccb6c04c54dcb659b5e59db3de3 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p2.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/PileUpEventInfo.h" @@ -13,7 +13,7 @@ namespace { const double MINTIME(-2000.0); //ns } -void PileUpEventInfoCnv_p2::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p2* pers, MsgStream &log) { +void PileUpEventInfoCnv_p2::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p2* pers, MsgStream &log) const { evInfoConv.transToPers(trans, pers, log); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); @@ -25,11 +25,11 @@ void PileUpEventInfoCnv_p2::transToPers(const PileUpEventInfo* trans, PileUpEven short index = sub_iter->index(); p_sub_iter->m_timeIndex = (time - MINTIME) + MODULO * index; evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); - p_sub_iter++; sub_iter++; + ++p_sub_iter; ++sub_iter; } } -void PileUpEventInfoCnv_p2::persToTrans(const PileUpEventInfo_p2* pers, PileUpEventInfo* trans, MsgStream &log) +void PileUpEventInfoCnv_p2::persToTrans(const PileUpEventInfo_p2* pers, PileUpEventInfo* trans, MsgStream &log) const { *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); @@ -43,8 +43,8 @@ void PileUpEventInfoCnv_p2::persToTrans(const PileUpEventInfo_p2* pers, PileUpEv //index1 PileUpTimeEventIndex::Unknown, std::unique_ptr<EventInfo> - (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + (evInfoConv.createTransientConst(&p_sub_iter->m_subEventInfo, log)), nullptr); - p_sub_iter++; + ++p_sub_iter; } } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p3.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p3.cxx index 470d547c82d9bbf64ed213178d3c294bcb208bec..7765a69d1f01b820fccd021e340cb5179347913a 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p3.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p3.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/PileUpEventInfo.h" @@ -8,7 +8,7 @@ static const EventInfoCnv_p2 evInfoConv; -void PileUpEventInfoCnv_p3::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p3* pers, MsgStream &log) { +void PileUpEventInfoCnv_p3::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p3* pers, MsgStream &log) const { evInfoConv.transToPers(trans, pers, log); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); @@ -20,11 +20,11 @@ void PileUpEventInfoCnv_p3::transToPers(const PileUpEventInfo* trans, PileUpEven p_sub_iter->m_index = sub_iter->index(); p_sub_iter->m_type = static_cast<short>(sub_iter->type()); evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); - p_sub_iter++; sub_iter++; + ++p_sub_iter; ++sub_iter; } } -void PileUpEventInfoCnv_p3::persToTrans(const PileUpEventInfo_p3* pers, PileUpEventInfo* trans, MsgStream &log) +void PileUpEventInfoCnv_p3::persToTrans(const PileUpEventInfo_p3* pers, PileUpEventInfo* trans, MsgStream &log) const { *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); @@ -35,8 +35,8 @@ void PileUpEventInfoCnv_p3::persToTrans(const PileUpEventInfo_p3* pers, PileUpEv //p_sub_iter->m_index, static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type), std::unique_ptr<EventInfo> - (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + (evInfoConv.createTransientConst(&p_sub_iter->m_subEventInfo, log)), nullptr); - p_sub_iter++; + ++p_sub_iter; } } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p4.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p4.cxx index 97134c94ae8cb9a3bd9f5bef6e09bdd997da212a..3a49513e3cba304ced06127d122d5e8cd27eaecf 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p4.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p4.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/PileUpEventInfo.h" @@ -8,7 +8,7 @@ static const EventInfoCnv_p3 evInfoConv; -void PileUpEventInfoCnv_p4::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p4* pers, MsgStream &log) { +void PileUpEventInfoCnv_p4::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p4* pers, MsgStream &log) const { evInfoConv.transToPers(trans, pers, log); PileUpEventInfo::SubEvent::const_iterator sub_iter = trans->beginSubEvt(); @@ -20,11 +20,11 @@ void PileUpEventInfoCnv_p4::transToPers(const PileUpEventInfo* trans, PileUpEven p_sub_iter->m_index = sub_iter->index(); p_sub_iter->m_type = static_cast<short>(sub_iter->type()); evInfoConv.transToPers(sub_iter->pSubEvt, &p_sub_iter->m_subEventInfo, log); - p_sub_iter++; sub_iter++; + ++p_sub_iter; ++sub_iter; } } -void PileUpEventInfoCnv_p4::persToTrans(const PileUpEventInfo_p4* pers, PileUpEventInfo* trans, MsgStream &log) +void PileUpEventInfoCnv_p4::persToTrans(const PileUpEventInfo_p4* pers, PileUpEventInfo* trans, MsgStream &log) const { *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); @@ -35,8 +35,8 @@ void PileUpEventInfoCnv_p4::persToTrans(const PileUpEventInfo_p4* pers, PileUpEv //p_sub_iter->m_index, static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type), std::unique_ptr<EventInfo> - (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + (evInfoConv.createTransientConst(&p_sub_iter->m_subEventInfo, log)), nullptr); - p_sub_iter++; + ++p_sub_iter; } } diff --git a/Event/EventTPCnv/src/PileUpEventInfoCnv_p5.cxx b/Event/EventTPCnv/src/PileUpEventInfoCnv_p5.cxx index 2fa60dd6078e794ac54bb9689d92157484e7ac82..c729fb5233601b448abce1fa52e764261694ce12 100644 --- a/Event/EventTPCnv/src/PileUpEventInfoCnv_p5.cxx +++ b/Event/EventTPCnv/src/PileUpEventInfoCnv_p5.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/PileUpEventInfo.h" @@ -8,7 +8,7 @@ static const EventInfoCnv_p4 evInfoConv; -void PileUpEventInfoCnv_p5::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p5* pers, MsgStream &log) { +void PileUpEventInfoCnv_p5::transToPers(const PileUpEventInfo* trans, PileUpEventInfo_p5* pers, MsgStream &log) const { evInfoConv.transToPers(trans, pers, log); pers->m_subEvents.clear(); @@ -29,7 +29,7 @@ void PileUpEventInfoCnv_p5::transToPers(const PileUpEventInfo* trans, PileUpEven */ } -void PileUpEventInfoCnv_p5::persToTrans(const PileUpEventInfo_p5* pers, PileUpEventInfo* trans, MsgStream &log) +void PileUpEventInfoCnv_p5::persToTrans(const PileUpEventInfo_p5* pers, PileUpEventInfo* trans, MsgStream &log) const { *trans = PileUpEventInfo(); evInfoConv.persToTrans(pers, trans, log); @@ -40,8 +40,8 @@ void PileUpEventInfoCnv_p5::persToTrans(const PileUpEventInfo_p5* pers, PileUpEv //p_sub_iter->m_index, static_cast<PileUpTimeEventIndex::PileUpType>(p_sub_iter->m_type), std::unique_ptr<EventInfo> - (evInfoConv.createTransient(&p_sub_iter->m_subEventInfo, log)), + (evInfoConv.createTransientConst(&p_sub_iter->m_subEventInfo, log)), nullptr); - p_sub_iter++; + ++p_sub_iter; } } diff --git a/Event/EventTPCnv/src/TriggerInfoCnv_p1.cxx b/Event/EventTPCnv/src/TriggerInfoCnv_p1.cxx index 1a8455643359649d1892dcc2896a0b85ec4c8774..ede379e65d795ccc65a0e4d64c77c68238bb6b54 100644 --- a/Event/EventTPCnv/src/TriggerInfoCnv_p1.cxx +++ b/Event/EventTPCnv/src/TriggerInfoCnv_p1.cxx @@ -1,17 +1,11 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/TriggerInfo.h" #include "EventTPCnv/TriggerInfoCnv_p1.h" -void TriggerInfoCnv_p1::transToPers(const TriggerInfo* trans, TriggerInfo_p1* pers, MsgStream &log) -{ - const TriggerInfoCnv_p1* cthis = this; - cthis->transToPers (trans, pers, log); -} - void TriggerInfoCnv_p1::transToPers(const TriggerInfo* trans, TriggerInfo_p1* pers, MsgStream &) const { // Deprecated, p2 is used for writing @@ -24,12 +18,6 @@ void TriggerInfoCnv_p1::transToPers(const TriggerInfo* trans, TriggerInfo_p1* pe } -void TriggerInfoCnv_p1::persToTrans(const TriggerInfo_p1* pers, TriggerInfo* trans, MsgStream &log) -{ - const TriggerInfoCnv_p1* cthis = this; - cthis->persToTrans (pers, trans, log); -} - void TriggerInfoCnv_p1::persToTrans(const TriggerInfo_p1* pers, TriggerInfo* trans, MsgStream &) const { trans->setExtendedLevel1ID (pers->m_extendedLevel1ID); @@ -44,26 +32,14 @@ void TriggerInfoCnv_p1::persToTrans(const TriggerInfo_p1* pers, TriggerInfo* tra } -TriggerInfo* TriggerInfoCnv_p1::createTransient (const TriggerInfo_p1* persObj, MsgStream& log) -{ - const TriggerInfoCnv_p1* cthis = this; - return cthis->createTransient (persObj, log); -} - -TriggerInfo* TriggerInfoCnv_p1::createTransient (const TriggerInfo_p1* persObj, MsgStream& log) const +TriggerInfo* TriggerInfoCnv_p1::createTransientConst (const TriggerInfo_p1* persObj, MsgStream& log) const { auto trans = std::make_unique<TriggerInfo>(); persToTrans(persObj, trans.get(), log); return(trans.release()); } -TriggerInfo_p1* TriggerInfoCnv_p1::createPersistent (const TriggerInfo* transObj, MsgStream& log) -{ - const TriggerInfoCnv_p1* cthis = this; - return cthis->createPersistent (transObj, log); -} - -TriggerInfo_p1* TriggerInfoCnv_p1::createPersistent (const TriggerInfo* transObj, MsgStream& log) const +TriggerInfo_p1* TriggerInfoCnv_p1::createPersistentConst (const TriggerInfo* transObj, MsgStream& log) const { auto pers = std::make_unique<TriggerInfo_p1>(); transToPers(transObj, pers.get(), log); diff --git a/Event/EventTPCnv/src/TriggerInfoCnv_p2.cxx b/Event/EventTPCnv/src/TriggerInfoCnv_p2.cxx index 4e52abc710bc66e8f27dd0a2bcf1675ed97ad11f..22b6325b6e6f20fe791fba34e7d594f6fb2b23f8 100644 --- a/Event/EventTPCnv/src/TriggerInfoCnv_p2.cxx +++ b/Event/EventTPCnv/src/TriggerInfoCnv_p2.cxx @@ -1,16 +1,10 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventInfo/TriggerInfo.h" #include "EventTPCnv/TriggerInfoCnv_p2.h" -void TriggerInfoCnv_p2::transToPers(const TriggerInfo* trans, TriggerInfo_p2* pers, MsgStream &log) -{ - const TriggerInfoCnv_p2* cthis = this; - cthis->transToPers (trans, pers, log); -} - void TriggerInfoCnv_p2::transToPers(const TriggerInfo* trans, TriggerInfo_p2* pers, MsgStream &) const { pers->m_statusElement = trans->statusElement(); @@ -30,12 +24,6 @@ void TriggerInfoCnv_p2::transToPers(const TriggerInfo* trans, TriggerInfo_p2* pe } -void TriggerInfoCnv_p2::persToTrans(const TriggerInfo_p2* pers, TriggerInfo* trans, MsgStream &log) -{ - const TriggerInfoCnv_p2* cthis = this; - cthis->persToTrans (pers, trans, log); -} - void TriggerInfoCnv_p2::persToTrans(const TriggerInfo_p2* pers, TriggerInfo* trans, MsgStream &) const { trans->setStatusElement (pers->m_statusElement); @@ -54,13 +42,7 @@ void TriggerInfoCnv_p2::persToTrans(const TriggerInfo_p2* pers, TriggerInfo* tra trans->setStreamTags (std::move (st)); } -TriggerInfo* TriggerInfoCnv_p2::createTransient (const TriggerInfo_p2* persObj, MsgStream& log) -{ - const TriggerInfoCnv_p2* cthis = this; - return cthis->createTransient (persObj, log); -} - -TriggerInfo* TriggerInfoCnv_p2::createTransient (const TriggerInfo_p2* persObj, MsgStream& log) const +TriggerInfo* TriggerInfoCnv_p2::createTransientConst (const TriggerInfo_p2* persObj, MsgStream& log) const { auto trans = std::make_unique<TriggerInfo>(); persToTrans(persObj, trans.get(), log); diff --git a/Event/EventTPCnv/src/vectorize.cxx b/Event/EventTPCnv/src/vectorize.cxx index 2d4169edf61a9f5a2177f5162b1c639e1370dc42..400c3f7b96cf657a9f06d0f9ef68f08174ce622b 100644 --- a/Event/EventTPCnv/src/vectorize.cxx +++ b/Event/EventTPCnv/src/vectorize.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "EventTPCnv/vectorize.h" @@ -119,7 +119,7 @@ void UITobitmap(std::vector<bool> &n, } if (rem!=32) ++i; - if (bugcompat && l > 16 && (l%32) == 16) { + if (bugcompat && l > 32 && (l%32) == 16) { --i; n.resize (l-32); } diff --git a/Event/EventTPCnv/test/AtlasMcWeight_test.cxx b/Event/EventTPCnv/test/AtlasMcWeight_test.cxx index b0f482ff94e96459b65be7bd3a7643fb59723dc2..a6d3a3c4a3f04557730b3e661cf8cf49131f62ac 100644 --- a/Event/EventTPCnv/test/AtlasMcWeight_test.cxx +++ b/Event/EventTPCnv/test/AtlasMcWeight_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/AtlasMcWeight_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventTPCnv/AtlasMcWeight.h" #include "TestTools/leakcheck.h" #include "TestTools/FLOATassert.h" +#include "CxxUtils/checker_macros.h" #include <cstdlib> #include <cassert> #include <iostream> @@ -31,7 +30,7 @@ void testit (double w, unsigned int n, double w2) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -43,9 +42,8 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; } - diff --git a/Event/EventTPCnv/test/EventIDCnv_p1_test.cxx b/Event/EventTPCnv/test/EventIDCnv_p1_test.cxx index 996cbf1d90ac0bd1976ece278d2a42967bc9798e..c7af7cf5695340334a15c4d1c9b2ae85d95710f5 100644 --- a/Event/EventTPCnv/test/EventIDCnv_p1_test.cxx +++ b/Event/EventTPCnv/test/EventIDCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventIDCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "TestTools/leakcheck.h" #include "EventInfo/EventID.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -47,7 +46,7 @@ void testit (const EventID& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -59,7 +58,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventIDCnv_p2_test.cxx b/Event/EventTPCnv/test/EventIDCnv_p2_test.cxx index 02c54e39bbf8c8d4ecbdbc9c4577315dc8a05feb..855c3d149e3e05d7daba8e1030c0023e91442235 100644 --- a/Event/EventTPCnv/test/EventIDCnv_p2_test.cxx +++ b/Event/EventTPCnv/test/EventIDCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventIDCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventTPCnv/EventIDCnv_p2.h" #include "TestTools/leakcheck.h" #include "EventInfo/EventID.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -48,7 +47,7 @@ void testit (const EventID& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -60,7 +59,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/EventInfoCnv_p1_test.cxx index e8c0da3bf0d734288592e77c5630e830dc3d47ae..50f22327997312a334fa975e476459c1e0072651 100644 --- a/Event/EventTPCnv/test/EventInfoCnv_p1_test.cxx +++ b/Event/EventTPCnv/test/EventInfoCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventInfoCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/TriggerInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -108,7 +107,7 @@ void testit (const EventInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -159,7 +158,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/EventInfoCnv_p2_test.cxx index 45cba0a7fd57a5786ea7d1fd7dfa98ccd05030d4..1d60104ca695e33f25fbdfd162f41f20f7008660 100644 --- a/Event/EventTPCnv/test/EventInfoCnv_p2_test.cxx +++ b/Event/EventTPCnv/test/EventInfoCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventInfoCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/TriggerInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -116,7 +115,7 @@ void testit (const EventInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -167,7 +166,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventInfoCnv_p3_test.cxx b/Event/EventTPCnv/test/EventInfoCnv_p3_test.cxx index 4f1f85f25112afa77fdf079b24c3eecba31961b2..e1e82ea79b760a4c21c9b3114afa23e3a3574875 100644 --- a/Event/EventTPCnv/test/EventInfoCnv_p3_test.cxx +++ b/Event/EventTPCnv/test/EventInfoCnv_p3_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventInfoCnv_p3_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/TriggerInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -116,7 +115,7 @@ void testit (const EventInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -167,7 +166,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventInfoCnv_p4_test.cxx b/Event/EventTPCnv/test/EventInfoCnv_p4_test.cxx index 475f61ac1133bfe1c63d92626aea33c40216e26b..b76201e7f5ce816cf5edae2570d5b199980ccc46 100644 --- a/Event/EventTPCnv/test/EventInfoCnv_p4_test.cxx +++ b/Event/EventTPCnv/test/EventInfoCnv_p4_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventInfoCnv_p4_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/TriggerInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -117,7 +116,7 @@ void testit (const EventInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -168,7 +167,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx index 37a3bd2025c150ba8e589e4844322a4f7b96fac1..aaad66c5fea3395f797e0cda3d7535f629d40939 100644 --- a/Event/EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx +++ b/Event/EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventStreamInfoCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "TestTools/leakcheck.h" #include "EventInfo/EventStreamInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -69,7 +68,7 @@ void testit (const EventStreamInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -118,7 +117,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx index 784ff5c40ee1a4d40e46050ccb537a8e3e08ec4a..794a6de31e0f5a7f5d90475baabc0625bdce7baa 100644 --- a/Event/EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx +++ b/Event/EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventStreamInfoCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "TestTools/leakcheck.h" #include "EventInfo/EventStreamInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -69,7 +68,7 @@ void testit (const EventStreamInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -118,7 +117,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx b/Event/EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx index 032e17bdcddd953da66f1c8abb455c41311d3d2c..664ee08ea8876cac642da8a48aea604b196e6194 100644 --- a/Event/EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx +++ b/Event/EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventStreamInfoCnv_p3_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "TestTools/leakcheck.h" #include "EventInfo/EventStreamInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -70,7 +69,7 @@ void testit (const EventStreamInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -119,7 +118,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventTypeCnv_p1_test.cxx b/Event/EventTPCnv/test/EventTypeCnv_p1_test.cxx index 00b238653e6650e26dedfca26d12b2a664ea1c61..1c14784a38e9fb355e920797bb668b46757332c1 100644 --- a/Event/EventTPCnv/test/EventTypeCnv_p1_test.cxx +++ b/Event/EventTPCnv/test/EventTypeCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventTypeCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "TestTools/leakcheck.h" #include "EventInfo/EventType.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -51,7 +50,7 @@ void testit (const EventType& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -73,7 +72,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventTypeCnv_p2_test.cxx b/Event/EventTPCnv/test/EventTypeCnv_p2_test.cxx index 8b45738a1c89998e2fc906f2879d222118f81fb1..38799e6091b3e64c2fcc1228df37dc3af616cc6d 100644 --- a/Event/EventTPCnv/test/EventTypeCnv_p2_test.cxx +++ b/Event/EventTPCnv/test/EventTypeCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventTypeCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventTPCnv/EventTypeCnv_p2.h" #include "TestTools/leakcheck.h" #include "EventInfo/EventType.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -52,7 +51,7 @@ void testit (const EventType& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -74,7 +73,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/EventTypeCnv_p3_test.cxx b/Event/EventTPCnv/test/EventTypeCnv_p3_test.cxx index 7fea5c94293b5266f0ef7743eae88c98801e2df8..fd90f627838bca32bf2cbbe5fb5fe529ba8a503a 100644 --- a/Event/EventTPCnv/test/EventTypeCnv_p3_test.cxx +++ b/Event/EventTPCnv/test/EventTypeCnv_p3_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/EventTypeCnv_p3_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "TestTools/leakcheck.h" #include "EventInfo/EventType.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -52,7 +51,7 @@ void testit (const EventType& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -74,7 +73,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx index 90a994c7d6a7efc0e93370d0c9396315160817a2..7c6cd3dc1d7bcf35e4c5a9ffbde7e4640d7845bb 100644 --- a/Event/EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx +++ b/Event/EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/MergedEventInfoCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/EventID.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -117,7 +116,7 @@ void testit (const MergedEventInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -170,7 +169,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx index c4068dccc6b6a3178633b1ab39bd70f3c69a3bc4..500fb983b96c45bc987ee345e3a89cef67c43709 100644 --- a/Event/EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx +++ b/Event/EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/MergedEventInfoCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/EventID.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -125,7 +124,7 @@ void testit (const MergedEventInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -178,7 +177,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx index b9c776f6695d72e9221ec266a0886d525242be83..931e30a983285f084494256673f85a24d9f65dc7 100644 --- a/Event/EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx @@ -1,10 +1,6 @@ - - /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/PileUpEventInfoCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -20,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/EventID.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> #include <sstream> @@ -230,7 +227,7 @@ std::unique_ptr<EventInfo> make_ei (int offs) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -246,7 +243,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx index 6a0a7e7b1c3a31a152f38a38fe4637d91b63aef2..fab4723b1dff58df609611e050153516028f4301 100644 --- a/Event/EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/PileUpEventInfoCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/EventID.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> #include <sstream> @@ -225,7 +224,7 @@ std::unique_ptr<EventInfo> make_ei (int offs) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -241,7 +240,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx index f5878ed746506d081b9646f03f9a74e92c6a4318..c0473f2136e7daeb2d5674d2ed213aa293813c12 100644 --- a/Event/EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/PileUpEventInfoCnv_p3_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/EventID.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> #include <sstream> @@ -225,7 +224,7 @@ std::unique_ptr<EventInfo> make_ei (int offs) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -241,7 +240,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx index 166896d68b3a4c73a9b91c250d7087efe7680620..64d3091a0a16e30654ca7e3cffb188a206f47bf7 100644 --- a/Event/EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/PileUpEventInfoCnv_p4_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/EventID.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> #include <sstream> @@ -225,7 +224,7 @@ std::unique_ptr<EventInfo> make_ei (int offs) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -241,7 +240,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx b/Event/EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx index f05ba8bd14a02cbe0926675358ed9dec636391bd..78429870e216d98942cfa2bb80bde91525a0d380 100644 --- a/Event/EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx +++ b/Event/EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/PileUpEventInfoCnv_p5_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -18,6 +16,7 @@ #include "EventInfo/EventType.h" #include "EventInfo/EventID.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> #include <sstream> @@ -227,7 +226,7 @@ std::unique_ptr<EventInfo> make_ei (int offs) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -243,7 +242,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/TriggerInfoCnv_p1_test.cxx b/Event/EventTPCnv/test/TriggerInfoCnv_p1_test.cxx index 55f4f367342b7d1b8bc9292e27b7afc1d4ec950d..89424da8e1cf65f3c2610c0a138dd93fbb39eabb 100644 --- a/Event/EventTPCnv/test/TriggerInfoCnv_p1_test.cxx +++ b/Event/EventTPCnv/test/TriggerInfoCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/TriggerInfoCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "TestTools/leakcheck.h" #include "EventInfo/TriggerInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -48,7 +47,7 @@ void testit (const TriggerInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -74,7 +73,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/TriggerInfoCnv_p2_test.cxx b/Event/EventTPCnv/test/TriggerInfoCnv_p2_test.cxx index 24e56af4d3a654c91db48facd616fd0ffe3d8fe5..ba227e614333999e1e5e28c0e29c41e99778b1e8 100644 --- a/Event/EventTPCnv/test/TriggerInfoCnv_p2_test.cxx +++ b/Event/EventTPCnv/test/TriggerInfoCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/TriggerInfoCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "TestTools/leakcheck.h" #include "EventInfo/TriggerInfo.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -58,7 +57,7 @@ void testit (const TriggerInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -84,7 +83,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/EventTPCnv/test/TriggerInfoCnv_p3_test.cxx b/Event/EventTPCnv/test/TriggerInfoCnv_p3_test.cxx index 8f0ea4a03431e3c8bfbcaba602dbb97b9e788fb5..76a1c8eda1a31d040702b1d99691ff9ea81ca8bd 100644 --- a/Event/EventTPCnv/test/TriggerInfoCnv_p3_test.cxx +++ b/Event/EventTPCnv/test/TriggerInfoCnv_p3_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file EventTPCnv/test/TriggerInfoCnv_p3_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -14,6 +12,7 @@ #include "EventTPCnv/TriggerInfoCnv_p3.h" #include "TestTools/leakcheck.h" #include "EventInfo/TriggerInfo.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -58,7 +57,7 @@ void testit (const TriggerInfo& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -84,7 +83,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/Event/xAOD/xAODEgamma/Root/Egamma_v1.cxx b/Event/xAOD/xAODEgamma/Root/Egamma_v1.cxx index 28c9e56dec8889d3f5582f7f61c9daa466de24e0..ca78a8098b881f48a362698db911c5df8cc3ddba 100644 --- a/Event/xAOD/xAODEgamma/Root/Egamma_v1.cxx +++ b/Event/xAOD/xAODEgamma/Root/Egamma_v1.cxx @@ -450,25 +450,6 @@ void Egamma_v1::setSelectionisEM(unsigned int value, const std::string& isEM){ acc(*this)=value; } -bool Egamma_v1::likelihoodValue(float& value, const std::string& LHValue/*=std::string("LHValue")*/) const{ - const SG::AuxElement::Accessor<float> acc( LHValue ); - if(!acc.isAvailable(*this) ) { - return false; - } - value= acc(*this); - return true; -} - -float Egamma_v1::likelihoodValue(const std::string& LHValue/*=std::string("LHValue")*/) const{ - const SG::AuxElement::Accessor< float > acc( LHValue ); - return acc(*this); -} - -void Egamma_v1::setLikelihoodValue(float value, const std::string& LHValue/*=std::string("LHValue")*/){ - const SG::AuxElement::Accessor<float> acc( LHValue); - acc(*this)=value; -} - } // namespace xAOD // LocalWords: const el hasStore makePrivateStore diff --git a/Event/xAOD/xAODTrigL1Calo/Root/TriggerTower_v2.cxx b/Event/xAOD/xAODTrigL1Calo/Root/TriggerTower_v2.cxx index 70fb8a48b435fa8095793826a41bf98ef000c7ee..e98d5623c6d897476c49c3438784ee8573a96c99 100644 --- a/Event/xAOD/xAODTrigL1Calo/Root/TriggerTower_v2.cxx +++ b/Event/xAOD/xAODTrigL1Calo/Root/TriggerTower_v2.cxx @@ -120,9 +120,10 @@ namespace xAOD{ int TriggerTower_v2::layer() const { - unsigned int cnum = ( coolId() >> 24 ) & 0x7; - unsigned int mnum = ( coolId() >> 16 ) & 0xf; - // unsigned int chan = coolId() & 0x3; // To be used for FCAL2,FCAL3 soon + unsigned int theCoolId = coolId(); + unsigned int cnum = ( theCoolId >> 24 ) & 0x7; + unsigned int mnum = ( theCoolId >> 16 ) & 0xf; + // unsigned int chan = theCoolId & 0x3; // To be used for FCAL2,FCAL3 soon if (cnum < 4) { // EMB,EMEC return 0; @@ -148,9 +149,10 @@ namespace xAOD{ int TriggerTower_v2::sampling() const { - unsigned int cnum = ( coolId() >> 24 ) & 0x7; - unsigned int mnum = ( coolId() >> 16 ) & 0xf; - // unsigned int chan = coolId() & 0x3; // To be used for FCAL2,FCAL3 soon + unsigned int theCoolId = coolId(); + unsigned int cnum = ( theCoolId >> 24 ) & 0x7; + unsigned int mnum = ( theCoolId >> 16 ) & 0xf; + // unsigned int chan = theCoolId & 0x3; // To be used for FCAL2,FCAL3 soon if (cnum < 4) { // EMB,EMEC return 0; diff --git a/ForwardDetectors/AFP/AFP_ByteStream2RawCnv/src/AFP_ByteStream2RawCnv.cxx b/ForwardDetectors/AFP/AFP_ByteStream2RawCnv/src/AFP_ByteStream2RawCnv.cxx index 5613fdb4ee1c21fe161ea47f03c6c14a5a97d50c..6d631bc8dd35090f06754bb750ec1f1a42462fa1 100644 --- a/ForwardDetectors/AFP/AFP_ByteStream2RawCnv/src/AFP_ByteStream2RawCnv.cxx +++ b/ForwardDetectors/AFP/AFP_ByteStream2RawCnv/src/AFP_ByteStream2RawCnv.cxx @@ -43,7 +43,7 @@ StatusCode AFP_ByteStream2RawCnv::initialize() { if (m_robDataProvider.retrieve().isFailure()) { ATH_MSG_WARNING("Failed to retrieve service " << m_robDataProvider - << "..."); + << "..."); return StatusCode::SUCCESS; } else { ATH_MSG_DEBUG("Retrieved service " << m_robDataProvider << "..."); @@ -51,7 +51,7 @@ StatusCode AFP_ByteStream2RawCnv::initialize() { if (m_wordReadout.retrieve().isFailure()) { ATH_MSG_WARNING("Failed to retrieve service " << m_wordReadout - << "..."); + << "..."); return StatusCode::SUCCESS; } else { ATH_MSG_DEBUG("Retrieved service " << m_wordReadout << "..."); @@ -120,6 +120,10 @@ StatusCode AFP_ByteStream2RawCnv::fillCollection(const OFFLINE_FRAGMENTS_NAMESPA AFP_SiRawCollection *collectionSi = nullptr; AFP_ToFRawCollection *collectionToF = nullptr; + std::vector<std::vector<uint16_t>> picoTDC1_channels, picoTDC2_channels; + std::vector<bool> picoTDC_hasTrigger; + std::vector<int> ToF_links; + const uint32_t size = robFrag->rod_ndata(); for (unsigned i = 0; i < size; i++) { uint32_t the_word=vint[i]; @@ -128,16 +132,22 @@ StatusCode AFP_ByteStream2RawCnv::fillCollection(const OFFLINE_FRAGMENTS_NAMESPA if (m_wordReadout->isHeader(the_word)) { AFP_RawCollectionHead* collectionHead = nullptr; if ( isLinkToF (the_link) ) { - // prepare collection for time-of-flight - collectionToF = getCollectionToF(//m_wordReadout->link(), robFrag->rob_source_id(), + // prepare collection for time-of-flight + collectionToF = getCollectionToF(//m_wordReadout->link(), robFrag->rob_source_id(), rawContainer); - collectionHead = collectionToF; + collectionHead = collectionToF; + + std::vector<uint16_t> helper; + picoTDC1_channels.push_back(helper); + picoTDC2_channels.push_back(helper); + picoTDC_hasTrigger.push_back(false); + ToF_links.push_back(the_link); } else if ( isLinkSi (the_link) ) { - // prepare collection for silicon detector - collectionSi = getCollectionSi(//m_wordReadout->link(), robFrag->rob_source_id(), + // prepare collection for silicon detector + collectionSi = getCollectionSi(//m_wordReadout->link(), robFrag->rob_source_id(), rawContainer); - collectionHead = collectionSi; + collectionHead = collectionSi; } else { ATH_MSG_ERROR("Unidentified value of link="<<the_link<<" for header record."); @@ -146,7 +156,7 @@ StatusCode AFP_ByteStream2RawCnv::fillCollection(const OFFLINE_FRAGMENTS_NAMESPA if (!collectionHead) { ATH_MSG_WARNING("nullptr returned by getCollection(link = " - << the_link << ", robID = " << robFrag->rob_source_id() <<")"); + << the_link << ", robID = " << robFrag->rob_source_id() <<")"); return StatusCode::SUCCESS; } @@ -161,65 +171,181 @@ StatusCode AFP_ByteStream2RawCnv::fillCollection(const OFFLINE_FRAGMENTS_NAMESPA // fill time-of-flight collection if ( isLinkToF (the_link) ) { - // check if collection is available - if ( !collectionToF ) { - ATH_MSG_WARNING("No ToF collection available to fill data."); - return StatusCode::SUCCESS; - } - - AFP_ToFRawData& ToFData = collectionToF->newDataRecord(); - ToFData.setHeader( m_wordReadout->getBits (the_word, 23, 21) ); - ToFData.setEdge( m_wordReadout->getBits (the_word, 20, 20) ); - ToFData.setChannel( m_wordReadout->getBits (the_word, 19, 16) ); - ToFData.setPulseLength( m_wordReadout->getBits (the_word, 15, 10) ); - ToFData.setTime( m_wordReadout->getBits (the_word, 9, 0) ); - - setDataHeader (the_word, &ToFData); + // check if collection is available + if ( !collectionToF ) { + ATH_MSG_WARNING("No ToF collection available to fill data."); + return StatusCode::SUCCESS; + } + + uint32_t bit23=m_wordReadout->getBits(the_word, 23, 23); + if(!bit23) + { + // HPTDC 2017 + AFP_ToFRawData& ToFData = collectionToF->newDataRecord(); + ToFData.setHeader( m_wordReadout->getBits(the_word, 23, 21) ); + ToFData.setEdge( m_wordReadout->getBits(the_word, 20, 20) ); + ToFData.setChannel( m_wordReadout->getBits(the_word, 19, 16) ); + ToFData.setPulseLength( m_wordReadout->getBits(the_word, 15, 10) ); + ToFData.setTime( m_wordReadout->getBits(the_word, 9, 0) ); + + setDataHeader (the_word, &ToFData); + } + else + { + // picoTDC + + uint32_t bits19_22=m_wordReadout->getBits(the_word, 22, 19); + + if(bits19_22==0 || bits19_22==1) + { + // picoTDC #1 (==0) or picoTDC #2 (==1) + uint16_t channel=m_wordReadout->getBits(the_word, 18, 13); + + // find entry with the same channel number + auto ToFData_itr=std::find_if( collectionToF->begin(), collectionToF->end(), + [&](const AFP_ToFRawData entry){return entry.channel()==channel;}); + + if(ToFData_itr==collectionToF->end()) + { + // create a new entry if such channel number doesn't exist + auto& ToFData = collectionToF->newDataRecord(); + + ToFData.setHeader( bit23 ); + ToFData.setEdge( 0 ); + ToFData.setChannel( m_wordReadout->getBits(the_word, 18, 13) ); + ToFData.setPulseLength( 0 ); + ToFData.setTime( 0 ); + setDataHeader (the_word, &ToFData); + + ToFData_itr = std::prev(collectionToF->end()); + } + + if(!bits19_22) + { + // picoTDC #1 + if(ToFData_itr->time() !=0 ) + { + ATH_MSG_WARNING("trying to set time to "<<m_wordReadout->getBits(the_word, 12, 0)<<", but it is already set to = "<<ToFData_itr->time()<<", will not overwrite"); + } + else + { + ToFData_itr->setTime( m_wordReadout->getBits(the_word, 12, 0) ); + picoTDC1_channels.back().push_back(channel); + } + } + else + { + // picoTDC #2 + if(ToFData_itr->pulseLength() !=0 ) + { + ATH_MSG_WARNING("trying to set pulseLength to "<<m_wordReadout->getBits(the_word, 12, 0)<<", but it is already set to = "<<ToFData_itr->pulseLength()<<", will not overwrite"); + } + else + { + ToFData_itr->setPulseLength( m_wordReadout->getBits(the_word, 12, 0) ); + picoTDC2_channels.back().push_back(channel); + } + } + } + else if(bits19_22==4) + { + // check if there's already some other trigger word + auto ToFData_itr=std::find_if( collectionToF->begin(), collectionToF->end(), + [&](const AFP_ToFRawData e){return e.isTrigger();}); + if(ToFData_itr!=collectionToF->end()) + { + // there shouldn't be any other trigger word + ATH_MSG_WARNING("already found a trigger word with delayedTrigger = "<<ToFData_itr->delayedTrigger()<<" and triggerPattern = "<<ToFData_itr->triggerPattern()<<", will ignore new word with delayedTrigger = "<<m_wordReadout->getBits(the_word, 18,16)<<" and triggerPattern = "<<m_wordReadout->getBits(the_word, 15, 0)); + } + else + { + // if there isn't any other trigger word, create a new entry + auto& ToFData = collectionToF->newDataRecord(); + + ToFData.setHeader( bit23 ); + ToFData.setEdge( 0 ); + ToFData.setTrigger(); // mark this entry as a trigger entry; must be done before setting delayedTrigger or triggerPattern + ToFData.setDelayedTrigger( m_wordReadout->getBits(the_word, 18,16) ); + ToFData.setTriggerPattern( m_wordReadout->getBits(the_word, 15, 0) ); + picoTDC_hasTrigger.back()=true; + } + } + else + { + ATH_MSG_WARNING("unknown pattern in bits 19-22 = "<<bits19_22<<", ignoring word = "<<the_word); + } + } } else if ( isLinkSi (the_link) ) { - // fill silicon detector collection - - // check if collection is available - if ( !collectionSi ) { - ATH_MSG_WARNING("No silicon detector collection available to fill data."); - return StatusCode::SUCCESS; - } - - // check first silicon hit information - if (m_wordReadout->getBits(the_word, 7, 4) != s_siNoHitMarker) { - AFP_SiRawData& siData = collectionSi->newDataRecord(); - siData.setColumn (m_wordReadout->getBits(the_word, 23, 17)); - siData.setRow (m_wordReadout->getBits(the_word, 16, 8)); - siData.setTimeOverThreshold (m_wordReadout->getBits(the_word, 7, 4)); - - setDataHeader (the_word, &siData); - } - - // check second silicon hit information - if (m_wordReadout->getBits(the_word, 3, 0) != s_siNoHitMarker) { - AFP_SiRawData& siData = collectionSi->newDataRecord(); - siData.setColumn (m_wordReadout->getBits(the_word, 23, 17)); - siData.setRow (m_wordReadout->getBits(the_word, 16, 8) + 1); - siData.setTimeOverThreshold (m_wordReadout->getBits(the_word, 3, 0)); - - setDataHeader (the_word, &siData); - } + // fill silicon detector collection + + // check if collection is available + if ( !collectionSi ) { + ATH_MSG_WARNING("No silicon detector collection available to fill data."); + return StatusCode::SUCCESS; + } + + // check first silicon hit information + if (m_wordReadout->getBits(the_word, 7, 4) != s_siNoHitMarker) { + AFP_SiRawData& siData = collectionSi->newDataRecord(); + siData.setColumn (m_wordReadout->getBits(the_word, 23, 17)); + siData.setRow (m_wordReadout->getBits(the_word, 16, 8)); + siData.setTimeOverThreshold (m_wordReadout->getBits(the_word, 7, 4)); + + setDataHeader (the_word, &siData); + } + + // check second silicon hit information + if (m_wordReadout->getBits(the_word, 3, 0) != s_siNoHitMarker) { + AFP_SiRawData& siData = collectionSi->newDataRecord(); + siData.setColumn (m_wordReadout->getBits(the_word, 23, 17)); + siData.setRow (m_wordReadout->getBits(the_word, 16, 8) + 1); + siData.setTimeOverThreshold (m_wordReadout->getBits(the_word, 3, 0)); + + setDataHeader (the_word, &siData); + } } else { - ATH_MSG_ERROR("Not recognised value of link="<<the_link<<" for data record."); - return StatusCode::FAILURE; + ATH_MSG_ERROR("Not recognised value of link="<<the_link<<" for data record."); + return StatusCode::FAILURE; } - } - // end is data - + } // end is data } // end of loop + + // in case of picoTDC, check we always have both words + for(unsigned int i=0;i<picoTDC1_channels.size();++i) + { + if(picoTDC1_channels.at(i).size()>0 || picoTDC2_channels.at(i).size()) + { + for(auto ch1 : picoTDC1_channels.at(i)) + { + if(std::find(picoTDC2_channels.at(i).begin(),picoTDC2_channels.at(i).end(),ch1) == picoTDC2_channels.at(i).end()) + { + ATH_MSG_WARNING("Cannot find channel "<<ch1<<" from picoTDC #1 in picoTDC #2 in ToF collections with link nr. "<<ToF_links.at(i)<<", pulseLength is very probably not set"); + } + } + for(auto ch2 : picoTDC2_channels.at(i)) + { + if(std::find(picoTDC1_channels.at(i).begin(),picoTDC1_channels.at(i).end(),ch2) == picoTDC1_channels.at(i).end()) + { + ATH_MSG_WARNING("Cannot find channel "<<ch2<<" from picoTDC #2 in picoTDC #1 in ToF collections with link nr. "<<ToF_links.at(i)<<", time is very probably not set"); + } + } + + if(!picoTDC_hasTrigger.at(i)) + { + ATH_MSG_WARNING("Cannot find trigger word in ToF collections with link nr. "<<ToF_links.at(i)); + } + } + } + return StatusCode::SUCCESS; } AFP_SiRawCollection * AFP_ByteStream2RawCnv::getCollectionSi(//const unsigned int link, const unsigned int robId, - AFP_RawContainer *container) const { + AFP_RawContainer *container) const { if (!container) { ATH_MSG_WARNING("NULL pointer passed in argument: container. NULL pointer returned."); @@ -243,7 +369,7 @@ AFP_ByteStream2RawCnv::getCollectionSi(//const unsigned int link, const unsigned AFP_ToFRawCollection * AFP_ByteStream2RawCnv::getCollectionToF(// const unsigned int link, const unsigned int robId, - AFP_RawContainer *container) const { + AFP_RawContainer *container) const { if (!container) { ATH_MSG_WARNING("NULL pointer passed in argument: container. NULL pointer returned."); diff --git a/ForwardDetectors/AFP/AFP_Raw2Digi/src/AFP_Raw2DigiTool.cxx b/ForwardDetectors/AFP/AFP_Raw2Digi/src/AFP_Raw2DigiTool.cxx index 9157f31ebd34d9c70b7f217aaf3eb479f2f94ead..2c51938ce4f22c38763c7d2a45f47f90bcb6203b 100644 --- a/ForwardDetectors/AFP/AFP_Raw2Digi/src/AFP_Raw2DigiTool.cxx +++ b/ForwardDetectors/AFP/AFP_Raw2Digi/src/AFP_Raw2DigiTool.cxx @@ -95,8 +95,8 @@ StatusCode AFP_Raw2DigiTool::recoToFHits(const EventContext &ctx) const for (const AFP_ToFRawCollection& collection: container->collectionsToF()) for (const AFP_ToFRawData& data : collection.dataRecords()) - if (data.hitDiscConfig() == 3 && data.header() == 2) - newXAODHitToF (tofHitContainer.get(), collection, data); + if (data.hitDiscConfig() == 3 && (data.header() == 2 || (data.header() == 1 && !data.isTrigger()))) + newXAODHitToF (tofHitContainer.get(), collection, data); // is_ToF && (is_HPTDC || (is_picoTDC && !is_trigger_word)) SG::WriteHandle<xAOD::AFPToFHitContainer> writeHandle{m_AFPHitsContainerNameToF, ctx}; ATH_CHECK( writeHandle.record(std::move(tofHitContainer), std::move(tofHitAuxContainer)) ); diff --git a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_RawCollection.h b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_RawCollection.h index c01fcfee667c328d1bc78172a0ae0cc8d6953392..4f9c87c85f668a13b4e8cf2f3007ad4945bcd455 100644 --- a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_RawCollection.h +++ b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_RawCollection.h @@ -15,7 +15,11 @@ class AFP_RawCollection : public AFP_RawCollectionHead public: /// @copydoc AFP_RawCollection::m_dataRecords; const std::list<RAWDATA_T>& dataRecords() const {return m_dataRecords;} - + + /// Returns iterators to the beginning and end of the list + typename std::list<RAWDATA_T>::iterator begin() {return m_dataRecords.begin();} + typename std::list<RAWDATA_T>::iterator end() {return m_dataRecords.end();} + /// Creates a new empty data record in the collection and returns reference to it. RAWDATA_T& newDataRecord () {m_dataRecords.emplace_back(); return m_dataRecords.back();} diff --git a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_ToFRawCollection.h b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_ToFRawCollection.h index d54cabaaa0a07d11dbc94a98fbd4d212f616badb..88f79d970607889de6c27e2e9f28e6fe367be4f6 100644 --- a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_ToFRawCollection.h +++ b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_ToFRawCollection.h @@ -1,18 +1,12 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef AFP_TOFRAWCOLLECTION_H #define AFP_TOFRAWCOLLECTION_H #include "AFP_RawEv/AFP_ToFRawData.h" -#include "AFP_RawEv/AFP_RawCollection.h" -#include "AthenaKernel/CLASS_DEF.h" - -/// Class representing collection of silicon detector data typedef AFP_RawCollection<AFP_ToFRawData> AFP_ToFRawCollection; -CLASS_DEF(AFP_ToFRawCollection, 1242654793, 1 ) - -#endif +#endif \ No newline at end of file diff --git a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_ToFRawData.h b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_ToFRawData.h index 3289cb777d746bfa9cf7d890d29d1825b6655451..ee96752b8a85f5e77c452bf968f7dc65d05d3d38 100644 --- a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_ToFRawData.h +++ b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/AFP_ToFRawData.h @@ -1,76 +1,12 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef AFP_TOFRAWDATA_H #define AFP_TOFRAWDATA_H -#include "AFP_RawDataCommonHead.h" +#include "AFP_RawEv/versions/AFP_ToFRawData_v2.h" -#include <stdint.h> +typedef AFP_ToFRawData_v2 AFP_ToFRawData; -/// @brief Class representing data record for time-of-flight detectors. -/// -/// Documentation of the format is available in the twiki page: -/// https://twiki.cern.ch/twiki/bin/view/Atlas/AFPHPTDC#Data_Encoding -class AFP_ToFRawData : public AFP_RawDataCommonHead -{ -public: - /// @copydoc AFP_ToFRawData::m_header - uint16_t header() const {return m_header;} - void setHeader(const uint16_t header) {m_header = header;} - - /// @copydoc AFP_ToFRawData::m_edge - uint16_t edge() const {return m_edge;} - void setEdge(const uint16_t edge) {m_edge = edge;} - - /// @copydoc AFP_ToFRawData::m_channel - uint16_t channel() const {return m_channel;} - void setChannel(const uint16_t channel) {m_channel = channel;} - - /// @copydoc AFP_ToFRawData::m_time - uint32_t time() const {return m_time;} - void setTime(const uint32_t time) {m_time = time;} - - /// @copydoc AFP_ToFRawData::m_pulseLength - uint32_t pulseLength() const {return m_pulseLength;} - void setPulseLength(const uint32_t pulseLength) {m_pulseLength = pulseLength;} - -private: - /// @brief Value of 9-11 most significant bits - /// - /// In the following record: `xxxx xxxx hhhx xxxx xxxx xxxx xxxx xxxx` - /// it means bits marked with `h`. Contains information about time-of-flight data type or error: - /// - value 0 means TDC header - /// - value 2 means hit measurement - /// - value 3 is per event error - uint16_t m_header; - - /// @brief Value of 12 most significant bit - /// - /// In the following record: `xxxx xxxx xxxE xxxx xxxx xxxx xxxx xxxx` - /// it means bits marked with `E`. Contains information about signal - /// beginning or end. - uint16_t m_edge; - - /// @brief Value of 13-17 most significant bits - /// - /// In the following record: `xxxx xxxx xxxx CCCC xxxx xxxx xxxx xxxx` - /// it means bits marked with `C`. Contains information about - /// channel in HPTDC of the time measurement. - uint16_t m_channel; - - /// @brief Value of 10 least significant bits - /// - /// In the following record: `xxxx xxxx xxxx xxxx xxxx xxtt tttt tttt` - /// it means bits marked with `t`. Contains information about time. - uint32_t m_time; - - /// @brief Value of 11-16 least significant bits - /// - /// In the following record: `xxxx xxxx xxxx xxxx LLLL LLxx xxxx xxxx` - /// it means bits marked with `L`. Contains information how long - /// signal from the bar was above threshold. - uint32_t m_pulseLength; -}; -#endif +#endif \ No newline at end of file diff --git a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawCollection_v1.h b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawCollection_v1.h new file mode 100644 index 0000000000000000000000000000000000000000..e127149a47219e84d08b99cc01c0b8e0d41f6b03 --- /dev/null +++ b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawCollection_v1.h @@ -0,0 +1,14 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef AFP_TOFRAWCOLLECTION_V1_H +#define AFP_TOFRAWCOLLECTION_V1_H + +#include "AFP_RawEv/versions/AFP_ToFRawData_v1.h" +#include "AFP_RawEv/AFP_RawCollection.h" + +/// Class representing collection of silicon detector data +typedef AFP_RawCollection<AFP_ToFRawData_v1> AFP_ToFRawCollection_v1; + +#endif diff --git a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawCollection_v2.h b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawCollection_v2.h new file mode 100644 index 0000000000000000000000000000000000000000..18fe010ef00dcad42f2a289f7289d7e99e53d527 --- /dev/null +++ b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawCollection_v2.h @@ -0,0 +1,15 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef AFP_TOFRAWCOLLECTION_V2_H +#define AFP_TOFRAWCOLLECTION_V2_H + +#include "AFP_RawEv/versions/AFP_ToFRawData_v2.h" +#include "AFP_RawEv/AFP_RawCollection.h" + + +/// Class representing collection of silicon detector data +typedef AFP_RawCollection<AFP_ToFRawData_v2> AFP_ToFRawCollection_v2; + +#endif diff --git a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawData_v1.h b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawData_v1.h new file mode 100644 index 0000000000000000000000000000000000000000..8f372ebc96dcbe0a446acc56047ef9b857d529a5 --- /dev/null +++ b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawData_v1.h @@ -0,0 +1,76 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef AFP_TOFRAWDATA_V1_H +#define AFP_TOFRAWDATA_V1_H + +#include "AFP_RawEv/AFP_RawDataCommonHead.h" + +#include <stdint.h> + +/// @brief Class representing data record for time-of-flight detectors. +/// +/// Documentation of the format is available in the twiki page: +/// https://twiki.cern.ch/twiki/bin/view/Atlas/AFPHPTDC#Data_Encoding +class AFP_ToFRawData_v1 : public AFP_RawDataCommonHead +{ +public: + /// @copydoc AFP_ToFRawData_v1::m_header + uint16_t header() const {return m_header;} + void setHeader(const uint16_t header) {m_header = header;} + + /// @copydoc AFP_ToFRawData_v1::m_edge + uint16_t edge() const {return m_edge;} + void setEdge(const uint16_t edge) {m_edge = edge;} + + /// @copydoc AFP_ToFRawData_v1::m_channel + uint16_t channel() const {return m_channel;} + void setChannel(const uint16_t channel) {m_channel = channel;} + + /// @copydoc AFP_ToFRawData_v1::m_time + uint32_t time() const {return m_time;} + void setTime(const uint32_t time) {m_time = time;} + + /// @copydoc AFP_ToFRawData_v1::m_pulseLength + uint32_t pulseLength() const {return m_pulseLength;} + void setPulseLength(const uint32_t pulseLength) {m_pulseLength = pulseLength;} + +private: + /// @brief Value of 9-11 most significant bits + /// + /// In the following record: `xxxx xxxx hhhx xxxx xxxx xxxx xxxx xxxx` + /// it means bits marked with `h`. Contains information about time-of-flight data type or error: + /// - value 0 means TDC header + /// - value 2 means hit measurement + /// - value 3 is per event error + uint16_t m_header; + + /// @brief Value of 12 most significant bit + /// + /// In the following record: `xxxx xxxx xxxE xxxx xxxx xxxx xxxx xxxx` + /// it means bits marked with `E`. Contains information about signal + /// beginning or end. + uint16_t m_edge; + + /// @brief Value of 13-17 most significant bits + /// + /// In the following record: `xxxx xxxx xxxx CCCC xxxx xxxx xxxx xxxx` + /// it means bits marked with `C`. Contains information about + /// channel in HPTDC of the time measurement. + uint16_t m_channel; + + /// @brief Value of 10 least significant bits + /// + /// In the following record: `xxxx xxxx xxxx xxxx xxxx xxtt tttt tttt` + /// it means bits marked with `t`. Contains information about time. + uint32_t m_time; + + /// @brief Value of 11-16 least significant bits + /// + /// In the following record: `xxxx xxxx xxxx xxxx LLLL LLxx xxxx xxxx` + /// it means bits marked with `L`. Contains information how long + /// signal from the bar was above threshold. + uint32_t m_pulseLength; +}; +#endif diff --git a/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawData_v2.h b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawData_v2.h new file mode 100644 index 0000000000000000000000000000000000000000..f49b8c0f68b32d8cb4d9f26e3a4f3b273a64f8d9 --- /dev/null +++ b/ForwardDetectors/AFP/AFP_RawEv/AFP_RawEv/versions/AFP_ToFRawData_v2.h @@ -0,0 +1,113 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef AFP_TOFRAWDATA_V2_H +#define AFP_TOFRAWDATA_V2_H + +#include "AFP_RawEv/AFP_RawDataCommonHead.h" + +// to use messaging macros +#include "AthenaBaseComps/AthMessaging.h" +#include "GaudiKernel/Bootstrap.h" +#include "GaudiKernel/ISvcLocator.h" + +#include <stdint.h> + +/// @brief Class representing data record for time-of-flight detectors. +/// +/// Documentation of the format is available in the twiki page: +/// https://twiki.cern.ch/twiki/bin/view/Atlas/AFPHPTDC#Data_Encoding +class AFP_ToFRawData_v2 : public AFP_RawDataCommonHead, public AthMessaging +{ +public: + + // these constructors are deleted by AthMessaging + AFP_ToFRawData_v2(); + AFP_ToFRawData_v2(const AFP_ToFRawData_v2& copy); + + /// @copydoc AFP_ToFRawData_v2::m_header + uint16_t header() const {return m_header;} + void setHeader(const uint16_t header) {m_header = header;} + + /// @copydoc AFP_ToFRawData_v2::m_edge + uint16_t edge() const {return m_edge;} + void setEdge(const uint16_t edge) {m_edge = edge;} + + /// @copydoc AFP_ToFRawData_v2::m_channel + uint16_t channel() const {return m_channel;} + void setChannel(const uint16_t channel) {m_channel = channel;} + void setTrigger() {m_channel=m_triggerChannel;} + bool isTrigger() const {return m_channel==m_triggerChannel;} + + /// @copydoc AFP_ToFRawData_v2::m_time_or_delayedTrigger + uint32_t time() const; + void setTime(const uint32_t time); + + /// @copydoc AFP_ToFRawData_v2::m_pulseLength_or_triggerPattern + uint32_t pulseLength() const; + void setPulseLength(const uint32_t pulseLength); + + /// @copydoc AFP_ToFRawData_v2::m_time_or_delayedTrigger + uint16_t delayedTrigger() const; + void setDelayedTrigger(const uint32_t delayedTrigger); + + /// @copydoc AFP_ToFRawData_v2::m_pulseLength_or_triggerPattern + uint32_t triggerPattern() const; + void setTriggerPattern(const uint32_t triggerPattern); + +private: + /// @brief Value of 9-11 (HPTDC) or 9 (picoTDC) most significant bit(s) + /// + /// In the following records: + /// HPTDC 2017: `xxxx xxxx hhhx xxxx xxxx xxxx xxxx xxxx` + /// picoTDC: `xxxx xxxx hxxx xxxx xxxx xxxx xxxx xxxx` + /// it means bits marked with `h`. Contains information about time-of-flight data type or error: + /// - value 0 means HPTDC header + /// - value 1 meas picoTDC header + /// - value 2 means hit measurement (only HPTDC) + /// - value 3 is per event error (only HPTDC) + uint16_t m_header; + + /// @brief Value of 12 most significant bit + /// + /// In the following record: `xxxx xxxx xxxE xxxx xxxx xxxx xxxx xxxx` + /// it means bits marked with `E`. Contains information about signal + /// beginning or end. Always set to 0 for picoTDC. + uint16_t m_edge; + + /// @brief Value of 13-17 (HPTDC) or 14-19 (picoTDC) most significant bits + /// + /// In the following records: + /// HPTDC 2017: `xxxx xxxx xxxx CCCC xxxx xxxx xxxx xxxx` + /// picoTDC #1+#2: `xxxx xxxx xxxx xCCC CCCx xxxx xxxx xxxx` + /// it means bits marked with `C`. Contains information about + /// channel of the time measurement. + uint16_t m_channel; + + /// @brief Special value for channel number, denoting the entry is actually a trigger word + /// + /// Data cannot have this channel number as there are no more than 6 bit, meaning maximum channel number is 63 + const uint16_t m_triggerChannel = 65535; + + /// @brief Value of 10 (HPTDC) or 13 (picoTDC) least significant bits for time; value of 14-16 (picoTDC) most significant bits for delayed trigger + /// + /// In the following records: + /// HPTDC 2017: `xxxx xxxx xxxx xxxx xxxx xxtt tttt tttt` + /// picoTDC #1: `xxxx xxxx xxxx xxxx xxxt tttt tttt tttt` + /// Trigger: `xxxx xxxx xxxx xTTT xxxx xxxx xxxx xxxx` + /// it means bits marked with `t` or `T`. Contains information about time (`t`) or about delayed trigger (`T`). + uint32_t m_time_or_delayedTrigger; + + /// @brief Value of 11-16 (HPTDC) or 13 (picoTDC) least significant bits for signal lenght; value of 16 (picoTDC) least significant bits for trigger pattern + /// + /// In the following record: + /// HPTDC 2017: `xxxx xxxx xxxx xxxx LLLL LLxx xxxx xxxx` + /// picoTDC #2: `xxxx xxxx xxxx xxxx xxxx LLLL LLLL LLLL` + /// Trigger: `xxxx xxxx xxxx xxxx PPPP PPPP PPPP PPPP` + /// it means bits marked with `L` or `P`. Contains information how long + /// signal from the bar was above threshold (`L`) or information about the trigger pattern (`P`). + uint32_t m_pulseLength_or_triggerPattern; + +}; +#endif diff --git a/ForwardDetectors/AFP/AFP_RawEv/CMakeLists.txt b/ForwardDetectors/AFP/AFP_RawEv/CMakeLists.txt index 14529849951b4b5b8970cdbd25f045c9ce41d385..52144dddd64cc51c9fd4147ec7c3639043f0e8b3 100644 --- a/ForwardDetectors/AFP/AFP_RawEv/CMakeLists.txt +++ b/ForwardDetectors/AFP/AFP_RawEv/CMakeLists.txt @@ -1,13 +1,13 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( AFP_RawEv ) # Component(s) in the package: atlas_add_library( AFP_RawEv - src/*.cxx + AFP_RawEv/*.h AFP_RawEv/versions/*.h src/*.cxx PUBLIC_HEADERS AFP_RawEv - LINK_LIBRARIES AthenaKernel ) + LINK_LIBRARIES AthenaKernel AthenaBaseComps GaudiKernel ) atlas_add_dictionary( AFP_RawEvDict AFP_RawEv/AFP_RawEvDict.h diff --git a/ForwardDetectors/AFP/AFP_RawEv/src/AFP_ToFRawData_v2.cxx b/ForwardDetectors/AFP/AFP_RawEv/src/AFP_ToFRawData_v2.cxx new file mode 100644 index 0000000000000000000000000000000000000000..b4138c277364f392bba35c9ac141f2e05feb7276 --- /dev/null +++ b/ForwardDetectors/AFP/AFP_RawEv/src/AFP_ToFRawData_v2.cxx @@ -0,0 +1,111 @@ +/* +Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + + +#include "AFP_RawEv/versions/AFP_ToFRawData_v2.h" + + +AFP_ToFRawData_v2::AFP_ToFRawData_v2(): + AthMessaging(Gaudi::svcLocator()->service< IMessageSvc >("MessageSvc"),"AFP_ToFRawData_v2") +{} + + +AFP_ToFRawData_v2::AFP_ToFRawData_v2(const AFP_ToFRawData_v2& copy): + AthMessaging(Gaudi::svcLocator()->service< IMessageSvc >("MessageSvc"),"AFP_ToFRawData_v2") +{ + m_header=copy.m_header; + m_edge=copy.m_edge; + m_channel=copy.m_channel; + m_time_or_delayedTrigger=copy.m_time_or_delayedTrigger; + m_pulseLength_or_triggerPattern=copy.m_pulseLength_or_triggerPattern; +} + + +uint32_t AFP_ToFRawData_v2::time() const +{ + if(this->isTrigger()) + { + ATH_MSG_WARNING("asking for time but this is a trigger word, returning 0"); + return 0; + } + return m_time_or_delayedTrigger; +} + + +void AFP_ToFRawData_v2::setTime(const uint32_t time) +{ + if(this->isTrigger()) + { + ATH_MSG_WARNING("trying to set time but this is a trigger word, not setting anything"); + return; + } + m_time_or_delayedTrigger = time; +} + + +uint32_t AFP_ToFRawData_v2::pulseLength() const +{ + if(this->isTrigger()) + { + ATH_MSG_WARNING("asking for pulseLength but this is a trigger word, returning 0"); + return 0; + } + return m_pulseLength_or_triggerPattern; +} + + +void AFP_ToFRawData_v2::setPulseLength(const uint32_t pulseLength) +{ + if(this->isTrigger()) + { + ATH_MSG_WARNING("trying to set pulseLength but this is a trigger word, not setting anything"); + return; + } + m_pulseLength_or_triggerPattern = pulseLength; +} + + +uint16_t AFP_ToFRawData_v2::delayedTrigger() const +{ + if(!this->isTrigger()) + { + ATH_MSG_WARNING("asking for delayedTrigger but this is not a trigger word, returning 0"); + return 0; + } + return m_time_or_delayedTrigger; +} + + +void AFP_ToFRawData_v2::setDelayedTrigger(const uint32_t delayedTrigger) +{ + if(!this->isTrigger()) + { + ATH_MSG_WARNING("trying to set delayedTrigger but this is not a trigger word, not setting anything"); + return; + } + m_time_or_delayedTrigger = delayedTrigger; +} + + +uint32_t AFP_ToFRawData_v2::triggerPattern() const +{ + if(!this->isTrigger()) + { + ATH_MSG_WARNING("asking for triggerPattern but this is not a trigger word, returning 0"); + return 0; + } + return m_pulseLength_or_triggerPattern; +} + + +void AFP_ToFRawData_v2::setTriggerPattern(const uint32_t triggerPattern) +{ + if(!this->isTrigger()) + { + ATH_MSG_WARNING("trying to set triggerPattern but this is not a trigger word, not setting anything"); + return; + } + m_pulseLength_or_triggerPattern = triggerPattern; +} + diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPFastReco.h b/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPFastReco.h index 411b81998f88abafed11ca0ae0fb1da06bc50e29..63e00aa449911a09763d24fa0f07ee45b98e4de4 100644 --- a/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPFastReco.h +++ b/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPFastReco.h @@ -13,14 +13,15 @@ namespace AFPMon { struct AFPCluster { - AFPCluster(float x_, float y_, float z_, int s, int l) - : x {x_}, y {y_}, z {z_}, station {s}, layer {l} {} + AFPCluster(float x_, float y_, float z_, int s, int l, int sumToT_) + : x {x_}, y {y_}, z {z_}, station {s}, layer {l}, sumToT{sumToT_} {} float x; float y; float z; int station; int layer; + int sumToT; }; inline bool operator==(const AFPCluster& lhs, const AFPCluster& rhs) @@ -30,6 +31,7 @@ inline bool operator==(const AFPCluster& lhs, const AFPCluster& rhs) if (lhs.z != rhs.z) return false; if (lhs.station != rhs.station) return false; if (lhs.layer != rhs.layer) return false; + if (lhs.sumToT != rhs.sumToT) return false; return true; } diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPToFAlgorithm.h b/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPToFAlgorithm.h index 05dd2d8cbd0ce9329687839e2a92b5b0e8bef5d2..04a494e0d5969325085492c8743b5e333ceba7ad 100644 --- a/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPToFAlgorithm.h +++ b/ForwardDetectors/AFP/Run3AFPMonitoring/Run3AFPMonitoring/AFPToFAlgorithm.h @@ -10,6 +10,7 @@ #include "StoreGate/ReadHandleKey.h" #include "xAODForward/AFPToFHitContainer.h" #include "xAODForward/AFPToFHit.h" +#include "LumiBlockData/BunchCrossingCondData.h" #include "TRandom3.h" @@ -23,12 +24,20 @@ public: private: std::map<std::string,int> m_StationNamesGroup; std::map<std::string,int> m_TrainsToFGroup; + std::map<std::string,std::map<std::string,int>> m_BarsInTrainsA; + std::map<std::string,std::map<std::string,int>> m_BarsInTrainsC; SG::ReadHandleKey<xAOD::AFPToFHitContainer> m_afpToFHitContainerKey; + SG::ReadCondHandleKey<BunchCrossingCondData> m_bunchCrossingKeyToF{this, "BunchCrossingKey", "BunchCrossingData", "Key BunchCrossing CDO" }; protected: // Only 0 and 3 are ToF stations (farAside and farCside) std::vector<std::string> m_stationNamesToF = { "farAside", "nearAside" , "nearCside" , "farCside" }; std::vector<std::string> m_trainsToF = { "train0", "train1" , "train2" , "train3" }; + + std::vector<std::string> m_trainsToFA = { "T0", "T1" , "T2" , "T3" }; + std::vector<std::string> m_trainsToFC = { "T0", "T1" , "T2" , "T3" }; + std::vector<std::string> m_barsToF = { "A", "B" , "C" , "D" }; + }; #endif diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py b/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py index 482bd2dd4c8d1f5fbdd422abad79f0b43cdafb94..bc7f0275f70ceda96d7571093a2ab3f5527fb5e8 100644 --- a/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py +++ b/ForwardDetectors/AFP/Run3AFPMonitoring/python/Run3AFPExampleMonitorAlgorithm.py @@ -39,11 +39,14 @@ def Run3AFPExampleMonitoringConfig(inputFlags): AFPToFGroup = helper.addGroup(afpToFAlgorithm, 'AFPToFTool', 'AFP/') xLabelsStations = ['farAside', 'nearAside', 'nearCside', 'farCside'] - xLabelsStationsPlanes = ['fA0','fA1','fA2','fA3','nA0','nA1','nA2','nA3','nC0','nC1','nC2','nC3','fC0','fC1','fC2','fC3'] + xLabelsStationsPlanes = ['fA3','fA2','fA1','fA0','nA3','nA2','nA1','nA0','nC0','nC1','nC2','nC3','fC0','fC1','fC2','fC3'] + xLabelsForEventsPerStation = [ 'fA', '-','-','-', 'nA', '-', '-', '-', 'nC', '-', '-', '-', 'fC', '-', '-', '-', ] + xLabelsHitBarVsTrain = [ 'A', 'B', 'C', 'D'] + yLabelsHitBarVsTrain = [ '3', '2', '1', '0'] #xLabelsStationsPlanesProposed = ['fC3', 'fC2', 'fC1', 'fC0', 'nC3', 'nC2', 'nC1', 'nC0', 'nA0', 'nA1', 'nA2', 'nA3', 'fA0', 'fA1' 'fA2','fA3'] AFPSiGroup.defineHistogram('lb,nSiHits', title='Total number of hits divided by number of events;lumiblock;total number of hits', type='TProfile', path='SiT/', xbins=2000, xmin=0.5, xmax=2000.5) - AFPSiGroup.defineHistogram('eventsPerStation', title='Number of events per stations; station; events', type='TH1I', path='SiT/Aux/', xbins=16, xmin=-0.5, xmax=15.5 ) + AFPSiGroup.defineHistogram('eventsPerStation', title='Number of events per stations; station; events', type='TH1I', path='SiT/Aux/', xbins=16, xmin=-0.5, xmax=15.5, xlabels=xLabelsForEventsPerStation ) AFPSiGroup.defineHistogram('clustersInPlanes', title='Number of clusters per planes; plane; clusters', type='TH1I', path='SiT/Aux/', xbins=16, xmin=-0.5, xmax=15.5, xlabels=xLabelsStationsPlanes ) AFPSiGroup.defineHistogram('lb,muPerBX', title='<mu>;lumiBlock;<mu>', type='TProfile', path='SiT/', xbins=2000, xmin=0.5, xmax=2000.5) AFPSiGroup.defineHistogram('planeHitsAll', title='Number of hits per plane;plane; hits', type='TH1I', path='SiT/HitsPerPlanes/', xbins=16, xmin=-0.5, xmax=15.5, xlabels=xLabelsStationsPlanes ) @@ -52,10 +55,12 @@ def Run3AFPExampleMonitoringConfig(inputFlags): AFPSiGroup.defineHistogram('lbEvents;NumberOfEventsPerLumiblock',title='Number of events per lumiblock; lumiblock; events', type='TH1I', path='SiT/Aux/', xbins=2000, xmin=0.5, xmax=2000.5) AFPSiGroup.defineHistogram('lbHits;NumberOfHitsPerLumiblock',title='Number of hits per lumiblock; lumiblock; hits', type='TH1I', path='SiT/Aux/', xbins=2000, xmin=0.5, xmax=2000.5) - AFPSiGroup.defineHistogram('bcidAll', title='(All) Paired bunches; BX; entries', type='TH1I', path='SiT/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) - AFPSiGroup.defineHistogram('bcidFront', title='(Front) Paired bunches; BX; entries', type='TH1I', path='SiT/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) - AFPSiGroup.defineHistogram('bcidMiddle', title='(Middle) Paired bunches; BX; entries', type='TH1I', path='SiT/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) - AFPSiGroup.defineHistogram('bcidEnd', title='(End) Paired bunches; BX; entries', type='TH1I', path='SiT/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + #SIT: BCID histograms + AFPSiGroup.defineHistogram('bcidAll', title='(All) Paired bunches - SiT; BX; entries', type='TH1I', path='SiT/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + AFPSiGroup.defineHistogram('bcidFront', title='(Front) Paired bunches - SiT; BX; entries', type='TH1I', path='SiT/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + AFPSiGroup.defineHistogram('bcidMiddle', title='(Middle) Paired bunches - SiT; BX; entries', type='TH1I', path='SiT/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + AFPSiGroup.defineHistogram('bcidEnd', title='(End) Paired bunches - SiT; BX; entries', type='TH1I', path='SiT/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + AFPSiGroup.defineHistogram('lbEventsStationsAll', title='Number of events per lumiblock for all stations;lumiblock; events', type='TH1I', path='SiT/StationEvents/', xbins=2000, xmin=0.5, xmax=2000.5) AFPSiGroup.defineHistogram('numberOfEventsPerLumiblockFront', title='(Front) Number of events per lumiblock for all stations;lumiblock; events', type='TH1I', path='SiT/Aux/', xbins=2000, xmin=0.5, xmax=2000.5) AFPSiGroup.defineHistogram('numberOfEventsPerLumiblockMiddle', title='(Middle) Number of events per lumiblock for all stations;lumiblock; events', type='TH1I', path='SiT/Aux/', xbins=2000, xmin=0.5, xmax=2000.5) @@ -67,6 +72,69 @@ def Run3AFPExampleMonitoringConfig(inputFlags): AFPToFGroup.defineHistogram('numberOfHit_S3', title='Number of hit per bar station 3;bar', path='ToF/', xbins=4, xmin=-0.5, xmax=3.5) AFPToFGroup.defineHistogram('barInTrainAllA', title='Number of hits in bar per stationA; barInTrain;hits',type='TH1I', path='ToF/HitsPerBarsInTrain/', xbins=16, xmin=-0.5, xmax=15.5) AFPToFGroup.defineHistogram('barInTrainAllC', title='Number of hits in bar per stationC; barInTrain;hits',type='TH1I', path='ToF/HitsPerBarsInTrain/', xbins=16, xmin=-0.5, xmax=15.5) + + AFPToFGroup.defineHistogram('ToFHits_sideA', title='ToF hits per lumiblock divided by <mu>, side A; lb; hits', path='ToF/StationHits', type='TH1F', xbins=2000, xmin=0.5, xmax=2000.5, weight = 'ToFHits_MU_Weight') + AFPToFGroup.defineHistogram('ToFHits_sideC', title='ToF hits per lumiblock divided by <mu>, side C; lb; hits', path='ToF/StationHits', type='TH1F', xbins=2000, xmin=0.5, xmax=2000.5, weight = 'ToFHits_MU_Weight') + AFPToFGroup.defineHistogram('lb,muPerBXToF', title='<mu>;lumiblock;<mu>', type='TProfile', path='ToF/', xbins=2000, xmin=0.5, xmax=2000.5) + + AFPToFGroup.defineHistogram('lbAandCToFEvents', title='Number of events in ToF stations A and C vs lb; lumiblock; events', type='TH1I', path='ToF/Events', xbins=2000, xmin=0.5, xmax=2000.5) + AFPToFGroup.defineHistogram('lbAToFEvents', title='Number of events in ToF station A vs lb; lumiblock; events', type='TH1I', path='ToF/Events', xbins=2000, xmin=0.5, xmax=2000.5) + AFPToFGroup.defineHistogram('lbCToFEvents', title='Number of events in ToF station C vs lb; lumiblock; events', type='TH1I', path='ToF/Events', xbins=2000, xmin=0.5, xmax=2000.5) + + # TOF: BCID histograms + AFPToFGroup.defineHistogram('bcidAllToF', title='(All) Paired bunches - ToF; BX; entries', type='TH1I', path='ToF/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + AFPToFGroup.defineHistogram('bcidFrontToF', title='(Front) Paired bunches - ToF; BX; entries', type='TH1I', path='ToF/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + AFPToFGroup.defineHistogram('bcidMiddleToF', title='(Middle) Paired bunches - ToF; BX; entries', type='TH1I', path='ToF/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + AFPToFGroup.defineHistogram('bcidEndToF', title='(End) Paired bunches - ToF; BX; entries', type='TH1I', path='ToF/BCID_Mask', xbins=4000, xmin=-0.5, xmax=3999.5) + + # TOF: Hits per trains histograms (side A): + AFPToFGroup.defineHistogram('lbAToF_T0', title='Number of hits per train (side A, train0) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/All/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TAll_Weight') + AFPToFGroup.defineHistogram('lbAToF_T1', title='Number of hits per train (side A, train1) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/All/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TAll_Weight') + AFPToFGroup.defineHistogram('lbAToF_T2', title='Number of hits per train (side A, train2) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/All/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TAll_Weight') + AFPToFGroup.defineHistogram('lbAToF_T3', title='Number of hits per train (side A, train3) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/All/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TAll_Weight') + + #Front: + AFPToFGroup.defineHistogram('lbAToF_T0_Front', title='(Front) Number of hits per train (side A, train0) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/Front/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TFront_Weight') + AFPToFGroup.defineHistogram('lbAToF_T1_Front', title='(Front) Number of hits per train (side A, train1) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/Front/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TFront_Weight') + AFPToFGroup.defineHistogram('lbAToF_T2_Front', title='(Front) Number of hits per train (side A, train2) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/Front/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TFront_Weight') + AFPToFGroup.defineHistogram('lbAToF_T3_Front', title='(Front) Number of hits per train (side A, train3) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/Front/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TFront_Weight') + + #Middle + AFPToFGroup.defineHistogram('lbAToF_T0_Middle', title='(Middle) Number of hits per train (side A, train0) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/Middle/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TMiddle_Weight') + AFPToFGroup.defineHistogram('lbAToF_T1_Middle', title='(Middle) Number of hits per train (side A, train1) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/Middle/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TMiddle_Weight') + AFPToFGroup.defineHistogram('lbAToF_T2_Middle', title='(Middle) Number of hits per train (side A, train2) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/Middle/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TMiddle_Weight') + AFPToFGroup.defineHistogram('lbAToF_T3_Middle', title='(Middle) Number of hits per train (side A, train3) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/Middle/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TMiddle_Weight') + + #End + AFPToFGroup.defineHistogram('lbAToF_T0_End', title='(End) Number of hits per train (side A, train0) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/End/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TEnd_Weight') + AFPToFGroup.defineHistogram('lbAToF_T1_End', title='(End) Number of hits per train (side A, train1) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/End/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TEnd_Weight') + AFPToFGroup.defineHistogram('lbAToF_T2_End', title='(End) Number of hits per train (side A, train2) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/End/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TEnd_Weight') + AFPToFGroup.defineHistogram('lbAToF_T3_End', title='(End) Number of hits per train (side A, train3) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideA/End/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbAToF_TEnd_Weight') + + + # Hits per trains histograms (side C): + AFPToFGroup.defineHistogram('lbCToF_T0', title='Number of hits per train (side C, train0) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/All/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TAll_Weight') + AFPToFGroup.defineHistogram('lbCToF_T1', title='Number of hits per train (side C, train1) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/All/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TAll_Weight') + AFPToFGroup.defineHistogram('lbCToF_T2', title='Number of hits per train (side C, train2) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/All/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TAll_Weight') + AFPToFGroup.defineHistogram('lbCToF_T3', title='Number of hits per train (side C, train3) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/All/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TAll_Weight') + + #Front + AFPToFGroup.defineHistogram('lbCToF_T0_Front', title='(Front) Number of hits per train (side C, train0) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/Front/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TFront_Weight') + AFPToFGroup.defineHistogram('lbCToF_T1_Front', title='(Front) Number of hits per train (side C, train1) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/Front/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TFront_Weight') + AFPToFGroup.defineHistogram('lbCToF_T2_Front', title='(Front) Number of hits per train (side C, train2) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/Front/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TFront_Weight') + AFPToFGroup.defineHistogram('lbCToF_T3_Front', title='(Front) Number of hits per train (side C, train3) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/Front/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TFront_Weight') + + #Middle + AFPToFGroup.defineHistogram('lbCToF_T0_Middle', title='(Middle) Number of hits per train (side C, train0) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/Middle/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TMiddle_Weight') + AFPToFGroup.defineHistogram('lbCToF_T1_Middle', title='(Middle) Number of hits per train (side C, train1) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/Middle/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TMiddle_Weight') + AFPToFGroup.defineHistogram('lbCToF_T2_Middle', title='(Middle) Number of hits per train (side C, train2) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/Middle/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TMiddle_Weight') + AFPToFGroup.defineHistogram('lbCToF_T3_Middle', title='(Middle) Number of hits per train (side C, train3) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/Middle/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TMiddle_Weight') + + #End + AFPToFGroup.defineHistogram('lbCToF_T0_End', title='(End) Number of hits per train (side C, train0) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/End/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TEnd_Weight') + AFPToFGroup.defineHistogram('lbCToF_T1_End', title='(End) Number of hits per train (side C, train1) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/End/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TEnd_Weight') + AFPToFGroup.defineHistogram('lbCToF_T2_End', title='(End) Number of hits per train (side C, train2) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/End/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TEnd_Weight') + AFPToFGroup.defineHistogram('lbCToF_T3_End', title='(End) Number of hits per train (side C, train3) divided by <mu>; lb; hits/<mu>', type='TH1F', path='ToF/ToFHitsVsLb/sideC/End/', xbins=2000, xmin=-0.5, xmax=1999.5, weight='lbCToF_TEnd_Weight') # Using a map of groups layerList = ['P0','P1', 'P2', 'P3'] ## TODO XXX adapt to the enum/xAOD namespace names @@ -78,7 +146,7 @@ def Run3AFPExampleMonitoringConfig(inputFlags): array.defineHistogram('pixelColIDChip', title='Hits per column for station {0}, layer {1};ColID; entries', path='PixelColIDChip/{0}', xbins=80, xmin=0.5, xmax=80.5) array.defineHistogram('pixelRowIDChip', title='Hits per row for station {0}, layer {1};RowID; entries', path='PixelRowIDChip/{0}', xbins=336, xmin=0.5, xmax=336.5) array.defineHistogram('pixelRowIDChip,pixelColIDChip', title='Hitmap for station {0}, layer {1};RowID;ColID', type='TH2I', path='pixelColRow2D/{0}', xbins=336, xmin=0.5, xmax=336.5, ybins=80, ymin=0.5, ymax=80.5) - array.defineHistogram('timeOverThreshold', type='TH1F', title='Time over threshold for station {0}, layer {1};timeOverThreshold; entries', path='SiTimeOverThreshold/{0}', xbins=16, xmin=0.5, xmax=16.5) + array.defineHistogram('timeOverThreshold', type='TH1I', title='Time over threshold for station {0}, layer {1};timeOverThreshold; entries', path='SiTimeOverThreshold/{0}', xbins=16, xmin=0.5, xmax=16.5) array.defineHistogram('clusterY,clusterX', title='Cluster position in station {0} Layer {1};x [mm];y [mm]', type='TH2F', path='Cluster/{0}', xbins=336, xmin=0.0, xmax=17.0, ybins=80, ymin=0.0, ymax=20.0) array.defineHistogram('lb,clustersPerPlane', title='Number of clusters per event divided by <mu> in station {0}, layer {1};lumiblock; clusters per event / <mu>', type='TH2F', path='clustersPerPlane/{0}', xbins=2000, xmin=0.5, xmax=2000.5, ybins=1000, ymin=-0.2, ymax=1.0) @@ -100,6 +168,8 @@ def Run3AFPExampleMonitoringConfig(inputFlags): array.defineHistogram('lbHitsPerPlanes', title='Number of hits in station {0}, plane {1} per lumiblock divided by <mu>;lumiblock; hits/<mu> per event', type='TH1F', path='HitsPerPlanesVsLb/', xbins=2000, xmin=0.5, xmax=2000.5, weight = 'weightHitsByMU') array.defineHistogram('lbHitsPerPlanes_full', title='Number of hits in station {0}, plane {1} per lumiblock;lumiblock; hits per event', type='TH1F', path='HitsPerPlanesVsLb_full/', xbins=2000, xmin=0.5, xmax=2000.5) + + array.defineHistogram('clusterToT', title='Sum of all hits\' ToT in each cluster, station {0}, layer {1};Cluster ToT; Counts', type='TH1I', path='ClusterToT/', xbins=18, xmin=0.5, xmax=18.5) array = helper.addArray([stationList], afpSiLayerAlgorithm, 'AFPSiLayerTool', topPath='AFP/SiT/') @@ -127,11 +197,18 @@ def Run3AFPExampleMonitoringConfig(inputFlags): arrayToF = helper.addArray([stationList], afpToFAlgorithm, 'AFPToFTool', topPath='AFP/ToF/') - arrayToF.defineHistogram('barInTrainID,trainID', title='ToF hit bar vs train {0};barInTrainID;trainID', type='TH2I', path='HitBarvsTrain/',xbins=4,xmin=-0.5,xmax=3.5,ybins=4,ymin=-0.5,ymax=3.5) + arrayToF.defineHistogram('barInTrainID,trainID', title='ToF hit bar vs train {0};barInTrainID;trainID', type='TH2I', path='HitBarvsTrain/',xbins=4,xmin=-0.5,xmax=3.5,ybins=4,ymin=-0.5,ymax=3.5, xlabels = xLabelsHitBarVsTrain, ylabels = yLabelsHitBarVsTrain) arrayToF = helper.addArray([trainList], afpToFAlgorithm, 'AFPToFTool', topPath='AFP/ToF/') arrayToF.defineHistogram('barInTrainIDA', title='Total hits per bars in {}; barID; hits', type='TH1I', path='HitsPerBarsInTrain/farAside', xbins=4,xmin=-0.5,xmax=3.5) arrayToF.defineHistogram('barInTrainIDC', title='Total hits per bars in {}; barID; hits', type='TH1I', path='HitsPerBarsInTrain/farCside', xbins=4,xmin=-0.5,xmax=3.5) + trainIDListToF = ['T0', 'T1', 'T2', 'T3'] + barInTrainIDListToF = ['A', 'B', 'C', 'D'] + arrayToF = helper.addArray([trainIDListToF, barInTrainIDListToF], afpToFAlgorithm, 'AFPToFTool', topPath = 'AFP/ToF/') + arrayToF.defineHistogram('lbAToF', title='ToF hits vs lumiblock divided by <mu> (train {0}, bar {1}), side A; lb; hits/<mu>', type='TH1F', path='ToFHitsVsLb/sideA', xbins=2000, xmin=0.5, xmax=2000.5, weight = 'lbAToF_Weight') + arrayToF.defineHistogram('lbCToF', title='ToF hits vs lumiblock divided by <mu> (train {0}, bar {1}), side C; lb; hits/<mu>', type='TH1F', path='ToFHitsVsLb/sideC', xbins=2000, xmin=0.5, xmax=2000.5, weight = 'lbCToF_Weight') + + # Finalize. The return value should be a tuple of the ComponentAccumulator result.merge(helper.result()) return result @@ -153,8 +230,9 @@ if __name__=='__main__': ConfigFlags.Input.Files = ['/afs/cern.ch/work/n/ndikic/backup_raw_337176/user.ladamczy.21473705.EXT0._000002.xAOD.root','/afs/cern.ch/work/n/ndikic/backup_raw_337176/user.ladamczy.21473705.EXT0._000003.xAOD.root','/afs/cern.ch/work/n/ndikic/backup_raw_337176/user.ladamczy.21473705.EXT0._000004.xAOD.root'] #ConfigFlags.Input.Files = ['/afs/cern.ch/user/p/pbalek/public/AFP/testxAOD.root'] ConfigFlags.Input.isMC = False - ConfigFlags.Output.HISTFileName = 'AFPHits5.root' + ConfigFlags.Output.HISTFileName = 'AFPTest-337176-10k-FMETrains-MU.root' + ConfigFlags.Concurrency.NumThreads=10 ConfigFlags.Concurrency.NumConcurrentEvents=10 @@ -170,7 +248,7 @@ if __name__=='__main__': exampleMonitorAcc = Run3AFPExampleMonitoringConfig(ConfigFlags) cfg.merge(exampleMonitorAcc) - cfg.run(100000) + cfg.run(10000) diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPFastReco.cxx b/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPFastReco.cxx index 9234e1c3a024bad69471204a13bc8545ae8bbe7e..856a76e2fa1ca360b278baaf95df3ffdfe8cc14e 100644 --- a/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPFastReco.cxx +++ b/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPFastReco.cxx @@ -19,7 +19,7 @@ void AFPFastReco::reco() void AFPFastReco::recoClusters() { - constexpr float dx = 0.25; // [mm] + constexpr float dx = 0.25; // [mm] constexpr float dy = 0.05; // [mm] constexpr float dz = 9.00; // [mm] constexpr float tilt = 14. / 180. * 3.14159; @@ -32,17 +32,19 @@ void AFPFastReco::recoClusters() toCluster.pop_front(); auto clusteredHits = findAround(init, toCluster); - float sumX = 0; - float sumY = 0; - float sumCharge = 0; + float sumX = 0; + float sumY = 0; + float sumCharge = 0; + int sumToT_temp = 0; for (const xAOD::AFPSiHit* h : clusteredHits) { - const float charge = h->depositedCharge(); + const float charge = h->depositedCharge(); const float pixX = dx * h->pixelColIDChip(); const float pixY = dy * h->pixelRowIDChip(); sumX += charge * pixX; sumY += charge * pixY; sumCharge += charge; + sumToT_temp += h->timeOverThreshold(); } const float xPlane = sumX / sumCharge; @@ -55,7 +57,7 @@ void AFPFastReco::recoClusters() const float y = yPlane * cos(tilt); const float z = yPlane * sin(tilt) + dz * layerID; - m_clusters.emplace_back(x, y, z, stationID, layerID); + m_clusters.emplace_back(x, y, z, stationID, layerID, sumToT_temp); } } diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPSiLayerAlgorithm.cxx b/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPSiLayerAlgorithm.cxx index 1a36f2d7fdf45281326cc529b20a99e2171e6236..9a2c607886b019228c55a0fc275568523702894d 100644 --- a/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPSiLayerAlgorithm.cxx +++ b/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPSiLayerAlgorithm.cxx @@ -25,6 +25,24 @@ bool isInListVector(const int bcid, const std::vector<int>&arr) return std::find_if(arr.begin(),arr.end(),[&bcid](const int& ele){return ele==bcid;})!= arr.end(); } +int reorganizePlanes(const int* station, const int* layer) +{ + if(*station == 0 || *station == 1) + { + return (*station*4)+3-(*layer); + } + return 0; +} + +int reorganizePlanesInt(const int station, const int layer) +{ + if(station == 0 || station == 1) + { + return (station*4)+3-(layer); + } + return 0; +} + AFPSiLayerAlgorithm::AFPSiLayerAlgorithm( const std::string& name, ISvcLocator* pSvcLocator ) :AthMonitorAlgorithm(name,pSvcLocator) @@ -49,33 +67,33 @@ StatusCode AFPSiLayerAlgorithm::initialize() { SG::ReadHandleKey<xAOD::AFPSiHitContainer> afpHitContainerKey("AFPSiHits"); ATH_CHECK(m_afpHitContainerKey.initialize()); - ATH_MSG_INFO( "BunchCrossingKey initialization" ); + ATH_MSG_INFO( "BunchCrossingKey initialization (SiT)" ); ATH_CHECK(m_bunchCrossingKey.initialize()); - ATH_MSG_INFO( "initialization completed" ); + ATH_MSG_INFO( "initialization completed (SiT)" ); return AthMonitorAlgorithm::initialize(); } StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const { using namespace Monitored; - auto bcidAll = Monitored::Scalar<int>("bcidAll", 0); - auto bcidFront = Monitored::Scalar<int>("bcidFront", 0); + auto bcidAll = Monitored::Scalar<int>("bcidAll", 0); + auto bcidFront = Monitored::Scalar<int>("bcidFront", 0); auto bcidMiddle = Monitored::Scalar<int>("bcidMiddle", 0); - auto bcidEnd = Monitored::Scalar<int>("bcidEnd", 0); + auto bcidEnd = Monitored::Scalar<int>("bcidEnd", 0); - auto numberOfEventsPerLumiblockFront = Monitored::Scalar<int>("numberOfEventsPerLumiblockFront", 0); + auto numberOfEventsPerLumiblockFront = Monitored::Scalar<int>("numberOfEventsPerLumiblockFront", 0); auto numberOfEventsPerLumiblockMiddle = Monitored::Scalar<int>("numberOfEventsPerLumiblockMiddle", 0); - auto numberOfEventsPerLumiblockEnd = Monitored::Scalar<int>("numberOfEventsPerLumiblockEnd", 0); + auto numberOfEventsPerLumiblockEnd = Monitored::Scalar<int>("numberOfEventsPerLumiblockEnd", 0); - numberOfEventsPerLumiblockFront = GetEventInfo(ctx)->lumiBlock(); - numberOfEventsPerLumiblockMiddle = GetEventInfo(ctx)->lumiBlock(); - numberOfEventsPerLumiblockEnd = GetEventInfo(ctx)->lumiBlock(); + numberOfEventsPerLumiblockFront = GetEventInfo(ctx)->lumiBlock(); + numberOfEventsPerLumiblockMiddle = GetEventInfo(ctx)->lumiBlock(); + numberOfEventsPerLumiblockEnd = GetEventInfo(ctx)->lumiBlock(); // BCX handler unsigned int temp = GetEventInfo(ctx)->bcid(); SG::ReadCondHandle<BunchCrossingCondData> bcidHdl(m_bunchCrossingKey,ctx); if (!bcidHdl.isValid()) { - ATH_MSG_ERROR( "Unable to retrieve BunchCrossing conditions object" ); + ATH_MSG_ERROR( "Unable to retrieve BunchCrossing conditions object (SiT)" ); } const BunchCrossingCondData* bcData{*bcidHdl}; @@ -121,8 +139,8 @@ StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const // Declare the quantities which should be monitored: - auto lb = Monitored::Scalar<int>("lb", 0); - auto muPerBX = Monitored::Scalar<float>("muPerBX", 0.0); + auto lb = Monitored::Scalar<int>("lb", 0); + auto muPerBX = Monitored::Scalar<float>("muPerBX", 0.0); //auto run = Monitored::Scalar<int>("run",0); auto nSiHits = Monitored::Scalar<int>("nSiHits", 1); @@ -130,7 +148,7 @@ StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const auto pixelRowIDChip = Monitored::Scalar<int>("pixelRowIDChip", 0); auto pixelColIDChip = Monitored::Scalar<int>("pixelColIDChip", 0); - auto timeOverThreshold = Monitored::Scalar<float>("timeOverThreshold", 0.0); + auto timeOverThreshold = Monitored::Scalar<int>("timeOverThreshold", 0); auto clusterX = Monitored::Scalar<float>("clusterX", 0.0); auto clusterY = Monitored::Scalar<float>("clusterY", 0.0); @@ -139,50 +157,51 @@ StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const auto trackX = Monitored::Scalar<float>("trackX", 0.0); auto trackY = Monitored::Scalar<float>("trackY", 0.0); - auto planeHits = Monitored::Scalar<int>("planeHits", 0); - auto planeHitsAll = Monitored::Scalar<int>("planeHitsAll", 0); - auto planeHitsAllMU = Monitored::Scalar<int>("planeHitsAllMU", 0); - auto weightAllPlanes = Monitored::Scalar<float>("weightAllPlanes", 1.0); + auto planeHits = Monitored::Scalar<int>("planeHits", 0); + auto planeHitsAll = Monitored::Scalar<int>("planeHitsAll", 0); + auto planeHitsAllMU = Monitored::Scalar<int>("planeHitsAllMU", 0); + auto weightAllPlanes = Monitored::Scalar<float>("weightAllPlanes", 1.0); auto numberOfHitsPerStation = Monitored::Scalar<int>("numberOfHitsPerStation", 0); - auto lbEvents = Monitored::Scalar<int>("lbEvents", 0); - auto lbHits = Monitored::Scalar<int>("lbHits", 0); - auto lbEventsStations = Monitored::Scalar<int>("lbEventsStations", 0); - auto lbEventsStationsAll = Monitored::Scalar<int>("lbEventsStationsAll", 0); - + auto lbEvents = Monitored::Scalar<int>("lbEvents", 0); + auto lbHits = Monitored::Scalar<int>("lbHits", 0); + auto lbEventsStations = Monitored::Scalar<int>("lbEventsStations", 0); + auto lbEventsStationsAll = Monitored::Scalar<int>("lbEventsStationsAll", 0); - auto lbClustersPerPlanes = Monitored::Scalar<int>("lbClustersPerPlanes", 0); - auto weightClustersByMU = Monitored::Scalar<float>("weightClustersByMU", 1.0); + auto lbClustersPerPlanes = Monitored::Scalar<int>("lbClustersPerPlanes", 0); + auto weightClustersByMU = Monitored::Scalar<float>("weightClustersByMU", 1.0); auto lbClustersPerPlanes_full = Monitored::Scalar<int>("lbClustersPerPlanes_full", 0); - auto clustersPerPlaneFrontPP = Monitored::Scalar<int>("clustersPerPlaneFrontPP", 0); - auto clustersPerPlaneMiddlePP = Monitored::Scalar<int>("clustersPerPlaneMiddlePP", 0); - auto clustersPerPlaneEndPP = Monitored::Scalar<int>("clustersPerPlaneEndPP", 0); - auto weightClustersPerPlaneFrontPP = Monitored::Scalar<float>("weightClustersPerPlaneFrontPP", 1.0); + auto clustersPerPlaneFrontPP = Monitored::Scalar<int>("clustersPerPlaneFrontPP", 0); + auto clustersPerPlaneMiddlePP = Monitored::Scalar<int>("clustersPerPlaneMiddlePP", 0); + auto clustersPerPlaneEndPP = Monitored::Scalar<int>("clustersPerPlaneEndPP", 0); + auto weightClustersPerPlaneFrontPP = Monitored::Scalar<float>("weightClustersPerPlaneFrontPP", 1.0); auto weightClustersPerPlaneMiddlePP = Monitored::Scalar<float>("weightClustersPerPlaneMiddlePP", 1.0); - auto weightClustersPerPlaneEndPP = Monitored::Scalar<float>("weightClustersPerPlaneEndPP", 1.0); + auto weightClustersPerPlaneEndPP = Monitored::Scalar<float>("weightClustersPerPlaneEndPP", 1.0); - auto clustersPerPlaneFrontPP_full = Monitored::Scalar<int>("clustersPerPlaneFrontPP_full", 0); - auto clustersPerPlaneMiddlePP_full = Monitored::Scalar<int>("clustersPerPlaneMiddlePP_full", 0); - auto clustersPerPlaneEndPP_full = Monitored::Scalar<int>("clustersPerPlaneEndPP_full", 0); + auto clustersPerPlaneFrontPP_full = Monitored::Scalar<int>("clustersPerPlaneFrontPP_full", 0); + auto clustersPerPlaneMiddlePP_full = Monitored::Scalar<int>("clustersPerPlaneMiddlePP_full", 0); + auto clustersPerPlaneEndPP_full = Monitored::Scalar<int>("clustersPerPlaneEndPP_full", 0); - auto lbHitsPerPlanes = Monitored::Scalar<int>("lbHitsPerPlanes", 0); + auto lbHitsPerPlanes = Monitored::Scalar<int>("lbHitsPerPlanes", 0); auto lbHitsPerPlanes_full = Monitored::Scalar<float>("lbHitsPerPlanes_full", 0.0); - auto weightHitsByMU = Monitored::Scalar<float>("weightHitsByMU", 1.0); + auto weightHitsByMU = Monitored::Scalar<float>("weightHitsByMU", 1.0); - auto hitsCounterPlanesTProfile = Monitored::Scalar<int>("hitsCounterPlanesTProfile", 0.0); - auto hitsCounterStationsTProfile = Monitored::Scalar<int>("hitsCounterStationsTProfile", 0.0); + auto hitsCounterPlanesTProfile = Monitored::Scalar<int>("hitsCounterPlanesTProfile", 0.0); + auto hitsCounterStationsTProfile = Monitored::Scalar<int>("hitsCounterStationsTProfile", 0.0); auto planes = Monitored::Scalar<int>("planes", 0); auto eventsPerStation = Monitored::Scalar<int>("eventsPerStation", 0); - lb = GetEventInfo(ctx)->lumiBlock(); - lbEvents = GetEventInfo(ctx)->lumiBlock(); - muPerBX = lbAverageInteractionsPerCrossing(ctx); - //run = GetEventInfo(ctx)->runNumber(); + auto clusterToT = Monitored::Scalar<int>("clusterToT", 0); + + lb = GetEventInfo(ctx)->lumiBlock(); + lbEvents = GetEventInfo(ctx)->lumiBlock(); + muPerBX = lbAverageInteractionsPerCrossing(ctx); + //run = GetEventInfo(ctx)->runNumber(); fill("AFPSiLayerTool", lb, muPerBX); fill("AFPSiLayerTool", lbEvents); @@ -205,13 +224,14 @@ StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const for(const xAOD::AFPSiHit *hitsItr: *afpHitContainer) { - lb = GetEventInfo(ctx)->lumiBlock(); - lbHits = GetEventInfo(ctx)->lumiBlock(); - lbEventsStations = GetEventInfo(ctx)->lumiBlock(); + lb = GetEventInfo(ctx)->lumiBlock(); + lbHits = GetEventInfo(ctx)->lumiBlock(); + lbEventsStations = GetEventInfo(ctx)->lumiBlock(); lbEventsStationsAll = GetEventInfo(ctx)->lumiBlock(); - pixelRowIDChip = hitsItr->pixelRowIDChip(); - pixelColIDChip = hitsItr->pixelColIDChip(); - timeOverThreshold = hitsItr->timeOverThreshold(); + pixelRowIDChip = hitsItr->pixelRowIDChip(); + pixelColIDChip = hitsItr->pixelColIDChip(); + timeOverThreshold = hitsItr->timeOverThreshold(); + stationValues.push_back(hitsItr->stationID()); @@ -224,12 +244,27 @@ StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const fill(m_tools[m_StationPlaneGroup.at(m_stationnames.at(hitsItr->stationID())).at(m_pixlayers.at(hitsItr->pixelLayerID()))], timeOverThreshold); fill(m_tools[m_StationPlaneGroup.at(m_stationnames.at(hitsItr->stationID())).at(m_pixlayers.at(hitsItr->pixelLayerID()))], lb, hitsCounterPlanesTProfile); - planeHits = hitsItr->pixelLayerID(); + if(hitsItr->stationID() == 0 || hitsItr->stationID() == 1) + { + planeHits = reorganizePlanesInt(0, hitsItr->pixelLayerID()); + } + else + { + planeHits = hitsItr->pixelLayerID(); + } fill(m_tools[m_StationGroup.at(m_stationnames.at(hitsItr->stationID()))], planeHits); ++numberOfHitsPerPlane[hitsItr->stationID()][hitsItr->pixelLayerID()]; - planeHitsAll = (hitsItr->stationID())*4+hitsItr->pixelLayerID(); - planeHitsAllMU = (hitsItr->stationID())*4+hitsItr->pixelLayerID(); + if(hitsItr->stationID() == 0 || hitsItr->stationID() == 1) + { + planeHitsAll = reorganizePlanesInt(hitsItr->stationID(), hitsItr->pixelLayerID()); + planeHitsAllMU = reorganizePlanesInt(hitsItr->stationID(), hitsItr->pixelLayerID()); + } + else + { + planeHitsAll = (hitsItr->stationID())*4+hitsItr->pixelLayerID(); + planeHitsAllMU = (hitsItr->stationID())*4+hitsItr->pixelLayerID(); + } weightAllPlanes = 1 / muPerBX; fill("AFPSiLayerTool", planeHitsAll); fill("AFPSiLayerTool", planeHitsAllMU, weightAllPlanes); @@ -242,8 +277,8 @@ StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const fill("AFPSiLayerTool", lbHits); - lbHitsPerPlanes = GetEventInfo(ctx)->lumiBlock(); - lbHitsPerPlanes_full = GetEventInfo(ctx)->lumiBlock(); + lbHitsPerPlanes = GetEventInfo(ctx)->lumiBlock(); + lbHitsPerPlanes_full = GetEventInfo(ctx)->lumiBlock(); weightHitsByMU = 1 / muPerBX; fill(m_tools[m_StationPlaneGroup.at(m_stationnames.at(hitsItr->stationID())).at(m_pixlayers.at(hitsItr->pixelLayerID()))], lbHitsPerPlanes, weightHitsByMU); fill(m_tools[m_StationPlaneGroup.at(m_stationnames.at(hitsItr->stationID())).at(m_pixlayers.at(hitsItr->pixelLayerID()))], lbHitsPerPlanes_full); @@ -371,35 +406,40 @@ StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const } } - auto weightTracksAll = Monitored::Scalar<float>("weightTracksAll", 0.0); - auto weightTracksFront = Monitored::Scalar<float>("weightTracksFront", 0.0); + auto weightTracksAll = Monitored::Scalar<float>("weightTracksAll", 0.0); + auto weightTracksFront = Monitored::Scalar<float>("weightTracksFront", 0.0); auto weightTracksMiddle = Monitored::Scalar<float>("weightTracksMiddle", 0.0); - auto weightTracksEnd = Monitored::Scalar<float>("weightTracksEnd", 0.0); - - auto lbTracksAll = Monitored::Scalar<int>("lbTracksAll", 0); - auto lbTracksFront = Monitored::Scalar<int>("lbTracksFront", 0); - auto lbTracksMiddle = Monitored::Scalar<int>("lbTracksMiddle", 0); - auto lbTracksEnd = Monitored::Scalar<int>("lbTracksEnd", 0); - - auto weightTracksAll_full = Monitored::Scalar<int>("weightTracksAll_full", 0); - auto weightTracksFront_full = Monitored::Scalar<int>("weightTracksFront_full", 0); - auto weightTracksMiddle_full = Monitored::Scalar<int>("weightTracksMiddle_full", 0); - auto weightTracksEnd_full = Monitored::Scalar<int>("weightTracksEnd_full", 0); - - auto lbTracksAll_full = Monitored::Scalar<int>("lbTracksAll_full", 0); - auto lbTracksFront_full = Monitored::Scalar<int>("lbTracksFront_full", 0); - auto lbTracksMiddle_full = Monitored::Scalar<int>("lbTracksMiddle_full", 0); - auto lbTracksEnd_full = Monitored::Scalar<int>("lbTracksEnd_full", 0); - - lbTracksAll = GetEventInfo(ctx)->lumiBlock(); - lbTracksFront = GetEventInfo(ctx)->lumiBlock(); - lbTracksMiddle = GetEventInfo(ctx)->lumiBlock(); - lbTracksEnd = GetEventInfo(ctx)->lumiBlock(); - - lbTracksAll_full = GetEventInfo(ctx)->lumiBlock(); - lbTracksFront_full = GetEventInfo(ctx)->lumiBlock(); + auto weightTracksEnd = Monitored::Scalar<float>("weightTracksEnd", 0.0); + + auto lbTracksAll = Monitored::Scalar<int>("lbTracksAll", 0); + auto lbTracksFront = Monitored::Scalar<int>("lbTracksFront", 0); + auto lbTracksMiddle = Monitored::Scalar<int>("lbTracksMiddle", 0); + auto lbTracksEnd = Monitored::Scalar<int>("lbTracksEnd", 0); + + auto weightTracksAll_full = Monitored::Scalar<int>("weightTracksAll_full", 0); + auto weightTracksFront_full = Monitored::Scalar<int>("weightTracksFront_full", 0); + auto weightTracksMiddle_full = Monitored::Scalar<int>("weightTracksMiddle_full", 0); + auto weightTracksEnd_full = Monitored::Scalar<int>("weightTracksEnd_full", 0); + + auto lbTracksAll_full = Monitored::Scalar<int>("lbTracksAll_full", 0); + auto lbTracksFront_full = Monitored::Scalar<int>("lbTracksFront_full", 0); + auto lbTracksMiddle_full = Monitored::Scalar<int>("lbTracksMiddle_full", 0); + auto lbTracksEnd_full = Monitored::Scalar<int>("lbTracksEnd_full", 0); + + lbTracksAll = GetEventInfo(ctx)->lumiBlock(); + lbTracksFront = GetEventInfo(ctx)->lumiBlock(); + lbTracksMiddle = GetEventInfo(ctx)->lumiBlock(); + lbTracksEnd = GetEventInfo(ctx)->lumiBlock(); + + lbTracksAll_full = GetEventInfo(ctx)->lumiBlock(); + lbTracksFront_full = GetEventInfo(ctx)->lumiBlock(); + lbTracksMiddle_full = GetEventInfo(ctx)->lumiBlock(); + lbTracksEnd_full = GetEventInfo(ctx)->lumiBlock(); + + lbTracksAll_full = GetEventInfo(ctx)->lumiBlock(); + lbTracksFront_full = GetEventInfo(ctx)->lumiBlock(); lbTracksMiddle_full = GetEventInfo(ctx)->lumiBlock(); - lbTracksEnd_full = GetEventInfo(ctx)->lumiBlock(); + lbTracksEnd_full = GetEventInfo(ctx)->lumiBlock(); for(int i = 0; i < 4; i++) { @@ -434,9 +474,19 @@ StatusCode AFPSiLayerAlgorithm::fillHistograms( const EventContext& ctx ) const clusterX = cluster.x * 1.0; clusterY = cluster.y * 1.0; fill(m_tools[m_StationPlaneGroup.at(m_stationnames.at(cluster.station)).at(m_pixlayers.at(cluster.layer))], clusterY, clusterX); - clustersInPlanes = (cluster.station*4)+cluster.layer; + if (cluster.station == 0 || cluster.station == 1) + { + clustersInPlanes = reorganizePlanes(&cluster.station, &cluster.layer); + } + else + { + clustersInPlanes = (cluster.station*4)+cluster.layer; + } fill("AFPSiLayerTool", clustersInPlanes); + clusterToT = cluster.sumToT; + fill(m_tools[m_StationPlaneGroup.at(m_stationnames.at(cluster.station)).at(m_pixlayers.at(cluster.layer))], clusterToT); + lbClustersPerPlanes = GetEventInfo(ctx)->lumiBlock(); lbClustersPerPlanes_full = GetEventInfo(ctx)->lumiBlock(); weightClustersByMU = 1/muPerBX; diff --git a/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPToFAlgorithm.cxx b/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPToFAlgorithm.cxx index 8bf07a93bb176afd6a691710fd97f86cae0d7d52..ad6b6768ea2ea9923906da1a65daa4aff87ff43b 100644 --- a/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPToFAlgorithm.cxx +++ b/ForwardDetectors/AFP/Run3AFPMonitoring/src/AFPToFAlgorithm.cxx @@ -11,6 +11,14 @@ #include "StoreGate/ReadHandleKey.h" #include "xAODForward/AFPStationID.h" +std::vector<int> frontBCIDsVectorToF; +std::vector<int> middleBCIDsVectorToF; +std::vector<int> endBCIDsVectorToF; + +bool isInListVectorToF(const int bcid, const std::vector<int>&arr) +{ + return std::find_if(arr.begin(),arr.end(),[&bcid](const int& ele){return ele==bcid;})!= arr.end(); +} AFPToFAlgorithm::AFPToFAlgorithm( const std::string& name, ISvcLocator* pSvcLocator ) :AthMonitorAlgorithm(name,pSvcLocator) @@ -28,11 +36,17 @@ StatusCode AFPToFAlgorithm::initialize() { using namespace Monitored; m_StationNamesGroup = buildToolMap<int>(m_tools,"AFPToFTool", m_stationNamesToF); - m_TrainsToFGroup = buildToolMap<int>(m_tools, "AFPToFTool", m_trainsToF); + m_TrainsToFGroup = buildToolMap<int>(m_tools, "AFPToFTool", m_trainsToF); + m_BarsInTrainsA = buildToolMap<std::map<std::string,int>>(m_tools, "AFPToFTool", m_trainsToFA, m_barsToF); + m_BarsInTrainsC = buildToolMap<std::map<std::string,int>>(m_tools,"AFPToFTool", m_trainsToFC, m_barsToF); // We must declare to the framework in initialize what SG objects we are going to use SG::ReadHandleKey<xAOD::AFPToFHitContainer> afpToFHitContainerKey("AFPToFHits"); ATH_CHECK(m_afpToFHitContainerKey.initialize()); + + ATH_MSG_INFO( "BunchCrossingKey initialization (ToF)" ); + ATH_CHECK(m_bunchCrossingKeyToF.initialize()); + ATH_MSG_INFO( "initialization completed (ToF)" ); return AthMonitorAlgorithm::initialize(); } @@ -40,21 +54,168 @@ StatusCode AFPToFAlgorithm::initialize() { StatusCode AFPToFAlgorithm::fillHistograms( const EventContext& ctx ) const { using namespace Monitored; + + auto bcidAllToF = Monitored::Scalar<int>("bcidAllToF", 0); + auto bcidFrontToF = Monitored::Scalar<int>("bcidFrontToF", 0); + auto bcidMiddleToF = Monitored::Scalar<int>("bcidMiddleToF", 0); + auto bcidEndToF = Monitored::Scalar<int>("bcidEndToF", 0); // Declare the quantities which should be monitored - auto lb = Monitored::Scalar<int>("lb", 0); - auto nTofHits = Monitored::Scalar<int>("nTofHits", 1); + auto lb = Monitored::Scalar<int>("lb", 0); + auto nTofHits = Monitored::Scalar<int>("nTofHits", 1); auto numberOfHit_S0 = Monitored::Scalar<int>("numberOfHit_S0", 0); auto numberOfHit_S3 = Monitored::Scalar<int>("numberOfHit_S3", 0); - auto trainID = Monitored::Scalar<int>("trainID", 0); - auto barInTrainID = Monitored::Scalar<int>("barInTrainID", 0); + auto trainID = Monitored::Scalar<int>("trainID", 0); + auto barInTrainID = Monitored::Scalar<int>("barInTrainID", 0); auto barInTrainAllA = Monitored::Scalar<int>("barInTrainAllA", 0); - auto barInTrainIDA = Monitored::Scalar<int>("barInTrainIDA", 0); + auto barInTrainIDA = Monitored::Scalar<int>("barInTrainIDA", 0); auto barInTrainAllC = Monitored::Scalar<int>("barInTrainAllC", 0); - auto barInTrainIDC = Monitored::Scalar<int>("barInTrainIDC", 0); + auto barInTrainIDC = Monitored::Scalar<int>("barInTrainIDC", 0); + + auto ToFHits_sideA = Monitored::Scalar<int>("ToFHits_sideA", 0); + auto ToFHits_sideC = Monitored::Scalar<int>("ToFHits_sideC", 0); + auto ToFHits_MU_Weight = Monitored::Scalar<float>("ToFHits_MU_Weight", 0.0); + auto muPerBXToF = Monitored::Scalar<float>("muPerBXToF", 0.0); + + auto lbAToF = Monitored::Scalar<int>("lbAToF", 0); + auto lbCToF = Monitored::Scalar<int>("lbCToF", 0); + auto lbAToF_Weight = Monitored::Scalar<float>("lbAToF_Weight", 0.0); + auto lbCToF_Weight = Monitored::Scalar<float>("lbCToF_Weight", 0.0); + + std::vector<int>stationValues; + auto lbAToFEvents = Monitored::Scalar<int>("lbAToFEvents", 0); + auto lbCToFEvents = Monitored::Scalar<int>("lbCToFEvents", 0); + auto lbAandCToFEvents = Monitored::Scalar<int>("lbAandCToFEvents", 0); + + // FME histograms quantites (side A) + + auto lbAToF_T0 = Monitored::Scalar<int>("lbAToF_T0", 0); + auto lbAToF_T1 = Monitored::Scalar<int>("lbAToF_T1", 0); + auto lbAToF_T2 = Monitored::Scalar<int>("lbAToF_T2", 0); + auto lbAToF_T3 = Monitored::Scalar<int>("lbAToF_T3", 0); + + auto lbAToF_TAll_Weight = Monitored::Scalar<float>("lbAToF_TAll_Weight", 1); + + auto lbAToF_T0_Front = Monitored::Scalar<int>("lbAToF_T0_Front", 0); + auto lbAToF_T1_Front = Monitored::Scalar<int>("lbAToF_T1_Front", 0); + auto lbAToF_T2_Front = Monitored::Scalar<int>("lbAToF_T2_Front", 0); + auto lbAToF_T3_Front = Monitored::Scalar<int>("lbAToF_T3_Front", 0); + + auto lbAToF_TFront_Weight = Monitored::Scalar<float>("lbAToF_TFront_Weight", 1); + + auto lbAToF_T0_Middle = Monitored::Scalar<int>("lbAToF_T0_Middle", 0); + auto lbAToF_T1_Middle = Monitored::Scalar<int>("lbAToF_T1_Middle", 0); + auto lbAToF_T2_Middle = Monitored::Scalar<int>("lbAToF_T2_Middle", 0); + auto lbAToF_T3_Middle = Monitored::Scalar<int>("lbAToF_T3_Middle", 0); + + auto lbAToF_TMiddle_Weight = Monitored::Scalar<float>("lbAToF_TMiddle_Weight", 1); + + auto lbAToF_T0_End = Monitored::Scalar<int>("lbAToF_T0_End", 0); + auto lbAToF_T1_End = Monitored::Scalar<int>("lbAToF_T1_End", 0); + auto lbAToF_T2_End = Monitored::Scalar<int>("lbAToF_T2_End", 0); + auto lbAToF_T3_End = Monitored::Scalar<int>("lbAToF_T3_End", 0); + + auto lbAToF_TEnd_Weight = Monitored::Scalar<float>("lbAToF_TEnd_Weight", 1); + + + // FME histograms quantites (side C) + + auto lbCToF_T0 = Monitored::Scalar<int>("lbCToF_T0", 0); + auto lbCToF_T1 = Monitored::Scalar<int>("lbCToF_T1", 0); + auto lbCToF_T2 = Monitored::Scalar<int>("lbCToF_T2", 0); + auto lbCToF_T3 = Monitored::Scalar<int>("lbCToF_T3", 0); + + auto lbCToF_TAll_Weight = Monitored::Scalar<float>("lbCToF_TAll_Weight", 1); + + auto lbCToF_T0_Front = Monitored::Scalar<int>("lbCToF_T0_Front", 0); + auto lbCToF_T1_Front = Monitored::Scalar<int>("lbCToF_T1_Front", 0); + auto lbCToF_T2_Front = Monitored::Scalar<int>("lbCToF_T2_Front", 0); + auto lbCToF_T3_Front = Monitored::Scalar<int>("lbCToF_T3_Front", 0); + + auto lbCToF_TFront_Weight = Monitored::Scalar<float>("lbCToF_TFront_Weight", 1); + + auto lbCToF_T0_Middle = Monitored::Scalar<int>("lbCToF_T0_Middle", 0); + auto lbCToF_T1_Middle = Monitored::Scalar<int>("lbCToF_T1_Middle", 0); + auto lbCToF_T2_Middle = Monitored::Scalar<int>("lbCToF_T2_Middle", 0); + auto lbCToF_T3_Middle = Monitored::Scalar<int>("lbCToF_T3_Middle", 0); + + auto lbCToF_TMiddle_Weight = Monitored::Scalar<float>("lbCToF_TMiddle_Weight", 1); + + auto lbCToF_T0_End = Monitored::Scalar<int>("lbCToF_T0_End", 0); + auto lbCToF_T1_End = Monitored::Scalar<int>("lbCToF_T1_End", 0); + auto lbCToF_T2_End = Monitored::Scalar<int>("lbCToF_T2_End", 0); + auto lbCToF_T3_End = Monitored::Scalar<int>("lbCToF_T3_End", 0); + + auto lbCToF_TEnd_Weight = Monitored::Scalar<float>("lbCToF_TEnd_Weight", 1); - lb = GetEventInfo(ctx)->lumiBlock(); - + lb = GetEventInfo(ctx)->lumiBlock(); + lbAToF = GetEventInfo(ctx)->lumiBlock(); + lbCToF = GetEventInfo(ctx)->lumiBlock(); + lbAToFEvents = GetEventInfo(ctx)->lumiBlock(); + lbCToFEvents = GetEventInfo(ctx)->lumiBlock(); + lbAandCToFEvents = GetEventInfo(ctx)->lumiBlock(); + muPerBXToF = lbAverageInteractionsPerCrossing(ctx); + + ToFHits_MU_Weight = 1/muPerBXToF; + lbAToF_Weight = 1/muPerBXToF; + lbCToF_Weight = 1/muPerBXToF; + lbAToF_TAll_Weight = 1/muPerBXToF; + lbCToF_TAll_Weight = 1/muPerBXToF; + lbAToF_TFront_Weight = 1/muPerBXToF; + lbAToF_TMiddle_Weight = 1/muPerBXToF; + lbAToF_TEnd_Weight = 1/muPerBXToF; + lbCToF_TFront_Weight = 1/muPerBXToF; + lbCToF_TMiddle_Weight = 1/muPerBXToF; + lbCToF_TEnd_Weight = 1/muPerBXToF; + + fill("AFPToFTool", lb, muPerBXToF); + + // BCX handler + unsigned int tempBCID = GetEventInfo(ctx)->bcid(); + SG::ReadCondHandle<BunchCrossingCondData> bcidHdlToF(m_bunchCrossingKeyToF,ctx); + if (!bcidHdlToF.isValid()) { + ATH_MSG_ERROR( "Unable to retrieve BunchCrossing conditions object (ToF)" ); + } + const BunchCrossingCondData* bcDataToF{*bcidHdlToF}; + + // Classifying bunches by position in train (Front, Middle, End) + if(bcDataToF->isFilled(tempBCID)) + { + bcidAllToF = tempBCID; + fill("AFPToFTool", bcidAllToF); + if(!bcDataToF->isFilled(tempBCID-1)) + { + if(!isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + frontBCIDsVectorToF.push_back(tempBCID); + } + bcidFrontToF = tempBCID; + fill("AFPToFTool", bcidFrontToF); + } + else + { + if(bcDataToF->isFilled(tempBCID+1)) + { + if(!isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + middleBCIDsVectorToF.push_back(tempBCID); + } + bcidMiddleToF = tempBCID; + fill("AFPToFTool", bcidMiddleToF); + } + else + { + if(!isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + endBCIDsVectorToF.push_back(tempBCID); + } + bcidEndToF = tempBCID; + fill("AFPToFTool", bcidEndToF); + } + } + } + + SG::ReadHandle<xAOD::AFPToFHitContainer> afpToFHitContainer(m_afpToFHitContainerKey, ctx); if(! afpToFHitContainer.isValid()) { @@ -71,6 +232,7 @@ StatusCode AFPToFAlgorithm::fillHistograms( const EventContext& ctx ) const { { trainID = hitsItr->trainID(); barInTrainID = hitsItr->barInTrainID(); + stationValues.push_back(hitsItr->stationID()); if(hitsItr->isSideA()) { @@ -81,6 +243,96 @@ StatusCode AFPToFAlgorithm::fillHistograms( const EventContext& ctx ) const { fill(m_tools[m_TrainsToFGroup.at(m_trainsToF.at(hitsItr->trainID()))], barInTrainIDA); barInTrainAllA = (hitsItr->trainID()*4)+barInTrainIDA; fill("AFPToFTool", barInTrainAllA); + + ToFHits_sideA = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", ToFHits_sideA, ToFHits_MU_Weight); + + + if(hitsItr->trainID() == 0) + { + lbAToF_T0 = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T0, lbAToF_TAll_Weight); + + if(isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + lbAToF_T0_Front = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T0_Front, lbAToF_TFront_Weight); + } + else if(isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + lbAToF_T0_Middle = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T0_Middle, lbAToF_TMiddle_Weight); + } + else if(isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + lbAToF_T0_End = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T0_End, lbAToF_TEnd_Weight); + } + + } + else if(hitsItr->trainID() == 1) + { + lbAToF_T1 = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T1, lbAToF_TAll_Weight); + + if(isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + lbAToF_T1_Front = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T1_Front, lbAToF_TFront_Weight); + } + else if(isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + lbAToF_T1_Middle = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T1_Middle, lbAToF_TMiddle_Weight); + } + else if(isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + lbAToF_T1_End = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T1_End, lbAToF_TEnd_Weight); + } + } + else if(hitsItr->trainID() == 2) + { + lbAToF_T2 = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T2, lbAToF_TAll_Weight); + + if(isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + lbAToF_T2_Front = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T2_Front, lbAToF_TFront_Weight); + } + else if(isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + lbAToF_T2_Middle = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T2_Middle, lbAToF_TMiddle_Weight); + } + else if(isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + lbAToF_T2_End = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T2_End, lbAToF_TEnd_Weight); + } + } + else if(hitsItr->trainID() == 3) + { + lbAToF_T3 = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T3, lbAToF_TAll_Weight); + + if(isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + lbAToF_T3_Front = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T3_Front, lbAToF_TFront_Weight); + } + else if(isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + lbAToF_T3_Middle = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T3_Middle, lbAToF_TMiddle_Weight); + } + else if(isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + lbAToF_T3_End = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbAToF_T3_End, lbAToF_TEnd_Weight); + } + } } else if(hitsItr->isSideC()) { @@ -91,13 +343,128 @@ StatusCode AFPToFAlgorithm::fillHistograms( const EventContext& ctx ) const { fill(m_tools[m_TrainsToFGroup.at(m_trainsToF.at(hitsItr->trainID()))], barInTrainIDC); barInTrainAllC = (hitsItr->trainID()*4)+barInTrainIDC; fill("AFPToFTool", barInTrainAllC); + + ToFHits_sideC = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", ToFHits_sideC, ToFHits_MU_Weight); + + if(hitsItr->trainID() == 0) + { + lbCToF_T0 = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T0, lbCToF_TAll_Weight); + + if(isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + lbCToF_T0_Front = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T0_Front, lbCToF_TFront_Weight); + } + else if(isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + lbCToF_T0_Middle = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T0_Middle, lbCToF_TMiddle_Weight); + } + else if(isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + lbCToF_T0_End = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T0_End, lbCToF_TEnd_Weight); + } + } + else if(hitsItr->trainID() == 1) + { + lbCToF_T1 = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T1, lbCToF_TAll_Weight); + + if(isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + lbCToF_T1_Front = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T1_Front, lbCToF_TFront_Weight); + } + else if(isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + lbCToF_T1_Middle = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T1_Middle, lbCToF_TMiddle_Weight); + } + else if(isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + lbCToF_T1_End = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T1_End, lbCToF_TEnd_Weight); + } + } + else if(hitsItr->trainID() == 2) + { + lbCToF_T2 = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T2, lbCToF_TAll_Weight); + + if(isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + lbCToF_T2_Front = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T2_Front, lbCToF_TFront_Weight); + } + else if(isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + lbCToF_T2_Middle = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T2_Middle, lbCToF_TMiddle_Weight); + } + else if(isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + lbCToF_T2_End = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T2_End, lbCToF_TEnd_Weight); + } + } + else if(hitsItr->trainID() == 3) + { + lbCToF_T3 = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T3, lbCToF_TAll_Weight); + + if(isInListVectorToF(tempBCID, frontBCIDsVectorToF)) + { + lbCToF_T3_Front = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T3_Front, lbCToF_TFront_Weight); + } + else if(isInListVectorToF(tempBCID, middleBCIDsVectorToF)) + { + lbCToF_T3_Middle = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T3_Middle, lbCToF_TMiddle_Weight); + } + else if(isInListVectorToF(tempBCID, endBCIDsVectorToF)) + { + lbCToF_T3_End = GetEventInfo(ctx)->lumiBlock(); + fill("AFPToFTool", lbCToF_T3_End, lbCToF_TEnd_Weight); + } + } } - if (hitsItr->stationID() == 0 || hitsItr->stationID() == 3) { fill(m_tools[m_StationNamesGroup.at(m_stationNamesToF.at(hitsItr->stationID()))], barInTrainID, trainID); + + if(hitsItr->stationID() == 0) // farAside + { + fill(m_tools[m_BarsInTrainsA.at(m_trainsToFA.at(hitsItr->trainID())).at(m_barsToF.at(hitsItr->barInTrainID()))], lbAToF, lbAToF_Weight); + } + else // farCside + { + fill(m_tools[m_BarsInTrainsC.at(m_trainsToFC.at(hitsItr->trainID())).at(m_barsToF.at(hitsItr->barInTrainID()))], lbCToF, lbCToF_Weight); + } + } + } + ToFHits_MU_Weight = 1; + lbAToF_Weight = 1; + lbCToF_Weight = 1; + + // Events histograms + if(!stationValues.empty()) + { + fill("AFPToFTool", lbAandCToFEvents); + + if(isInListVectorToF (0, stationValues)) + { + fill("AFPToFTool", lbAToFEvents); + } + if(isInListVectorToF (3, stationValues)) + { + fill("AFPToFTool", lbCToFEvents); } } + stationValues.clear(); return StatusCode::SUCCESS; } diff --git a/Generators/EvgenJobTransforms/share/skel.GENtoEVGEN.py b/Generators/EvgenJobTransforms/share/skel.GENtoEVGEN.py index 26ead7aeaa958067a07de52588449e434cb819f6..c29ea66576502fcc81a0351a0078fcf5150c22c8 100644 --- a/Generators/EvgenJobTransforms/share/skel.GENtoEVGEN.py +++ b/Generators/EvgenJobTransforms/share/skel.GENtoEVGEN.py @@ -672,7 +672,7 @@ def mk_symlink(srcfile, dstfile): ## Find and symlink dat and event files, so they are available via the name expected by the generator if eventsFile or datFile: if not hasattr(runArgs, "inputGeneratorFile") or runArgs.inputGeneratorFile == "NONE": - raise RuntimeError("%s needs input file (argument inputGeneratorFile)" % runArgs.jobConfigs) + raise RuntimeError("%s needs input file (argument inputGeneratorFile)" % runArgs.jobConfig) if evgenConfig.inputfilecheck and not re.search(evgenConfig.inputfilecheck, runArgs.inputGeneratorFile): raise RuntimeError("inputGeneratorFile=%s is incompatible with inputfilecheck '%s' in %s" % (runArgs.inputGeneratorFile, evgenConfig.inputfilecheck, runArgs.jobConfig)) diff --git a/Generators/EvgenJobTransforms/test/test_gen_E2ESh_LepxTauQCDJetFilter.sh b/Generators/EvgenJobTransforms/test/test_gen_E2ESh_LepxTauQCDJetFilter.sh index 1b098042526124c1c59f22de459e83fa03fb53ab..c464f53ebdc1a45c6f588f88899a89f3de107ce5 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_E2ESh_LepxTauQCDJetFilter.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_E2ESh_LepxTauQCDJetFilter.sh @@ -2,6 +2,7 @@ # art-description: EVNT2EVNT filtering - Sherpa files - Lepton+xAODTau+QCDTruthJetFilters # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_bphys.sh b/Generators/EvgenJobTransforms/test/test_gen_bphys.sh index 21ba0f97eeebcae61a3b112e1e8825f3dab1ac7c..aa38ab93dc836d2672deacb149deca80d5bd17c7 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_bphys.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_bphys.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Pythia8B Jpsimumu Zmumu # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_epos.sh b/Generators/EvgenJobTransforms/test/test_gen_epos.sh index f30340bf508ca9fb9bc7364c1877bd3a685c84cf..813830558f200a4a6f810e8711705a46654c736e 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_epos.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_epos.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Epos min_bias # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_herwig7_dijet.sh b/Generators/EvgenJobTransforms/test/test_gen_herwig7_dijet.sh index 2767023d6e7441d54975c445d457326c2ec77868..381f3d91816a1aac52ea7342bb03b7ff02cd8a8f 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_herwig7_dijet.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_herwig7_dijet.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test H7 dijets # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_herwig7_minbias.sh b/Generators/EvgenJobTransforms/test/test_gen_herwig7_minbias.sh index e8c0e3d288e9435c2bc76b9b61a5e15e9a34cb85..9cd8317ff82bcdac035d05a50902f29d8593e51f 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_herwig7_minbias.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_herwig7_minbias.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test H7 min_bias # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_herwig7_wjets.sh b/Generators/EvgenJobTransforms/test/test_gen_herwig7_wjets.sh index 6590c3b8f5e1f1e91cc220936e95611f18850d72..f1a1c1bcf0f42162ebd0e509c9c8f03ee77cc64e 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_herwig7_wjets.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_herwig7_wjets.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test H7 Wjets # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_herwig7_zjets.sh b/Generators/EvgenJobTransforms/test/test_gen_herwig7_zjets.sh index 95429e0c05eb35abe1867806e89da97c906d057e..9739bf1f824b2371478f590f5084c93ede1aa611 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_herwig7_zjets.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_herwig7_zjets.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test H7 Zjets # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_mg_LHEonly_Zee.sh b/Generators/EvgenJobTransforms/test/test_gen_mg_LHEonly_Zee.sh index 67995fd0039a5ae5fd80e6a8de5fe17a95482f7f..feb557aff627ef5011999e9372f62d133517df82 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_mg_LHEonly_Zee.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_mg_LHEonly_Zee.sh @@ -2,6 +2,7 @@ # art-description: Generation test MadGraph LHE-only for Z->ee # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_mgpy8_TT_METorLepFilt.sh b/Generators/EvgenJobTransforms/test/test_gen_mgpy8_TT_METorLepFilt.sh index 5ac90e29e9a02cdc6fec363c891faaa64f9e3857..d80d49c901345d476768b0eae138981608e89bd3 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_mgpy8_TT_METorLepFilt.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_mgpy8_TT_METorLepFilt.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test MG+Py8 TT MET or Lepton Filter # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_mgpy8eg_tWgamma_madspin.sh b/Generators/EvgenJobTransforms/test/test_gen_mgpy8eg_tWgamma_madspin.sh index 779e07f5594e5e33bf0fc12706c5050bf78aa1c6..f58733325407237d0d2e9e3e1acab3332491c27b 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_mgpy8eg_tWgamma_madspin.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_mgpy8eg_tWgamma_madspin.sh @@ -2,6 +2,7 @@ # art-description: Generation test MG+Py8+EG pp->ttbar+W+a with MadSpin # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_Zmumu.sh b/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_Zmumu.sh index 1186746c5f21127965dff940982ce0b950b772ef..78eac6c7fccc6fd91f5e39665c44bd841e1fe5ea 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_Zmumu.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_Zmumu.sh @@ -2,6 +2,7 @@ # art-description: Generation test MG+Py8 Z->mumu # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_ttW.sh b/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_ttW.sh index b045ef8c25d5e42354fa3f90b3608892ce47e68a..55a1aa0f0182ae479cc944ce7b6fb35081b4fb9c 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_ttW.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_ttW.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test MG+Py8 ttW # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_tt_NLO.sh b/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_tt_NLO.sh index c3521dd3d90f9822376ca60487b60407214958a9..2c25b279c880e46d7881ef02c3b80eb414d9acdd 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_tt_NLO.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_mgpythia8_tt_NLO.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test MG+Py8 tt NLO # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_phh7_WWlvlv.sh b/Generators/EvgenJobTransforms/test/test_gen_phh7_WWlvlv.sh index e57815d32cf9ab54b07dc41fd58242143af9de01..28abe6918620a952bf331cba2821071be143419c 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_phh7_WWlvlv.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_phh7_WWlvlv.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Powheg+H7 WW->lvlv # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_phh7_Zmumu_gridpack.sh b/Generators/EvgenJobTransforms/test/test_gen_phh7_Zmumu_gridpack.sh index 6f613206ebdafcd40b867a4cb955d34e41792838..88dcb1f45d3fcce0688e6a2e9db7dd4da2ae59e8 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_phh7_Zmumu_gridpack.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_phh7_Zmumu_gridpack.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Powheg+H7_EG Z->mumu with gridpack # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_phpy8_VBFNLO_Wev.sh b/Generators/EvgenJobTransforms/test/test_gen_phpy8_VBFNLO_Wev.sh index ef767438f893012bc0a672d232ceaf632b3ed622..50cd026475b63bb35d0a9669cfefbee599222372 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_phpy8_VBFNLO_Wev.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_phpy8_VBFNLO_Wev.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Powheg+Py8 VBFNLO W+->e+v # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_phpy8_Wt_DR.sh b/Generators/EvgenJobTransforms/test/test_gen_phpy8_Wt_DR.sh index d3ef459e6214fbfa1b6c25ead28594a32f080719..50132c3008d8eee23d97c12c423c7fbe0ee2ec31 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_phpy8_Wt_DR.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_phpy8_Wt_DR.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Powheg+Pythia8 Wt_DR # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_powhegLHEonly_ZZ.sh b/Generators/EvgenJobTransforms/test/test_gen_powhegLHEonly_ZZ.sh index b89b675e713414c97e42c868b6feac43d023a87e..92f3504a0961e3a288b935eb5babc60d5de13e98 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_powhegLHEonly_ZZ.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_powhegLHEonly_ZZ.sh @@ -2,6 +2,7 @@ # art-description: Generation test Powheg LHE-only ZZ # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_powhegLHEonly_singleTop.sh b/Generators/EvgenJobTransforms/test/test_gen_powhegLHEonly_singleTop.sh index 5635325c2a98001b650487aeba4f63ce92632394..dc31f4fdbbf85cb892ba04f55b3ae4a9cf334cc9 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_powhegLHEonly_singleTop.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_powhegLHEonly_singleTop.sh @@ -2,6 +2,7 @@ # art-description: Generation test Powheg LHE-only single top s-channel # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_powheg_ttbar.sh b/Generators/EvgenJobTransforms/test/test_gen_powheg_ttbar.sh index 2882f47821e970590e311f52dce7ec48e3ddb7e8..9990378168f553fae31f0b9bfd1d84f040dbadab 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_powheg_ttbar.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_powheg_ttbar.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Ph+Py8 ttbar using PDGParams and removing old rwt comments # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_powheg_wenu.sh b/Generators/EvgenJobTransforms/test/test_gen_powheg_wenu.sh index 81578928372dc8d781bf5bd99d44e12cdc8bfc23..a82916b0f9ab163956515910579e447a55b46af4 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_powheg_wenu.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_powheg_wenu.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Powheg+Pythia8 W->enu # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_py8_JZ2MultiBJetFilt.sh b/Generators/EvgenJobTransforms/test/test_gen_py8_JZ2MultiBJetFilt.sh index e76e8b3da3297191b7e82d061b83aa8c31830a78..fd9ed51646cc77eec5b913109d9365fb2a8a308c 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_py8_JZ2MultiBJetFilt.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_py8_JZ2MultiBJetFilt.sh @@ -2,6 +2,7 @@ # art-description: Generation test Pythia8 with two jet filters QCDTruthJetJZ2 with R=0.6 and MultiBJetFilter with R=0.4 # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_py8tauola_DYto2tau.sh b/Generators/EvgenJobTransforms/test/test_gen_py8tauola_DYto2tau.sh index 7c0c888aa82409d70ff3cca72b238b6e0b111100..a00d49e2d11dd5134902bcb411eed34a23142e8d 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_py8tauola_DYto2tau.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_py8tauola_DYto2tau.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Pythia8Tauolapp Z->tautau # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_pythia8_jets.sh b/Generators/EvgenJobTransforms/test/test_gen_pythia8_jets.sh index 4672c85a28865576feb2a49803346dfc439c4380..e57a4d7885d0145e60dc1b543753dde19f0cf352 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_pythia8_jets.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_pythia8_jets.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Pythia8 dijets # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_pythia8_minbias.sh b/Generators/EvgenJobTransforms/test/test_gen_pythia8_minbias.sh index 2c28dbba22eb1110407a9c00942c723a1e03759c..917337e9f1d54a11afb32d5226afbc18a0944b66 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_pythia8_minbias.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_pythia8_minbias.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test Pythia8 min_bias # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_pythia8_minbias_high.sh b/Generators/EvgenJobTransforms/test/test_gen_pythia8_minbias_high.sh index 9a39474c301136d38ad5798998e5363e831da30f..b1350d2e226ea455ec15375001b59540efd2b594 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_pythia8_minbias_high.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_pythia8_minbias_high.sh @@ -2,6 +2,7 @@ # art-description: Generation test Pythia8 min_bias inelastic high # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_pythia8_ztautau.sh b/Generators/EvgenJobTransforms/test/test_gen_pythia8_ztautau.sh index f4cde9277ce29e83b8c635c278fdc84a63c64916..853b1d32c8a70638198f416ff4183c1a6b6b36cb 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_pythia8_ztautau.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_pythia8_ztautau.sh @@ -2,6 +2,7 @@ # art-description: Generation test Pythia8 Z->tautau # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_qgsjet.sh b/Generators/EvgenJobTransforms/test/test_gen_qgsjet.sh index 29b42c2d8b7017328a9e6e4e831152b14379ec26..ebb86e20ec1ff25833fb8eee3d95d5b1526373ea 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_qgsjet.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_qgsjet.sh @@ -2,6 +2,7 @@ # art-description: Generation test QGSjet # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_rivet_athena.sh b/Generators/EvgenJobTransforms/test/test_gen_rivet_athena.sh index 2e0c02a95523db3422543b68c8f844bb86d5cf53..4c409ab400e27d4d720ed32ca5d232a3eb9f8fc3 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_rivet_athena.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_rivet_athena.sh @@ -2,6 +2,7 @@ # art-description: Athena-based Rivet run test # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.yoda.gz # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_rivet_standalone.sh b/Generators/EvgenJobTransforms/test/test_gen_rivet_standalone.sh index bfc22035e9b8ff5324e8c2769f1747ff9e21e13e..6db64ea9dc8dc57cb49986feac592c862ac909cf 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_rivet_standalone.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_rivet_standalone.sh @@ -2,6 +2,7 @@ # art-description: Standalone Rivet run test # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.yoda.gz # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_sherpa_Z0.sh b/Generators/EvgenJobTransforms/test/test_gen_sherpa_Z0.sh index 7a05829fac454ae13aee5b6aeb5c4ac7bac9ada2..445f8a1a396b0d04abfa4d07c14ca0b7874e30ad 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_sherpa_Z0.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_sherpa_Z0.sh @@ -2,6 +2,7 @@ # art-description: Generation test Sherpa Z0 # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_sherpa_dy.sh b/Generators/EvgenJobTransforms/test/test_gen_sherpa_dy.sh index f30a0df9d937d4ac538504934d9ea7405f4feef8..eb31aeeca65d716f95452ee19bca04e068a6507c 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_sherpa_dy.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_sherpa_dy.sh @@ -2,6 +2,7 @@ # art-description: Generation test Sherpa DY without inputs # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_sherpa_tttautau.sh b/Generators/EvgenJobTransforms/test/test_gen_sherpa_tttautau.sh index 8a3d7034e711e4dd1ba79154d495517a05c214f9..84a22ba4f66584ae1e97c2d2775bec1d87fbaa4b 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_sherpa_tttautau.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_sherpa_tttautau.sh @@ -2,6 +2,7 @@ # art-description: Generation test Sherpa ttll without inputs # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate # art-output: mc.*.py diff --git a/Generators/EvgenJobTransforms/test/test_gen_single.sh b/Generators/EvgenJobTransforms/test/test_gen_single.sh index 5d61e2b4f6f16de7d2c7f0a69d0f9b208756a82c..fca07abe2e75e9976d96d345ed8da295298ae63c 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_single.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_single.sh @@ -2,6 +2,7 @@ # art-description: MC Generators test Particel Gun single particle production # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_starlight.sh b/Generators/EvgenJobTransforms/test/test_gen_starlight.sh index 666eb4a22b3fefa60acb75c81fb04d87a95caf22..70136d25830c5161fc91925f4c7a112e317ac86c 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_starlight.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_starlight.sh @@ -2,6 +2,7 @@ # art-description: Generation test Starlight # art-type: build # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenJobTransforms/test/test_gen_superchic_ALP2.sh b/Generators/EvgenJobTransforms/test/test_gen_superchic_ALP2.sh index d3b287deb6d0b01d40a011488d4f49f59151422a..6fac113f0d5d060cac4508557700c127a3608539 100755 --- a/Generators/EvgenJobTransforms/test/test_gen_superchic_ALP2.sh +++ b/Generators/EvgenJobTransforms/test/test_gen_superchic_ALP2.sh @@ -1,6 +1,7 @@ #!/bin/bash # art-description: Generation test SuperChic ALP2 # art-include: master/AthGeneration +# art-include: master--HepMC3/Athena # art-type: build # art-output: *.root # art-output: log.generate diff --git a/Generators/EvgenProdTools/EvgenProdTools/CountHepMC.h b/Generators/EvgenProdTools/EvgenProdTools/CountHepMC.h index 16bab10dfbdca75ddbd609a723d00c2963ba20d9..f23295d3038273f8dafbd722ed31c0c11d421ebe 100644 --- a/Generators/EvgenProdTools/EvgenProdTools/CountHepMC.h +++ b/Generators/EvgenProdTools/EvgenProdTools/CountHepMC.h @@ -33,7 +33,7 @@ private: int m_nPass; int m_nCount; - int m_firstEv; + long long int m_firstEv; int m_newRunNumber; bool m_corHepMC; diff --git a/Generators/EvgenProdTools/src/CountHepMC.cxx b/Generators/EvgenProdTools/src/CountHepMC.cxx index 08212780a49867025d593d8146e31270b1e870a7..69ea298a322dffa4a89c79de86522ae24c117b97 100644 --- a/Generators/EvgenProdTools/src/CountHepMC.cxx +++ b/Generators/EvgenProdTools/src/CountHepMC.cxx @@ -69,7 +69,7 @@ StatusCode CountHepMC::execute() { McEventCollection* newmcEvtColl = new McEventCollection(*oldmcEvtColl); McEventCollection::iterator evt = newmcEvtColl->begin(); HepMC::GenEvent* hepMC = *evt; - hepMC->set_event_number(newnum); + HepMC::set_ll_event_number(hepMC, newnum); CHECK(evtStore()->overwrite( newmcEvtColl, key)); } else{ diff --git a/Generators/GeneratorFilters/GeneratorFilters/DecaysFinalStateFilter.h b/Generators/GeneratorFilters/GeneratorFilters/DecaysFinalStateFilter.h index fb4653a99e7b55c6a7f57688c065c5d720db595c..7f769efaa02f160a637ec8399c07fd76513129ac 100644 --- a/Generators/GeneratorFilters/GeneratorFilters/DecaysFinalStateFilter.h +++ b/Generators/GeneratorFilters/GeneratorFilters/DecaysFinalStateFilter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // GeneratorFilters/DecaysFinalStateFilter @@ -45,11 +45,11 @@ private: // list of allowed resonances from which decay products are counted std::vector<int> m_PDGAllowedParents; - // required (exact) number of quarks, charged leptons, neutrinos and photons from decays - int m_NQuarks, m_NChargedLeptons, m_NNeutrinos, m_NPhotons; + // required (exact) number of quarks, b-quarks, charged leptons, neutrinos and photons from decays + int m_NQuarks, m_NbQuarks, m_NChargedLeptons, m_NNeutrinos, m_NPhotons; - // required minimal number of quarks, charged leptons, neutrinos and photons from decays - int m_MinNQuarks, m_MinNChargedLeptons, m_MinNNeutrinos, m_MinNPhotons; + // required minimal number of quarks, b-quarks, charged leptons, neutrinos and photons from decays + int m_MinNQuarks, m_MinNbQuarks, m_MinNChargedLeptons, m_MinNNeutrinos, m_MinNPhotons; }; diff --git a/Generators/GeneratorFilters/GeneratorFilters/SameParticleHardScatteringFilter.h b/Generators/GeneratorFilters/GeneratorFilters/SameParticleHardScatteringFilter.h new file mode 100644 index 0000000000000000000000000000000000000000..bc69afaf903e0da06f0a2578815a847526ed52e4 --- /dev/null +++ b/Generators/GeneratorFilters/GeneratorFilters/SameParticleHardScatteringFilter.h @@ -0,0 +1,27 @@ +/* +Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ +#ifndef GENERATORFILTERS_SAMEPARTICLEHARDSCATTERINGFILTER_H +#define GENERATORFILTERS_SAMEPARTICLEHARDSCATTERINGFILTER_H + +#include "GeneratorModules/GenFilter.h" + +/// Allows the user to search for any given production Parent1 + Parent 2 -> Child1 + +/// @author Krystsina Petukhova, Oct 2020 +class SameParticleHardScatteringFilter : public GenFilter { +public: + + SameParticleHardScatteringFilter(const std::string& name, ISvcLocator* pSvcLocator); + virtual StatusCode filterInitialize(); + virtual StatusCode filterEvent(); + +private: + + std::vector<int> m_PDGParent; + std::vector<int> m_PDGChild; + +}; + +#endif + diff --git a/Generators/GeneratorFilters/GeneratorFilters/VBFMjjIntervalFilter.h b/Generators/GeneratorFilters/GeneratorFilters/VBFMjjIntervalFilter.h index 9318b38e07d88a439e8f67e49c123e509f5c8b19..412e582f32031c1a04156b0ce6428b3fcdb5f2b2 100644 --- a/Generators/GeneratorFilters/GeneratorFilters/VBFMjjIntervalFilter.h +++ b/Generators/GeneratorFilters/GeneratorFilters/VBFMjjIntervalFilter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef GENERATORFILTERSVBFMJJINTERVALFILTER_H @@ -7,7 +7,6 @@ #include "GeneratorModules/GenFilter.h" #include "xAODJet/JetContainer.h" -#include "CLHEP/Vector/LorentzVector.h" class IAtRndmGenSvc; @@ -47,13 +46,21 @@ private: bool m_electronjetoverlap; bool m_taujetoverlap; double m_alpha; + bool m_ApplyNjet; + unsigned int m_NJetsMin; + unsigned int m_NJetsMax; + bool m_ApplyWeighting; + bool m_applyDphi; + double m_dphijj; - bool checkOverlap(double, double, std::vector<HepMC::ConstGenParticlePtr>); - bool checkOverlap(double, double, std::vector<CLHEP::HepLorentzVector>); - CLHEP::HepLorentzVector sumDaughterNeutrinos( HepMC::ConstGenParticlePtr ); + + bool checkOverlap(double, double, const std::vector<HepMC::ConstGenParticlePtr>&); + bool checkOverlap(double, double, const std::vector<TLorentzVector>&); + TLorentzVector sumDaughterNeutrinos( HepMC::ConstGenParticlePtr ); public: + bool ApplyMassDphi(xAOD::JetContainer *jets); double getEventWeight(xAOD::JetContainer *jets); }; diff --git a/Generators/GeneratorFilters/src/DecaysFinalStateFilter.cxx b/Generators/GeneratorFilters/src/DecaysFinalStateFilter.cxx index 667dd2cc81f11934684f5b206de849276e42d463..dae00fa6fed6caa372ab200ef1b1f8f1f3d7ac17 100644 --- a/Generators/GeneratorFilters/src/DecaysFinalStateFilter.cxx +++ b/Generators/GeneratorFilters/src/DecaysFinalStateFilter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // GeneratorFilters/DecaysFinalStateFilter @@ -20,12 +20,16 @@ // topAlg.DecaysFinalStateFilter.NChargedLeptons = 2 // -> allows W(qq)Z(ll) and Z(qq)Z(ll) // +// topAlg.DecaysFinalStateFilter.PDGAllowedParents = [ 23 ] +// topAlg.DecaysFinalStateFilter.NbQuarks = 2 +// topAlg.DecaysFinalStateFilter.NChargedLeptons = 2 +// -> allows Z(bb)Z(ll) +// // Authors: // Kerim Suruliz Nov 2014 // Frank Siegert Nov 2014 #include "GeneratorFilters/DecaysFinalStateFilter.h" -//#include "GaudiKernel/MsgStream.h" #include <cmath> @@ -35,11 +39,13 @@ DecaysFinalStateFilter::DecaysFinalStateFilter(const std::string& name, ISvcLoca declareProperty("PDGAllowedParents", m_PDGAllowedParents); declareProperty("NQuarks", m_NQuarks = -1); + declareProperty("NbQuarks", m_NbQuarks = -1); declareProperty("NChargedLeptons", m_NChargedLeptons = -1); declareProperty("NNeutrinos", m_NNeutrinos = -1); declareProperty("NPhotons", m_NPhotons = -1); declareProperty("MinNQuarks", m_MinNQuarks = 0); + declareProperty("MinNbQuarks", m_MinNbQuarks = 0); declareProperty("MinNChargedLeptons", m_MinNChargedLeptons = 0); declareProperty("MinNNeutrinos", m_MinNNeutrinos = 0); declareProperty("MinNPhotons", m_MinNPhotons = 0); @@ -49,6 +55,7 @@ DecaysFinalStateFilter::DecaysFinalStateFilter(const std::string& name, ISvcLoca StatusCode DecaysFinalStateFilter::filterEvent() { int nChargedLeptons = 0; int nQuarks = 0; + int nbQuarks = 0; int nNeutrinos = 0; int nPhotons = 0; @@ -70,6 +77,7 @@ StatusCode DecaysFinalStateFilter::filterEvent() { for (auto opitr: *(part->end_vertex())) { int apid = std::abs(opitr->pdg_id()); if (apid == 1 || apid == 2 || apid == 3 || apid == 4 || apid ==5) nQuarks++; + if (apid == 5) nbQuarks++; if (apid == 11 || apid == 13 || apid == 15) nChargedLeptons++; if (apid == 12 || apid == 14 || apid == 16) nNeutrinos++; if (apid == 22) nPhotons++; @@ -80,6 +88,9 @@ StatusCode DecaysFinalStateFilter::filterEvent() { if (nQuarks < m_MinNQuarks || (m_NQuarks != -1 && nQuarks != m_NQuarks)) { setFilterPassed(false); } + else if (nbQuarks < m_MinNbQuarks || (m_NbQuarks != -1 && nbQuarks != m_NbQuarks)) { + setFilterPassed(false); + } else if (nChargedLeptons < m_MinNChargedLeptons || (m_NChargedLeptons != -1 && nChargedLeptons != m_NChargedLeptons)) { setFilterPassed(false); } diff --git a/Generators/GeneratorFilters/src/DirectPhotonFilter.cxx b/Generators/GeneratorFilters/src/DirectPhotonFilter.cxx index 43b783f44970b7552b470954dd34e425663c0c9a..29502e6e7e366193220f2da1eee397af9f96d191 100644 --- a/Generators/GeneratorFilters/src/DirectPhotonFilter.cxx +++ b/Generators/GeneratorFilters/src/DirectPhotonFilter.cxx @@ -16,8 +16,6 @@ DirectPhotonFilter::DirectPhotonFilter(const std::string& name, ISvcLocator* pSv declareProperty("Etacut", m_EtaRange = 2.50); declareProperty("AllowSUSYDecay",m_AllowSUSYDecay = false); - // Backward compatibility aliases - declareProperty("Ptcut", m_Ptmin); } StatusCode DirectPhotonFilter::filterInitialize() { @@ -62,7 +60,6 @@ StatusCode DirectPhotonFilter::filterEvent() { for (McEventCollection::const_iterator itr = events_const()->begin(); itr!=events_const()->end(); ++itr) { const HepMC::GenEvent* genEvt = (*itr); ATH_MSG_DEBUG("----->>> Process : " << HepMC::signal_process_id(genEvt)); - // Find all prompt photons with within given eta range for (auto pitr: *genEvt) { if (pitr->pdg_id() == 22 && @@ -87,7 +84,7 @@ StatusCode DirectPhotonFilter::filterEvent() { } phot++; if (!fromHadron) promptPhotonsInEta.push_back(pitr); - else ATH_MSG_INFO("non-prompt photon ignored"); + else ATH_MSG_DEBUG("non-prompt photon ignored"); } } } @@ -115,7 +112,9 @@ StatusCode DirectPhotonFilter::filterEvent() { } } - if (pass) ATH_MSG_DEBUG("Passed!"); + if (pass) { + ATH_MSG_DEBUG("Passed!"); + } setFilterPassed(pass); } else { // just require NPhotons to pass m_Ptmin/max[0] diff --git a/Generators/GeneratorFilters/src/ParentTwoChildrenFilter.cxx b/Generators/GeneratorFilters/src/ParentTwoChildrenFilter.cxx index 23b234de9bcdd844bb7ae10c7c4e166856a7c2c7..b70ef892f70a802f1344d76ecb12b8d09ebf3be6 100644 --- a/Generators/GeneratorFilters/src/ParentTwoChildrenFilter.cxx +++ b/Generators/GeneratorFilters/src/ParentTwoChildrenFilter.cxx @@ -58,11 +58,6 @@ StatusCode ParentTwoChildrenFilter::filterEvent() { if (n_daughters < 2) continue; - // Check whether decays are part of the requested set - HepMC::GenVertex::particle_iterator firstChild = pitr->end_vertex()->particles_begin(HepMC::children); - HepMC::GenVertex::particle_iterator endChild = pitr->end_vertex()->particles_end(HepMC::children); - HepMC::GenVertex::particle_iterator thisChild = firstChild; - int neutralPar = 0; for(auto thisChild: *decayVtx) { ATH_MSG_DEBUG(" ParentTwoChildrenFilter: parent ==> " <<pitr->pdg_id() << " child ===> " <<thisChild->pdg_id()); diff --git a/Generators/GeneratorFilters/src/SameParticleHardScatteringFilter.cxx b/Generators/GeneratorFilters/src/SameParticleHardScatteringFilter.cxx new file mode 100644 index 0000000000000000000000000000000000000000..008c6e5f612d51eeff40759004da933338d67fe2 --- /dev/null +++ b/Generators/GeneratorFilters/src/SameParticleHardScatteringFilter.cxx @@ -0,0 +1,69 @@ +/* + Copyright (C) 2020 CERN for the benefit of the ATLAS collaboration +*/ + +#include "GeneratorFilters/SameParticleHardScatteringFilter.h" + +SameParticleHardScatteringFilter::SameParticleHardScatteringFilter(const std::string& name, ISvcLocator* pSvcLocator) + : GenFilter(name,pSvcLocator) +{ + declareProperty("PDGParent",m_PDGParent); + declareProperty("PDGChild", m_PDGChild); +} + +StatusCode SameParticleHardScatteringFilter::filterInitialize() { + if (m_PDGParent.size() == 0) ATH_MSG_ERROR("PDGParent[] not set "); + if (m_PDGChild.size() == 0) ATH_MSG_ERROR("PDGChild[] not set "); + for (int i=0; i < int(m_PDGParent.size()); i++) ATH_MSG_DEBUG("PDGParent["<<i<<"] = " << m_PDGParent[i]); + for (int i=0; i < int(m_PDGChild.size()); i++) ATH_MSG_DEBUG("PDGChild["<<i<<"] = " << m_PDGChild[i]); + return StatusCode::SUCCESS; +} + +StatusCode SameParticleHardScatteringFilter::filterEvent() { + ATH_MSG_DEBUG(" SameParticleHardScattering filtering for: Parent --> " << m_PDGParent[0] + << " and parent " << -m_PDGParent[0] + << ", Child --> " << m_PDGChild[0]); + int N_Parent[2]; + N_Parent[0] = 0; + N_Parent[1] = 0; + + for (McEventCollection::const_iterator itr = events_const()->begin(); itr!= events_const()->end(); ++itr) + { + const HepMC::GenEvent* genEvt = (*itr); + for (auto pitr: *genEvt) + { + int id = pitr->pdg_id(); + if (std::abs(id) != m_PDGChild[0]) continue; // searching for only b-quarks + + // a pointer to the production vertex + HepMC::ConstGenVertexPtr productionVtx = pitr->production_vertex(); + + // Verify if we got a valid pointer and retrieve the number of parents + if (!productionVtx) continue; + // Incoming particle range check +#ifdef HEPMC3 + if (productionVtx->particles_in().size() < 2) continue; // we are looking for excited tau-leptons produced in b-quark b-antiquark scattering + for (auto thisParent: productionVtx->particles_in()) { +#else + if (productionVtx->particles_in_size() < 2) continue; // we are looking for excited tau-leptons produced in b-quark b-antiquark scattering + HepMC::GenVertex::particles_in_const_iterator firstParentIt = productionVtx->particles_in_const_begin(); + HepMC::GenVertex::particles_in_const_iterator endParentIt = productionVtx->particles_in_const_end(); + for (HepMC::GenVertex::particles_in_const_iterator thisParentIt = firstParentIt ; thisParentIt != endParentIt; ++thisParentIt) { + auto thisParent= *thisParentIt; +#endif + ATH_MSG_DEBUG(" SelectBQuarkScattering Filter: parent ==> " <<thisParent->pdg_id() << " child ===> " << pitr->pdg_id()); + if ( thisParent->pdg_id() == m_PDGParent[0] ) + { + N_Parent[0]++; + } + if ( thisParent->pdg_id() == -m_PDGParent[0] ) + { + N_Parent[1]++; + } + } + } + } + setFilterPassed(N_Parent[0] >= 1 && N_Parent[1] >= 1); + return StatusCode::SUCCESS; +} + diff --git a/Generators/GeneratorFilters/src/VBFMjjIntervalFilter.cxx b/Generators/GeneratorFilters/src/VBFMjjIntervalFilter.cxx index 4bac84381b25364c3ec2527299af43d5b4031a25..196fcd074c4d56bf277113c3cd4e182779ad18d9 100644 --- a/Generators/GeneratorFilters/src/VBFMjjIntervalFilter.cxx +++ b/Generators/GeneratorFilters/src/VBFMjjIntervalFilter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // Header for this module @@ -8,9 +8,9 @@ #include "StoreGate/DataHandle.h" #include "AthenaKernel/IAtRndmGenSvc.h" // For random numbers... #include "CLHEP/Random/RandomEngine.h" -#include "CLHEP/Units/SystemOfUnits.h" #include "EventInfo/EventInfo.h" // For setting the weight #include "EventInfo/EventType.h" // From event info - the real holder of the event weight +#include "GaudiKernel/PhysicalConstants.h" // Pt High --> Low @@ -28,22 +28,29 @@ VBFMjjIntervalFilter::VBFMjjIntervalFilter(const std::string& name, ISvcLocator* m_norm(1.) //< @todo Scalefactor always set to 1.0! Remove? { declareProperty("RapidityAcceptance", m_yMax = 5.0); - declareProperty("MinSecondJetPT", m_pTavgMin = 15.0*CLHEP::GeV); - declareProperty("MinOverlapPT", m_olapPt = 15.0*CLHEP::GeV); + declareProperty("MinSecondJetPT", m_pTavgMin = 15.0*Gaudi::Units::GeV); + declareProperty("MinOverlapPT", m_olapPt = 15.0*Gaudi::Units::GeV); declareProperty("TruthJetContainerName", m_TruthJetContainerName = "AntiKt4TruthJets"); //declareProperty("DoShape", m_doShape = true); declareProperty("NoJetProbability", m_prob0 = 0.0002); declareProperty("OneJetProbability", m_prob1 = 0.001); declareProperty("LowMjjProbability", m_prob2low = 0.005); declareProperty("HighMjjProbability", m_prob2high = 1.0); - declareProperty("LowMjj", m_mjjlow=100.0*CLHEP::GeV); + declareProperty("LowMjj", m_mjjlow=100.0*Gaudi::Units::GeV); declareProperty("TruncateAtLowMjj", m_truncatelowmjj = false); - declareProperty("HighMjj", m_mjjhigh=800.0*CLHEP::GeV); + declareProperty("HighMjj", m_mjjhigh=800.0*Gaudi::Units::GeV); declareProperty("TruncateAtHighMjj", m_truncatehighmjj = false); declareProperty("PhotonJetOverlapRemoval", m_photonjetoverlap = false); declareProperty("ElectronJetOverlapRemoval", m_electronjetoverlap = true); declareProperty("TauJetOverlapRemoval", m_taujetoverlap = false); declareProperty("Alpha",m_alpha=log(m_prob2low/m_prob2high)/log(m_mjjlow/m_mjjhigh)); + declareProperty("ApplyNjet",m_ApplyNjet=false); + declareProperty("Njets", m_NJetsMin=2); + declareProperty("NjetsMax",m_NJetsMax=-1); + declareProperty("ApplyWeighting",m_ApplyWeighting=true); + declareProperty("ApplyDphi",m_applyDphi=false); + declareProperty("dphijjMax",m_dphijj=2.5); + } @@ -82,7 +89,7 @@ StatusCode VBFMjjIntervalFilter::filterEvent() { // Find overlap objects std::vector<HepMC::ConstGenParticlePtr> MCTruthPhotonList; std::vector<HepMC::ConstGenParticlePtr> MCTruthElectronList; - std::vector<CLHEP::HepLorentzVector> MCTruthTauList; + std::vector<TLorentzVector> MCTruthTauList; for (McEventCollection::const_iterator itr = events()->begin(); itr != events()->end(); ++itr) { const HepMC::GenEvent* genEvt = (*itr); for (auto pitr: *genEvt) { @@ -115,12 +122,12 @@ StatusCode VBFMjjIntervalFilter::filterEvent() { } if (leptonic == 0) { - CLHEP::HepLorentzVector nutau = sumDaughterNeutrinos( tau ); - CLHEP::HepLorentzVector tauvis = CLHEP::HepLorentzVector(tau->momentum().px()-nutau.px(), - tau->momentum().py()-nutau.py(), - tau->momentum().pz()-nutau.pz(), - tau->momentum().e()-nutau.e()); - if (tauvis.vect().perp() >= m_olapPt && std::abs(tauvis.vect().pseudoRapidity()) <= m_yMax) { + TLorentzVector nutau = sumDaughterNeutrinos( tau ); + TLorentzVector tauvis = TLorentzVector(tau->momentum().px()-nutau.Px(), + tau->momentum().py()-nutau.Py(), + tau->momentum().pz()-nutau.Pz(), + tau->momentum().e()-nutau.E()); + if (tauvis.Vect().Perp() >= m_olapPt && std::abs(tauvis.Vect().PseudoRapidity()) <= m_yMax) { MCTruthTauList.push_back(tauvis); } } @@ -154,42 +161,65 @@ StatusCode VBFMjjIntervalFilter::filterEvent() { } filteredJets.sort(High2LowByJetClassPt()); - double eventWeight = 1.0; - eventWeight = getEventWeight(&filteredJets); - double rnd = rndm->flat(); - if (1.0/eventWeight < rnd) { - setFilterPassed(false); - ATH_MSG_DEBUG("Event failed weighting. Weight is " << eventWeight); - return StatusCode::SUCCESS; - } + if(m_ApplyWeighting){ - // Get MC event collection for setting weight - const DataHandle<McEventCollection> mecc = 0; - if ( evtStore()->retrieve( mecc ).isFailure() || !mecc ){ - setFilterPassed(false); - ATH_MSG_ERROR("Could not retrieve MC Event Collection - weight might not work"); - return StatusCode::SUCCESS; - } + double eventWeight = 1.0; + eventWeight = getEventWeight(&filteredJets); + double rnd = rndm->flat(); + if (1.0/eventWeight < rnd) { + setFilterPassed(false); + ATH_MSG_DEBUG("Event failed weighting. Weight is " << eventWeight); + return StatusCode::SUCCESS; + } - ATH_MSG_INFO("Event passed. Will weight events " << eventWeight*m_norm); - McEventCollection* mec = const_cast<McEventCollection*> (&(*mecc)); - for (unsigned int i = 0; i < mec->size(); ++i) { - if (!(*mec)[i]) continue; - double existingWeight = (*mec)[i]->weights().size()>0 ? (*mec)[i]->weights()[0] : 1.; - if ((*mec)[i]->weights().size()>0) { - (*mec)[i]->weights()[0] = existingWeight*eventWeight*m_norm; - } else { - (*mec)[i]->weights().push_back( eventWeight*m_norm*existingWeight ); + // Get MC event collection for setting weight + const DataHandle<McEventCollection> mecc = 0; + if ( evtStore()->retrieve( mecc ).isFailure() || !mecc ){ + setFilterPassed(false); + ATH_MSG_ERROR("Could not retrieve MC Event Collection - weight might not work"); + return StatusCode::SUCCESS; } - } + ATH_MSG_INFO("Event passed. Will weight events " << eventWeight*m_norm); + McEventCollection* mec = const_cast<McEventCollection*> (&(*mecc)); + for (unsigned int i = 0; i < mec->size(); ++i) { + if (!(*mec)[i]) continue; + double existingWeight = (*mec)[i]->weights().size()>0 ? (*mec)[i]->weights()[0] : 1.; + if ((*mec)[i]->weights().size()>0) { + (*mec)[i]->weights()[0] = existingWeight*eventWeight*m_norm; + } else { + (*mec)[i]->weights().push_back( eventWeight*m_norm*existingWeight ); + } + } + }//Apply weighting + else { + //just compute mjj, dphi etc + bool pass = ApplyMassDphi(&filteredJets); + if(!pass){ + setFilterPassed(false); + ATH_MSG_DEBUG("Event failed filter"); + return StatusCode::SUCCESS; + } + if(m_ApplyNjet){ + if(filteredJets.size()<m_NJetsMin){ + setFilterPassed(false); + return StatusCode::SUCCESS; + } + if(m_NJetsMax>0){ + if(filteredJets.size()>m_NJetsMax){ + setFilterPassed(false); + return StatusCode::SUCCESS; + } + }//Njets < + }//Apply Njets filter + } // Made it to the end - success! setFilterPassed(true); return StatusCode::SUCCESS; } -bool VBFMjjIntervalFilter::checkOverlap(double eta, double phi, std::vector<HepMC::ConstGenParticlePtr> list) { +bool VBFMjjIntervalFilter::checkOverlap(double eta, double phi, const std::vector<HepMC::ConstGenParticlePtr> &list ) { for (size_t i = 0; i < list.size(); ++i) { double pt = list[i]->momentum().perp(); if (pt > m_olapPt) { @@ -207,13 +237,13 @@ bool VBFMjjIntervalFilter::checkOverlap(double eta, double phi, std::vector<HepM -bool VBFMjjIntervalFilter::checkOverlap(double eta, double phi, std::vector<CLHEP::HepLorentzVector> list) { +bool VBFMjjIntervalFilter::checkOverlap(double eta, double phi, const std::vector<TLorentzVector> &list ) { for (size_t i = 0; i < list.size(); ++i) { - double pt = list[i].vect().perp(); + double pt = list[i].Vect().Perp(); if (pt > m_olapPt) { /// @todo Provide a helper function for this (and similar) - double dphi = phi-list[i].phi(); - double deta = eta-list[i].vect().pseudoRapidity(); + double dphi = phi-list[i].Phi(); + double deta = eta-list[i].Vect().PseudoRapidity(); if (dphi > M_PI) { dphi -= 2.*M_PI; } if (dphi < -M_PI) { dphi += 2.*M_PI; } double dr = std::sqrt(deta*deta+dphi*dphi); @@ -223,8 +253,18 @@ bool VBFMjjIntervalFilter::checkOverlap(double eta, double phi, std::vector<CLHE return false; } - - +bool VBFMjjIntervalFilter::ApplyMassDphi(xAOD::JetContainer *jets){ + if(jets->size()<2) return false; + double mjj = (jets->at(0)->p4() + jets->at(1)->p4()).M(); + double dphi = std::abs(jets->at(0)->p4().DeltaPhi(jets->at(1)->p4())); + ATH_MSG_INFO("mjj " << mjj << " dphi " << dphi); + bool pass = true; + if(mjj<m_mjjlow)pass=false; + if(mjj>m_mjjhigh)pass=false; + if(m_applyDphi && dphi > m_dphijj) pass = false; + + return pass; +} double VBFMjjIntervalFilter::getEventWeight(xAOD::JetContainer *jets) { double weight = 1.0; @@ -259,14 +299,14 @@ double VBFMjjIntervalFilter::getEventWeight(xAOD::JetContainer *jets) { } -CLHEP::HepLorentzVector VBFMjjIntervalFilter::sumDaughterNeutrinos( HepMC::ConstGenParticlePtr part ) { - CLHEP::HepLorentzVector nu( 0, 0, 0, 0); + TLorentzVector VBFMjjIntervalFilter::sumDaughterNeutrinos( HepMC::ConstGenParticlePtr part ) { + TLorentzVector nu( 0, 0, 0, 0); if ( ( std::abs( part->pdg_id() ) == 12 ) || ( std::abs( part->pdg_id() ) == 14 ) || ( std::abs( part->pdg_id() ) == 16 ) ) { - nu.setPx(part->momentum().px()); - nu.setPy(part->momentum().py()); - nu.setPz(part->momentum().pz()); - nu.setE(part->momentum().e()); + nu.SetPx(part->momentum().px()); + nu.SetPy(part->momentum().py()); + nu.SetPz(part->momentum().pz()); + nu.SetE(part->momentum().e()); return nu; } diff --git a/Generators/GeneratorFilters/src/components/GeneratorFilters_entries.cxx b/Generators/GeneratorFilters/src/components/GeneratorFilters_entries.cxx index 007e9b2064a3b25a711c289b0db4dfbb0a540c8e..14678dd4a53b839b588b606138206af96dbcf7a0 100644 --- a/Generators/GeneratorFilters/src/components/GeneratorFilters_entries.cxx +++ b/Generators/GeneratorFilters/src/components/GeneratorFilters_entries.cxx @@ -1,26 +1,36 @@ // filters accepted for 22.6 #include "GeneratorFilters/BSignalFilter.h" +#include "GeneratorFilters/ChargedTracksFilter.h" #include "GeneratorFilters/ChargedTracksWeightFilter.h" +#include "GeneratorFilters/DecaysFinalStateFilter.h" #include "GeneratorFilters/DecayTimeFilter.h" +#include "GeneratorFilters/DiLeptonMassFilter.h" #include "GeneratorFilters/DirectPhotonFilter.h" #include "GeneratorFilters/HeavyFlavorHadronFilter.h" -#include "GeneratorFilters/LeptonFilter.h" +#include "GeneratorFilters/LeptonFilter.h" +#include "GeneratorFilters/LeptonPairFilter.h" #include "GeneratorFilters/M4MuIntervalFilter.h" #include "GeneratorFilters/MissingEtFilter.h" +#include "GeneratorFilters/MultiBjetFilter.h" #include "GeneratorFilters/MultiCjetFilter.h" #include "GeneratorFilters/MultiElecMuTauFilter.h" +#include "GeneratorFilters/MultiLeptonFilter.h" +#include "GeneratorFilters/MultiMuonFilter.h" #include "GeneratorFilters/ParentChildFilter.h" #include "GeneratorFilters/ParentTwoChildrenFilter.h" #include "GeneratorFilters/QCDTruthJetFilter.h" +#include "GeneratorFilters/SameParticleHardScatteringFilter.h" #include "GeneratorFilters/TauFilter.h" -#include "GeneratorFilters/xAODTauFilter.h" +#include "GeneratorFilters/VBFForwardJetsFilter.h" +#include "GeneratorFilters/VBFMjjIntervalFilter.h" +#include "GeneratorFilters/XtoVVDecayFilterExtended.h" #include "GeneratorFilters/xAODElectronFilter.h" -#include "GeneratorFilters/xAODMuonFilter.h" -#include "GeneratorFilters/xAODPhotonFilter.h" +#include "GeneratorFilters/xAODMissingEtFilter.h" #include "GeneratorFilters/xAODMultiLeptonFilter.h" #include "GeneratorFilters/xAODMultiMuonFilter.h" -#include "GeneratorFilters/xAODMissingEtFilter.h" - +#include "GeneratorFilters/xAODMuonFilter.h" +#include "GeneratorFilters/xAODPhotonFilter.h" +#include "GeneratorFilters/xAODTauFilter.h" // slimmers for 22.6 #include "GeneratorFilters/PileupTruthParticleSlimmer.h" @@ -34,9 +44,6 @@ #include "GeneratorFilters/ElectronFilter.h" #include "GeneratorFilters/ZtoLeptonFilter.h" -#include "GeneratorFilters/MultiLeptonFilter.h" -#include "GeneratorFilters/MultiMuonFilter.h" -#include "GeneratorFilters/MultiBjetFilter.h" #include "GeneratorFilters/BSignalFilter.h" #include "GeneratorFilters/ATauFilter.h" #include "GeneratorFilters/JetFilter.h" @@ -53,7 +60,6 @@ #include "GeneratorFilters/SoftLeptonFilter.h" #include "GeneratorFilters/ParentChildwStatusFilter.h" #include "GeneratorFilters/SoftLeptonInJetFilter.h" -#include "GeneratorFilters/VBFForwardJetsFilter.h" #include "GeneratorFilters/TTbarPlusJetsFilter.h" #include "GeneratorFilters/WMultiLeptonFilter.h" #include "GeneratorFilters/PtmissAndOrLeptonFilter.h" @@ -69,9 +75,7 @@ #include "GeneratorFilters/TruthJetWeightFilter.h" #include "GeneratorFilters/MultiElectronFilter.h" #include "GeneratorFilters/DiPhotonFilter.h" -#include "GeneratorFilters/ChargedTracksFilter.h" #include "GeneratorFilters/DecayModeFilter.h" -#include "GeneratorFilters/DiLeptonMassFilter.h" #include "GeneratorFilters/DstD0K3piFilter.h" #include "GeneratorFilters/FourLeptonMassFilter.h" #include "GeneratorFilters/FourLeptonInvMassFilter.h" @@ -84,61 +88,68 @@ #include "GeneratorFilters/TopCKMKinFilter.h" #include "GeneratorFilters/MultiHiggsFilter.h" #include "GeneratorFilters/XtoVVDecayFilter.h" -#include "GeneratorFilters/XtoVVDecayFilterExtended.h" #include "GeneratorFilters/VHtoVVFilter.h" #include "GeneratorFilters/TtHtoVVDecayFilter.h" #include "GeneratorFilters/SusySubprocessFinder.h" #include "GeneratorFilters/LeadingPhotonFilter.h" #include "GeneratorFilters/VHtoVVDiLepFilter.h" -#include "GeneratorFilters/VBFMjjIntervalFilter.h" #include "GeneratorFilters/JetFilterWithTruthPhoton.h" #include "GeneratorFilters/Boosted2DijetFilter.h" #include "GeneratorFilters/DiBjetFilter.h" #include "GeneratorFilters/HiggsFilter.h" #include "GeneratorFilters/TTbarBoostCatFilter.h" #include "GeneratorFilters/MultiParticleFilter.h" -#include "GeneratorFilters/LeptonPairFilter.h" #include "GeneratorFilters/DecayPositionFilter.h" #include "GeneratorFilters/HTFilter.h" #include "GeneratorFilters/TTbarPlusHeavyFlavorFilter.h" #include "GeneratorFilters/DuplicateEventFilter.h" #include "GeneratorFilters/BoostedHadTopAndTopPair.h" -#include "GeneratorFilters/DecaysFinalStateFilter.h" #include "GeneratorFilters/HTFilter.h" #include "GeneratorFilters/TrimuMassRangeFilter.h" // filters accepted for 22.6 DECLARE_COMPONENT( BSignalFilter ) +DECLARE_COMPONENT( ChargedTracksFilter ) DECLARE_COMPONENT( ChargedTracksWeightFilter ) -DECLARE_COMPONENT( DirectPhotonFilter ) +DECLARE_COMPONENT( DecaysFinalStateFilter ) DECLARE_COMPONENT( DecayTimeFilter ) +DECLARE_COMPONENT( DiLeptonMassFilter ) +DECLARE_COMPONENT( DirectPhotonFilter ) DECLARE_COMPONENT( HeavyFlavorHadronFilter ) DECLARE_COMPONENT( LeptonFilter ) +DECLARE_COMPONENT( LeptonPairFilter ) DECLARE_COMPONENT( M4MuIntervalFilter ) DECLARE_COMPONENT( MissingEtFilter ) +DECLARE_COMPONENT( MultiBjetFilter ) DECLARE_COMPONENT( MultiCjetFilter ) DECLARE_COMPONENT( MultiElecMuTauFilter ) +DECLARE_COMPONENT( MultiLeptonFilter ) +DECLARE_COMPONENT( MultiMuonFilter ) DECLARE_COMPONENT( ParentChildFilter ) DECLARE_COMPONENT( ParentTwoChildrenFilter ) DECLARE_COMPONENT( QCDTruthJetFilter ) +DECLARE_COMPONENT( SameParticleHardScatteringFilter ) DECLARE_COMPONENT( TauFilter ) -DECLARE_COMPONENT( xAODTauFilter ) +DECLARE_COMPONENT( VBFForwardJetsFilter ) +DECLARE_COMPONENT( VBFMjjIntervalFilter ) +DECLARE_COMPONENT( XtoVVDecayFilterExtended ) DECLARE_COMPONENT( xAODElectronFilter ) -DECLARE_COMPONENT( xAODMuonFilter ) -DECLARE_COMPONENT( xAODPhotonFilter ) +DECLARE_COMPONENT( xAODMissingEtFilter) DECLARE_COMPONENT( xAODMultiLeptonFilter) DECLARE_COMPONENT( xAODMultiMuonFilter) -DECLARE_COMPONENT( xAODMissingEtFilter) - +DECLARE_COMPONENT( xAODMuonFilter ) +DECLARE_COMPONENT( xAODPhotonFilter ) +DECLARE_COMPONENT( xAODTauFilter ) //slimmers accepted for 22.6 DECLARE_COMPONENT( PileupTruthParticleSlimmer ) DECLARE_COMPONENT( TauTruthParticleSlimmer ) DECLARE_COMPONENT( xAODTruthParticleSlimmerElectron ) DECLARE_COMPONENT( xAODTruthParticleSlimmerMuon ) -DECLARE_COMPONENT( xAODTruthParticleSlimmerPhoton) DECLARE_COMPONENT( xAODTruthParticleSlimmerMET) +DECLARE_COMPONENT( xAODTruthParticleSlimmerPhoton) + @@ -146,9 +157,6 @@ DECLARE_COMPONENT( xAODTruthParticleSlimmerMET) DECLARE_COMPONENT( ElectronFilter ) DECLARE_COMPONENT( LeptonFilter ) DECLARE_COMPONENT( ZtoLeptonFilter ) -DECLARE_COMPONENT( MultiLeptonFilter ) -DECLARE_COMPONENT( MultiMuonFilter ) -DECLARE_COMPONENT( MultiBjetFilter ) DECLARE_COMPONENT( BSignalFilter ) DECLARE_COMPONENT( ATauFilter ) DECLARE_COMPONENT( JetFilter ) @@ -164,7 +172,6 @@ DECLARE_COMPONENT( TruthJetFilter ) DECLARE_COMPONENT( SoftLeptonFilter ) DECLARE_COMPONENT( ParentChildwStatusFilter ) DECLARE_COMPONENT( SoftLeptonInJetFilter ) -DECLARE_COMPONENT( VBFForwardJetsFilter ) DECLARE_COMPONENT( TTbarPlusJetsFilter ) DECLARE_COMPONENT( WMultiLeptonFilter ) DECLARE_COMPONENT( PtmissAndOrLeptonFilter ) @@ -180,9 +187,7 @@ DECLARE_COMPONENT( XXvvGGFilter ) DECLARE_COMPONENT( TruthJetWeightFilter ) DECLARE_COMPONENT( MultiElectronFilter ) DECLARE_COMPONENT( DiPhotonFilter ) -DECLARE_COMPONENT( ChargedTracksFilter ) DECLARE_COMPONENT( DecayModeFilter ) -DECLARE_COMPONENT( DiLeptonMassFilter ) DECLARE_COMPONENT( HeavyFlavorHadronFilter ) DECLARE_COMPONENT( DstD0K3piFilter ) DECLARE_COMPONENT( FourLeptonMassFilter ) @@ -197,25 +202,21 @@ DECLARE_COMPONENT( BSubstruct ) DECLARE_COMPONENT( TopCKMKinFilter ) DECLARE_COMPONENT( MultiHiggsFilter ) DECLARE_COMPONENT( XtoVVDecayFilter ) -DECLARE_COMPONENT( XtoVVDecayFilterExtended ) DECLARE_COMPONENT( VHtoVVFilter ) DECLARE_COMPONENT( TtHtoVVDecayFilter ) DECLARE_COMPONENT( SusySubprocessFinder ) DECLARE_COMPONENT( LeadingPhotonFilter ) DECLARE_COMPONENT( VHtoVVDiLepFilter ) -DECLARE_COMPONENT( VBFMjjIntervalFilter ) DECLARE_COMPONENT( JetFilterWithTruthPhoton ) DECLARE_COMPONENT( Boosted2DijetFilter ) DECLARE_COMPONENT( DiBjetFilter ) DECLARE_COMPONENT( HiggsFilter ) DECLARE_COMPONENT( TTbarBoostCatFilter ) DECLARE_COMPONENT( MultiParticleFilter ) -DECLARE_COMPONENT( LeptonPairFilter ) DECLARE_COMPONENT( DecayPositionFilter ) DECLARE_COMPONENT( HTFilter ) DECLARE_COMPONENT( TTbarPlusHeavyFlavorFilter ) DECLARE_COMPONENT( DuplicateEventFilter ) DECLARE_COMPONENT( BoostedHadTopAndTopPair ) -DECLARE_COMPONENT( DecaysFinalStateFilter ) DECLARE_COMPONENT( HTFilter ) DECLARE_COMPONENT( TrimuMassRangeFilter ) diff --git a/Generators/GeneratorModules/GeneratorModules/GenModule.h b/Generators/GeneratorModules/GeneratorModules/GenModule.h index 3646272b300a9d8d4c28993707186ab5adf14a91..5875545a293adfacf579e5773548aabf6ac9a6fd 100644 --- a/Generators/GeneratorModules/GeneratorModules/GenModule.h +++ b/Generators/GeneratorModules/GeneratorModules/GenModule.h @@ -9,6 +9,9 @@ #include "CLHEP/Random/RandomEngine.h" #include "CLHEP/Random/RandPoisson.h" #include <memory> +#ifdef HEPMC3 +#include "AtlasHepMC/GenEvent.h" +#endif /// @brief Base class for common behaviour of generator interfaces. @@ -85,6 +88,10 @@ protected: /// Flag for normal vs. afterburner generators int m_isAfterburner; +#ifdef HEPMC3 + /// The run info for HepMC3 + std::shared_ptr<HepMC3::GenRunInfo> m_runinfo; +#endif private: diff --git a/Generators/Herwig7_i/src/Herwig7.cxx b/Generators/Herwig7_i/src/Herwig7.cxx index 26cf4046333141863bc6ead18e08f79fa8d388fd..b30678adff1c994a60408fe236fe423ae49ddabc 100644 --- a/Generators/Herwig7_i/src/Herwig7.cxx +++ b/Generators/Herwig7_i/src/Herwig7.cxx @@ -142,6 +142,12 @@ StatusCode Herwig7::genInitialize() { ATH_MSG_INFO("starting to prepare the run from runfile '"+m_runfile+"'..."); +#ifdef HEPMC3 + m_runinfo = std::make_shared<HepMC3::GenRunInfo>(); + /// Here one can fill extra information, e.g. the used tools in a format generator name, version string, comment. + struct HepMC3::GenRunInfo::ToolInfo generator={std::string("Herwig7"), std::string("7"), std::string("Used generator")}; + m_runinfo->tools().push_back(generator); +#endif // read in a Herwig runfile and obtain the event generator m_gen = Herwig::API::prepareRun(m_api); ATH_MSG_DEBUG("preparing the run..."); @@ -172,6 +178,9 @@ StatusCode Herwig7::callGenerator() { StatusCode Herwig7::fillEvt(HepMC::GenEvent* evt) { // Convert the Herwig event into the HepMC GenEvent ATH_MSG_DEBUG("Converting ThePEG::Event to HepMC::GenEvent"); +#ifdef HEPMC3 + if (!evt->run_info()) evt->set_run_info(m_runinfo); +#endif convert_to_HepMC(*m_event, *evt, false, ThePEG::MeV, ThePEG::millimeter); ATH_MSG_DEBUG("Converted ThePEG::Event to HepMC::GenEvent"); @@ -216,7 +225,7 @@ StatusCode Herwig7::fillEvt(HepMC::GenEvent* evt) { double pdf2 = pdfs.first.xfx(sub->incoming().second->dataPtr(), scale, x2); // Create the PDFinfo object #ifdef HEPMC3 - HepMC3::GenPdfInfoPtr pdfi = std::shared_ptr<HepMC3::GenPdfInfo>(); + HepMC3::GenPdfInfoPtr pdfi = std::make_shared<HepMC3::GenPdfInfo>(); pdfi->set(id1, id2, x1, x2, Q, pdf1, pdf2); #else HepMC::PdfInfo pdfi(id1, id2, x1, x2, Q, pdf1, pdf2); diff --git a/Generators/Herwig7_i/src/PowhegLesHouchesFileReader.cxx b/Generators/Herwig7_i/src/PowhegLesHouchesFileReader.cxx index f47c19ab6b756192485a32eda58cf02e05b4c328..02799bff20a2d7ea571438453e682ca3a41d5c9e 100644 --- a/Generators/Herwig7_i/src/PowhegLesHouchesFileReader.cxx +++ b/Generators/Herwig7_i/src/PowhegLesHouchesFileReader.cxx @@ -256,8 +256,8 @@ void powhegLesHouchesFileReader::doinit() { temp >> id >> mass; // skip resetting masses on SM particles // as it can cause problems later on in event generation - if(abs(id)<=6 || (abs(id)>=11 && abs(id)<=16) || - abs(id)==23 || abs(id)==24) { + if(std::abs(id) <= 6 || (std::abs(id) >= 11 && std::abs(id) <= 16) || + std::abs(id) == 23 || std::abs(id) == 24) { block = StringUtils::cdr(block,"\r\n"); line = StringUtils::car(block,"\r\n"); continue; @@ -295,11 +295,11 @@ void powhegLesHouchesFileReader::doinit() { << parent << " does not exist. " << Exception::runerror; return; } - if ( abs(inpart->id()) == 6 || - abs(inpart->id()) == 15 || - abs(inpart->id()) == 23 || - abs(inpart->id()) == 24 || - abs(inpart->id()) == 25 ) { + if ( std::abs(inpart->id()) == 6 || + std::abs(inpart->id()) == 15 || + std::abs(inpart->id()) == 23 || + std::abs(inpart->id()) == 24 || + std::abs(inpart->id()) == 25 ) { Throw<SetupException>() << "\n" "************************************************************************\n" "* Your LHE file changes the width of " << inpart->PDGName() << ".\n" @@ -346,7 +346,7 @@ void powhegLesHouchesFileReader::doinit() { long t; is >> t; if( is.fail() ) break; - if( t == abs(parent) ) + if( t == std::abs(parent) ) throw SetupException() << "An error occurred while read a decay of the " << inpart->PDGName() << ". One of its products has the same PDG code " diff --git a/Generators/Herwig7_i/test/test_00_dijet.sh b/Generators/Herwig7_i/test/test_00_dijet.sh index 311eeb791898c1baa2f55b0acdd39b271e44d2dc..5afc370540e6106d63e91fc4147038525ff6d7a3 100755 --- a/Generators/Herwig7_i/test/test_00_dijet.sh +++ b/Generators/Herwig7_i/test/test_00_dijet.sh @@ -25,7 +25,7 @@ echo "art-result: $? convert" dcubeName="Herwig7" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/config_file/test_00_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/reference/test_00_output.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/master_branch/reference/test_00_output.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef diff --git a/Generators/Herwig7_i/test/test_01_dijet_dipole.sh b/Generators/Herwig7_i/test/test_01_dijet_dipole.sh index 5c56df7bdb087fad17849d25b399d42b6e69f0e4..ebea0b398b223cb5e234f039158398ac1d454e8f 100755 --- a/Generators/Herwig7_i/test/test_01_dijet_dipole.sh +++ b/Generators/Herwig7_i/test/test_01_dijet_dipole.sh @@ -23,7 +23,7 @@ echo "art-result: $? Plot" dcubeName="Herwig7" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/config_file/test_01_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/reference/test_01_output.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/master_branch/reference/test_01_output.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef diff --git a/Generators/Herwig7_i/test/test_02_Wjet.sh b/Generators/Herwig7_i/test/test_02_Wjet.sh index ccbb087102b94140b3b5b0c81d7b4d91060d51a3..c0485fae98cb75b1a0e0694b92c5c895ac171558 100755 --- a/Generators/Herwig7_i/test/test_02_Wjet.sh +++ b/Generators/Herwig7_i/test/test_02_Wjet.sh @@ -22,7 +22,7 @@ python /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/rootconvert.py echo "art-result: $? Plot" dcubeName="Herwig7" -dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/config_file/test_02_config.xml" +dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/master_branch/Herwig7_i/config_file/test_02_config.xml" dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/reference/test_02_output.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef diff --git a/Generators/Herwig7_i/test/test_03_Zjet.sh b/Generators/Herwig7_i/test/test_03_Zjet.sh index 61a3b18c9bd58ca2264e408abf1354a0872e3f0b..fee9023e77ecb4b135475314291a8169b0ea683e 100755 --- a/Generators/Herwig7_i/test/test_03_Zjet.sh +++ b/Generators/Herwig7_i/test/test_03_Zjet.sh @@ -23,7 +23,7 @@ echo "art-result: $? convert" dcubeName="Herwig7" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/config_file/test_03_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/reference/test_03_output.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/master_branch/reference/test_03_output.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef diff --git a/Generators/Herwig7_i/test/test_04_WWlvlv_PH.sh b/Generators/Herwig7_i/test/test_04_WWlvlv_PH.sh index a33d96bc6949ef0bcb4a7017a274374b7f92058a..ae8c2c7c809c21bd211f2208070ec4f95f97b8f0 100755 --- a/Generators/Herwig7_i/test/test_04_WWlvlv_PH.sh +++ b/Generators/Herwig7_i/test/test_04_WWlvlv_PH.sh @@ -23,7 +23,7 @@ echo "art-result: $? Plot" dcubeName="Herwig7" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/config_file/test_04_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/reference/test_04_output.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/master_branch/reference/test_04_output.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef diff --git a/Generators/Herwig7_i/test/test_05_Zmumu_ph.sh b/Generators/Herwig7_i/test/test_05_Zmumu_ph.sh index 079fa03f9cb36633d7e1b471b5ee20c44db90349..303ad4b44b5d1f635ad712f790b42567560f9889 100755 --- a/Generators/Herwig7_i/test/test_05_Zmumu_ph.sh +++ b/Generators/Herwig7_i/test/test_05_Zmumu_ph.sh @@ -20,7 +20,7 @@ echo "art-result: $? Plot" dcubeName="Herwig7" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/config_file/test_05_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/reference/test_05_output.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Herwig7_i/master_branch/reference/test_05_output.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName output_hists.root $dcubeXml $dcubeRef diff --git a/Generators/PowhegControl/test/test_00_bb.sh b/Generators/PowhegControl/test/test_00_bb.sh index 6e5e47c055f9949c1f5eaf3655cec24aa33562ff..7ac218c0e8a40708e1778901ac0f580e2f2b95db 100755 --- a/Generators/PowhegControl/test/test_00_bb.sh +++ b/Generators/PowhegControl/test/test_00_bb.sh @@ -19,9 +19,21 @@ echo "art-result: $? Plot" dcubeName="Powheg_LHE" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/config_file/test_00_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/reference_file/test_00_output_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/master_branch/reference_file/test_00_output_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName output_hists.root $dcubeXml $dcubeRef -echo "art-result: $? DCube" - +if [ $? -eq 0 ]; then + + echo "art-result: $? Dcube" + touch change_detected + echo "reference file succussfully updated, please check the log file for history" + +else + + echo "art-result: $? Dcube" + echo "reference file update failed, this is due to the dcube test failed" +fi + +## acrontab -e 25 19 * * * lxplus.cern.ch /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/replace_reference.sh >| /eos/atlas/atlascerngroupdisk/data-art/grid-input/PowhegControl/update.log 2>&1 +## done in lxplus explicitly instead diff --git a/Generators/PowhegControl/test/test_01_ZZ.sh b/Generators/PowhegControl/test/test_01_ZZ.sh index 4c6dd8d96fa906d986b88723681c5a2a7968c6b6..8dc3140af1a4cf517744c61e900640d770fa90e5 100755 --- a/Generators/PowhegControl/test/test_01_ZZ.sh +++ b/Generators/PowhegControl/test/test_01_ZZ.sh @@ -19,7 +19,7 @@ echo "art-result: $? Plot" dcubeName="Powheg_LHE" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/config_file/test_01_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/reference_file/test_01_output_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/master_branch/reference_file/test_01_output_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName output_hists.root $dcubeXml $dcubeRef diff --git a/Generators/PowhegControl/test/test_02_single_top_s_channel.sh b/Generators/PowhegControl/test/test_02_single_top_s_channel.sh index aa2d1dfe4da947a65fa4613795a4fc71699519a7..63f4224f425573d31df101e6c6a8deea307a9ed8 100755 --- a/Generators/PowhegControl/test/test_02_single_top_s_channel.sh +++ b/Generators/PowhegControl/test/test_02_single_top_s_channel.sh @@ -19,7 +19,7 @@ echo "art-result: $? Plot" dcubeName="Powheg_LHE" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/config_file/test_02_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/reference_file/test_02_output_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/master_branch/reference_file/test_02_output_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName output_hists.root $dcubeXml $dcubeRef diff --git a/Generators/PowhegControl/test/test_03_W.sh b/Generators/PowhegControl/test/test_03_W.sh index 451602de5da1f150e5e1cc7ff22c0167008a96b4..aaa924c3daac0b3961eb09f7635f3a83b1288531 100755 --- a/Generators/PowhegControl/test/test_03_W.sh +++ b/Generators/PowhegControl/test/test_03_W.sh @@ -19,7 +19,7 @@ echo "art-result: $? Plot" dcubeName="Powheg_LHE" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/config_file/test_03_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/reference_file/test_03_output_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/master_branch/reference_file/test_03_output_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName output_hists.root $dcubeXml $dcubeRef diff --git a/Generators/PowhegControl/test/test_04_Z.sh b/Generators/PowhegControl/test/test_04_Z.sh index 381ab9ebab47fdc891300b60f846acc3ae619ae6..84657e8f0cf057335a8be530b95837e63ea7acdd 100755 --- a/Generators/PowhegControl/test/test_04_Z.sh +++ b/Generators/PowhegControl/test/test_04_Z.sh @@ -19,7 +19,7 @@ echo "art-result: $? Plot" dcubeName="Powheg_LHE" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/config_file/test_04_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/reference_file/test_04_output_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/master_branch/reference_file/test_04_output_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName output_hists.root $dcubeXml $dcubeRef diff --git a/Generators/PowhegControl/test/test_05_tt.sh b/Generators/PowhegControl/test/test_05_tt.sh index e1589ad59ab87fbe0af56837d647a4ff68d2d905..7b045310a3ebd3d555bd9491abe85633b2bca843 100755 --- a/Generators/PowhegControl/test/test_05_tt.sh +++ b/Generators/PowhegControl/test/test_05_tt.sh @@ -19,7 +19,7 @@ echo "art-result: $? Plot" dcubeName="Powheg_LHE" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/config_file/test_05_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/reference_file/test_05_output_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/master_branch/reference_file/test_05_output_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName output_hists.root $dcubeXml $dcubeRef diff --git a/Generators/PowhegControl/test/test_06_WW.sh b/Generators/PowhegControl/test/test_06_WW.sh index d067843cdb87a31ea17efba0d9aa63b0ac5b3925..81e8f620fd41f8f1da6d7ee94a308307cd72f0b5 100755 --- a/Generators/PowhegControl/test/test_06_WW.sh +++ b/Generators/PowhegControl/test/test_06_WW.sh @@ -19,7 +19,7 @@ echo "art-result: $? Plot" dcubeName="Powheg_LHE" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/config_file/test_06_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/reference_file/test_06_output_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PowhegControl/master_branch/reference_file/test_06_output_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName output_hists.root $dcubeXml $dcubeRef diff --git a/Generators/Pythia8B_i/src/Pythia8B_i.cxx b/Generators/Pythia8B_i/src/Pythia8B_i.cxx index 319cdec78f188ab70dc8f2d63844579fb8d0e216..fc62f9cf6b8cb31eee1a9afb8e3f2f7ae3b704aa 100644 --- a/Generators/Pythia8B_i/src/Pythia8B_i.cxx +++ b/Generators/Pythia8B_i/src/Pythia8B_i.cxx @@ -388,12 +388,14 @@ StatusCode Pythia8B_i::fillEvt(HepMC::GenEvent *evt){ // set the event weight evt->weights().push_back(m_pythia->info.weight()); - +#ifdef HEPMC3 + GeVToMeV(evt); +#else // Units correction if(Pythia8_i::pythiaVersion() < 8.170 ){ GeVToMeV(evt); } - +#endif // Remove event/number from buffer m_BEventBuffer.erase(m_BEventBuffer.begin()); m_internalEventNumbers.erase(m_internalEventNumbers.begin()); diff --git a/Generators/Pythia8_i/Pythia8_i/Pythia8_i.h b/Generators/Pythia8_i/Pythia8_i/Pythia8_i.h index d6f4d6d522ac0ee9a2f077a18f96bfc343173c8f..ef126b6bbb083d085e5e67a24574fe419de0313c 100644 --- a/Generators/Pythia8_i/Pythia8_i/Pythia8_i.h +++ b/Generators/Pythia8_i/Pythia8_i/Pythia8_i.h @@ -109,7 +109,7 @@ private: std::vector<std::string> m_commands; std::vector<std::string> m_userParams; std::vector<std::string> m_userModes; - + enum PDGID {PROTON=2212, ANTIPROTON=-2212, LEAD=1000822080, NEUTRON=2112, ANTINEUTRON=-2112, MUON=13, ANTIMUON=-13, ELECTRON=11, POSITRON=-11, INVALID=0}; double m_collisionEnergy; diff --git a/Generators/Pythia8_i/src/Pythia8_i.cxx b/Generators/Pythia8_i/src/Pythia8_i.cxx index 0f766479397bfdcbd4a65aaf6a6fce74a4409351..462f69a2a8605d943de38e845c7562d0f419eeb5 100644 --- a/Generators/Pythia8_i/src/Pythia8_i.cxx +++ b/Generators/Pythia8_i/src/Pythia8_i.cxx @@ -117,6 +117,12 @@ m_athenaTool("") ATH_MSG_INFO("XML Path is " + xmlpath()); m_pythia = std::make_unique<Pythia8::Pythia> (xmlpath()); +#ifdef HEPMC3 + m_runinfo = std::make_shared<HepMC3::GenRunInfo>(); + /// Here one can fill extra information, e.g. the used tools in a format generator name, version string, comment. + struct HepMC3::GenRunInfo::ToolInfo generator={std::string("Pythia8"),py8version(),std::string("Used generator")}; + m_runinfo->tools().push_back(generator); +#endif } //////////////////////////////////////////////////////////////////////////////// @@ -444,7 +450,7 @@ StatusCode Pythia8_i::fillEvt(HepMC::GenEvent *evt){ evt->set_event_number(m_internal_event_number); // if using "getGroupWeight" and | lhastrategy | = 4, then need to convert mb to pb ( done otherwise when calling info.weight(), [...] ) - if( m_internal_event_number == 1 && abs(m_pythia->info.lhaStrategy()) == 4 ) { + if( m_internal_event_number == 1 && std::abs(m_pythia->info.lhaStrategy()) == 4 ) { m_conversion = ( (double) PYTHIA8_CONVERSION); ATH_MSG_DEBUG(" LHA strategy needs a conversion to fix Pythia8 shower weights bug(s) equal to " << m_conversion); } @@ -557,6 +563,7 @@ std::to_string(iw); if(m_internal_event_number == 1){ std::vector<std::string> names; for (auto w: fWeights) names.push_back(w.first); + if (!evt->run_info()) evt->set_run_info(m_runinfo); evt->run_info()->set_weight_names(names); } for (auto w: fWeights) {evt->weight(w.first)=w.second;} @@ -629,7 +636,7 @@ StatusCode Pythia8_i::genFinalize(){ void Pythia8_i::addLHEToHepMC(HepMC::GenEvent *evt){ #ifdef HEPMC3 - HepMC::GenEvent *procEvent = new HepMC::GenEvent(); + HepMC::GenEvent *procEvent = new HepMC::GenEvent(evt->momentum_unit(), evt->length_unit()); // Adding the LHE event to the HepMC results in undecayed partons in the event record. // Pythia's HepMC converter throws up undecayed partons, so we ignore that diff --git a/Generators/Pythia8_i/test/test_00_Zprime_1000_tt.sh b/Generators/Pythia8_i/test/test_00_Zprime_1000_tt.sh index d615657ed85a0e22bfa39a58d540e359ec21364b..50a9950a846ccee60aacedb217b13cf135e84a44 100755 --- a/Generators/Pythia8_i/test/test_00_Zprime_1000_tt.sh +++ b/Generators/Pythia8_i/test/test_00_Zprime_1000_tt.sh @@ -24,7 +24,7 @@ echo "art-result: $? convert" dcubeName="Pythia8i" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/test_00_Zprime_1000_tt/config_Zprime.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/test_00_Zprime_1000_tt/MyOutput.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/master_branch/test_00_Zprime_1000_tt/MyOutput.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef diff --git a/Generators/Pythia8_i/test/test_01_Z_tautau.sh b/Generators/Pythia8_i/test/test_01_Z_tautau.sh index 38cb3966d313ffb7a5f021866a8e74596ae99251..c786523e10a1ebd1d0ad8670083460a1ce2f0ade 100755 --- a/Generators/Pythia8_i/test/test_01_Z_tautau.sh +++ b/Generators/Pythia8_i/test/test_01_Z_tautau.sh @@ -25,7 +25,7 @@ echo "art-result: $? convert" dcubeName="Pythia8i" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/test_01_Z_tautau/config_Ztt.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/test_01_Z_tautau/MyOutput.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/master_branch/test_01_Z_tautau/MyOutput.root" #dcubeName="Pythia8i" #dcubeXml="/afs/cern.ch/user/l/lyue/Qualification_task_ART/Pythia_8/DcubeReference/test_01_Z_tautau/config_Ztt.xml" diff --git a/Generators/Pythia8_i/test/test_02_minbias.sh b/Generators/Pythia8_i/test/test_02_minbias.sh index 6359c6b6325f2d46d17b4a9e441e350b2d9b5599..12eed3239d6ff76a602b562603e95f01077299a6 100755 --- a/Generators/Pythia8_i/test/test_02_minbias.sh +++ b/Generators/Pythia8_i/test/test_02_minbias.sh @@ -25,7 +25,7 @@ echo "art-result: $? convert" dcubeName="Pythia8i" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/test_02_minbias/config_minbias.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/test_02_minbias/MyOutput.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Pythia8i/master_branch/test_02_minbias/MyOutput.root" #dcubeName="Pythia8i" #dcubeXml="/afs/cern.ch/user/l/lyue/Qualification_task_ART/Pythia_8/DcubeReference/test_02_minbias/config_minbias.xml" diff --git a/Generators/Sherpa_i/src/Sherpa_i.cxx b/Generators/Sherpa_i/src/Sherpa_i.cxx index 75757fbf10b3a0ba6c7ce0158b4717d078b895db..31837eadb98a5b2b1b947f062dccf41ea586c6e5 100644 --- a/Generators/Sherpa_i/src/Sherpa_i.cxx +++ b/Generators/Sherpa_i/src/Sherpa_i.cxx @@ -14,6 +14,7 @@ #ifndef SHERPA_Main_Sherpa_H #define SHERPA_Main_Sherpa_H +#include "ATOOLS/Org/CXXFLAGS.H" #include "ATOOLS/Org/CXXFLAGS_PACKAGES.H" #include "ATOOLS/Org/Exception.H" #ifdef HEPMC3 @@ -188,6 +189,12 @@ StatusCode Sherpa_i::genInitialize(){ return StatusCode::FAILURE; } +#ifdef HEPMC3 + m_runinfo = std::make_shared<HepMC3::GenRunInfo>(); + /// Here one can fill extra information, e.g. the used tools in a format generator name, version string, comment. + struct HepMC3::GenRunInfo::ToolInfo generator={std::string("SHERPA"), std::string(SHERPA_VERSION)+ "." + std::string(SHERPA_SUBVERSION), std::string("Used generator")}; + m_runinfo->tools().push_back(generator); +#endif return StatusCode::SUCCESS; } @@ -208,8 +215,11 @@ StatusCode Sherpa_i::callGenerator() { StatusCode Sherpa_i::fillEvt(HepMC::GenEvent* event) { ATH_MSG_DEBUG( "Sherpa_i Filling event"); - +#ifdef HEPMC3 + if (!event->run_info()) event->set_run_info(m_runinfo); +#endif p_sherpa->FillHepMCEvent(*event); + if (event->weights().size()>2) { //double weight_normalisation = event->weights()[2]; for (size_t i=0; i<event->weights().size(); ++i) { @@ -218,7 +228,7 @@ StatusCode Sherpa_i::fillEvt(HepMC::GenEvent* event) { // cap variation weights at m_variation_weight_cap*nominal to avoid spikes from numerical instability if (fabs(event->weights()[i]) > m_variation_weight_cap*fabs(event->weights()[0])) { ATH_MSG_INFO("Capping variation" << i << " = " << event->weights()[i]/event->weights()[0] << "*nominal"); - event->weights()[i] *= m_variation_weight_cap*fabs(event->weights()[0])/fabs(event->weights()[i]); + event->weights()[i] *= m_variation_weight_cap*std::abs(event->weights()[0])/std::abs(event->weights()[i]); } } ATH_MSG_DEBUG("Sherpa WEIGHT " << i << " value="<< event->weights()[i]); diff --git a/Generators/Sherpa_i/test/test_00_sherpa_tttautau.sh b/Generators/Sherpa_i/test/test_00_sherpa_tttautau.sh index cdd07466c8d8594db8b91489e925230bfa32d0d0..d89026c179f0a68b49c95d4720a60c83c629751e 100755 --- a/Generators/Sherpa_i/test/test_00_sherpa_tttautau.sh +++ b/Generators/Sherpa_i/test/test_00_sherpa_tttautau.sh @@ -71,8 +71,8 @@ echo "art-result: $? convert" dcubeName="Sherpa" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Sherpa_i/test_00_tttautau/test_00_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Sherpa_i/test_00_tttautau/test_00_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Sherpa_i/master_branch/test_00_tttautau/test_00_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef -echo "art-result: $? Dcube" \ No newline at end of file +echo "art-result: $? Dcube" diff --git a/Generators/Sherpa_i/test/test_01_DY.sh b/Generators/Sherpa_i/test/test_01_DY.sh index 2163a397627323dd066e2d35194e74a6472624ce..97dfe60a1407361daefeba1a3135b804e129bb67 100755 --- a/Generators/Sherpa_i/test/test_01_DY.sh +++ b/Generators/Sherpa_i/test/test_01_DY.sh @@ -22,8 +22,8 @@ echo "art-result: $? convert" dcubeName="Sherpa" dcubeXml="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Sherpa_i/test_01_DY/test_01_config.xml" -dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Sherpa_i/test_01_DY/test_01_hists.root" +dcubeRef="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Sherpa_i/master_branch/test_01_DY/test_01_hists.root" bash /cvmfs/atlas.cern.ch/repo/sw/art/dcube/bin/art-dcube $dcubeName MyOutput.root $dcubeXml $dcubeRef -echo "art-result: $? Dcube" \ No newline at end of file +echo "art-result: $? Dcube" diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/CMakeLists.txt b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/CMakeLists.txt index 217341e0a57ee38e5d3d4ab6da07263d6202f1e9..b416cf0baffffe5a2436f0fdb89c11ac0831da97 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/CMakeLists.txt +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/CMakeLists.txt @@ -14,6 +14,13 @@ atlas_add_component( SCT_CalibAlgs INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CORAL_INCLUDE_DIRS} LINK_LIBRARIES ${ROOT_LIBRARIES} ${CORAL_LIBRARIES} AthenaBaseComps AthenaKernel StoreGateLib AthenaPoolUtilities Identifier EventInfo GaudiKernel InDetIdentifier SCT_CablingLib InDetRawData InDetReadoutGeometry SCT_ReadoutGeometry PathResolver InDetConditionsSummaryService SCT_ConditionsToolsLib RegistrationServicesLib ) +atlas_add_test( SCT_CalibUtilities_test + SOURCES test/SCT_CalibUtilities_test.cxx src/SCT_CalibUtilities.cxx + INCLUDE_DIRS ${Boost_INCLUDE_DIRS} + LINK_LIBRARIES ${Boost_LIBRARIES} EventInfo InDetIdentifier + POST_EXEC_SCRIPT "nopost.sh" +) + # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) atlas_install_joboptions( share/*.py ) diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx index 53224969f3b0f89e99fc54301507f57d24dad15d..ee45f3d3b2968672da677be9bef7b89514217e14 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCTCalib.cxx @@ -45,7 +45,6 @@ #include "TF1.h" #include "TProfile.h" #include "TProfile2D.h" -#include "TMath.h" #include "Math/ProbFuncMathCore.h" #include <array> @@ -111,23 +110,7 @@ xmlModuleData(const Bec bec, const int layer, const int side, const int phi, con return os.str(); } -std::string -normalizeList(const std::string& strList) { - std::string str{strList}; - if (!str.empty()) { - //--- Remove 1st & last space - str = str.substr(1, str.length()-2); - //--- Replace double space to single space - std::string strSingleSpace{" "}; - std::string strDoubleSpace{" "}; - std::string::size_type pos{0}; - while (pos =str.find(strDoubleSpace, pos), pos != std::string::npos) { - str.erase(pos, strSingleSpace.length()); - pos += strSingleSpace.length(); - } - } - return str; -} + } @@ -280,8 +263,6 @@ StatusCode SCTCalib::initialize() { m_calibEvtInfoTool->setTimeStamp(m_runStartTime, m_runEndTime); m_calibEvtInfoTool->setRunNumber(m_runNumber); m_calibEvtInfoTool->setEventNumber(m_eventNumber); - //m_calibEvtInfoTool->setLumiBlock(0); - //m_calibEvtInfoTool->setBunchCrossing(0); m_calibLbTool->read("./SCTLB.root"); if (m_doBSErrors) { m_calibBsErrTool->read("./SCTBSErrors.root"); @@ -539,15 +520,7 @@ void SCTCalib::doHVPrintXML(const std::pair<int, int>& timeInterval, const std:: /////////////////////////////////////////////////////////////////////////////////// StatusCode SCTCalib::getNoisyStrip ATLAS_NOT_THREAD_SAFE () { // Thread unsafe writeModuleListToCool method is used. enum Categories {ALL, NEW, REF, N_CATEGORIES}; - //--- Check statistics - //ATH_MSG_INFO(m_calibEvtInfoTool->counter() << " " << m_calibHitmapTool->size()); - //int numOfEventsProcessed=m_calibEvtInfoTool->counter(); - //sroe: This looks like a bug, so I change the code here - - // if (noisyStripsToSummaryXmlFake(m_badStripsSummaryFile).isFailure()) { - // ATH_MSG_ERROR("Could not write XML file"); - // return StatusCode::FAILURE; - // } + ATH_MSG_INFO("----- in getNoisyStrip() ----- "); @@ -669,7 +642,6 @@ StatusCode SCTCalib::getDeadStrip ATLAS_NOT_THREAD_SAFE () { // Thread unsafe SC // Bad strips (w/o bad modules and chips) std::set<Identifier> badStripsExclusive; m_ConfigurationConditionsTool->badStrips(badStripsExclusive, true, true); - //std::set<Identifier>::const_iterator stripItr(badStripsExclusive.begin()); std::set<Identifier>::const_iterator stripEnd(badStripsExclusive.end()); //To get #(Enabled Modules) int numEnabledModules_B[n_barrels] = {n_phiBinsB0*n_etaInBarrel, n_phiBinsB1*n_etaInBarrel, n_phiBinsB2*n_etaInBarrel, n_phiBinsB3*n_etaInBarrel}; @@ -1197,10 +1169,6 @@ StatusCode SCTCalib::getNoiseOccupancy ATLAS_NOT_THREAD_SAFE () // Thread unsafe double meanNO_ECA[n_disks][n_etaBinsEC] = {{0}, {0}}; double meanNO_ECC[n_disks][n_etaBinsEC] = {{0}, {0}}; - //--- RunNumber - //std::ostringstream runnum; - //runnum << m_runNumber.value(); - //--- Directory in HIST std::string stem; @@ -1413,9 +1381,6 @@ StatusCode SCTCalib::getRawOccupancy ATLAS_NOT_THREAD_SAFE () // Thread unsafe S double meanRO_ECA[n_disks][n_etaBinsEC] = {{0}, {0}}; double meanRO_ECC[n_disks][n_etaBinsEC] = {{0}, {0}}; - //--- RunNumber - //std::ostringstream runnum; - //runnum << m_runNumber.value(); //--- Directory in HIST std::vector<std::pair<std::string, int>> EC_stems; @@ -1567,10 +1532,6 @@ StatusCode SCTCalib::getEfficiency ATLAS_NOT_THREAD_SAFE () { // Thread unsafe S double meanEff_ECA_bcid1[ n_disks ][ n_etaBinsEC ] = { {0}, {0} }; double meanEff_ECC_bcid1[ n_disks ][ n_etaBinsEC ] = { {0}, {0} }; - //--- RunNumber - //std::ostringstream runnum; - //runnum << m_runNumber.value(); - //--- Directory in HIST std::vector<std::pair<std::string, int>> EC_stems; EC_stems.clear(); @@ -1753,9 +1714,6 @@ StatusCode SCTCalib::getEfficiency ATLAS_NOT_THREAD_SAFE () { // Thread unsafe S } } - //--- Tail of XML outputs - // outFile << "</channels>" << std::endl; - outFile << " </modules>" << std::endl; outFile << "</run>" << std::endl; @@ -1851,9 +1809,6 @@ StatusCode SCTCalib::getBSErrors ATLAS_NOT_THREAD_SAFE () { // Thread unsafe SCT unsigned long long nErrs_ECA_module[n_disks][2][n_etaBinsEC][n_phiBinsECOuter][15] = {{{{{0}}}}}; unsigned long long nErrs_ECC_module[n_disks][2][n_etaBinsEC][n_phiBinsECOuter][15] = {{{{{0}}}}}; - //--- RunNumber - //std::ostringstream runnum; - //runnum << m_runNumber.value(); //--- ErrorList typedef std::map<int, std::string> IntStringMap; IntStringMap ErrMap_C, ErrMap; @@ -1921,10 +1876,7 @@ StatusCode SCTCalib::getBSErrors ATLAS_NOT_THREAD_SAFE () { // Thread unsafe SCT if (errItr!=errItrE and iType == errItr->first) { std::ostringstream streamHist; std::ostringstream streamHistAlt; - //temporal fix: folder and histogram names should be Preamble - //streamHist << errItr->second << "Errs" << "_" << iDisk << "_" << iSide; streamHist << "SCT_T" << errItr->second << detector_part << "_" << iDisk << "_" << iSide; - //streamHistAlt << "T" << errItr->second << "Errs" << detector_part << "_" << iDisk << "_" << iSide; streamHistAlt << "SCT_" << errItr->second << detector_part << "_" << iDisk << "_" << iSide; std::string folder = errItr->second+std::string("/"); //histogram might or might not be inside a folder with the same name @@ -2011,7 +1963,6 @@ StatusCode SCTCalib::getBSErrors ATLAS_NOT_THREAD_SAFE () { // Thread unsafe SCT unsigned long long n_errors{0}; if (errItr!=errItrE and iType == errItr->first) { std::ostringstream streamHist; - //streamHist << "SCT_T" << errItr->second << "Errors" << "_" << iLayer << "_" << iSide; streamHist << "SCT_T" << errItr->second << "B" << "_" << iLayer << "_" << iSide; //histogram or might not be inside a folder with the same name std::string folder = errItr->second+std::string("/"); @@ -2208,9 +2159,6 @@ StatusCode SCTCalib::getLorentzAngle ATLAS_NOT_THREAD_SAFE () { // Thread unsafe TFile* fitFile; - //--- RunNumber - //std::ostringstream runnum; - //runnum << m_runNumber.value(); //--- Directory in HIST std::string stem; @@ -2601,7 +2549,6 @@ StatusCode SCTCalib::openXML4MonSummary(std::ofstream& file, const char* type) c nameAssociation["Efficiency"] = TwoStrings(m_efficiencySummaryFile, "EfficiencyInfo.xsl"); nameAssociation["BSErrors"] = TwoStrings(m_BSErrorSummaryFile, "BSErrorInfo.xsl"); nameAssociation["BSErrorsModule"] = TwoStrings(m_BSErrorModuleFile, "BSErrorInfo.xsl"); - //nameAssociation["LorentzAngle"]=TwoStrings(m_LorentzAngleSummaryFile, "LorentzAngleInfo.xsl"); Names::iterator found{nameAssociation.find(type)}; if (found!=nameAssociation.end()) { std::string filename{found->second.first}; @@ -2657,7 +2604,6 @@ StatusCode SCTCalib::addToSummaryStr(std::ostringstream& list, const Identifier& IdentifierHash waferHash{m_pSCTHelper->wafer_hash(waferId)}; SCT_SerialNumber sn{m_CablingTool->getSerialNumberFromHash(waferHash)}; //--- Preparing linkList - //std::string linkList=chipList2LinkList(chipList); std::string linkList{chipList2LinkList(stripList)}; //--- Push to summary stream XmlStreamer m{"module", list}; @@ -2821,7 +2767,7 @@ SCTCalib::writeModuleListToCool ATLAS_NOT_THREAD_SAFE // Thread unsafe SCTCalibW ATH_MSG_ERROR("Could not create defect strip entry in the CalibWriteTool."); } nDefects++; - }; // else ATH_MSG_DEBUG("Module " << moduleId << " is identical to the reference output"); + }; } else { if (m_noisyStripAll) { //--- ALL noisy strips if (!defectStripsAll.empty() || m_noisyWriteAllModules) { @@ -2862,16 +2808,13 @@ SCTCalib::getOverlapStripList( const std::set<Identifier>& stripAllIdList, cons std::set<Identifier>::const_iterator stripAllItr = stripAllIdList.begin(); for ( ; stripAllItr != stripAllItrLast; ++stripAllItr ) { - //std::cout << "All: " << *stripAllItr << std::endl; std::set<Identifier>::const_iterator stripRefItr = stripRefIdList.begin(); bool old = false; for ( ; stripRefItr != stripRefItrLast; ++stripRefItr ) { - //std::cout << "Ref: " << *stripRefItr << std::endl; if (*stripAllItr == *stripRefItr) old = true; } if (!old) { stripList.insert(*stripAllItr); - //std::cout << "New: " << *stripAllItr << std::endl; } } return stripList; @@ -2968,7 +2911,6 @@ SCTCalib::noisyStripsToXml(const std::map<Identifier, std::set<Identifier>>& mod StatusCode SCTCalib::noisyStripsToSummaryXml(const std::map<Identifier, std::set<Identifier>>& moduleListAll, - //const std::map<Identifier, std::set<Identifier>>& moduleListNew, const std::map<Identifier, std::set<Identifier>>& moduleListRef, const std::string& badStripsFile) const { diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibUtilities.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibUtilities.cxx index a8b3f78e273fc2f7a2caf3761eab1ef683f4cb44..eec72480a591ec7f834e45431cb1e42c45454343 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibUtilities.cxx +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibUtilities.cxx @@ -16,8 +16,24 @@ #include "EventInfo/EventID.h" #include "InDetIdentifier/SCT_ID.h" #include "Identifier/Identifier.h" +#include <algorithm> //std::unique namespace SCT_CalibAlgs { + std::string + normalizeList(std::string s) { + auto binaryPredicate=[](char s0, char s1){ + return (s0==' ' and s0==s1); + }; + auto normalised= std::unique(s.begin(), s.end(), binaryPredicate); + s.erase(normalised,s.end()); + size_t first=0; + size_t last=s.size()-1; + if (s[first] == ' ') first =1; + if (s[last] == ' ') last-=1; + return s.substr(first,last); +} + + std::string eventInfoAsString(const EventInfo* theEvent) { using std::string; diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibUtilities.h b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibUtilities.h index ad910acbc4d0214df888cbed878b93412421c70a..bded77b917ad7f8e8448cf372025b5e65c282627 100644 --- a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibUtilities.h +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/src/SCT_CalibUtilities.h @@ -25,6 +25,7 @@ std::string eventInfoAsString(const EventInfo* theEvent); std::string formatPosition(const Identifier& waferId, const SCT_ID* helper, const std::string& delimiter="_", const bool includeSide=true); std::string chipList2LinkList(const std::string& chipList); unsigned int bec2Index(const int bec); +std::string normalizeList(std::string strList); template <class T> std::string xmlValue(const std::string& name, const T value) { diff --git a/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/test/SCT_CalibUtilities_test.cxx b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/test/SCT_CalibUtilities_test.cxx new file mode 100644 index 0000000000000000000000000000000000000000..72b3306716588c2d0aaf368a6304445855143052 --- /dev/null +++ b/InnerDetector/InDetCalibAlgs/SCT_CalibAlgs/test/SCT_CalibUtilities_test.cxx @@ -0,0 +1,25 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +/** + * @author Shaun Roe + * @brief Some tests for SCT_CalibUtilities in the Boost framework + */ + +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MAIN +#define BOOST_TEST_MODULE TEST_SCT_CALIBUTILITIES + +#include <boost/test/unit_test.hpp> +#include "src/SCT_CalibUtilities.h" + + +BOOST_AUTO_TEST_SUITE(SCT_CalibUtilitiesTest) + BOOST_AUTO_TEST_CASE(normalizeList_test){ + const std::string testInput{" my test list with spaces "}; + const std::string expectedResponse{"my test list with spaces"}; + const auto answer{SCT_CalibAlgs::normalizeList(testInput)}; + BOOST_TEST(answer == expectedResponse); + } +BOOST_AUTO_TEST_SUITE_END() diff --git a/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/share/CalibrateTRT.cpp b/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/share/CalibrateTRT.cpp index e63fd451b01dc6a4dc79bc935b423bb3c16be3f9..e8bf78f53fccf1ab1a51c6c60003f5e823ef1c78 100644 --- a/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/share/CalibrateTRT.cpp +++ b/InnerDetector/InDetCalibAlgs/TRT_CalibAlgs/share/CalibrateTRT.cpp @@ -35,12 +35,12 @@ int Simple2dHist(float minx, float maxx, int nbinsx, float miny, float maxy, int int binnoy=(nbinsy*((valuey-miny)/(maxy-miny))); return binnoy*nbinsx+binnox; } - +//cppcheck-suppress ctuOneDefinitionRuleViolation struct databundle{ int det{}, lay{}, mod{}, brd{}, chp{}, stl{}, stw{}, sid{}, ievt{}; float tres{}, weight{}, res{}, t{}, r{}, t0{}, x{}, y{}, z{}, rt0{}; }; - +//cppcheck-suppress ctuOneDefinitionRuleViolation struct caldata{ int det{}, lay{}, mod{}, brd{}, chp{}, stl{}, stw{}; int sid{}, nres{}, minntres{}, maxntres{}, minnres{}, maxnres{}, minnrt{}, maxnrt{}, t0fittype{}; diff --git a/InnerDetector/InDetConditions/InDetCoolCoralClientUtils/src/CoolCoralClient.cpp b/InnerDetector/InDetConditions/InDetCoolCoralClientUtils/src/CoolCoralClient.cpp index cddbeea1bc7178503b6ab59214c7812eb418e6cc..05b4a3dec3bca33c060e33cd8a82ae3bd2a64516 100644 --- a/InnerDetector/InDetConditions/InDetCoolCoralClientUtils/src/CoolCoralClient.cpp +++ b/InnerDetector/InDetConditions/InDetCoolCoralClientUtils/src/CoolCoralClient.cpp @@ -72,12 +72,9 @@ #include "CoolKernel/RecordSpecification.h" #include "CoolKernel/FolderSpecification.h" -//#include "CoolKernel/ExtendedAttributeListSpecification.h" -//#include "CoolKernel/AttributeListSpecification.h" + #include "InDetCoolCoralClientUtils/CORAL-utils.h" -//#include "TRT_defs.h" -//#include "RCDConnectionService.h" #include "InDetCoolCoralClientUtils/ConfDBif.h" #include "InDetCoolCoralClientUtils/CoolCoralClient.h" @@ -247,7 +244,6 @@ void COOLCORALClient::printTables() for ( std::set<std::string>::const_iterator tName = tables.begin(); tName != tables.end(); ++tName ){ if(m_verbose) std::cout << "\t" << *tName << std::endl; } - // if(m_verbose) std::cout << std::endl; } @@ -255,10 +251,8 @@ void COOLCORALClient::printTables() /// Get the content of a table identified by an input string on the database and print it on stdout. void COOLCORALClient::printTableContent(const std::string& tableName){ - // std::string tableName = "BDTMROC"; - // std::string colName = "Thresh0_Low_FE"; + if(m_verbose) std::cout << "\nCOOLCORAL Client:" << tableName <<" Table content" << std::endl; - // short T; m_session->transaction().start(); @@ -268,14 +262,6 @@ void COOLCORALClient::printTableContent(const std::string& tableName){ coral::ICursor& cursor = query->execute(); int nRows = 0; while ( cursor.next() ) { - // cursor.currentRow().toOutputStream( std::cout ) << std::endl; - // if(m_verbose) std::cout<<std::endl; - /* - coral::AttributeList sel = cursor.currentRow(); - if(m_verbose) std::cout<< "Column "<< colName << " contain : "; - T = sel[colName].data<short>(); - printf("%d \n", T); - */ ++nRows; } delete query; @@ -283,8 +269,7 @@ void COOLCORALClient::printTableContent(const std::string& tableName){ printf("Total %d records\n", nRows); m_session->transaction().commit(); - //if(m_verbose) std::cout<< "Column "<< colName << " contain : "; - //printf("%d",thresh[1]); + } @@ -375,13 +360,7 @@ void COOLCORALClient::createTables(const std::string& part_trt){ // Unfortunately, there is no easy/standard way of having the // database server automatically assigning a value to a PK - /* - tmp_strings.clear(); - tmp_strings.push_back ("ttc_iovfk"); - // Define primary key - ttc_columns.setPrimaryKey( tmp_string ); - ttc_columns->setNotNullConstraint ("ttc_iovfk"); - */ + // put an index on const if (part_trt=="barrel"){ tmp_strings.clear(); @@ -390,9 +369,7 @@ void COOLCORALClient::createTables(const std::string& part_trt){ tmp_strings.clear(); tmp_strings.emplace_back("ttc_iovfk"); - // Define primary key - // ttc_columns.setPrimaryKey( tmp_strings ); - // ttc_columns.setNotNullConstraint ("ttc_iovfk"); + // Define index ttc_columns.createIndex ("bttcio_idx", tmp_strings); @@ -407,9 +384,7 @@ void COOLCORALClient::createTables(const std::string& part_trt){ tmp_strings.clear(); tmp_strings.emplace_back("ttc_iovfk"); - // Define primary key - // ttc_columns.setPrimaryKey( tmp_strings ); - // ttc_columns.setNotNullConstraint ("ttc_iovfk"); + // Define index ttc_columns.createIndex ("ettcio_idx", tmp_strings); @@ -457,13 +432,7 @@ void COOLCORALClient::createTables(const std::string& part_trt){ // Unfortunately, there is no easy/standard way of having the // database server automatically assigning a value to a PK - /* - tmp_strings.clear(); - tmp_strings.push_back ("ttc_iovfk"); - // Define primary key - ttc_columns.setPrimaryKey( tmp_string ); - ttc_columns->setNotNullConstraint ("ttc_iovfk"); - */ + // put an index on const if (part_trt=="barrel"){ tmp_strings.clear(); @@ -544,15 +513,7 @@ void COOLCORALClient::createTables(const std::string& part_trt){ rod_columns.insertColumn( "rod_tag", coral::AttributeSpecification::typeNameForId( typeid(std::string) ) ); - // Use creationTime as primary key - // Unfortunately, there is no easy/standard way of having the - // database server automatically assigning a value to a PK - /* - tmp_strings.clear(); - tmp_strings.push_back ("rod_iovfk"); - rod_columns.setPrimaryKey (tmp_strings); - rod_columns.setNotNullConstraint ("rod_iovfk"); - */ + // put an index on const if (part_trt=="barrel"){ tmp_strings.clear(); @@ -643,15 +604,7 @@ void COOLCORALClient::createTables(const std::string& part_trt){ coral::AttributeSpecification::typeNameForId( typeid(std::string) ) ); - // Use creationTime as primary key - // Unfortunately, there is no easy/standard way of having the - // database server automatically assigning a value to a PK - /* - tmp_strings.clear(); - tmp_strings.push_back ("dtmroc_iovfk"); - dtmroc_columns.setPrimaryKey (tmp_strings); - dtmroc_columns.setNotNullConstraint ("dtmroc_iovfk"); - */ + // put an index on const if (part_trt=="barrel"){ tmp_strings.clear(); @@ -776,8 +729,7 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ // iovfk is time in nanoseconds nunc_usecs = (nunc_time.tv_sec) * 1000000 + (nunc_time.tv_usec); - //nunc_usecs = (nunc_time.tv_usec); - // iovfkttc = (unsigned long long) nunc_usecs/10; + std::string TTC_TABLE; std::string TTCGR_TABLE; @@ -803,7 +755,7 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ coral::ITableDataEditor& ttc_editor = m_session->nominalSchema().tableHandle(TTC_TABLE ).dataEditor(); coral::AttributeList ttc_row ATLAS_THREAD_SAFE; // Not shared, so ok. ttc_editor.rowBuffer(ttc_row); - // ttc_row.toOutputStream( std::cout ) << std::endl; + //-------- // TRT-TTC quantities @@ -831,7 +783,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ const char* filename="ttc.dat"; if (part_trt=="barrel"){ filename = "RCDTTC.dat"; - //filename = "TTC06.dat"; } else if (part_trt=="endcap"){ filename = "ECRCDTTC.dat"; @@ -851,7 +802,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ >> clocksource >> ttcname >> tfragtype >> tcomment; - // if(m_verbose) std::cout << "Read TTC data done..." << std::endl; ttc_row["ttc_UID"].setValue <int> (tuid); @@ -871,7 +821,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ run++; - //ttc_editor.insertRow(ttc_row); ttc_bulk->processNextIteration(); } } @@ -891,7 +840,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ coral::ITableDataEditor& ttcgr_editor = m_session->nominalSchema().tableHandle(TTCGR_TABLE ).dataEditor(); coral::AttributeList ttcgr_row ATLAS_THREAD_SAFE; // Not shared, so ok. ttcgr_editor.rowBuffer(ttcgr_row); - // ttc_row.toOutputStream( std::cout ) << std::endl; //-------- // TRT-TTC quantities @@ -926,20 +874,15 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ run=0; - // ifstream itGRfile ("RCDTTCGROUP.dat"); - // ifstream itGRfile ("TTCGROUPTEMP.dat"); - + if (part_trt=="barrel"){ filename = "RCDTTCGROUP.dat"; - // filename = "TTCGROUPTEMP.dat"; } else if (part_trt=="endcap"){ filename = "ECRCDTTCGROUP.dat"; } ifstream itGRfile (filename); - // ifstream itGRfile ("ECRCDTTCGROUP.dat"); - // std::vector<char> buffer(999); if (itGRfile.is_open()){ while (itGRfile.getline(&buffer[0],999,'\n')) { std::string sline(buffer.begin(),buffer.begin()+strlen(&buffer[0])); @@ -981,7 +924,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ run++; - //ttc_editor.insertRow(ttcgr_row); ttcgr_bulk->processNextIteration(); } } @@ -1033,7 +975,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ run=0; if (part_trt=="barrel"){ filename = "RCDROD.dat"; - //filename = "ROD06.dat"; } else if (part_trt=="endcap"){ filename = "ECRCDROD.dat"; @@ -1099,7 +1040,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ coral::ITableDataEditor& dtmroc_editor = m_session->nominalSchema().tableHandle(DTMROC_TABLE ).dataEditor(); coral::AttributeList dtmroc_row ATLAS_THREAD_SAFE; // Not shared, so ok. dtmroc_editor.rowBuffer(dtmroc_row); - // dtmroc_row.toOutputStream( std::cout ) << std::endl; coral::IBulkOperation* dtmroc_bulk= dtmroc_editor.bulkInsert(dtmroc_row,32); unsigned int uid; @@ -1124,7 +1064,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ run=0; if (part_trt=="barrel"){ filename = "RCDDTMROC.dat"; - //filename = "DTMROC06.dat"; } else if (part_trt=="endcap"){ filename = "ECRCDDTMROC.dat"; @@ -1206,7 +1145,6 @@ void COOLCORALClient::fillTables(const std::string& part_trt){ printf("Total: %d rows\n",run); - //if(m_verbose) std::cout<<std::endl; // measuring elapsed time @@ -1287,13 +1225,7 @@ void COOLCORALClient::createConnect(const std::string& part_trt){ // Unfortunately, there is no easy/standard way of having the // database server automatically assigning a value to a PK - /* - tmp_strings.clear(); - tmp_strings.push_back ("ttc_iovfk"); - // Define primary key - bconn_columns.setPrimaryKey( tmp_string ); - bconn_columns->setNotNullConstraint ("ttc_iovfk"); - */ + // put an index on const if (part_trt=="barrel"){ tmp_strings.clear(); @@ -1368,7 +1300,6 @@ void COOLCORALClient::createConnect(const std::string& part_trt){ ifstream itAfile (filename); - //ifstream itAfile ("ConnectTable.dat"); std::vector<char> buffer(999); if (itAfile.is_open()){ while (itAfile.getline(&buffer[0],999,'\n')) { @@ -1398,12 +1329,9 @@ void COOLCORALClient::createConnect(const std::string& part_trt){ bconn_row["phi2"].setValue <int> (phi[1]); } - // bconn_row["phi3"].setValue <int> (0); - // bconn_row["phi4"].setValue <int> (0); - + run++; - //ttc_editor.insertRow(ttc_row); bconn_bulk->processNextIteration(); } } @@ -1411,7 +1339,6 @@ void COOLCORALClient::createConnect(const std::string& part_trt){ itAfile.close(); - // ttc_fld->flushStorageBuffer(); bconn_bulk->flush(); delete bconn_bulk; @@ -1554,7 +1481,6 @@ int COOLCORALClient::GetTTCdummy(int ttc_id){ query0->setCondition( ttc_cond, ttc_condData); - //ttc_id = (part_nr+4)*10000+crate_id*100+slot_id; ttc_condData[0].data<int>() = ttc_id; if(m_verbose) std::cout << "TTC ID = " << ttc_id << std::endl; @@ -1726,10 +1652,7 @@ int COOLCORALClient::GetTTCdummy(int ttc_id){ (end_time.tv_usec-start_time.tv_usec); if(m_verbose) std::cout << "Total time was " << total_usecs << " usec" << std::endl; - // for (size_t k = 0; k < ttc_params.size(); k++) { - // delete ttc_params[k]; - // } - + return 1; } @@ -1778,11 +1701,7 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ coral::IQuery* query00 = m_session->nominalSchema().tableHandle(BCONNECT_TABLE).newQuery(); query00->addToOutputList("phi" ); - // query00->addToOutputList("phi2" ); - // if (part_nr <33){ - // query00->addToOutputList("phi3" ); - // query00->addToOutputList("phi4" ); - // } + std::string conn_cond = BCONNECT_TABLE; conn_cond += ".Partition = :part_nr AND "; @@ -1812,12 +1731,7 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ if ( row00[0].data<int>()>0) phi.push_back(row00[0].data<int>()); - // if ( row00[1].data<int>()>0) phi.push_back(row00[1].data<int>()); - // if (part_nr<33){ - // if ( row00[2].data<int>()>0) phi.push_back(row00[2].data<int>()); - // if ( row00[3].data<int>()>0) phi.push_back(row00[3].data<int>()); - // } - + nRowsM++; } delete query00; @@ -1848,7 +1762,6 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ ttc_condData[0].data<int>() = ttc_id; - // if(m_verbose) std::cout << "TTC ID = " << ttc_id << std::endl; // query on TTCGROUP @@ -1867,7 +1780,6 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ ttcgr_cond += ".ttcgr_UID <= :ttcgr1"; - //"BTTCGR.ttcgr_UID >= :ttcgr0 AND BTTCGR.ttcgr_UID <= :ttcgr1"; coral::AttributeList ttcgr_condData ATLAS_THREAD_SAFE; // Not shared, so ok. ttcgr_condData.extend<int>( "ttcgr0" ); @@ -1931,19 +1843,10 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ ttcgr_condData[0].data<int>() = ttc_id*10; int nrgroups=3; - // dangerous fixed number: to be understood - - // if (part_nr<33){ - // nrgroups = phi.size() - 1; - // } - // else if (part_nr>=33){ - // nrgroups = 2*phi.size()-1; - // } + ttcgr_condData[1].data<int>() = ttc_id*10 + nrgroups; - // if(m_verbose) std::cout << "TTCGROUP = " << ttcgr_condData[0].data<int>() << std::endl; - // if(m_verbose) std::cout << "TTCGROUP = " << ttcgr_condData[1].data<int>() << std::endl; coral::ICursor& cursor1 = query1->execute(); while ( cursor1.next() ) { const coral::AttributeList &row1 = cursor1.currentRow(); @@ -1989,12 +1892,7 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ dtmroc_condData[1].data<int>() = part_nr*100000+phi[phi.size()-1]*1000+ (nrdtmrocs-1); - // if(m_verbose) std::cout << "DTMROC from " << part_nr*100000+phi[0]*1000+1 - // << " to " << part_nr*100000+phi[phi.size()-1]*1000+nrdtmrocs - // << std::endl; - - - + coral::ICursor& cursor2 = query2->execute(); while ( cursor2.next() ) { @@ -2024,7 +1922,6 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ delete query2;query2=nullptr; - // ttc_params.push_back(ttc_param); ++nRows; } delete query0; @@ -2038,10 +1935,7 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ (end_time.tv_usec-start_time.tv_usec); if(m_verbose) std::cout << "Total time was " << total_usecs << " usec" << std::endl; - // for (size_t k = 0; k < ttc_params.size(); k++) { - // delete ttc_params[k]; - // } - + if(m_verbose) std::cout << "****************************" << std::endl; if(m_verbose) std::cout << "* Total " << nRowsM << " Mapping records *" << std::endl; @@ -2061,7 +1955,6 @@ TTCobj_t* COOLCORALClient::GetTTC(int ttc_id){ /// data structure, therefore also info from DTMROCs connected /// are retrieved RODobj_t* COOLCORALClient::GetROD(int rod_id){ - // if(m_verbose) std::cout << "\nGet ROD Queries and SubQueries" << std::endl; struct timeval start_time{}, end_time{}; @@ -2080,10 +1973,7 @@ RODobj_t* COOLCORALClient::GetROD(int rod_id){ if (part_nr<33) { nrdtmrocs = 104; } - // else if (part_nr>=33) { - // nrdtmrocs = 120; - // } - + if (part_nr>=33) { if (rod_id%2==0){ phi_id = phi_id/2; @@ -2097,11 +1987,7 @@ RODobj_t* COOLCORALClient::GetROD(int rod_id){ } } - // if(m_verbose) std::cout << "ROD_ID = " << rod_id << std::endl; - // if(m_verbose) std::cout << "phi_id = " << phi_id << std::endl; - // if(m_verbose) std::cout << "first roc = " << firstroc << std::endl; - // if(m_verbose) std::cout << "nr of roc = " << nrdtmrocs << std::endl; - + std::string TTC_TABLE; std::string TTCGR_TABLE; @@ -2133,12 +2019,10 @@ RODobj_t* COOLCORALClient::GetROD(int rod_id){ query0->addToOutputList("GolDelay2" ); query0->addToOutputList("GolDelay3" ); query0->addToOutputList("RODDetID" ); - // query0->addToOutputList("FEMode" ); std::string rod_cond = ROD_TABLE; rod_cond += ".rod_UID = :rodnr"; - //"BROD.rod_UID = :rodnr"; coral::AttributeList rod_condData ATLAS_THREAD_SAFE; // Not shared, so ok. rod_condData.extend<int>( "rodnr" ); @@ -2147,7 +2031,6 @@ RODobj_t* COOLCORALClient::GetROD(int rod_id){ rod_condData[0].data<int>() = rod_id; - // if(m_verbose) std::cout << "ROD ID = " << rod_id << std::endl; // query on dtmroc @@ -2174,7 +2057,6 @@ RODobj_t* COOLCORALClient::GetROD(int rod_id){ dtmroc_cond += ".dtmroc_UID >= :roc1 AND "; dtmroc_cond += DTMROC_TABLE; dtmroc_cond += ".dtmroc_UID <= :roc104"; - // std::string dtmroc_cond = "BDTMROC.dtmroc_UID >= :roc1 AND BDTMROC.dtmroc_UID <= :roc104"; coral::AttributeList dtmroc_condData ATLAS_THREAD_SAFE; // Not shared, so ok. dtmroc_condData.extend<int>( "roc1" ); dtmroc_condData.extend<int>( "roc104" ); @@ -2289,17 +2171,12 @@ void COOLCORALClient::dropFolders(const std::string& part_trt){ if(m_verbose) std::cout << ROD_FOLDER << std::endl; if(m_verbose) std::cout << DTMROC_FOLDER << std::endl; if(m_verbose) std::cout << ROOT_FOLDER << std::endl; - - //if(m_db->existsFolder("/folder1")) m_db->dropNode("/folder1"); - //m_db->createFolderSet("/folder1"); m_db->dropNode(TTC_FOLDER); m_db->dropNode(TTCGR_FOLDER); m_db->dropNode(ROD_FOLDER); m_db->dropNode(DTMROC_FOLDER); - // dbSvc.dropDatabase( m_dbId ); m_db->dropNode(ROOT_FOLDER); - // m_db->dropDatabase(); gettimeofday(&end_time, nullptr); total_usecs = (end_time.tv_sec-start_time.tv_sec) * 1000000 + @@ -2366,22 +2243,15 @@ void COOLCORALClient::createFolders(const std::string& part_trt){ m_db->createFolderSet(ROOT_FOLDER); } - // cool::ExtendedAttributeListSpecification spec_ttc; - // spec_ttc.push_back("ttc_UID","unsigned int"); - // spec_ttc.push_back("ttc_iovfk","unsigned long long"); - // spec_ttc.push_back("tag","string"); + cool::RecordSpecification spec_ttc; spec_ttc.extend("ttc_UID",cool::StorageType::UInt32); spec_ttc.extend("ttc_iovfk",cool::StorageType::UInt63); spec_ttc.extend("tag",cool::StorageType::String4k); - // coral::AttributeSpecification::typeNameForId( typeid(std::string) ) cool::FolderSpecification ttcFolderSpec(cool::FolderVersioning::SINGLE_VERSION,spec_ttc); m_db->createFolder(TTC_FOLDER, ttcFolderSpec , "TTC" );//why is description not athena standard? - // cool::ExtendedAttributeListSpecification spec_ttcgr; - // spec_ttcgr.push_back("ttcgr_UID","unsigned int"); - // spec_ttcgr.push_back("ttcgr_iovfk","unsigned long long"); - // spec_ttcgr.push_back("tag","string"); + cool::RecordSpecification spec_ttcgr; spec_ttcgr.extend("ttcgr_UID",cool::StorageType::UInt32); spec_ttcgr.extend("ttcgr_iovfk",cool::StorageType::UInt63); @@ -2390,10 +2260,7 @@ void COOLCORALClient::createFolders(const std::string& part_trt){ cool::FolderSpecification ttcgrFolderSpec(cool::FolderVersioning::SINGLE_VERSION,spec_ttcgr); m_db->createFolder(TTCGR_FOLDER, ttcgrFolderSpec, "TTCGR"); - // cool::ExtendedAttributeListSpecification spec_rod; - // spec_rod.push_back("rod_UID","unsigned int"); - // spec_rod.push_back("rod_iovfk","unsigned long long"); - // spec_rod.push_back("tag","string"); + cool::RecordSpecification spec_rod; spec_rod.extend("rod_UID",cool::StorageType::UInt32); spec_rod.extend("rod_iovfk",cool::StorageType::UInt63); @@ -2401,10 +2268,7 @@ void COOLCORALClient::createFolders(const std::string& part_trt){ cool::FolderSpecification rodFolderSpec(cool::FolderVersioning::SINGLE_VERSION,spec_rod); m_db->createFolder(ROD_FOLDER, rodFolderSpec, "ROD"); - // cool::ExtendedAttributeListSpecification spec_dtmroc; - // spec_dtmroc.push_back("dtmroc_UID","unsigned int"); - // spec_dtmroc.push_back("dtmroc_iovfk","unsigned long long"); - // spec_dtmroc.push_back("tag","string"); + cool::RecordSpecification spec_dtmroc; spec_dtmroc.extend("dtmroc_UID",cool::StorageType::UInt32); spec_dtmroc.extend("dtmroc_iovfk",cool::StorageType::UInt63); @@ -2455,20 +2319,16 @@ void COOLCORALClient::printFoldersContent(const std::string& part_trt){ gettimeofday(&start_time, nullptr); if(m_verbose) std::cout << "Print folder content: " << TTC_FOLDER << std::endl; - //cool::IFolderPtr f1 = m_db->getFolder(TTC_FOLDER ); cool::ValidityKey since = 0; cool::ValidityKey until = cool::ValidityKeyMax; - //printf("Max Key %d\n", until ); cool::IObjectIteratorPtr objects = ttc_fld->browseObjects( since, until, ChannelSelection::all() ); - // cool::IObjectIteratorPtr objects = ttc_fld->browseObjects( since, until, 0 ); if(m_verbose) std::cout << " Id Ch IOV Payload Insertion time" << std::endl; int run=0; while ( objects->goToNext() ) { - // cool::IObjectPtr obj = objects->next(); if(m_verbose) std::cout << objects->currentRef() << std::endl; run++; } @@ -2479,8 +2339,7 @@ void COOLCORALClient::printFoldersContent(const std::string& part_trt){ objects = ttcgr_fld->browseObjects( since, until, ChannelSelection::all() ); run=0; while ( objects->goToNext() ) { - //const cool::IObject& obj = objects->currentRef(); - // if(m_verbose) std::cout << objects->next() << std::endl; + run++; } printf("Total: %d rows\n",run); @@ -2489,8 +2348,7 @@ void COOLCORALClient::printFoldersContent(const std::string& part_trt){ objects = rod_fld->browseObjects( since, until, ChannelSelection::all() ); run=0; while ( objects->goToNext() ) { - //const cool::IObject& obj = objects->currentRef(); - // if(m_verbose) std::cout << objects->next() << std::endl; + run++; } printf("Total: %d rows\n",run); @@ -2500,8 +2358,7 @@ void COOLCORALClient::printFoldersContent(const std::string& part_trt){ objects = dtmroc_fld->browseObjects( since, until, ChannelSelection::all() ); run=0; while ( objects->goToNext() ) { - //const cool::IObject& obj = objects->currentRef(); - // if(m_verbose) std::cout << objects->next() << std::endl; + run++; } printf("Total: %d rows\n",run); @@ -2587,7 +2444,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s gettimeofday(&nunc_time, nullptr); - // nunc_usecs = (nunc_time.tv_sec) * 1000000 + (nunc_time.tv_usec); nunc_usecs = nunc_time.tv_sec; @@ -2632,7 +2488,7 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s conn_condData[0].data<long long>() = 999; - long long key; + long long key{0}; coral::ICursor& cursor00 = query00->execute(); while ( cursor00.next() ) { @@ -2672,30 +2528,7 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s ValidityKey until = ValidityKeyMax; - // coral::AttributeList ttc_cool_row(ttc_fld->payloadSpecification()); - // coral::AttributeList ttcgr_cool_row(ttcgr_fld->payloadSpecification()); - // coral::AttributeList rod_cool_row(rod_fld->payloadSpecification()); - // coral::AttributeList dtmroc_cool_row(dtmroc_fld->payloadSpecification()); - - //(ttc_fld->folderAttributes()).attributeList() ; - //coral::AttributeList ttcgr_cool_row=(ttcgr_fld->folderAttributes()).attributeList() ; - //coral::AttributeList rod_cool_row=(rod_fld->folderAttributes()).attributeList(); - //coral::AttributeList dtmroc_cool_row=(dtmroc_fld->folderAttributes()).attributeList(); - //ttc_cool_row.toOutputStream(std::cout); - //coral::AttributeListSpecification ttc_spec; - //ttc_spec.extend("ttc_UID", - // coral::AttributeSpecification::typeNameForId( typeid(unsigned int) ) ); - //coral::AttributeList ttc_cool_row(ttc_spec); - /* - coral::AttributeList ttc_cool_row; - cool::Record ttc_rec(ttc_fld->payloadSpecification(),ttc_cool_row); - coral::AttributeList ttcgr_cool_row; - cool::Record ttcgr_rec(ttcgr_fld->payloadSpecification(),ttcgr_cool_row); - coral::AttributeList rod_cool_row; - cool::Record rod_rec(rod_fld->payloadSpecification(),rod_cool_row); - coral::AttributeList dtmroc_cool_row; - cool::Record dtmroc_rec(dtmroc_fld->payloadSpecification(),dtmroc_cool_row); - */ + cool::RecordSpecification ttc_rec =(ttc_fld->payloadSpecification()); coral::AttributeList ttc_cool_row ATLAS_THREAD_SAFE = Record(ttc_rec).attributeList(); // ok @@ -2712,7 +2545,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s coral::ITableDataEditor& ttc_editor = m_session->nominalSchema().tableHandle(TTC_TABLE ).dataEditor(); coral::AttributeList ttc_row ATLAS_THREAD_SAFE; // Not shared, so ok. ttc_editor.rowBuffer(ttc_row); - // ttc_row.toOutputStream( std::cout ) << std::endl; //-------- // TRT-TTC quantities @@ -2740,7 +2572,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s const char* filename="ttc.dat"; if (part_trt=="barrel"){ filename = "RCDTTC.dat"; - //filename = "TTC06.dat"; } else if (part_trt=="endcap"){ filename = "ECRCDTTC.dat"; @@ -2760,11 +2591,9 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s >> clocksource >> ttcname >> tfragtype >> tcomment; - // if(m_verbose) std::cout << "Read TTC data done..." << std::endl; ttc_row["ttc_UID"].setValue <int> (tuid); - // ttc_row["ttc_iovfk"].setValue <long long> (iovfkttc); - // ttc_row["ttc_iovfk"].setValue <long long> (nunc_usecs/10); + ttc_row["ttc_iovfk"].setValue <long long> (key); ttc_row["ByteSwapping"].setValue <short> (tbyteswap); ttc_row["PhysicalAddress"].setValue <int> (tphysaddr); @@ -2781,9 +2610,7 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s ttc_cool_row["ttc_UID"].setValue <unsigned int> (tuid); - // - // ttc_cool_row["ttc_iovfk"].setValue <unsigned long long> (iovfkttc); - // ttc_cool_row["ttc_iovfk"].setValue <unsigned long long> (nunc_usecs/10); + ttc_cool_row["ttc_iovfk"].setValue <unsigned long long> (key); ttc_cool_row["tag"].setValue <std::string> (tag); cool::Record ttcRecord(ttc_rec,ttc_cool_row); @@ -2791,7 +2618,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s run++; - //ttc_editor.insertRow(ttc_row); ttc_bulk->processNextIteration(); } } @@ -2812,7 +2638,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s coral::ITableDataEditor& ttcgr_editor = m_session->nominalSchema().tableHandle(TTCGR_TABLE ).dataEditor(); coral::AttributeList ttcgr_row ATLAS_THREAD_SAFE; // Not shared, so ok. ttcgr_editor.rowBuffer(ttcgr_row); - // ttc_row.toOutputStream( std::cout ) << std::endl; //-------- // TRT-TTC quantities @@ -2846,21 +2671,17 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s std::vector <unsigned int> tdmdelayv(10); run=0; - - // ifstream itGRfile ("RCDTTCGROUP.dat"); - // ifstream itGRfile ("TTCGROUPTEMP.dat"); + if (part_trt=="barrel"){ filename = "RCDTTCGROUP.dat"; - // filename = "TTCGROUPTEMP.dat"; } else if (part_trt=="endcap"){ filename = "ECRCDTTCGROUP.dat"; } ifstream itGRfile (filename); - // ifstream itGRfile ("ECRCDTTCGROUP.dat"); - // std::vector<char> buffer(999); + if (itGRfile.is_open()){ while (itGRfile.getline(&buffer[0],999,'\n')) { std::string sline(buffer.begin(),buffer.begin()+strlen(&buffer[0])); @@ -2890,8 +2711,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s ttcgr_row["ttcgr_UID"].setValue <int> (tgruid); - // ttcgr_row["ttcgr_iovfk"].setValue <long long> (iovfkttc); - // ttcgr_row["ttcgr_iovfk"].setValue <long long> (nunc_usecs/10); ttcgr_row["ttcgr_iovfk"].setValue <long long> (key); ttcgr_row["Group"].setValue <int> (group); ttcgr_row["DutyCycle"].setValue <int> (duty); @@ -2904,8 +2723,7 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s ttcgr_cool_row["ttcgr_UID"].setValue <unsigned int> (tgruid); - // ttcgr_cool_row["ttcgr_iovfk"].setValue <unsigned long long> (iovfkttc); - // ttcgr_cool_row["ttcgr_iovfk"].setValue <unsigned long long> (nunc_usecs/10); + ttcgr_cool_row["ttcgr_iovfk"].setValue <unsigned long long> (key); ttcgr_cool_row["tag"].setValue <std::string> (tag); cool::Record ttcgrRecord(ttcgr_rec, ttcgr_cool_row); @@ -2914,7 +2732,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s run++; - //ttc_editor.insertRow(ttcgr_row); ttcgr_bulk->processNextIteration(); } } @@ -2938,7 +2755,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s coral::ITableDataEditor& rod_editor = m_session->nominalSchema().tableHandle(ROD_TABLE ).dataEditor(); coral::AttributeList rod_row ATLAS_THREAD_SAFE; // Not shared, so ok. rod_editor.rowBuffer(rod_row); - // rod_row.toOutputStream( std::cout ) << std::endl; coral::IBulkOperation* rod_bulk= rod_editor.bulkInsert(rod_row,32); @@ -2967,7 +2783,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s run=0; if (part_trt=="barrel"){ filename = "RCDROD.dat"; - //filename = "ROD06.dat"; } else if (part_trt=="endcap"){ filename = "ECRCDROD.dat"; @@ -2992,8 +2807,7 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s >> rodname >> rcomment; rod_row["rod_UID"].setValue <int> (rodid); - // rod_row["rod_iovfk"].setValue <long long> (iovfkttc); - // rod_row["rod_iovfk"].setValue <long long> (nunc_usecs/10); + rod_row["rod_iovfk"].setValue <long long> (key); rod_row["RODByteSwapping"].setValue <short> (rodbyteswap); rod_row["RODPhysicalAddress"].setValue <int> (rodphysaddr); @@ -3015,8 +2829,7 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s rod_row["rod_tag"].setValue <std::string> (tag); rod_cool_row["rod_UID"].setValue <unsigned int> (rodid); - // rod_cool_row["rod_iovfk"].setValue <unsigned long long> (iovfkttc); - // rod_cool_row["rod_iovfk"].setValue <unsigned long long> (nunc_usecs/10); + rod_cool_row["rod_iovfk"].setValue <unsigned long long> (key); rod_cool_row["tag"].setValue <std::string> (tag); cool::Record rodRecord(rod_rec, rod_cool_row); @@ -3043,7 +2856,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s coral::ITableDataEditor& dtmroc_editor = m_session->nominalSchema().tableHandle(DTMROC_TABLE ).dataEditor(); coral::AttributeList dtmroc_row ATLAS_THREAD_SAFE; // Not shared, so ok. dtmroc_editor.rowBuffer(dtmroc_row); - // dtmroc_row.toOutputStream( std::cout ) << std::endl; coral::IBulkOperation* dtmroc_bulk= dtmroc_editor.bulkInsert(dtmroc_row,32); unsigned int uid; @@ -3068,7 +2880,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s run=0; if (part_trt=="barrel"){ filename = "RCDDTMROC.dat"; - //filename = "DTMROC06.dat"; } else if (part_trt=="endcap"){ filename = "ECRCDDTMROC.dat"; @@ -3110,8 +2921,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s dtmroc_row["dtmroc_UID"].setValue <int> (chipID); - // dtmroc_row["dtmroc_iovfk"].setValue <long long> (iovfkttc); - // dtmroc_row["dtmroc_iovfk"].setValue <long long> (nunc_usecs/10); dtmroc_row["dtmroc_iovfk"].setValue <long long> (key); dtmroc_row["DTMROCByteSwapping"].setValue <short> (byteswap); dtmroc_row["DTMROCPhysicalAddress"].setValue <int> @@ -3139,8 +2948,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s dtmroc_cool_row["dtmroc_UID"].setValue <unsigned int> (uid); dtmroc_cool_row["dtmroc_iovfk"].setValue <unsigned long long> (key); - // dtmroc_cool_row["dtmroc_iovfk"].setValue <unsigned long long> (nunc_usecs/10); - // dtmroc_cool_row["dtmroc_iovfk"].setValue <unsigned long long> (iovfkttc); dtmroc_cool_row["tag"].setValue <std::string> (tag); cool::Record dtmrocRecord(dtmroc_rec, dtmroc_cool_row); dtmroc_fld->storeObject( since, until, dtmrocRecord, chipID); @@ -3158,7 +2965,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s printf("Total: %d rows\n",run); - //if(m_verbose) std::cout<<std::endl; // measuring elapsed time @@ -3184,7 +2990,6 @@ void COOLCORALClient::fillFolderTables(const std::string& part_trt, const std::s /// all info about the relevant TTCGROUPs and all the connected /// DTMROCs TTCobj_t* COOLCORALClient::GetTTCOOL(int ttc_id){ - // if(m_verbose) std::cout << "\nGet TTC Queries and SubQueries" << std::endl; struct timeval start_time{}, end_time{}; @@ -3225,8 +3030,6 @@ TTCobj_t* COOLCORALClient::GetTTCOOL(int ttc_id){ gettimeofday(&nunc_time, nullptr); - // iovfk is time in nanoseconds - // nunc_usecs = (nunc_time.tv_sec) * 1000000 + (nunc_time.tv_usec); nunc_usecs = (nunc_time.tv_sec); cool::ValidityKey since = nunc_usecs; @@ -3294,12 +3097,10 @@ TTCobj_t* COOLCORALClient::GetTTCOOL(int ttc_id){ while ( objects->goToNext() ) { const cool::IObject& obj = objects->currentRef(); FromString(fk,obj.payloadValue("ttc_iovfk")); - // if(m_verbose) std::cout << "FK = " << fk << std::endl; } std::string ttc_cond = TTC_TABLE; - // ttc_cond += ".ttc_UID = :ttcnr"; ttc_cond += ".ttc_UID = :ttcnr AND "; ttc_cond += TTC_TABLE; ttc_cond += ".ttc_iovfk = :ttcio"; @@ -3313,7 +3114,6 @@ TTCobj_t* COOLCORALClient::GetTTCOOL(int ttc_id){ ttc_condData[0].data<int>() = ttc_id; ttc_condData[1].data<long long>() = fk; - // if(m_verbose) std::cout << "TTC ID = " << ttc_id << std::endl; // query on TTCGROUP @@ -3331,13 +3131,11 @@ TTCobj_t* COOLCORALClient::GetTTCOOL(int ttc_id){ std::string ttcgr_cond = TTCGR_TABLE; ttcgr_cond += ".ttcgr_UID >= :ttcgr0 AND "; ttcgr_cond += TTCGR_TABLE; - // ttcgr_cond += ".ttcgr_UID <= :ttcgr1"; ttcgr_cond += ".ttcgr_UID <= :ttcgr1 AND "; ttcgr_cond += TTCGR_TABLE; ttcgr_cond += ".ttcgr_iovfk = :ttcgrio"; - //"BTTCGR.ttcgr_UID >= :ttcgr0 AND BTTCGR.ttcgr_UID <= :ttcgr1"; coral::AttributeList ttcgr_condData ATLAS_THREAD_SAFE; // Not shared, so ok. ttcgr_condData.extend<int>( "ttcgr0" ); @@ -3375,7 +3173,6 @@ TTCobj_t* COOLCORALClient::GetTTCOOL(int ttc_id){ dtmroc_cond += DTMROC_TABLE; dtmroc_cond += ".dtmroc_iovfk = :rocio"; - //"BDTMROC.dtmroc_UID >= :roc1 AND BDTMROC.dtmroc_UID <= :roc104"; coral::AttributeList dtmroc_condData ATLAS_THREAD_SAFE; // Not shared, so ok. dtmroc_condData.extend<int>( "roc1" ); @@ -3652,25 +3449,16 @@ void COOLCORALClient::UpdateKey(){ /// Fill TTC table with one entry void COOLCORALClient::fillTTC(const TTC_t& ttc){ - // if(m_verbose) std::cout << "\nCOOLCORAL Client: Fill TTC info" << std::endl; - - // struct timeval start_time, end_time; - // int total_usecs; - // gettimeofday(&start_time, NULL); - + m_session->transaction().start(); struct timeval nunc_time{}; - //unsigned long long nunc_usecs; gettimeofday(&nunc_time, nullptr); - // iovfk is time in nanoseconds - //nunc_usecs = (nunc_time.tv_sec) * 1000000 + (nunc_time.tv_usec); - //nunc_usecs = (nunc_time.tv_usec); - // iovfkttc = (unsigned long long) nunc_usecs/10; + unsigned long long nunc_sec = nunc_time.tv_sec; std::string tag = "DAQ"; @@ -3680,7 +3468,6 @@ void COOLCORALClient::fillTTC(const TTC_t& ttc){ - // if(m_verbose) std::cout << "Filling table " << TTC_TABLE << std::endl; coral::ITableDataEditor& ttc_editor = m_session->nominalSchema().tableHandle(TTC_TABLE ).dataEditor(); coral::AttributeList ttc_row ATLAS_THREAD_SAFE; // Not shared, so ok. ttc_editor.rowBuffer(ttc_row); @@ -3688,7 +3475,6 @@ void COOLCORALClient::fillTTC(const TTC_t& ttc){ - // coral::IBulkOperation* ttc_bulk= ttc_editor.bulkInsert(ttc_row,32); ttc_row["ttc_UID"].setValue <int> (ttc.ttc_UID); ttc_row["ttc_iovfk"].setValue <long long> (nunc_sec); @@ -3930,20 +3716,7 @@ void COOLCORALClient::fillRODV(const std::vector<ROD_t>& rodv){ rod_bulk->flush(); delete rod_bulk; - - - // measuring elapsed time - // gettimeofday(&end_time, NULL); - // total_usecs = (end_time.tv_sec-start_time.tv_sec) * 1000000 + - // (end_time.tv_usec-start_time.tv_usec); - // if(m_verbose) std::cout << "Total time was " << total_usecs << " usec" << std::endl; - - - - - - - + m_session->transaction().commit(); } @@ -4049,10 +3822,6 @@ void COOLCORALClient::fillTTCGRV(const std::vector<TTCGroup_t>& ttcgrv){ void COOLCORALClient::fillTTCV(const std::vector<TTC_t>& ttcv){ - // struct timeval start_time, end_time; - // int total_usecs; - // gettimeofday(&start_time, NULL); - m_session->transaction().start(); @@ -4067,7 +3836,6 @@ void COOLCORALClient::fillTTCV(const std::vector<TTC_t>& ttcv){ - // if(m_verbose) std::cout << "Filling table " << TTC_TABLE << std::endl; coral::ITableDataEditor& ttc_editor = m_session->nominalSchema().tableHandle(TTC_TABLE ).dataEditor(); coral::AttributeList ttc_row ATLAS_THREAD_SAFE; // Not shared, so ok. ttc_editor.rowBuffer(ttc_row); @@ -4236,12 +4004,7 @@ void COOLCORALClient::fillBarrel(const Barrel_t& Barrel){ delete roc_bulk; - // measuring elapsed time - // gettimeofday(&end_time, NULL); - // total_usecs = (end_time.tv_sec-start_time.tv_sec) * 1000000 + - // (end_time.tv_usec-start_time.tv_usec); - // if(m_verbose) std::cout << "Total time was " << total_usecs << " usec" << std::endl; - + m_session->transaction().commit(); } @@ -4291,8 +4054,6 @@ void COOLCORALClient::createMap(){ // Unfortunately, there is no easy/standard way of having the // database server automatically assigning a value to a PK - // put an index on const - // if (part_trt=="barrel"){ tmp_strings.clear(); tmp_strings.emplace_back("Partition"); bconn_columns.createIndex ("bpart_idx", tmp_strings); @@ -5656,7 +5417,6 @@ void COOLCORALClient::UpdateGol(const GOL* golinp,int goltype){ rowBuffer.extend<short>( extension ); - // std::string updateAction1 = "EdgeSelect = :value"; std::string updateAction1 = extension; updateAction1 += " = :value"; @@ -5767,9 +5527,7 @@ void COOLCORALClient::createHistTables(bool coolswitch){ tmp_strings.clear(); tmp_strings.emplace_back("ttc_iovfk"); - // Define primary key - // ttc_columns.setPrimaryKey( tmp_strings ); - // ttc_columns.setNotNullConstraint ("ttc_iovfk"); + // Define index ttc_columns.createIndex ("httcio_idx", tmp_strings); @@ -6179,14 +5937,7 @@ int COOLCORALClient::GetLastTTC(){ query0->addToOutputList("Comment" ); query0->addToOutputList("ttc_tag" ); -// std::string ttc_cond = " "; -// coral::AttributeList ttc_condData; -// ttc_condData.extend<int>( "ttcnr" ); - -// query0->setCondition( ttc_cond, ttc_condData); - -// ttc_condData[0].data<int>() = ttc_id; - + coral::ICursor& cursor0 = query0->execute(); int count=0; @@ -6234,11 +5985,7 @@ void COOLCORALClient::GetLastValues(Detector_t& detector){ TTCGroup_t ttcgr; ROD_t rod; DTMROC_t dtmroc; - -// std::vector<TTC_t> ttcv; -// std::vector<TTCGR_t> ttcgrv; -// std::vector<ROD_t> rodv; -// std::vector<DTMROC_t> dtmrocv; + m_session->transaction().start(true); @@ -6436,13 +6183,6 @@ void COOLCORALClient::GetLastValues(Detector_t& detector){ delete query3; - - -// if(m_verbose) std::cout << "Number of ttcv elements = " << detector.ttc.size() << std::endl; -// if(m_verbose) std::cout << "Number of ttcgrv elements = " << detector.ttcgr.size() << std::endl; -// if(m_verbose) std::cout << "Number of rodv elements = " << detector.rod.size() << std::endl; -// if(m_verbose) std::cout << "Number of dtmrocv elements = " << detector.dtmroc.size() << std::endl; - m_session->transaction().commit(); } @@ -6458,13 +6198,11 @@ void COOLCORALClient::fillDetector(const Detector_t& Detector){ struct timeval nunc_time{}; struct timeval start_time{}; struct timeval end_time{}; - //unsigned long long nunc_usecs; unsigned long long total_usecs; gettimeofday(&nunc_time, nullptr); gettimeofday(&start_time, nullptr); - //nunc_usecs = (nunc_time.tv_sec) * 1000000 + (nunc_time.tv_usec); std::string TTC_TABLE="HIST_TTC"; std::string TTCGR_TABLE="HIST_TTCGR"; @@ -6718,7 +6456,7 @@ void COOLCORALClient::fillHistDetector(const Detector_t& Detector, const std::st conn_condData[0].data<long long>() = 999; - long long key; + long long key{0}; coral::ICursor& cursor00 = query00->execute(); while ( cursor00.next() ) { @@ -6789,7 +6527,6 @@ void COOLCORALClient::fillHistDetector(const Detector_t& Detector, const std::st for (v_iter0 = (Detector.ttc).begin(); v_iter0 != (Detector.ttc).end(); ++v_iter0) { ttc_row["ttc_UID"].setValue <int> ((*v_iter0).ttc_UID); - // ttc_row["ttc_iovfk"].setValue <long long> ((*v_iter0).ttc_iovfk); ttc_row["ttc_iovfk"].setValue <long long> (key); ttc_row["ByteSwapping"].setValue <short> ((*v_iter0).ByteSwapping); ttc_row["PhysicalAddress"].setValue <int> ((*v_iter0).PhysicalAddress); @@ -6802,7 +6539,6 @@ void COOLCORALClient::fillHistDetector(const Detector_t& Detector, const std::st ttc_row["ClockSource"].setValue <std::string> ((*v_iter0).ClockSource); ttc_row["InputFragmentType"].setValue <std::string> ((*v_iter0).InputFragmentType); ttc_row["Comment"].setValue <std::string> ((*v_iter0).Comment); - // ttc_row["ttc_tag"].setValue <std::string> ((*v_iter0).ttc_tag); ttc_row["ttc_tag"].setValue <std::string> (tag); @@ -6823,7 +6559,6 @@ void COOLCORALClient::fillHistDetector(const Detector_t& Detector, const std::st for (v_iter1 = (Detector.ttcgr).begin(); v_iter1 != (Detector.ttcgr).end(); ++v_iter1) { ttcgr_row["ttcgr_UID"].setValue <int> ((*v_iter1).ttcgr_UID); - // ttcgr_row["ttcgr_iovfk"].setValue <long long> ((*v_iter1).ttcgr_iovfk); ttcgr_row["ttcgr_iovfk"].setValue <long long> (key); ttcgr_row["Group"].setValue <int> ((*v_iter1).Group); ttcgr_row["DutyCycle"].setValue <int> ((*v_iter1).DutyCycle); @@ -6832,7 +6567,6 @@ void COOLCORALClient::fillHistDetector(const Detector_t& Detector, const std::st ttcgr_row["finedx"].setValue <std::string> ((*v_iter1).finedx); ttcgr_row["TDMdelay"].setValue <std::string> ((*v_iter1).TDMdelay); ttcgr_row["TTCGRNAME"].setValue <std::string> ((*v_iter1).TTCGRNAME); - // ttcgr_row["ttcgr_tag"].setValue <std::string> ((*v_iter1).ttcgr_tag); ttcgr_row["ttcgr_tag"].setValue <std::string> (tag); ttcgr_cool_row["ttcgr_iovfk"].setValue <unsigned long long> (key); @@ -6887,7 +6621,6 @@ void COOLCORALClient::fillHistDetector(const Detector_t& Detector, const std::st for (v_iter3 = (Detector.dtmroc).begin(); v_iter3 != (Detector.dtmroc).end(); ++v_iter3) { roc_row["dtmroc_UID"].setValue <int> ((*v_iter3).dtmroc_UID); - // roc_row["dtmroc_iovfk"].setValue <long long> ((*v_iter3).dtmroc_iovfk); roc_row["dtmroc_iovfk"].setValue <long long> (key); roc_row["DTMROCByteSwapping"].setValue <short> ((*v_iter3).DTMROCByteSwapping); roc_row["DTMROCPhysicalAddress"].setValue <int> ((*v_iter3).DTMROCPhysicalAddress); @@ -6909,7 +6642,6 @@ void COOLCORALClient::fillHistDetector(const Detector_t& Detector, const std::st roc_row["DTMROCInputFragmentType"].setValue <std::string> ((*v_iter3).DTMROCInputFragmentType); roc_row["Clock_FE"].setValue <std::string> ((*v_iter3).Clock_FE); roc_row["Comment"].setValue <std::string> ((*v_iter3).Comment); - // roc_row["roc_tag"].setValue <std::string> ((*v_iter3).roc_tag); roc_row["roc_tag"].setValue <std::string> (tag); dtmroc_cool_row["dtmroc_iovfk"].setValue <unsigned long long> (key); @@ -7319,7 +7051,7 @@ void COOLCORALClient::GenIoVROCTable(){ coral::ICursor& cursor0 = query0->execute(); int uid; - long long key; + long long key{0}; std::string tag; //int result = -1; @@ -7345,7 +7077,6 @@ void COOLCORALClient::GenIoVROCTable(){ roc_editor.insertRow(roc_row); - //result = 1; } delete query0; @@ -7361,7 +7092,6 @@ void COOLCORALClient::UpdateIoVROCTable(int uid,long long time, const std::strin std::string DTMROCIOV_TABLE="DTMROC_IOVS"; - // cool::ValidityKey since = 0; cool::ValidityKey until = cool::ValidityKeyMax; m_session->transaction().start(); @@ -7516,7 +7246,6 @@ Detector_t COOLCORALClient::GetHistValues(const std::string& tag,long long tstam coral::ICursor& cursor00 = query00->execute(); - // std::cout << "TAG\t Key \t Time" << std::endl; while ( cursor00.next() ) { const coral::AttributeList &row00 = cursor00.currentRow(); @@ -7831,7 +7560,6 @@ int COOLCORALClient::fillLastDetector(const Detector_t& Detector){ for (v_iter0 = (Detector.ttc).begin(); v_iter0 != (Detector.ttc).end(); ++v_iter0) { ttc_row["ttc_UID"].setValue <int> ((*v_iter0).ttc_UID); ttc_row["ttc_iovfk"].setValue <long long> ((*v_iter0).ttc_iovfk); - // ttc_row["ttc_iovfk"].setValue <long long> (key); ttc_row["ByteSwapping"].setValue <short> ((*v_iter0).ByteSwapping); ttc_row["PhysicalAddress"].setValue <int> ((*v_iter0).PhysicalAddress); ttc_row["DetID"].setValue <int> ((*v_iter0).DetID); @@ -7844,7 +7572,6 @@ int COOLCORALClient::fillLastDetector(const Detector_t& Detector){ ttc_row["InputFragmentType"].setValue <std::string> ((*v_iter0).InputFragmentType); ttc_row["Comment"].setValue <std::string> ((*v_iter0).Comment); ttc_row["ttc_tag"].setValue <std::string> ((*v_iter0).ttc_tag); - // ttc_row["ttc_tag"].setValue <std::string> (tag); ttc_bulk->processNextIteration(); @@ -7858,7 +7585,6 @@ int COOLCORALClient::fillLastDetector(const Detector_t& Detector){ for (v_iter1 = (Detector.ttcgr).begin(); v_iter1 != (Detector.ttcgr).end(); ++v_iter1) { ttcgr_row["ttcgr_UID"].setValue <int> ((*v_iter1).ttcgr_UID); ttcgr_row["ttcgr_iovfk"].setValue <long long> ((*v_iter1).ttcgr_iovfk); - // ttcgr_row["ttcgr_iovfk"].setValue <long long> (key); ttcgr_row["Group"].setValue <int> ((*v_iter1).Group); ttcgr_row["DutyCycle"].setValue <int> ((*v_iter1).DutyCycle); ttcgr_row["EdgeSelect"].setValue <std::string> ((*v_iter1).EdgeSelect); @@ -7867,7 +7593,6 @@ int COOLCORALClient::fillLastDetector(const Detector_t& Detector){ ttcgr_row["TDMdelay"].setValue <std::string> ((*v_iter1).TDMdelay); ttcgr_row["TTCGRNAME"].setValue <std::string> ((*v_iter1).TTCGRNAME); ttcgr_row["ttcgr_tag"].setValue <std::string> ((*v_iter1).ttcgr_tag); - // ttcgr_row["ttcgr_tag"].setValue <std::string> (tag); ttcgr_bulk->processNextIteration(); } @@ -7880,7 +7605,6 @@ int COOLCORALClient::fillLastDetector(const Detector_t& Detector){ for (v_iter2 = (Detector.rod).begin(); v_iter2 != (Detector.rod).end(); ++v_iter2) { rod_row["rod_UID"].setValue <int> ((*v_iter2).rod_UID); rod_row["rod_iovfk"].setValue <long long> ((*v_iter2).rod_iovfk); - // rod_row["rod_iovfk"].setValue <long long> (key); rod_row["RODByteSwapping"].setValue <short> ((*v_iter2).RODByteSwapping); rod_row["RODPhysicalAddress"].setValue <int> ((*v_iter2).RODPhysicalAddress); rod_row["RODDetID"].setValue <int> ((*v_iter2).RODDetID); @@ -7899,7 +7623,6 @@ int COOLCORALClient::fillLastDetector(const Detector_t& Detector){ rod_row["RODName"].setValue <std::string> ((*v_iter2).RODName); rod_row["Comment"].setValue <std::string> ((*v_iter2).Comment); rod_row["rod_tag"].setValue <std::string> ((*v_iter2).rod_tag); - // rod_row["rod_tag"].setValue <std::string> (tag); @@ -7915,7 +7638,6 @@ int COOLCORALClient::fillLastDetector(const Detector_t& Detector){ for (v_iter3 = (Detector.dtmroc).begin(); v_iter3 != (Detector.dtmroc).end(); ++v_iter3) { roc_row["dtmroc_UID"].setValue <int> ((*v_iter3).dtmroc_UID); roc_row["dtmroc_iovfk"].setValue <long long> ((*v_iter3).dtmroc_iovfk); - // roc_row["dtmroc_iovfk"].setValue <long long> (key); roc_row["DTMROCByteSwapping"].setValue <short> ((*v_iter3).DTMROCByteSwapping); roc_row["DTMROCPhysicalAddress"].setValue <int> ((*v_iter3).DTMROCPhysicalAddress); roc_row["ChipID"].setValue <int> ((*v_iter3).ChipID); @@ -7937,7 +7659,6 @@ int COOLCORALClient::fillLastDetector(const Detector_t& Detector){ roc_row["Clock_FE"].setValue <std::string> ((*v_iter3).Clock_FE); roc_row["Comment"].setValue <std::string> ((*v_iter3).Comment); roc_row["roc_tag"].setValue <std::string> ((*v_iter3).roc_tag); - //roc_row["roc_tag"].setValue <std::string> (tag); roc_bulk->processNextIteration(); @@ -8140,9 +7861,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& long long& cqkey = rowBuffer1[ "Key" ].data<long long>(); long long& cqtime = rowBuffer1[ "Time" ].data<long long>(); -// gettimeofday(&nunc_time, NULL); -// // nunc_usecs = (nunc_time.tv_sec) * 1000000 + (nunc_time.tv_usec); - //nunc_usecs = (nunc_time.tv_sec); gettimeofday(&nunc_time, nullptr); @@ -8180,7 +7898,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& for (v_iter0 = (Detector.ttc).begin(); v_iter0 != (Detector.ttc).end(); ++v_iter0) { ttc_row["ttc_UID"].setValue <int> ((*v_iter0).ttc_UID); - // ttc_row["ttc_iovfk"].setValue <long long> ((*v_iter0).ttc_iovfk); ttc_row["ttc_iovfk"].setValue <long long> (key); ttc_row["ByteSwapping"].setValue <short> ((*v_iter0).ByteSwapping); ttc_row["PhysicalAddress"].setValue <int> ((*v_iter0).PhysicalAddress); @@ -8193,7 +7910,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& ttc_row["ClockSource"].setValue <std::string> ((*v_iter0).ClockSource); ttc_row["InputFragmentType"].setValue <std::string> ((*v_iter0).InputFragmentType); ttc_row["Comment"].setValue <std::string> ((*v_iter0).Comment); - // ttc_row["ttc_tag"].setValue <std::string> ((*v_iter0).ttc_tag); ttc_row["ttc_tag"].setValue <std::string> (tag); @@ -8226,7 +7942,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& for (v_iter1 = (Detector.ttcgr).begin(); v_iter1 != (Detector.ttcgr).end(); ++v_iter1) { ttcgr_row["ttcgr_UID"].setValue <int> ((*v_iter1).ttcgr_UID); - // ttcgr_row["ttcgr_iovfk"].setValue <long long> ((*v_iter1).ttcgr_iovfk); ttcgr_row["ttcgr_iovfk"].setValue <long long> (key); ttcgr_row["Group"].setValue <int> ((*v_iter1).Group); ttcgr_row["DutyCycle"].setValue <int> ((*v_iter1).DutyCycle); @@ -8235,7 +7950,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& ttcgr_row["finedx"].setValue <std::string> ((*v_iter1).finedx); ttcgr_row["TDMdelay"].setValue <std::string> ((*v_iter1).TDMdelay); ttcgr_row["TTCGRNAME"].setValue <std::string> ((*v_iter1).TTCGRNAME); - // ttcgr_row["ttcgr_tag"].setValue <std::string> ((*v_iter1).ttcgr_tag); ttcgr_row["ttcgr_tag"].setValue <std::string> (tag); updateData[1].data <long long>() = key; @@ -8268,7 +7982,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& for (v_iter2 = (Detector.rod).begin(); v_iter2 != (Detector.rod).end(); ++v_iter2) { rod_row["rod_UID"].setValue <int> ((*v_iter2).rod_UID); - // rod_row["rod_iovfk"].setValue <long long> ((*v_iter2).rod_iovfk); rod_row["rod_iovfk"].setValue <long long> (key); rod_row["RODByteSwapping"].setValue <short> ((*v_iter2).RODByteSwapping); rod_row["RODPhysicalAddress"].setValue <int> ((*v_iter2).RODPhysicalAddress); @@ -8287,7 +8000,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& rod_row["RODInputFragmentType"].setValue <std::string> ((*v_iter2).RODInputFragmentType); rod_row["RODName"].setValue <std::string> ((*v_iter2).RODName); rod_row["Comment"].setValue <std::string> ((*v_iter2).Comment); - // rod_row["rod_tag"].setValue <std::string> ((*v_iter2).rod_tag); rod_row["rod_tag"].setValue <std::string> (tag); updateData[1].data <long long>() = key; @@ -8320,7 +8032,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& for (v_iter3 = (Detector.dtmroc).begin(); v_iter3 != (Detector.dtmroc).end(); ++v_iter3) { roc_row["dtmroc_UID"].setValue <int> ((*v_iter3).dtmroc_UID); - // roc_row["dtmroc_iovfk"].setValue <long long> ((*v_iter3).dtmroc_iovfk); roc_row["dtmroc_iovfk"].setValue <long long> (key); roc_row["DTMROCByteSwapping"].setValue <short> ((*v_iter3).DTMROCByteSwapping); roc_row["DTMROCPhysicalAddress"].setValue <int> ((*v_iter3).DTMROCPhysicalAddress); @@ -8342,7 +8053,6 @@ void COOLCORALClient::fillHistory(const Detector_t& Detector, const std::string& roc_row["DTMROCInputFragmentType"].setValue <std::string> ((*v_iter3).DTMROCInputFragmentType); roc_row["Clock_FE"].setValue <std::string> ((*v_iter3).Clock_FE); roc_row["Comment"].setValue <std::string> ((*v_iter3).Comment); - // roc_row["roc_tag"].setValue <std::string> ((*v_iter3).roc_tag); roc_row["roc_tag"].setValue <std::string> (tag); @@ -8993,12 +8703,6 @@ COOLCORALClient::CompHistValues(const std::string& tag1,long long tstamp1, const - -// if(m_verbose) std::cout << "Number of ttcv elements = " << detector.ttc.size() << std::endl; -// if(m_verbose) std::cout << "Number of ttcgrv elements = " << detector.ttcgr.size() << std::endl; -// if(m_verbose) std::cout << "Number of rodv elements = " << detector.rod.size() << std::endl; -// if(m_verbose) std::cout << "Number of dtmrocv elements = " << detector.dtmroc.size() << std::endl; - m_session->transaction().commit(); // measuring elapsed time @@ -9304,7 +9008,6 @@ int COOLCORALClient::GetRichTags (){ // Thread unsafe ctime is used. std::cout << "\t -----------------------------------------------------------------"<< std::endl; std::cout << std::endl; while ( cursor0.next() ) { - // cursor0.next(); const coral::AttributeList &row0 = cursor0.currentRow(); time_t tempo = row0[2].data<long long>(); diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py index 4f3dd6cdb8bbc34707aab91eb3ac053984e7dbf1..28000edd6edeeeb76886dba7d698874ea42aee49 100644 --- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -163,10 +163,10 @@ def TrackCollectionCnvToolCfg(flags, name="TrackCollectionCnvTool", TrackParticl result = ComponentAccumulator() if TrackParticleCreator is None: TrackParticleCreator = result.getPrimaryAndMerge(TrackParticleCreatorToolCfg(flags)) - result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool( - name, - TrackParticleCreator=TrackParticleCreator, - )) + result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool( + name, + TrackParticleCreator=TrackParticleCreator, + )) return result def TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg", OutputTrackParticleContainer="InDetTrackParticles", **kwargs): diff --git a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py index d5388094cb8fb19d264be71c3949f7c71a6b27a5..6173d6b4edee2ad00a1d370486b4643680461e34 100644 --- a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py +++ b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py @@ -398,8 +398,18 @@ def InDetTrackSummaryToolCfg(flags, name='InDetTrackSummaryTool', **kwargs): acc.setPrivateTools(CompFactory.Trk.TrackSummaryTool(name = the_name, **kwargs)) return acc -def InDetPixelToTPIDToolCfg(name = "InDetPixelToTPIDTool", **kwargs): +def PixeldEdxAlg(flags, name = "PixeldEdxAlg", **kwargs): acc = ComponentAccumulator() + acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/PixdEdx", "/PIXEL/PixdEdx", className='AthenaAttributeList')) + PixeldEdxAlg = CompFactory.PixeldEdxAlg(name=name, ReadFromCOOL = True, **kwargs) + acc.addCondAlgo(PixeldEdxAlg) + return acc + +def InDetPixelToTPIDToolCfg(flags, name = "InDetPixelToTPIDTool", **kwargs): + acc = ComponentAccumulator() + + acc.merge(PixeldEdxAlg(flags)) + the_name = makeName( name, kwargs) InDetPixelToTPIDTool = CompFactory.InDet.PixelToTPIDTool(name = the_name, **kwargs) acc.setPrivateTools(InDetPixelToTPIDTool) @@ -428,7 +438,7 @@ def InDetRecTestBLayerToolCfg(flags, name='InDetRecTestBLayerTool', **kwargs): def InDetSummaryHelperSharedHitsCfg(flags, name='InDetSummaryHelperSharedHits', **kwargs): acc = ComponentAccumulator() if 'PixelToTPIDTool' not in kwargs : - InDetPixelToTPIDTool = acc.popToolsAndMerge(InDetPixelToTPIDToolCfg()) + InDetPixelToTPIDTool = acc.popToolsAndMerge(InDetPixelToTPIDToolCfg(flags)) acc.addPublicTool(InDetPixelToTPIDTool) kwargs.setdefault("PixelToTPIDTool", InDetPixelToTPIDTool) @@ -481,10 +491,25 @@ def InDetTRT_LocalOccupancyCfg(flags, name ="InDet_TRT_LocalOccupancy", **kwargs kwargs.setdefault( "TRTStrawStatusSummaryTool", InDetTRTStrawStatusSummaryTool ) kwargs.setdefault("isTrigger", False) + + from InDetOverlay.TRT_ConditionsConfig import TRTStrawCondAlgCfg # this will be moved somewhere else so this import will need adjustment + acc.merge( TRTStrawCondAlgCfg(flags) ) + InDetTRT_LocalOccupancy = CompFactory.InDet.TRT_LocalOccupancy(name=the_name, **kwargs ) acc.setPrivateTools(InDetTRT_LocalOccupancy) return acc +def TRTToTCondAlgCfg(flags, name = "TRTToTCondAlg", **kwargs): + acc = ComponentAccumulator() + acc.merge(addFoldersSplitOnline(flags, "TRT", "/TRT/Onl/Calib/ToT/ToTVectors", "/TRT/Calib/ToT/ToTVectors", className='CondAttrListVec')) + acc.merge(addFoldersSplitOnline(flags, "TRT", "/TRT/Onl/Calib/ToT/ToTValue", "/TRT/Calib/ToT/ToTValue", className='CondAttrListCollection')) + + TRTToTCondAlg = CompFactory.TRTToTCondAlg( name = name, + ToTWriteKey = "Dedxcorrection", + **kwargs) + acc.addCondAlgo(TRTToTCondAlg) + return acc + def InDetTRT_dEdxToolCfg(flags, name = "InDetTRT_dEdxTool", **kwargs): acc = ComponentAccumulator() the_name = makeName( name, kwargs) @@ -499,9 +524,17 @@ def InDetTRT_dEdxToolCfg(flags, name = "InDetTRT_dEdxTool", **kwargs): InDetTRT_LocalOccupancy = acc.popToolsAndMerge(InDetTRT_LocalOccupancyCfg(flags)) kwargs.setdefault( "TRT_LocalOccupancyTool", InDetTRT_LocalOccupancy) + acc.merge(TRTToTCondAlgCfg(flags)) acc.setPrivateTools(CompFactory.TRT_ToT_dEdx(name = the_name, **kwargs)) return acc +def TRTHTCondAlg(flags, name = "TRTHTCondAlg", **kwargs): + acc = ComponentAccumulator() + acc.merge(addFoldersSplitOnline(flags, "TRT", "/TRT/Onl/Calib/PID_vector", "/TRT/Calib/PID_vector", className='CondAttrListVec')) + TRTHTCondAlg = CompFactory.TRTHTCondAlg(name = name, HTWriteKey = "HTcalculator", **kwargs) + acc.addCondAlgo(TRTHTCondAlg) + return acc + def InDetTRT_ElectronPidToolCfg(flags, name = "InDetTRT_ElectronPidTool", **kwargs): acc = ComponentAccumulator() the_name = makeName( name, kwargs) @@ -531,6 +564,7 @@ def InDetTRT_ElectronPidToolCfg(flags, name = "InDetTRT_ElectronPidTool", **kwar kwargs.setdefault( "CalculateNNPid", False) #TODO fixme once the flag is there flags.InDet.doTRTPIDNN) + acc.merge(TRTHTCondAlg(flags)) acc.setPrivateTools(CompFactory.InDet.TRT_ElectronPidToolRun2(name = the_name, **kwargs)) return acc @@ -559,7 +593,7 @@ def InDetTrackSummaryToolSharedHitsCfg(flags, name='InDetTrackSummaryToolSharedH kwargs.setdefault("TRT_ElectronPidTool", InDetTRT_ElectronPidTool) if 'PixelToTPIDTool' not in kwargs : - InDetPixelToTPIDTool = acc.popToolsAndMerge(InDetPixelToTPIDToolCfg()) + InDetPixelToTPIDTool = acc.popToolsAndMerge(InDetPixelToTPIDToolCfg(flags)) acc.addPublicTool(InDetPixelToTPIDTool) kwargs.setdefault( "PixelToTPIDTool", InDetPixelToTPIDTool) @@ -574,13 +608,13 @@ def InDetUpdatorCfg(flags, name = 'InDetUpdator', **kwargs): acc = ComponentAccumulator() tool = None - if flags.ITk.kalmanUpdator == "fast" : + if flags.InDet.kalmanUpdator == "fast" : tool = CompFactory.Trk.KalmanUpdator_xk(name = the_name, **kwargs) - elif flags.ITk.kalmanUpdator == "weight" : + elif flags.InDet.kalmanUpdator == "weight" : tool = CompFactory.Trk.KalmanWeightUpdator(name = the_name, **kwargs) - elif flags.ITk.kalmanUpdator == "smatrix" : + elif flags.InDet.kalmanUpdator == "smatrix" : tool = CompFactory.Trk.KalmanUpdatorSMatrix(name = the_name, **kwargs) - elif flags.ITk.kalmanUpdator == "amg" : + elif flags.InDet.kalmanUpdator == "amg" : tool = CompFactory.Trk.KalmanUpdatorAmg(name = the_name, **kwargs) else : tool = CompFactory.Trk.KalmanUpdator(name = the_name, **kwargs) diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/DiscOverlapDescriptor.h b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/DiscOverlapDescriptor.h index fcfc8ff16b818750391bf05f3aa34695b908ea49..3137a28cf14d6ea15cc27da7fc280b7c0170468b 100644 --- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/DiscOverlapDescriptor.h +++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/DiscOverlapDescriptor.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -53,6 +53,7 @@ #endif // INDETTRACKINGGEOMETRY_DISCDETADDNEXTPHIETA class SCT_ID; +class PixelID; namespace Trk { class Surface; @@ -80,7 +81,8 @@ namespace InDet { /** Constructor */ DiscOverlapDescriptor(const Trk::BinnedArray<Trk::Surface>* bin_array = 0, - std::vector<Trk::BinUtility*>* singleBinUtils = 0); + std::vector<Trk::BinUtility*>* singleBinUtils = 0, + bool isPixel = false); /** Destructor */ virtual ~DiscOverlapDescriptor() { @@ -111,10 +113,13 @@ namespace InDet { const Amg::Vector3D& dir) const override; private: + bool dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const; const Trk::BinnedArray<Trk::Surface>* m_bin_array; std::vector<Trk::BinUtility*>* m_singleBinUtils; + bool m_pixelCase; mutable std::atomic<const SCT_ID*> m_sctIdHelper{nullptr}; + mutable std::atomic<const PixelID*> m_pixIdHelper{nullptr}; }; diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/PixelOverlapDescriptor.h b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/PixelOverlapDescriptor.h index bcdbe73e5479858386029a3e3ce78e268973960a..4f2e4ed37f3956efb082c5f61e213b743ddc8176 100644 --- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/PixelOverlapDescriptor.h +++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/PixelOverlapDescriptor.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -15,6 +15,8 @@ // Trk #include "TrkGeometry/OverlapDescriptor.h" #include "TrkDetDescrUtils/Intersection.h" +// STL include +#include <atomic> #ifndef TRKDETDESCR_SIDETADDNEXTPHIETA #define TRKDETDESCR_SIDETADDNEXTPHIETA @@ -56,6 +58,8 @@ namespace InDetDD { class SiDetectorElement; } +class PixelID; + namespace InDet { /** @class PixelOverlapDescriptor @@ -73,7 +77,7 @@ namespace InDet { public: /** Constructor (area restriction, LC check) */ - PixelOverlapDescriptor(); + PixelOverlapDescriptor(bool addMoreSurfaces = false, int eta_slices = 3, int phi_slices = 1); /** Destructor */ virtual ~PixelOverlapDescriptor(){} @@ -91,8 +95,14 @@ namespace InDet { private : void addPhiNeighbours(std::vector<Trk::SurfaceIntersection>& cSurfaces, InDetDD::SiDetectorElement& sElement) const; - - bool m_robustMode; + + bool dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const; + + bool m_robustMode; + bool m_addMoreSurfaces; + int m_etaSlices; + int m_phiSlices; + mutable std::atomic<const PixelID*> m_pixIdHelper{nullptr}; }; diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/SCT_OverlapDescriptor.h b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/SCT_OverlapDescriptor.h index 6bea13f8526c4c280037f228c2f4087af9e7ed55..af32b8ccf2bc294d80012225e65994bfe1722bd0 100644 --- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/SCT_OverlapDescriptor.h +++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/InDetTrackingGeometry/SCT_OverlapDescriptor.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -14,6 +14,8 @@ // Trk #include "TrkGeometry/OverlapDescriptor.h" #include "TrkDetDescrUtils/Intersection.h" +// STL include +#include <atomic> #ifndef TRKDETDESCR_SIDETADDNEXTPHIETA #define TRKDETDESCR_SIDETADDNEXTPHIETA @@ -55,6 +57,8 @@ namespace Trk { namespace InDetDD { class SiDetectorElement; } + +class SCT_ID; namespace InDet { @@ -85,8 +89,9 @@ namespace InDet { const Amg::Vector3D& dir) const; private: - bool m_robustMode; - + bool dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const; + bool m_robustMode; + mutable std::atomic<const SCT_ID*> m_sctIdHelper{nullptr}; }; inline SCT_OverlapDescriptor* SCT_OverlapDescriptor::clone() const { return new SCT_OverlapDescriptor(); } diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/BeamPipeBuilder.cxx b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/BeamPipeBuilder.cxx index 7b4b2117c9c85dc07b328bf663b728a748395604..3dfded32caa9484359be3fc11ab374470cef3faa 100644 --- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/BeamPipeBuilder.cxx +++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/BeamPipeBuilder.cxx @@ -109,6 +109,9 @@ const std::vector< const Trk::CylinderLayer* >* InDet::BeamPipeBuilder::cylindri if (m_beamPipeMgr){ // get the central top volume PVConstLink beamPipeTopVolume = m_beamPipeMgr->getTreeTop(0); + if (m_beamPipeMgr->getNumTreeTops()==1){ // Beampipe implementation using assembly volume has only one tree top instead of 3 in the default case(union of a central and two forward beampipes) + beamPipeTopVolume = m_beamPipeMgr->getTreeTop(0)->getChildVol(0)->getChildVol(0);//the BeamPipeCentral volume is the child of the child volume of the top volume in this case + } beamPipeTransform = Amg::Translation3D(beamPipeTopVolume->getX().translation().x(), beamPipeTopVolume->getX().translation().y(), beamPipeTopVolume->getX().translation().z()); diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/DiscOverlapDescriptor.cxx b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/DiscOverlapDescriptor.cxx index 1f4f21918e4646884d42e0dd1a1e12efb41d6fa5..4818f88a65ec40437d8198ba1db099f6f1ffcc2b 100644 --- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/DiscOverlapDescriptor.cxx +++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/DiscOverlapDescriptor.cxx @@ -16,23 +16,25 @@ #include "StoreGate/StoreGateSvc.h" #include "InDetIdentifier/SCT_ID.h" +#include "InDetIdentifier/PixelID.h" #include "Identifier/Identifier.h" InDet::DiscOverlapDescriptor::DiscOverlapDescriptor(const Trk::BinnedArray<Trk::Surface>* bin_array, - std::vector<Trk::BinUtility*>* singleBinUtils): + std::vector<Trk::BinUtility*>* singleBinUtils, + bool isPixel): m_bin_array(bin_array), - m_singleBinUtils(singleBinUtils) + m_singleBinUtils(singleBinUtils), + m_pixelCase(isPixel) {} /** get the compatible surfaces */ bool InDet::DiscOverlapDescriptor::reachableSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces, - const Trk::Surface& tsf, - const Amg::Vector3D& pos, - const Amg::Vector3D&) const - + const Trk::Surface& tsf, + const Amg::Vector3D& pos, + const Amg::Vector3D&) const { // Get Storegate, ID helpers, and so on - if (m_sctIdHelper==nullptr) { + if (m_sctIdHelper==nullptr || m_pixIdHelper==nullptr) { ISvcLocator* svcLocator = Gaudi::svcLocator(); // get DetectorStore service @@ -40,12 +42,20 @@ bool InDet::DiscOverlapDescriptor::reachableSurfaces(std::vector<Trk::SurfaceInt if (svcLocator->service("DetectorStore", detStore).isFailure()) { return false; } - - const SCT_ID* sctIdHelper = nullptr; - if (detStore->retrieve(sctIdHelper, "SCT_ID").isFailure()) { - return false; + + if (m_pixelCase) { + const PixelID* pixIdHelper = nullptr; + if (detStore->retrieve(pixIdHelper, "PixelID").isFailure()) { + return false; + } + m_pixIdHelper = pixIdHelper; + } else { + const SCT_ID* sctIdHelper = nullptr; + if (detStore->retrieve(sctIdHelper, "SCT_ID").isFailure()) { + return false; + } + m_sctIdHelper = sctIdHelper; } - m_sctIdHelper = sctIdHelper; } // get the according detector element @@ -53,7 +63,8 @@ bool InDet::DiscOverlapDescriptor::reachableSurfaces(std::vector<Trk::SurfaceInt // first add the target surface surfaces.emplace_back(Trk::Intersection(pos, 0., true),&tsf); - int etaModule = m_sctIdHelper.load()->eta_module(tsf.associatedDetectorElementIdentifier()); + int etaModule = m_pixelCase ? m_pixIdHelper.load()->eta_module(tsf.associatedDetectorElementIdentifier()) + : m_sctIdHelper.load()->eta_module(tsf.associatedDetectorElementIdentifier()); // return empty cell vector if (pElement) { @@ -88,140 +99,107 @@ bool InDet::DiscOverlapDescriptor::reachableSurfaces(std::vector<Trk::SurfaceInt const Trk::Surface* previousPhi_NextEta = nullptr; const Trk::Surface* nextPhi_NextEta = nullptr; - unsigned int Util = m_singleBinUtils->size() - 1 - etaModule; - - int prevUtil = Util - 1; - int nextUtil = Util + 1; - + std::vector<const Trk::Surface*> surf = m_bin_array->arrayObjects(); size_t offset = 0; - for (unsigned int utils = 0; utils<Util; utils++) { - offset+=(m_singleBinUtils->at(utils))->bins(); - } - - if (prevUtil >= 0) { - - size_t start_previous = offset - (m_singleBinUtils->at(prevUtil))->bins(); - size_t end_previous = offset; - - // look for same/next/previous phi in the ring with smaller eta value. - // If there is an element with exactly the same phi we can return 3 elements - // If there is not an element with exactly the same phi we can return 2 elements (previous/next only) + for (unsigned int bin = 0; bin < m_singleBinUtils->size(); bin++) { + int etamod = m_pixelCase ? m_pixIdHelper.load()->eta_module((*(surf.at(offset))).associatedDetectorElementIdentifier()) : m_sctIdHelper.load()->eta_module((*(surf.at(offset))).associatedDetectorElementIdentifier()); - std::vector<const Trk::Surface*> surf = m_bin_array->arrayObjects(); - - double PrevDeltaPhi = 9999.; - double NextDeltaPhi = -9999.; - - for (size_t prev_Surf = start_previous; prev_Surf < end_previous; prev_Surf++ ) { - - if( tsf.center().phi() == (*(surf.at(prev_Surf))).center().phi() ) - samePhi_PrevEta = surf.at(prev_Surf); - - double DeltaPhi = tsf.center().phi() - (*(surf.at(prev_Surf))).center().phi(); - - if( DeltaPhi < PrevDeltaPhi && DeltaPhi > 0) { - previousPhi_PrevEta = surf.at(prev_Surf); - PrevDeltaPhi = DeltaPhi; - } - - if( DeltaPhi > NextDeltaPhi && DeltaPhi < 0) { - nextPhi_PrevEta = surf.at(prev_Surf); - NextDeltaPhi = DeltaPhi; - } - } - } - - if ((unsigned int)nextUtil < m_singleBinUtils->size()) { - - size_t start_next = offset + (m_singleBinUtils->at(Util))->bins(); - size_t end_next = start_next + (m_singleBinUtils->at(nextUtil))->bins(); - - // look for same/next/previous phi in the ring with bigger eta value. - // If there is an element with exactly the same phi we can return 3 elements - // If there is not an element with exactly the same phi we can return 2 elements (previous/next only) + if (etamod == etaModule || etamod<(etaModule-1) || etamod>(etaModule+1)) { + offset += (m_singleBinUtils->at(bin))->bins(); + continue; + } - std::vector<const Trk::Surface*> surf = m_bin_array->arrayObjects(); - - double PrevDeltaPhi = 9999.; - double NextDeltaPhi = -9999.; - - for (size_t next_Surf = start_next; next_Surf < end_next; next_Surf++ ) { - - if( tsf.center().phi() == (*(surf.at(next_Surf))).center().phi() ) - samePhi_NextEta = surf.at(next_Surf); - - double DeltaPhi = tsf.center().phi() - (*(surf.at(next_Surf))).center().phi(); - - if( DeltaPhi < PrevDeltaPhi && DeltaPhi > 0) { - previousPhi_NextEta = surf.at(next_Surf); - PrevDeltaPhi = DeltaPhi; - } - - if( DeltaPhi > NextDeltaPhi && DeltaPhi < 0) { - nextPhi_NextEta = surf.at(next_Surf); - NextDeltaPhi = DeltaPhi; - } - } + double PrevDeltaPhi = 9999.; + double NextDeltaPhi = -9999.; + for (unsigned int ss = offset; ss < (offset+(m_singleBinUtils->at(bin))->bins()); ss++ ) { + if (etamod == (etaModule-1) ) { + if( tsf.center().phi() == (*(surf.at(ss))).center().phi() ) + samePhi_PrevEta = surf.at(ss); + double DeltaPhi = tsf.center().phi() - (*(surf.at(ss))).center().phi(); + if( DeltaPhi < PrevDeltaPhi && DeltaPhi > 0) { + previousPhi_PrevEta = surf.at(ss); + PrevDeltaPhi = DeltaPhi; + } + if( DeltaPhi > NextDeltaPhi && DeltaPhi < 0) { + nextPhi_PrevEta = surf.at(ss); + NextDeltaPhi = DeltaPhi; + } + } else if (etamod == (etaModule+1) ) { + if( tsf.center().phi() == (*(surf.at(ss))).center().phi() ) + samePhi_NextEta = surf.at(ss); + double DeltaPhi = tsf.center().phi() - (*(surf.at(ss))).center().phi(); + if( DeltaPhi < PrevDeltaPhi && DeltaPhi > 0) { + previousPhi_NextEta = surf.at(ss); + PrevDeltaPhi = DeltaPhi; + } + + if( DeltaPhi > NextDeltaPhi && DeltaPhi < 0) { + nextPhi_NextEta = surf.at(ss); + NextDeltaPhi = DeltaPhi; + } + } + } + offset += (m_singleBinUtils->at(bin))->bins(); } if (samePhi_PrevEta) { - const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(samePhi_PrevEta->associatedDetectorElement()); - if (PhiEta_Element) { - addSurfaceDO(PhiEta_Element,surfaces); - addOtherSideDO(PhiEta_Element, surfaces); - } + const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(samePhi_PrevEta->associatedDetectorElement()); + if (PhiEta_Element) { + addSurfaceDO(PhiEta_Element,surfaces); + addOtherSideDO(PhiEta_Element, surfaces); + } } if (previousPhi_PrevEta) { - const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(previousPhi_PrevEta->associatedDetectorElement()); - if (PhiEta_Element) { - addSurfaceDO(PhiEta_Element,surfaces); - addOtherSideDO(PhiEta_Element, surfaces); - - addPrevInPhiDO(PhiEta_Element,surfaces); - addPrevInPhiDO(PhiEta_Element->prevInPhi(),surfaces); - } + const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(previousPhi_PrevEta->associatedDetectorElement()); + if (PhiEta_Element) { + addSurfaceDO(PhiEta_Element,surfaces); + addOtherSideDO(PhiEta_Element, surfaces); + + addPrevInPhiDO(PhiEta_Element,surfaces); + addPrevInPhiDO(PhiEta_Element->prevInPhi(),surfaces); + } } if (nextPhi_PrevEta) { - const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(nextPhi_PrevEta->associatedDetectorElement()); - if (PhiEta_Element) { - addSurfaceDO(PhiEta_Element,surfaces); - addOtherSideDO(PhiEta_Element, surfaces); - - addNextInPhiDO(PhiEta_Element,surfaces); - addNextInPhiDO(PhiEta_Element->nextInPhi(),surfaces); - } + const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(nextPhi_PrevEta->associatedDetectorElement()); + if (PhiEta_Element) { + addSurfaceDO(PhiEta_Element,surfaces); + addOtherSideDO(PhiEta_Element, surfaces); + + addNextInPhiDO(PhiEta_Element,surfaces); + addNextInPhiDO(PhiEta_Element->nextInPhi(),surfaces); + } } if (samePhi_NextEta) { - const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(samePhi_NextEta->associatedDetectorElement()); - if (PhiEta_Element) { - addSurfaceDO(PhiEta_Element,surfaces); - addOtherSideDO(PhiEta_Element, surfaces); - } + const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(samePhi_NextEta->associatedDetectorElement()); + if (PhiEta_Element) { + addSurfaceDO(PhiEta_Element,surfaces); + addOtherSideDO(PhiEta_Element, surfaces); + } } if (previousPhi_NextEta) { - const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(previousPhi_NextEta->associatedDetectorElement()); - if (PhiEta_Element) { - addSurfaceDO(PhiEta_Element,surfaces); - addOtherSideDO(PhiEta_Element, surfaces); - - addPrevInPhiDO(PhiEta_Element,surfaces); - addPrevInPhiDO(PhiEta_Element->prevInPhi(),surfaces); - } + const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(previousPhi_NextEta->associatedDetectorElement()); + if (PhiEta_Element) { + addSurfaceDO(PhiEta_Element,surfaces); + addOtherSideDO(PhiEta_Element, surfaces); + + addPrevInPhiDO(PhiEta_Element,surfaces); + addPrevInPhiDO(PhiEta_Element->prevInPhi(),surfaces); + } } if (nextPhi_NextEta) { - const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(nextPhi_NextEta->associatedDetectorElement()); - if (PhiEta_Element) { - addSurfaceDO(PhiEta_Element,surfaces); - addOtherSideDO(PhiEta_Element, surfaces); - - addNextInPhiDO(PhiEta_Element,surfaces); - addNextInPhiDO(PhiEta_Element->nextInPhi(),surfaces); - } + const InDetDD::SiDetectorElement* PhiEta_Element = dynamic_cast<const InDetDD::SiDetectorElement*>(nextPhi_NextEta->associatedDetectorElement()); + if (PhiEta_Element) { + addSurfaceDO(PhiEta_Element,surfaces); + addOtherSideDO(PhiEta_Element, surfaces); + + addNextInPhiDO(PhiEta_Element,surfaces); + addNextInPhiDO(PhiEta_Element->nextInPhi(),surfaces); + } } } } @@ -229,3 +207,24 @@ bool InDet::DiscOverlapDescriptor::reachableSurfaces(std::vector<Trk::SurfaceInt return false; } + +bool InDet::DiscOverlapDescriptor::dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const { + std::cout << "Dumping Surfaces for "<< (m_pixelCase ? "Pixel " : "SCT ") << "with size = " << surfaces.size() << std::endl; + for (unsigned int surf = 0; surf < surfaces.size(); surf++) { + Identifier hitId = ((surfaces.at(surf)).object)->associatedDetectorElementIdentifier(); + if (m_pixelCase) + std::cout << "barrel_ec " << m_pixIdHelper.load()->barrel_ec(hitId) + << ", layer_disk " << m_pixIdHelper.load()->layer_disk(hitId) + << ", phi_module " << m_pixIdHelper.load()->phi_module(hitId) + << ", eta_module " << m_pixIdHelper.load()->eta_module(hitId) << std::endl; + else + std::cout << "barrel_ec " << m_sctIdHelper.load()->barrel_ec(hitId) + << ", layer_disk " << m_sctIdHelper.load()->layer_disk(hitId) + << ", phi_module " << m_sctIdHelper.load()->phi_module(hitId) + << ", eta_module " << m_sctIdHelper.load()->eta_module(hitId) + << ", side " << m_sctIdHelper.load()->side(hitId) << std::endl; + } + return true; +} + + diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/PixelOverlapDescriptor.cxx b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/PixelOverlapDescriptor.cxx index 9ae8d40e262a061f6c67cb68b6ef59a7aca1ab98..e614a33efff94200d6e5d8774578da5e41a4c735 100644 --- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/PixelOverlapDescriptor.cxx +++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/PixelOverlapDescriptor.cxx @@ -11,12 +11,18 @@ // InDet #include "InDetReadoutGeometry/SiDetectorElement.h" #include "InDetTrackingGeometry/PixelOverlapDescriptor.h" +#include "InDetIdentifier/PixelID.h" // Trk #include "TrkSurfaces/Surface.h" +// +#include "StoreGate/StoreGateSvc.h" +#include "InDetIdentifier/PixelID.h" -InDet::PixelOverlapDescriptor::PixelOverlapDescriptor() - : m_robustMode(true) -{} +InDet::PixelOverlapDescriptor::PixelOverlapDescriptor(bool addMoreSurfaces, int eta_slices, int phi_slices): + m_robustMode(true), + m_addMoreSurfaces(addMoreSurfaces), + m_etaSlices(eta_slices), + m_phiSlices(phi_slices) {} /** get the compatible surfaces */ bool @@ -41,6 +47,9 @@ InDet::PixelOverlapDescriptor::reachableSurfaces( size_t newCapacity = cSurfaces.size(); if (m_robustMode) { newCapacity += 8; + } else if (m_addMoreSurfaces and sElement->isBarrel()) { + // sum up the defined slices to evaluate the new capacity + newCapacity += (2*m_phiSlices+ 2*(m_etaSlices*(2*m_phiSlices+1))); } else { newCapacity += 1; if (sElement->isBarrel()) { @@ -70,6 +79,69 @@ InDet::PixelOverlapDescriptor::reachableSurfaces( nElement = sElement->prevInPhi(); addNextInEta(nElement, cSurfaces); addPrevInEta(nElement, cSurfaces); + + if (m_addMoreSurfaces and sElement->isBarrel()) { + + unsigned int next = 1; + const InDetDD::SiDetectorElement* currentElement = sElement->nextInEta(); + while (currentElement and next<(unsigned int)m_etaSlices) { + addNextInEta(currentElement,cSurfaces); + currentElement = currentElement->nextInEta(); + if (currentElement) { + addNextInPhi(currentElement,cSurfaces); + addPrevInPhi(currentElement,cSurfaces); + } + next++; + } + + unsigned int prev = 1; + currentElement = sElement->prevInEta(); + while (currentElement and prev<(unsigned int)m_etaSlices) { + addPrevInEta(currentElement,cSurfaces); + currentElement = currentElement->prevInEta(); + if (currentElement) { + addNextInPhi(currentElement,cSurfaces); + addPrevInPhi(currentElement,cSurfaces); + } + prev++; + } + + unsigned int next_phi = 0; + const InDetDD::SiDetectorElement* currentElementNextPhi = sElement->nextInPhi()->nextInPhi(); + const InDetDD::SiDetectorElement* currentElementPrevPhi = sElement->prevInPhi()->prevInPhi(); + + while (next_phi<(unsigned int)m_phiSlices) { + addSurface(currentElementNextPhi,cSurfaces); + addSurface(currentElementPrevPhi,cSurfaces); + + unsigned int next_eta = 0; + const InDetDD::SiDetectorElement* currentElement_nextPhi = currentElementNextPhi; + const InDetDD::SiDetectorElement* currentElement_prevPhi = currentElementPrevPhi; + while (currentElement_nextPhi and currentElement_prevPhi and next_eta<(unsigned int)m_etaSlices) { + addNextInEta(currentElement_nextPhi,cSurfaces); + currentElement_nextPhi = currentElement_nextPhi->nextInEta(); + addNextInEta(currentElement_prevPhi,cSurfaces); + currentElement_prevPhi = currentElement_prevPhi->nextInEta(); + next_eta++; + } + + unsigned int prev_eta = 0; + currentElement_nextPhi = currentElementNextPhi; + currentElement_prevPhi = currentElementPrevPhi; + while (currentElement_nextPhi and currentElement_prevPhi and prev_eta<(unsigned int)m_etaSlices) { + addPrevInEta(currentElement_nextPhi,cSurfaces); + currentElement_nextPhi = currentElement_nextPhi->prevInEta(); + addPrevInEta(currentElement_prevPhi,cSurfaces); + currentElement_prevPhi = currentElement_prevPhi->prevInEta(); + prev_eta++; + } + + currentElementNextPhi = currentElementNextPhi->nextInPhi(); + currentElementPrevPhi = currentElementPrevPhi->prevInPhi(); + + next_phi++; + } + } } else { // we go next in phi if (surfacePhi < positionPhi) { @@ -99,3 +171,28 @@ InDet::PixelOverlapDescriptor::reachableSurfaces( return false; } +bool InDet::PixelOverlapDescriptor::dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const { + + if (m_pixIdHelper==nullptr) { + ISvcLocator* svcLocator = Gaudi::svcLocator(); + + // get DetectorStore service + StoreGateSvc* detStore = nullptr; + if (svcLocator->service("DetectorStore", detStore).isFailure()) { + return false; + } + + const PixelID* pixIdHelper = nullptr; + if (detStore->retrieve(pixIdHelper, "PixelID").isFailure()) { + return false; + } + m_pixIdHelper = pixIdHelper; + } + + std::cout << "Dumping Surfaces for Pixel with size = " << surfaces.size() << std::endl; + for (unsigned int surf = 0; surf < surfaces.size(); surf++) { + Identifier hitId = ((surfaces.at(surf)).object)->associatedDetectorElementIdentifier(); + std::cout << "barrel_ec " << m_pixIdHelper.load()->barrel_ec(hitId) << ", layer_disk " << m_pixIdHelper.load()->layer_disk(hitId) << ", phi_module " << m_pixIdHelper.load()->phi_module(hitId) << ", eta_module " << m_pixIdHelper.load()->eta_module(hitId) << std::endl; + } + return true; +} diff --git a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/SCT_OverlapDescriptor.cxx b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/SCT_OverlapDescriptor.cxx index e9aa4ed8c9fa98eb348b3c8c4ffc821d18be85a9..2155f4808f3b9de8fd2e483d4849e829989365fb 100644 --- a/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/SCT_OverlapDescriptor.cxx +++ b/InnerDetector/InDetDetDescr/InDetTrackingGeometry/src/SCT_OverlapDescriptor.cxx @@ -11,8 +11,12 @@ // InDet #include "InDetReadoutGeometry/SiDetectorElement.h" #include "InDetTrackingGeometry/SCT_OverlapDescriptor.h" +#include "InDetIdentifier/SCT_ID.h" // Trk #include "TrkSurfaces/Surface.h" +// +#include "StoreGate/StoreGateSvc.h" +#include "InDetIdentifier/SCT_ID.h" InDet::SCT_OverlapDescriptor::SCT_OverlapDescriptor() : m_robustMode(true) @@ -101,3 +105,31 @@ InDet::SCT_OverlapDescriptor::reachableSurfaces( return false; } +bool InDet::SCT_OverlapDescriptor::dumpSurfaces(std::vector<Trk::SurfaceIntersection>& surfaces) const { + + if (m_sctIdHelper==nullptr) { + ISvcLocator* svcLocator = Gaudi::svcLocator(); + + // get DetectorStore service + StoreGateSvc* detStore = nullptr; + if (svcLocator->service("DetectorStore", detStore).isFailure()) { + return false; + } + + const SCT_ID* sctIdHelper = nullptr; + if (detStore->retrieve(sctIdHelper, "SCT_ID").isFailure()) { + return false; + } + m_sctIdHelper = sctIdHelper; + } + + std::cout << "Dumping Surfaces for SCT with size = " << surfaces.size() << std::endl; + for (unsigned int surf = 0; surf < surfaces.size(); surf++) { + Identifier hitId = ((surfaces.at(surf)).object)->associatedDetectorElementIdentifier(); + std::cout << "barrel_ec " << m_sctIdHelper.load()->barrel_ec(hitId) + << ", layer_disk " << m_sctIdHelper.load()->layer_disk(hitId) << ", phi_module " << m_sctIdHelper.load()->phi_module(hitId) + << ", eta_module " << m_sctIdHelper.load()->eta_module(hitId) << ", side " << m_sctIdHelper.load()->side(hitId) <<std::endl; + } + return true; +} + diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonGenericTracksAlgCfg.py b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonGenericTracksAlgCfg.py index bb4daf947445650d0dfad00a187e6439856ffe55..781fb3486f1a6a51364a6163ce0ec09e5b8304af 100644 --- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonGenericTracksAlgCfg.py +++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonGenericTracksAlgCfg.py @@ -27,7 +27,7 @@ def IDAlignMonGenericTracksAlgCfg(helper, alg, **kwargs): # this creates a "genericTrackGroup" called "alg" which will put its histograms into the subdirectory "GenericTracks" genericTrackGroup = helper.addGroup(alg, 'Tracks') - pathtrack = '/IDAlignMon/ExtendendTracks_NoTriggerSelection/GenericTracks' + pathtrack = '/IDAlignMon/ExtendedTracks_NoTriggerSelection/GenericTracks' varName = 'm_lb;LumiBlock' title = 'Lumiblock' diff --git a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonResidualsAlgCfg.py b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonResidualsAlgCfg.py index 59cbd5e66a15556628c81822910dcb4213d04417..1ae6ce8ef23fbeb5c1e353aa63edbd2e0a91f196 100644 --- a/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonResidualsAlgCfg.py +++ b/InnerDetector/InDetMonitoring/InDetAlignmentMonitoringRun3/python/IDAlignMonResidualsAlgCfg.py @@ -22,7 +22,7 @@ def IDAlignMonResidualsAlgCfg(helper, alg, **kwargs): # this creates a "residualGroup" called "alg" which will put its histograms into the subdirectory "Residuals" residualGroup = helper.addGroup(alg, 'Residuals') - pathResiduals = '/IDAlignMon/ExtendendTracks_NoTriggerSelection/Residuals' + pathResiduals = '/IDAlignMon/ExtendedTracks_NoTriggerSelection/Residuals' # Histograms for the Alignment Residual monitoring: varName = 'm_mu;mu_perEvent' diff --git a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetAdaptiveMultiPriVxFinderTool.cxx b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetAdaptiveMultiPriVxFinderTool.cxx index bf541a0dc6bb43803903d38503260fab75973344..0a709419daf1d9a5a07e45325904f758f9a3872a 100755 --- a/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetAdaptiveMultiPriVxFinderTool.cxx +++ b/InnerDetector/InDetRecTools/InDetPriVxFinderTool/src/InDetAdaptiveMultiPriVxFinderTool.cxx @@ -758,8 +758,8 @@ InDetAdaptiveMultiPriVxFinderTool::findVertex( hepVectorPosition[0] = deltaPosition.x(); hepVectorPosition[1] = deltaPosition.y(); hepVectorPosition[2] = deltaPosition.z(); - dependence = std::sqrt( - hepVectorPosition.dot(sumCovariances * hepVectorPosition)); + double interim=hepVectorPosition.dot(sumCovariances * hepVectorPosition); + if(interim>0.)dependence = std::sqrt(interim); } } if (dependence < m_cutVertexDependence) { deleteLastVertex = true; diff --git a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.h b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.h index 2988113d4a50d2ed93b2ec1e484108bb3edb584d..4f79d083614e6bff4c636492e426130eb6db4683 100644 --- a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.h +++ b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.h @@ -114,10 +114,10 @@ namespace InDetAccessor { // summary accessor template <typename T_TrkHelper> - uint8_t getSummary(const T_TrkHelper helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType sumType); + uint8_t getSummary(const T_TrkHelper & helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType sumType); template <> - inline uint8_t getSummary(const TrackParticleHelper helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType summaryType) { + inline uint8_t getSummary(const TrackParticleHelper & helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType summaryType) { uint8_t summaryValue = 0; if (!helper.track().summaryValue(summaryValue, summaryType)) { IDTRKSEL_MSG_DEBUG( "Failed to get SummaryType " << std::to_string(summaryType) << " from xAOD::TrackParticle summary. A value of zero will be used instead." ); @@ -128,7 +128,7 @@ namespace InDetAccessor { #ifndef XAOD_ANALYSIS template <> - inline uint8_t getSummary(const TrkTrackHelper helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType summaryType) { + inline uint8_t getSummary(const TrkTrackHelper & helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType summaryType) { Int_t summaryTypeInt = static_cast<Int_t>(summaryType); Int_t checkSummaryValue = helper.summary().get( static_cast<Trk::SummaryType>(summaryTypeInt) ); if (checkSummaryValue < 0) { @@ -152,16 +152,16 @@ namespace InDetAccessor { // fit quality accessor template <typename Trk_Helper> - double getFitChiSquare(const Trk_Helper helper, asg::AsgMessaging &msgHelper); + double getFitChiSquare(const Trk_Helper & helper, asg::AsgMessaging &msgHelper); template <> - inline double getFitChiSquare(const TrackParticleHelper helper, asg::AsgMessaging &) { + inline double getFitChiSquare(const TrackParticleHelper & helper, asg::AsgMessaging &) { return helper.track().chiSquared(); } #ifndef XAOD_ANALYSIS template <> - inline double getFitChiSquare(const TrkTrackHelper helper, asg::AsgMessaging &msgHelper) { + inline double getFitChiSquare(const TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) { if (!helper.track().fitQuality()) { IDTRKSEL_MSG_WARNING( "Zero pointer to fit quality received." ); return std::nan(""); @@ -171,16 +171,16 @@ namespace InDetAccessor { #endif template <typename TrkHelper> - double getFitNDoF(const TrkHelper helper, asg::AsgMessaging &msgHelper); + double getFitNDoF(const TrkHelper & helper, asg::AsgMessaging &msgHelper); template <> - inline double getFitNDoF(const TrackParticleHelper helper, asg::AsgMessaging &) { + inline double getFitNDoF(const TrackParticleHelper & helper, asg::AsgMessaging &) { return helper.track().numberDoF(); } #ifndef XAOD_ANALYSIS template <> - inline double getFitNDoF(const TrkTrackHelper helper, asg::AsgMessaging &msgHelper) { + inline double getFitNDoF(const TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) { if (!helper.track().fitQuality()) { IDTRKSEL_MSG_WARNING( "Zero pointer to fit quality received." ); return std::nan(""); @@ -192,10 +192,10 @@ namespace InDetAccessor { // eProbabilityHT accessor template <typename Trk_Helper> - float getEProbabilityHT(const Trk_Helper helper, asg::AsgMessaging &msgHelper); + float getEProbabilityHT(const Trk_Helper & helper, asg::AsgMessaging &msgHelper); template <> - inline float getEProbabilityHT(const TrackParticleHelper helper, asg::AsgMessaging &msgHelper) { + inline float getEProbabilityHT(const TrackParticleHelper & helper, asg::AsgMessaging &msgHelper) { float eProbHT =0.f; if (!helper.track().summaryValue(eProbHT, xAOD::SummaryType::eProbabilityHT)) { IDTRKSEL_MSG_DEBUG( "Failed to get eProbabilityHT from xAOD::TrackParticle summary. A value of zero will be used instead." ); @@ -206,7 +206,7 @@ namespace InDetAccessor { #ifndef XAOD_ANALYSIS template <> - inline float getEProbabilityHT(const TrkTrackHelper helper, asg::AsgMessaging &msgHelper) { + inline float getEProbabilityHT(const TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) { float eProbHT; if (!helper.hasSummaryOrError(msgHelper)) { eProbHT = 0.f; @@ -225,7 +225,7 @@ namespace InDetAccessor { //defining parameters accessor template <short index> - inline double getDefiningParameters(TrackParticleHelper helper, asg::AsgMessaging &) { + inline double getDefiningParameters(TrackParticleHelper helper, asg::AsgMessaging &) { static_assert(index<5); double param = helper.track().definingParameters()[index]; if (index==1) { @@ -238,7 +238,8 @@ namespace InDetAccessor { #ifndef XAOD_ANALYSIS template <short index> - inline double getDefiningParameters(TrkTrackHelper helper, asg::AsgMessaging &msgHelper) { + //cppcheck-suppress passedByValue + inline double getDefiningParameters(TrkTrackHelper helper, asg::AsgMessaging &msgHelper) { assert(index<5); return helper.hasPerigeeOrError(msgHelper) ? helper.perigee()->parameters()[index] : std::nan(""); } @@ -246,33 +247,33 @@ namespace InDetAccessor { // defining parameters covariance accessor template <typename Trk_Helper> - inline double getDefiningParametersCov(Trk_Helper helper, [[maybe_unused]] asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j); + inline double getDefiningParametersCov(Trk_Helper & helper, [[maybe_unused]] asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j); template <> - inline double getDefiningParametersCov(TrackParticleHelper helper, [[maybe_unused]] asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j) { + inline double getDefiningParametersCov(TrackParticleHelper & helper, [[maybe_unused]] asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j) { assert( index_i<5 && index_j<5); return helper.track().definingParametersCovMatrix()(index_i, index_j); } #ifndef XAOD_ANALYSIS template <> - inline double getDefiningParametersCov(TrkTrackHelper helper, asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j) { + inline double getDefiningParametersCov(TrkTrackHelper & helper, asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j) { assert( index_i<5 && index_j<5); return helper.hasPerigeeOrError(msgHelper) ? (*helper.perigee()->covariance())(index_i, index_j) : std::nan(""); } #endif template <typename Trk_Helper> - inline Int_t getNumberOfUsedHitsdEdx(Trk_Helper helper, asg::AsgMessaging &msgHelper); + inline Int_t getNumberOfUsedHitsdEdx(Trk_Helper & helper, asg::AsgMessaging &msgHelper); template <> - inline Int_t getNumberOfUsedHitsdEdx(TrackParticleHelper helper, [[maybe_unused]] asg::AsgMessaging &msgHelper) { + inline Int_t getNumberOfUsedHitsdEdx(TrackParticleHelper & helper, [[maybe_unused]] asg::AsgMessaging &msgHelper) { return helper.track().numberOfUsedHitsdEdx(); } #ifndef XAOD_ANALYSIS template <> - inline Int_t getNumberOfUsedHitsdEdx(TrkTrackHelper helper, asg::AsgMessaging &msgHelper) { + inline Int_t getNumberOfUsedHitsdEdx(TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) { int n_used_hits; if (!helper.hasSummaryOrError(msgHelper)) { n_used_hits=0; @@ -290,16 +291,16 @@ namespace InDetAccessor { #endif template <typename Trk_Helper> - inline Int_t getNumberOfIBLOverflowsdEdx(Trk_Helper helper, asg::AsgMessaging &msgHelper); + inline Int_t getNumberOfIBLOverflowsdEdx(Trk_Helper & helper, asg::AsgMessaging &msgHelper); template <> - inline Int_t getNumberOfIBLOverflowsdEdx(TrackParticleHelper helper, [[maybe_unused]] asg::AsgMessaging &msgHelper) { + inline Int_t getNumberOfIBLOverflowsdEdx(TrackParticleHelper & helper, [[maybe_unused]] asg::AsgMessaging &msgHelper) { return helper.track().numberOfUsedHitsdEdx(); } #ifndef XAOD_ANALYSIS template <> - inline Int_t getNumberOfIBLOverflowsdEdx(TrkTrackHelper helper, asg::AsgMessaging &msgHelper) { + inline Int_t getNumberOfIBLOverflowsdEdx(TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) { int n_overflow_hits; if (!helper.hasSummaryOrError(msgHelper)) { n_overflow_hits=0; @@ -320,10 +321,10 @@ namespace InDetAccessor { std::tuple<uint8_t,uint8_t> getSiHitsTopBottom( const Trk::Track& track, asg::AsgMessaging &msgHelper); template <typename Trk_Helper> - inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(Trk_Helper helper, asg::AsgMessaging &msgHelper); + inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(Trk_Helper & helper, asg::AsgMessaging &msgHelper); template <> - inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(TrackParticleHelper helper, asg::AsgMessaging &msgHelper) { + inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(TrackParticleHelper & helper, asg::AsgMessaging &msgHelper) { const Trk::Track* trkTrack = helper.track().track(); if (!trkTrack) { IDTRKSEL_MSG_WARNING( "xAOD::TrackParticle has a null pointer to a Trk::Track." ); @@ -336,7 +337,7 @@ namespace InDetAccessor { } template <> - inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(TrkTrackHelper helper, asg::AsgMessaging &msgHelper) { + inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) { return getSiHitsTopBottom(helper.track(),msgHelper); } #endif diff --git a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/util/InDetTrackSelectionToolTester.cxx b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/util/InDetTrackSelectionToolTester.cxx index a1261c039ef2c8a981a69b72951436e16825cc95..70d6c2415f655a59b4ee527e805aae3d95adf5a3 100644 --- a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/util/InDetTrackSelectionToolTester.cxx +++ b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/util/InDetTrackSelectionToolTester.cxx @@ -32,6 +32,8 @@ struct HistFamily public: HistFamily(const string&); void fill(const xAOD::TrackParticle&, const xAOD::Vertex*); + HistFamily(const HistFamily &) = delete; + HistFamily & operator =(const HistFamily &) = delete; private: TH2* h_pt = nullptr; // these show eta dependence TH2* h_si_hits_phys = nullptr; diff --git a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ElectronPidToolRun2.cxx b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ElectronPidToolRun2.cxx index 42b183dce8fb135ea2a2dd454883060b198641ea..1e1c68b0ac3c3d80c249b0a989af6d824e857845 100644 --- a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ElectronPidToolRun2.cxx +++ b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ElectronPidToolRun2.cxx @@ -111,7 +111,7 @@ StatusCode InDet::TRT_ElectronPidToolRun2::initialize() ATH_CHECK( m_HTReadKey.initialize() ); - ATH_CHECK( m_TRTPIDNNReadKey.initialize() ); + ATH_CHECK( m_TRTPIDNNReadKey.initialize(m_calculateNN) ); CHECK( m_TRTStrawSummaryTool.retrieve() ); if ( !m_TRTStrawSummaryTool.empty()) ATH_MSG_INFO( "Retrieved tool " << m_TRTStrawSummaryTool); diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/addTruthJets.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/addTruthJets.py index c4ab9bd0900aa67784a8b5ac632b3cab4e3a536e..4105fc22da38325ffe959630307a656da138c724 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/addTruthJets.py +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/addTruthJets.py @@ -37,12 +37,12 @@ def addTruthJetsIfNotExising(truth_jets_name): alg_param_str = extract_alg.group(2) else: alg_type = 'AntiKt' - alg_param_str = 4 + alg_param_str = "4" jet_finder_alg_name = "jetalg"+alg_type+alg_param_str+'TruthJets' # add the jet finder unless it exists already in the alg sequence - from InDetPhysValDecoration import findAlg, findMonMan + from InDetPhysValMonitoring.InDetPhysValDecoration import findAlg, findMonMan alg_pos = findAlg([jet_finder_alg_name]) if alg_pos is None: from JetRec.JetRecStandard import jtm diff --git a/LArCalorimeter/LArCafJobs/src/LArShapeDumper.cxx b/LArCalorimeter/LArCafJobs/src/LArShapeDumper.cxx index 9b85cf9e1aa8f87521a4e9e9a38b93b75b5d238a..76ff131554edbf0a0789b806fe6abc7f989504f0 100755 --- a/LArCalorimeter/LArCafJobs/src/LArShapeDumper.cxx +++ b/LArCalorimeter/LArCafJobs/src/LArShapeDumper.cxx @@ -165,10 +165,9 @@ StatusCode LArShapeDumper::start() unsigned int idx = 0; if (m_doAllLvl1) { - m_trigDec->ExperimentalAndExpertMethods()->enable(); const Trig::ChainGroup* group = m_trigDec->getChainGroup("L1_.*"); for (const std::string& l1Item : group->getListOfTriggers()) { - const TrigConf::TriggerItem* confItem = m_trigDec->ExperimentalAndExpertMethods()->getItemConfigurationDetails(l1Item); + const TrigConf::TriggerItem* confItem = m_trigDec->ExperimentalAndExpertMethods().getItemConfigurationDetails(l1Item); if (!confItem) { ATH_MSG_WARNING ( "LVL1 item " << l1Item << ", obtained from TrigConfig, cannot be retrieved!" ); continue; diff --git a/LArCalorimeter/LArCellRec/share/LArCellDeadOTXCorr_test.ref b/LArCalorimeter/LArCellRec/share/LArCellDeadOTXCorr_test.ref index cd21178b8678ebaf10bf0d588fc2a6dfc6402d1b..7c9424f1e27dc550641fb67744299ce12967e5e7 100644 --- a/LArCalorimeter/LArCellRec/share/LArCellDeadOTXCorr_test.ref +++ b/LArCalorimeter/LArCellRec/share/LArCellDeadOTXCorr_test.ref @@ -367,7 +367,7 @@ RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store DetectorStore WARNING retrieve(default): No valid proxy for default object of type TileDetDescrManager(CLID 2941) -CaloMgrDetDescrCnvWARNING Could not get the TileDetectorManager. No Calo Elements will be built for Tile +buildCaloDetDescr WARNING Could not get the TileDetectorManager. No Calo Elements will be built for Tile Domain[ROOT_All] INFO -> Access DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond08/cond08_mc.000003.gen.COND/cond08_mc.000003.gen.COND._0064.pool.root File version:52200 diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRawCalibDataReadingAlg.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRawCalibDataReadingAlg.cxx index b7922b162ac2c46c3ee79eba4a2f99a2484e5f5f..f468ea02c3335269e0299dc6ff1b26e7e09c08fb 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRawCalibDataReadingAlg.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRawCalibDataReadingAlg.cxx @@ -76,6 +76,19 @@ LArRawCalibDataReadingAlg::LArRawCalibDataReadingAlg(const std::string& name, IS ATH_CHECK(m_CLKey.initialize()); + + //Fill FT list if only Barrel/EC and side is given: + if (m_vBEPreselection.size() && m_vPosNegPreselection.size() && m_vFTPreselection.size()==0) { + std::set<unsigned> fts; + if (std::find(m_vBEPreselection.begin(),m_vBEPreselection.end(),0)!=m_vBEPreselection.end()) { //Barrel selected + fts.insert({0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}); + } + if (std::find(m_vBEPreselection.begin(),m_vBEPreselection.end(),1)!=m_vBEPreselection.end()) { //Endcap selected + fts.insert({0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}); + } + m_vFTPreselection.value().insert(m_vFTPreselection.begin(),fts.begin(),fts.end()); + } + //Build list of preselected Feedthroughs if (m_vBEPreselection.size() && m_vPosNegPreselection.size() && m_vFTPreselection.size()) { ATH_MSG_INFO("Building list of selected feedthroughs"); diff --git a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArAutoCorrSubsetCnv_p1.cxx b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArAutoCorrSubsetCnv_p1.cxx index cdc6dde58b4165939f6c96bef2c978b95795438e..942274c42b3df05e2f74db1059c4cf05a20636fb 100644 --- a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArAutoCorrSubsetCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArAutoCorrSubsetCnv_p1.cxx @@ -263,7 +263,7 @@ LArAutoCorrSubsetCnv_p1::transToPers(const LArAutoCorrTransType* transObj, saveAutoCorrs = false; } // Save chansSet - if (j == (chansOffset + 31)) { + if (j == (chansOffset + 31) || j == nfebChans - 1) { persObj->m_subset.m_febsWithSparseData.push_back(chansSet); chansSet = 0; chansOffset += 32; diff --git a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArCaliWaveSubsetCnv_p2.cxx b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArCaliWaveSubsetCnv_p2.cxx index 6a463f4b1fba74bf0d28dab3699c8cb0b5ea4516..dcce16ee7547295c27cf33a9b69e03cc081e0dc7 100644 --- a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArCaliWaveSubsetCnv_p2.cxx +++ b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArCaliWaveSubsetCnv_p2.cxx @@ -275,7 +275,7 @@ LArCaliWaveSubsetCnv_p2::transToPers(const LArCWTransType* transObj, LArCaliWav } // Save chansSet - if (j == (chansOffset + 31)) { + if (j == (chansOffset + 31) || j == nfebChans-1 ) { persObj->m_subset.m_febsWithSparseData.push_back(chansSet); chansSet = 0; chansOffset += 32; diff --git a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArCaliWaveSubsetCnv_p3.cxx b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArCaliWaveSubsetCnv_p3.cxx index 78bbf359f8af5316480476f662d618413b5ae3d4..bd515d36796a2523c07ee7d748ae7fb67b24364a 100644 --- a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArCaliWaveSubsetCnv_p3.cxx +++ b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArCaliWaveSubsetCnv_p3.cxx @@ -259,7 +259,7 @@ LArCaliWaveSubsetCnv_p3::transToPers(const LArCWTransType* transObj, LArCaliWav } // Save chansSet - if (j == (chansOffset + 31)) { + if (j == (chansOffset + 31) || j == nfebChans-1 ) { persObj->m_subset.m_febsWithSparseData.push_back(chansSet); chansSet = 0; chansOffset += 32; diff --git a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArOFCSubsetCnv_p1.cxx b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArOFCSubsetCnv_p1.cxx index f16fbb2952a12b0b02d78d3ed309fc6098945e8e..87958db857b2ad60ab1ce5ef31e18456a63f0c31 100644 --- a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArOFCSubsetCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArOFCSubsetCnv_p1.cxx @@ -305,7 +305,7 @@ LArOFCSubsetCnv_p1::transToPers(const LArOFCTransType* transObj, saveOFCs = false; } // Save chansSet - if (j == (chansOffset + 31)) { + if (j == (chansOffset + 31) || j == nfebChans-1) { persObj->m_subset.m_febsWithSparseData.push_back(chansSet); chansSet = 0; chansOffset += 32; diff --git a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArPhysWaveSubsetCnv_p1.cxx b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArPhysWaveSubsetCnv_p1.cxx index 1375e24f7f302663c7855a8224d1efd140539f40..38d207f62bc32562e66bf4241a73d6dbdcc1a9ec 100644 --- a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArPhysWaveSubsetCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArPhysWaveSubsetCnv_p1.cxx @@ -254,7 +254,7 @@ LArPhysWaveSubsetCnv_p1::transToPers(const LArPWTransType* transObj, } // Save chansSet - if (j == (chansOffset + 31)) { + if (j == (chansOffset + 31) || j == nfebChans-1 ) { persObj->m_subset.m_febsWithSparseData.push_back(chansSet); chansSet = 0; chansOffset += 32; diff --git a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArRampSubsetCnv_p1.cxx b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArRampSubsetCnv_p1.cxx index 0bb33467201c1382c4e0d1cb2538bae764e8a3e7..1403b5d446fdb6ab38f8fb6a37d3be79853de1b1 100644 --- a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArRampSubsetCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArRampSubsetCnv_p1.cxx @@ -281,7 +281,7 @@ LArRampSubsetCnv_p1::transToPers(const LArRampTransType* transObj, saveRamps = false; } // Save chansSet - if (j == (chansOffset + 31)) { + if (j == (chansOffset + 31) || j == nfebChans-1 ) { persObj->m_subset.m_febsWithSparseData.push_back(chansSet); chansSet = 0; chansOffset += 32; diff --git a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArShapeSubsetCnv_p1.cxx b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArShapeSubsetCnv_p1.cxx index 99c87d33469f331c66381768b88d7565e6282c53..b659d9985ddcf377e0d0ddb2d3e83f389d93bdb7 100644 --- a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArShapeSubsetCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArShapeSubsetCnv_p1.cxx @@ -310,7 +310,7 @@ LArShapeSubsetCnv_p1::transToPers(const LArShapeTransType1* transObj, saveShapes = false; } // Save chansSet - if (j == (chansOffset + 31)) { + if (j == (chansOffset + 31) || j == nfebChans-1) { persObj->m_subset.m_febsWithSparseData.push_back(chansSet); chansSet = 0; chansOffset += 32; diff --git a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArShapeSubsetCnv_p2.cxx b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArShapeSubsetCnv_p2.cxx index e1207dd65c9fda3eb24c9b592fa731ff85edbcf8..46fafbde13c75a63953f8ef338d1e7e784ee3995 100644 --- a/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArShapeSubsetCnv_p2.cxx +++ b/LArCalorimeter/LArCnv/LArCondTPCnv/src/LArShapeSubsetCnv_p2.cxx @@ -321,7 +321,7 @@ LArShapeSubsetCnv_p2::transToPers(const LArShapeTransType2* transObj, saveShapes = false; } // Save chansSet - if (j == (chansOffset + 31)) { + if (j == (chansOffset + 31) || j == nfebChans-1 ) { persObj->m_subset.m_febsWithSparseData.push_back(chansSet); chansSet = 0; chansOffset += 32; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/ATLAS_CHECK_THREAD_SAFETY b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..3bbe2d07517416c843ce967ce5b2f007896a2b26 --- /dev/null +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +LArCalorimeter/LArCnv/LArTPCnv diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArDigitContainerCnv_p1.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArDigitContainerCnv_p1.h index e52fabba2560acc6356caf12246e1adaac3111f6..5cf32b0e3c91b585a7796e5db4d82047b0c6afd4 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArDigitContainerCnv_p1.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArDigitContainerCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARDIGITCONTAINERCNV_P1_H @@ -12,14 +12,16 @@ class MsgStream; class LArDigitContainer; //class LArDigitContainer_p1; -class LArDigitContainerCnv_p1 : public T_AthenaPoolTPCnvBase<LArDigitContainer, LArDigitContainer_p1> +class LArDigitContainerCnv_p1 : public T_AthenaPoolTPCnvConstBase<LArDigitContainer, LArDigitContainer_p1> { public: LArDigitContainerCnv_p1() {} + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArDigitContainer_p1* pers, LArDigitContainer* trans, MsgStream &log); - virtual void transToPers(const LArDigitContainer* trans, LArDigitContainer_p1* pers, MsgStream &log); + virtual void persToTrans(const LArDigitContainer_p1* pers, LArDigitContainer* trans, MsgStream &log) const override; + virtual void transToPers(const LArDigitContainer* trans, LArDigitContainer_p1* pers, MsgStream &log) const override; }; #endif diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArDigitContainerCnv_p2.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArDigitContainerCnv_p2.h index f44ef8445deef07071e375866b166ec7fcf06285..ddec76d920f76ff8ed8345c57691f28012691d09 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArDigitContainerCnv_p2.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArDigitContainerCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARDIGITCONTAINERCNV_P2_H @@ -12,16 +12,18 @@ class MsgStream; class LArDigitContainer; class LArOnlineID_Base; -class LArDigitContainerCnv_p2 : public T_AthenaPoolTPCnvBase<LArDigitContainer, LArDigitContainer_p2> +class LArDigitContainerCnv_p2 : public T_AthenaPoolTPCnvConstBase<LArDigitContainer, LArDigitContainer_p2> { public: LArDigitContainerCnv_p2(const LArOnlineID_Base* idHelper); + using base_class::persToTrans; + using base_class::transToPers; virtual void persToTrans(const LArDigitContainer_p2* pers, LArDigitContainer* trans, - MsgStream &log); + MsgStream &log) const override; virtual void transToPers(const LArDigitContainer* trans, LArDigitContainer_p2* pers, - MsgStream &log); + MsgStream &log) const override; private: const LArOnlineID_Base* m_idHelper; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArFebErrorSummaryCnv_p1.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArFebErrorSummaryCnv_p1.h index ed4a10af24d591b4706e10c930d98072b291eec5..f9e64d95705fde3a331ed4b02958ee3d3d9d3018 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArFebErrorSummaryCnv_p1.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArFebErrorSummaryCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -14,12 +14,15 @@ // author G.Unal class MsgStream; -class LArFebErrorSummaryCnv_p1 : public T_AthenaPoolTPCnvBase<LArFebErrorSummary, LArFebErrorSummary_p1> +class LArFebErrorSummaryCnv_p1 : public T_AthenaPoolTPCnvConstBase<LArFebErrorSummary, LArFebErrorSummary_p1> { public: LArFebErrorSummaryCnv_p1() { }; - virtual void persToTrans(const LArFebErrorSummary_p1* pers, LArFebErrorSummary* trans, MsgStream &log) ; - virtual void transToPers(const LArFebErrorSummary* trans, LArFebErrorSummary_p1* pers, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const LArFebErrorSummary_p1* pers, LArFebErrorSummary* trans, MsgStream &log) const override; + virtual void transToPers(const LArFebErrorSummary* trans, LArFebErrorSummary_p1* pers, MsgStream &log) const override; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArLATOMEHeaderContainerCnv_p1.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArLATOMEHeaderContainerCnv_p1.h index e6205ca2977f44ba82e6568257aa97f4ebaadce4..b7d4e8979658c7c6e61850c4d5cf5f5c551a37b4 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArLATOMEHeaderContainerCnv_p1.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArLATOMEHeaderContainerCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARLATOMEHEADERCONTAINERCNV_P1_H @@ -11,14 +11,16 @@ class MsgStream; -class LArLATOMEHeaderContainerCnv_p1 : public T_AthenaPoolTPCnvBase<LArLATOMEHeaderContainer, LArLATOMEHeaderContainer_p1> +class LArLATOMEHeaderContainerCnv_p1 : public T_AthenaPoolTPCnvConstBase<LArLATOMEHeaderContainer, LArLATOMEHeaderContainer_p1> { public: LArLATOMEHeaderContainerCnv_p1() {} + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArLATOMEHeaderContainer_p1* pers, LArLATOMEHeaderContainer* trans, MsgStream &log); - virtual void transToPers(const LArLATOMEHeaderContainer* trans, LArLATOMEHeaderContainer_p1* pers, MsgStream &log); + virtual void persToTrans(const LArLATOMEHeaderContainer_p1* pers, LArLATOMEHeaderContainer* trans, MsgStream &log) const override; + virtual void transToPers(const LArLATOMEHeaderContainer* trans, LArLATOMEHeaderContainer_p1* pers, MsgStream &log) const override; }; #endif diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p1.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p1.h index 012a1f284413b06a5c26bd3e4a052fa9587637d8..c3edf7b2cfc4c92a7236c2c009d5e6207d486a6b 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p1.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARNOISYROSUMMARYCNV_P1_H @@ -12,13 +12,15 @@ class MsgStream; -class LArNoisyROSummaryCnv_p1: public T_AthenaPoolTPCnvBase<LArNoisyROSummary,LArNoisyROSummary_p1> +class LArNoisyROSummaryCnv_p1: public T_AthenaPoolTPCnvConstBase<LArNoisyROSummary,LArNoisyROSummary_p1> { public: LArNoisyROSummaryCnv_p1() {}; + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArNoisyROSummary_p1* pers, LArNoisyROSummary* trans, MsgStream &log) ; - virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p1* pers, MsgStream &log) ; + virtual void persToTrans(const LArNoisyROSummary_p1* pers, LArNoisyROSummary* trans, MsgStream &log) const override; + virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p1* pers, MsgStream &log) const override; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p2.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p2.h index c6d9fd64d2c4cd0b840f24d82f2375fd506188f1..681a2fc3e73e9a17a4ce6090b4ccc5c08c5d892e 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p2.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARNOISYROSUMMARYCNV_P2_H @@ -12,13 +12,15 @@ class MsgStream; -class LArNoisyROSummaryCnv_p2: public T_AthenaPoolTPCnvBase<LArNoisyROSummary,LArNoisyROSummary_p2> +class LArNoisyROSummaryCnv_p2: public T_AthenaPoolTPCnvConstBase<LArNoisyROSummary,LArNoisyROSummary_p2> { public: LArNoisyROSummaryCnv_p2() {}; + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArNoisyROSummary_p2* pers, LArNoisyROSummary* trans, MsgStream &log) ; - virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p2* pers, MsgStream &log) ; + virtual void persToTrans(const LArNoisyROSummary_p2* pers, LArNoisyROSummary* trans, MsgStream &log) const override; + virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p2* pers, MsgStream &log) const override; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p3.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p3.h index 91aa19c3c20b9f9ad3a368475c20e3601683a864..84b4878cafa75d390ab0af4cb500f0704d94b358 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p3.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p3.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARNOISYROSUMMARYCNV_P3_H @@ -12,13 +12,15 @@ class MsgStream; -class LArNoisyROSummaryCnv_p3: public T_AthenaPoolTPCnvBase<LArNoisyROSummary,LArNoisyROSummary_p3> +class LArNoisyROSummaryCnv_p3: public T_AthenaPoolTPCnvConstBase<LArNoisyROSummary,LArNoisyROSummary_p3> { public: LArNoisyROSummaryCnv_p3() {}; + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArNoisyROSummary_p3* pers, LArNoisyROSummary* trans, MsgStream &log) ; - virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p3* pers, MsgStream &log) ; + virtual void persToTrans(const LArNoisyROSummary_p3* pers, LArNoisyROSummary* trans, MsgStream &log) const override; + virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p3* pers, MsgStream &log) const override; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p4.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p4.h index 9f906610eefb625a002b9059f38f310ba92b3665..de0e741d22bcd33894b08037d03a3b7db02dee20 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p4.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p4.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARNOISYROSUMMARYCNV_P4_H @@ -12,13 +12,15 @@ class MsgStream; -class LArNoisyROSummaryCnv_p4: public T_AthenaPoolTPCnvBase<LArNoisyROSummary,LArNoisyROSummary_p4> +class LArNoisyROSummaryCnv_p4: public T_AthenaPoolTPCnvConstBase<LArNoisyROSummary,LArNoisyROSummary_p4> { public: LArNoisyROSummaryCnv_p4() {}; + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArNoisyROSummary_p4* pers, LArNoisyROSummary* trans, MsgStream &log) ; - virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p4* pers, MsgStream &log) ; + virtual void persToTrans(const LArNoisyROSummary_p4* pers, LArNoisyROSummary* trans, MsgStream &log) const override; + virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p4* pers, MsgStream &log) const override; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p5.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p5.h index c91d6d15379585080b2e1e06c5247847c607b92e..5817692d45dd9b8ae8177b0881f132a71b351b97 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p5.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArNoisyROSummaryCnv_p5.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARNOISYROSUMMARYCNV_P5_H @@ -12,13 +12,15 @@ class MsgStream; -class LArNoisyROSummaryCnv_p5: public T_AthenaPoolTPCnvBase<LArNoisyROSummary,LArNoisyROSummary_p5> +class LArNoisyROSummaryCnv_p5: public T_AthenaPoolTPCnvConstBase<LArNoisyROSummary,LArNoisyROSummary_p5> { public: LArNoisyROSummaryCnv_p5() {}; + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArNoisyROSummary_p5* pers, LArNoisyROSummary* trans, MsgStream &log) ; - virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p5* pers, MsgStream &log) ; + virtual void persToTrans(const LArNoisyROSummary_p5* pers, LArNoisyROSummary* trans, MsgStream &log) const override; + virtual void transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p5* pers, MsgStream &log) const override; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelCnv_p1.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelCnv_p1.h index eb1127842bf91767ec31908b4c81313b430ccfe5..06a3c4ec3495fed746eab8aa3d08acfda24a05fb 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelCnv_p1.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -14,12 +14,15 @@ // author R.Seuster <seuster@cern.ch> class MsgStream; -class LArRawChannelCnv_p1 : public T_AthenaPoolTPCnvBase<LArRawChannel, LArRawChannel_p1> +class LArRawChannelCnv_p1 : public T_AthenaPoolTPCnvConstBase<LArRawChannel, LArRawChannel_p1> { public: LArRawChannelCnv_p1() { }; - virtual void persToTrans(const LArRawChannel_p1* pers, LArRawChannel* trans, MsgStream &log) ; - virtual void transToPers(const LArRawChannel* trans, LArRawChannel_p1* pers, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const LArRawChannel_p1* pers, LArRawChannel* trans, MsgStream &log) const override; + virtual void transToPers(const LArRawChannel* trans, LArRawChannel_p1* pers, MsgStream &log) const override; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelCnv_p2.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelCnv_p2.h index c9e6796fe7bc948f82c0e9e6c267ef6430ca7d1b..3572f069d2808bdbd75bed44730348a8b8404ece 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelCnv_p2.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -14,12 +14,15 @@ // author G.Unal class MsgStream; -class LArRawChannelCnv_p2 : public T_AthenaPoolTPCnvBase<LArRawChannel, LArRawChannel_p2> +class LArRawChannelCnv_p2 : public T_AthenaPoolTPCnvConstBase<LArRawChannel, LArRawChannel_p2> { public: LArRawChannelCnv_p2() { }; - virtual void persToTrans(const LArRawChannel_p2* pers, LArRawChannel* trans, MsgStream &log) ; - virtual void transToPers(const LArRawChannel* trans, LArRawChannel_p2* pers, MsgStream &log) ; + using base_class::persToTrans; + using base_class::transToPers; + + virtual void persToTrans(const LArRawChannel_p2* pers, LArRawChannel* trans, MsgStream &log) const override; + virtual void transToPers(const LArRawChannel* trans, LArRawChannel_p2* pers, MsgStream &log) const override; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p1.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p1.h index d4753e6f7151a1384ca8f6473cae54e693a1c3e4..f315fc190100cdb88889281ae0e45c58340fbced 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p1.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p1.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARRAWCHANNELCONTAINERCNV_P1_H @@ -18,17 +18,19 @@ //typedef T_AthenaPoolTPCnvIDCont< LArRawChannelContainer, LArRawChannelContainer_p1, LArRawChannelCollectionCnv_p1 > LArRawChannelContainer_Cnvp1_base_t; -class LArRawChannelContainerCnv_p1 : public T_AthenaPoolTPCnvBase<LArRawChannelContainer, LArRawChannelContainer_p1> +class LArRawChannelContainerCnv_p1 : public T_AthenaPoolTPCnvConstBase<LArRawChannelContainer, LArRawChannelContainer_p1> { public: LArRawChannelContainerCnv_p1() {}; + using base_class::persToTrans; + using base_class::transToPers; virtual void persToTrans(const LArRawChannelContainer_p1* persColl, LArRawChannelContainer* transColl, - MsgStream &log) ; + MsgStream &log) const override; virtual void transToPers(const LArRawChannelContainer* transColl, LArRawChannelContainer_p1* persColl, - MsgStream &log) ; + MsgStream &log) const override; private: LArRawChannelCnv_p1 m_larRawChannelCnv_p1; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p2.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p2.h index f7eaeddeeae11348f8ab9467670e9a72540538d4..698b132a4807c61ac651a915659bed44903348a7 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p2.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p2.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARRAWCHANNELCONTAINERCNV_P2_H @@ -17,17 +17,19 @@ // conversion in the .cxx. In part because LArRawChannelContainer_p2 // vecs of both collections and channels. As well the IDC // addCollection is better. -class LArRawChannelContainerCnv_p2 : public T_AthenaPoolTPCnvBase<LArRawChannelContainer, LArRawChannelContainer_p2> +class LArRawChannelContainerCnv_p2 : public T_AthenaPoolTPCnvConstBase<LArRawChannelContainer, LArRawChannelContainer_p2> { public: LArRawChannelContainerCnv_p2() {}; + using base_class::persToTrans; + using base_class::transToPers; virtual void persToTrans(const LArRawChannelContainer_p2* persColl, LArRawChannelContainer* transColl, - MsgStream &log) ; + MsgStream &log) const override; virtual void transToPers(const LArRawChannelContainer* transColl, LArRawChannelContainer_p2* persColl, - MsgStream &log) ; + MsgStream &log) const override; private: LArRawChannelCnv_p1 m_larRawChannelCnv_p1; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p3.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p3.h index 20f7800fc3c43fcd38b4c5ae369cd14b1264e1d9..a3ccc687b4f046183d5310e62977c7598718c3c9 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p3.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p3.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARRAWCHANNELCONTAINERCNV_P3_H @@ -13,17 +13,19 @@ #include "LArTPCnv/LArRawChannelContainer_p3.h" #include "LArTPCnv/LArRawChannelCnv_p1.h" -class LArRawChannelContainerCnv_p3 : public T_AthenaPoolTPCnvBase<LArRawChannelContainer, LArRawChannelContainer_p3> +class LArRawChannelContainerCnv_p3 : public T_AthenaPoolTPCnvConstBase<LArRawChannelContainer, LArRawChannelContainer_p3> { public: LArRawChannelContainerCnv_p3() {}; - + using base_class::persToTrans; + using base_class::transToPers; + virtual void persToTrans(const LArRawChannelContainer_p3* persColl, LArRawChannelContainer* transColl, - MsgStream &log) ; + MsgStream &log) const override; virtual void transToPers(const LArRawChannelContainer* transColl, LArRawChannelContainer_p3* persColl, - MsgStream &log) ; + MsgStream &log) const override; private: LArRawChannelCnv_p1 m_larRawChannelCnv_p1; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p4.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p4.h index 1d0a0c4fbd9073a3d8bba7e82320f9f0e35f8766..c926900dc777cc40b2ce7d7434f4d9ef8cb4a26b 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p4.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawChannelContainerCnv_p4.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARTPCNV_LARRAWCHANNELCONTAINERCNV_P4_H @@ -14,17 +14,19 @@ #include "LArTPCnv/LArRawChannelContainer_p4.h" #include "LArTPCnv/LArRawChannelCnv_p2.h" -class LArRawChannelContainerCnv_p4 : public T_AthenaPoolTPCnvBase<LArRawChannelContainer, LArRawChannelContainer_p4> +class LArRawChannelContainerCnv_p4 : public T_AthenaPoolTPCnvConstBase<LArRawChannelContainer, LArRawChannelContainer_p4> { public: LArRawChannelContainerCnv_p4() {}; + using base_class::persToTrans; + using base_class::transToPers; virtual void persToTrans(const LArRawChannelContainer_p4* persColl, LArRawChannelContainer* transColl, - MsgStream &log) ; + MsgStream &log) const override; virtual void transToPers(const LArRawChannelContainer* transColl, LArRawChannelContainer_p4* persColl, - MsgStream &log) ; + MsgStream &log) const override; private: LArRawChannelCnv_p2 m_larRawChannelCnv_p2; }; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawSCContainerCnv_p1.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawSCContainerCnv_p1.h index b32cc81d165bc6f170ddfa23c9a7a434323e9668..707d8197038e9b718fa9189d084c354c09df31a1 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawSCContainerCnv_p1.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArRawSCContainerCnv_p1.h @@ -11,14 +11,16 @@ class MsgStream; class LArRawSCContainer; -class LArRawSCContainerCnv_p1 : public T_AthenaPoolTPCnvBase<LArRawSCContainer, LArRawSCContainer_p1> +class LArRawSCContainerCnv_p1 : public T_AthenaPoolTPCnvConstBase<LArRawSCContainer, LArRawSCContainer_p1> { public: LArRawSCContainerCnv_p1() {} + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArRawSCContainer_p1* pers, LArRawSCContainer* trans, MsgStream &log); - virtual void transToPers(const LArRawSCContainer* trans, LArRawSCContainer_p1* pers, MsgStream &log); + virtual void persToTrans(const LArRawSCContainer_p1* pers, LArRawSCContainer* trans, MsgStream &log) const override; + virtual void transToPers(const LArRawSCContainer* trans, LArRawSCContainer_p1* pers, MsgStream &log) const override; }; #endif diff --git a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArSCDigitContainerCnv_p1.h b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArSCDigitContainerCnv_p1.h index b2cf429eaec96905639bdb79aa34a27a6c4d29b0..4de01e29da69b0c02f95e7d67353b964b8d9ff0b 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArSCDigitContainerCnv_p1.h +++ b/LArCalorimeter/LArCnv/LArTPCnv/LArTPCnv/LArSCDigitContainerCnv_p1.h @@ -11,14 +11,16 @@ class MsgStream; -class LArSCDigitContainerCnv_p1 : public T_AthenaPoolTPCnvBase<LArSCDigitContainer, LArSCDigitContainer_p1> +class LArSCDigitContainerCnv_p1 : public T_AthenaPoolTPCnvConstBase<LArSCDigitContainer, LArSCDigitContainer_p1> { public: LArSCDigitContainerCnv_p1() {} + using base_class::persToTrans; + using base_class::transToPers; - virtual void persToTrans(const LArSCDigitContainer_p1* pers, LArSCDigitContainer* trans, MsgStream &log); - virtual void transToPers(const LArSCDigitContainer* trans, LArSCDigitContainer_p1* pers, MsgStream &log); + virtual void persToTrans(const LArSCDigitContainer_p1* pers, LArSCDigitContainer* trans, MsgStream &log) const override; + virtual void transToPers(const LArSCDigitContainer* trans, LArSCDigitContainer_p1* pers, MsgStream &log) const override; }; #endif diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArDigitContainerCnv_p1.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArDigitContainerCnv_p1.cxx index 7a24c3982db61f58c837653ef8268dd7966ceeeb..86c91d70073f2d66bef802286319e9aa0637964f 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArDigitContainerCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArDigitContainerCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArTPCnv/LArDigitContainerCnv_p1.h" @@ -11,7 +11,7 @@ void LArDigitContainerCnv_p1::persToTrans(const LArDigitContainer_p1* pers, - LArDigitContainer* trans, MsgStream &log) + LArDigitContainer* trans, MsgStream &log) const { const unsigned nDigits=pers->m_channelID.size(); if (nDigits != pers->m_gain.size() || nDigits != pers->m_nSamples.size()) { @@ -44,7 +44,7 @@ LArDigitContainerCnv_p1::persToTrans(const LArDigitContainer_p1* pers, void LArDigitContainerCnv_p1::transToPers(const LArDigitContainer* trans, - LArDigitContainer_p1* pers, MsgStream &/*log*/) + LArDigitContainer_p1* pers, MsgStream &/*log*/) const { unsigned int nDigits=trans->size(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArDigitContainerCnv_p2.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArDigitContainerCnv_p2.cxx index c81a5bffc77d7fb061848b604d3f6e4a99b65373..7affcec653102947d0ce83a77ae47b844ea13fd5 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArDigitContainerCnv_p2.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArDigitContainerCnv_p2.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArTPCnv/LArDigitContainerCnv_p2.h" @@ -33,7 +33,7 @@ LArDigitContainerCnv_p2::LArDigitContainerCnv_p2(const LArOnlineID_Base* idHelpe void LArDigitContainerCnv_p2::persToTrans(const LArDigitContainer_p2* pers, - LArDigitContainer* trans, MsgStream &/*log*/) + LArDigitContainer* trans, MsgStream &/*log*/) const { if (pers->m_nSamples==0 || pers->m_samples.size()==0) { //No data @@ -61,7 +61,7 @@ LArDigitContainerCnv_p2::persToTrans(const LArDigitContainer_p2* pers, void LArDigitContainerCnv_p2::transToPers(const LArDigitContainer* trans, - LArDigitContainer_p2* pers, MsgStream &log) { + LArDigitContainer_p2* pers, MsgStream &log) const { const unsigned int nChannels=trans->size(); if (nChannels==0) { diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArFebErrorSummaryCnv_p1.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArFebErrorSummaryCnv_p1.cxx index 8d9003a134f3654f3890205c68b952be0fdc7cd4..2b7000c8b88e10cea9fddc4af4736a49133fa608 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArFebErrorSummaryCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArFebErrorSummaryCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRawEvent/LArFebErrorSummary.h" @@ -9,7 +9,7 @@ // LArFebErrorSummaryCnv_p1, used for T/P separation // author H.Ma -void LArFebErrorSummaryCnv_p1::transToPers(const LArFebErrorSummary* trans, LArFebErrorSummary_p1* pers, MsgStream &/*log*/) +void LArFebErrorSummaryCnv_p1::transToPers(const LArFebErrorSummary* trans, LArFebErrorSummary_p1* pers, MsgStream &/*log*/) const { unsigned int sz = trans->get_all_febs().size(); @@ -26,7 +26,7 @@ void LArFebErrorSummaryCnv_p1::transToPers(const LArFebErrorSummary* trans, LArF } } -void LArFebErrorSummaryCnv_p1::persToTrans(const LArFebErrorSummary_p1* pers, LArFebErrorSummary* trans, MsgStream & log) +void LArFebErrorSummaryCnv_p1::persToTrans(const LArFebErrorSummary_p1* pers, LArFebErrorSummary* trans, MsgStream & log) const { if( pers->m_feb_errors.size()!= pers->m_feb_ids.size() ) diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArLATOMEHeaderContainerCnv_p1.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArLATOMEHeaderContainerCnv_p1.cxx index f339a1c48888c176771784b24783c7e2451275af..b115a48a954e3d86dd049f4b231261840a9e99b7 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArLATOMEHeaderContainerCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArLATOMEHeaderContainerCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArTPCnv/LArLATOMEHeaderContainerCnv_p1.h" @@ -9,7 +9,7 @@ void LArLATOMEHeaderContainerCnv_p1::persToTrans(const LArLATOMEHeaderContainer_p1* pers, - LArLATOMEHeaderContainer* trans, MsgStream &log) + LArLATOMEHeaderContainer* trans, MsgStream &log) const { const unsigned nchan=pers->m_sourceID.size(); if (nchan != pers->m_nChannels.size() || nchan != pers->m_BCID.size()) { @@ -30,7 +30,7 @@ LArLATOMEHeaderContainerCnv_p1::persToTrans(const LArLATOMEHeaderContainer_p1* p void LArLATOMEHeaderContainerCnv_p1::transToPers(const LArLATOMEHeaderContainer* trans, - LArLATOMEHeaderContainer_p1* pers, MsgStream &/*log*/) + LArLATOMEHeaderContainer_p1* pers, MsgStream &/*log*/) const { unsigned int nlatome=trans->size(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p1.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p1.cxx index 6edcd61e06e82d4ebcfc97264bd2cb14653d8569..335e6fd902a827f3220e2835dffd18622edbed36 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p1.cxx @@ -1,11 +1,11 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRecEvent/LArNoisyROSummary.h" #include "LArTPCnv/LArNoisyROSummaryCnv_p1.h" -void LArNoisyROSummaryCnv_p1::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p1* pers, MsgStream & log) +void LArNoisyROSummaryCnv_p1::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p1* pers, MsgStream & log) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p1::transToPers " << endmsg; @@ -26,7 +26,7 @@ void LArNoisyROSummaryCnv_p1::transToPers(const LArNoisyROSummary* trans, LArNoi } } -void LArNoisyROSummaryCnv_p1::persToTrans(const LArNoisyROSummary_p1* pers, LArNoisyROSummary* trans, MsgStream & log ) +void LArNoisyROSummaryCnv_p1::persToTrans(const LArNoisyROSummary_p1* pers, LArNoisyROSummary* trans, MsgStream & log ) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p1::persToTrans " << endmsg; trans->clear(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p2.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p2.cxx index 3cbd5f5ad29c1073616d73c079686c72bd830b4a..ed181618cbbc8d198f9b07894c7a5eea72303cea 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p2.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p2.cxx @@ -1,11 +1,11 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRecEvent/LArNoisyROSummary.h" #include "LArTPCnv/LArNoisyROSummaryCnv_p2.h" -void LArNoisyROSummaryCnv_p2::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p2* pers, MsgStream & log) +void LArNoisyROSummaryCnv_p2::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p2* pers, MsgStream & log) const { //typedef std::vector< std::pair<HWIdentifier, std::vector<int> > > PAcont; log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p2::transToPers " << endmsg; @@ -31,7 +31,7 @@ void LArNoisyROSummaryCnv_p2::transToPers(const LArNoisyROSummary* trans, LArNoi pers->m_SatTightFlaggedPartitions = trans->SatTightFlaggedPartitions(); } -void LArNoisyROSummaryCnv_p2::persToTrans(const LArNoisyROSummary_p2* pers, LArNoisyROSummary* trans, MsgStream & log ) +void LArNoisyROSummaryCnv_p2::persToTrans(const LArNoisyROSummary_p2* pers, LArNoisyROSummary* trans, MsgStream & log ) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p2::persToTrans " << endmsg; trans->clear(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p3.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p3.cxx index 895320de3dcaae40effbecec3b173e728472d58c..0ef4dcb28242a8d4c5d9628d04276c648837013c 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p3.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p3.cxx @@ -1,11 +1,11 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRecEvent/LArNoisyROSummary.h" #include "LArTPCnv/LArNoisyROSummaryCnv_p3.h" -void LArNoisyROSummaryCnv_p3::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p3* pers, MsgStream & log) +void LArNoisyROSummaryCnv_p3::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p3* pers, MsgStream & log) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p3::transToPers " << endmsg; @@ -34,7 +34,7 @@ void LArNoisyROSummaryCnv_p3::transToPers(const LArNoisyROSummary* trans, LArNoi } -void LArNoisyROSummaryCnv_p3::persToTrans(const LArNoisyROSummary_p3* pers, LArNoisyROSummary* trans, MsgStream & log ) +void LArNoisyROSummaryCnv_p3::persToTrans(const LArNoisyROSummary_p3* pers, LArNoisyROSummary* trans, MsgStream & log ) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p3::persToTrans " << endmsg; trans->clear(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p4.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p4.cxx index d535fa2160e549cd15101ea55812ac95144bd835..a91d953212a15a979dea806d4139c9de7dbbfaf5 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p4.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p4.cxx @@ -1,11 +1,11 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRecEvent/LArNoisyROSummary.h" #include "LArTPCnv/LArNoisyROSummaryCnv_p4.h" -void LArNoisyROSummaryCnv_p4::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p4* pers, MsgStream & log) +void LArNoisyROSummaryCnv_p4::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p4* pers, MsgStream & log) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p4::transToPers " << endmsg; @@ -48,7 +48,7 @@ void LArNoisyROSummaryCnv_p4::transToPers(const LArNoisyROSummary* trans, LArNoi } -void LArNoisyROSummaryCnv_p4::persToTrans(const LArNoisyROSummary_p4* pers, LArNoisyROSummary* trans, MsgStream & log ) +void LArNoisyROSummaryCnv_p4::persToTrans(const LArNoisyROSummary_p4* pers, LArNoisyROSummary* trans, MsgStream & log ) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p4::persToTrans " << endmsg; trans->clear(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p5.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p5.cxx index 31f87e31c8b78dad030203e1547fd726471b7718..dace1322b0e271e6fcb26079aca49518f767ee19 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p5.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArNoisyROSummaryCnv_p5.cxx @@ -1,11 +1,11 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRecEvent/LArNoisyROSummary.h" #include "LArTPCnv/LArNoisyROSummaryCnv_p5.h" -void LArNoisyROSummaryCnv_p5::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p5* pers, MsgStream & log) +void LArNoisyROSummaryCnv_p5::transToPers(const LArNoisyROSummary* trans, LArNoisyROSummary_p5* pers, MsgStream & log) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p5::transToPers " << endmsg; @@ -49,7 +49,7 @@ void LArNoisyROSummaryCnv_p5::transToPers(const LArNoisyROSummary* trans, LArNoi } -void LArNoisyROSummaryCnv_p5::persToTrans(const LArNoisyROSummary_p5* pers, LArNoisyROSummary* trans, MsgStream & log ) +void LArNoisyROSummaryCnv_p5::persToTrans(const LArNoisyROSummary_p5* pers, LArNoisyROSummary* trans, MsgStream & log ) const { log << MSG::DEBUG << " in LArNoisyROSummaryCnv_p5::persToTrans " << endmsg; trans->clear(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelCnv_p1.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelCnv_p1.cxx index 31cb70ba0c7d32805653100fd9f04e9f3c63e85b..19a8cb5265084408f9fecfeb5efcfb1d2efecfa9 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelCnv_p1.cxx @@ -9,12 +9,12 @@ // LArRawChannelCnv_p1, used for T/P separation // author R.Seuster <seuster@cern.ch> -void LArRawChannelCnv_p1::transToPers(const LArRawChannel* /*trans*/, LArRawChannel_p1* /*pers*/, MsgStream &/*log*/) +void LArRawChannelCnv_p1::transToPers(const LArRawChannel* /*trans*/, LArRawChannel_p1* /*pers*/, MsgStream &/*log*/) const { // No longer used } -void LArRawChannelCnv_p1::persToTrans(const LArRawChannel_p1* pers, LArRawChannel* trans, MsgStream &/*log*/) +void LArRawChannelCnv_p1::persToTrans(const LArRawChannel_p1* pers, LArRawChannel* trans, MsgStream &/*log*/) const { union { int m_quality ; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelCnv_p2.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelCnv_p2.cxx index 0315df378160b6a67ca504187f4dee213b2d4d0f..77ef7ab1e1a105f2b97e6a61113830aea1b83f3a 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelCnv_p2.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelCnv_p2.cxx @@ -9,7 +9,7 @@ // LArRawChannelCnv_p2, used for T/P separation // author G.Unal -void LArRawChannelCnv_p2::transToPers(const LArRawChannel* trans, LArRawChannel_p2* pers, MsgStream &/*log*/) +void LArRawChannelCnv_p2::transToPers(const LArRawChannel* trans, LArRawChannel_p2* pers, MsgStream &/*log*/) const { union { int m_quality ; @@ -29,7 +29,7 @@ void LArRawChannelCnv_p2::transToPers(const LArRawChannel* trans, LArRawChannel_ pers->m_qualityandgain = tmpqual | tmpgain; } -void LArRawChannelCnv_p2::persToTrans(const LArRawChannel_p2* pers, LArRawChannel* trans, MsgStream &/*log*/) +void LArRawChannelCnv_p2::persToTrans(const LArRawChannel_p2* pers, LArRawChannel* trans, MsgStream &/*log*/) const { union { int m_quality ; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p1.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p1.cxx index 7de593b0415a0d516465f3820f99e5bd7fa052b1..69c52af7fa69889166b986b3f566a392dcceb98c 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p1.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRawEvent/LArRawChannelContainer.h" @@ -10,25 +10,19 @@ //#include "LArTPCnv/LArRawChannelCollectionCnv_p1.h" #include "LArTPCnv/LArRawChannelContainerCnv_p1.h" -void LArRawChannelContainerCnv_p1::transToPers(const LArRawChannelContainer*, LArRawChannelContainer_p1*, MsgStream &log) +void LArRawChannelContainerCnv_p1::transToPers(const LArRawChannelContainer*, LArRawChannelContainer_p1*, MsgStream &log) const { //LArRawChannelContainer_Cnvp1_base_t::transToPers(trans,pers,log); log << MSG::ERROR << " *** Writing LArRawChannelContainer_p1 not supported any more. Current version is LArRawChannelContainer_p3" << endmsg; } -void LArRawChannelContainerCnv_p1::persToTrans(const LArRawChannelContainer_p1* pers, LArRawChannelContainer* trans, MsgStream &log) +void LArRawChannelContainerCnv_p1::persToTrans(const LArRawChannelContainer_p1* pers, LArRawChannelContainer* trans, MsgStream &log) const { //LArRawChannelContainer_Cnvp1_base_t::persToTrans(pers,trans,log); std::size_t index=0; - LArRawChannelContainer_p1::const_iterator it1=pers->begin(); - LArRawChannelContainer_p1::const_iterator it1_e=pers->end(); - for (;it1!=it1_e;it1++) { - const LArRawChannelCollection_p1& coll=*it1; + for (const LArRawChannelCollection_p1& coll : *pers) { trans->resize(trans->size()+coll.size()); - LArRawChannelCollection_p1::const_iterator it2=coll.begin(); - LArRawChannelCollection_p1::const_iterator it2_e=coll.end(); - for(;it2!=it2_e;it2++) { - const LArRawChannel_p1& rc=*it2; + for (const LArRawChannel_p1& rc : coll) { // virtual void persToTrans(const LArRawChannel_p1* pers, LArRawChannel* trans, MsgStream &log) ; m_larRawChannelCnv_p1.persToTrans(&rc,&trans->at(index),log); ++index; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p2.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p2.cxx index b8dbd568a83c83c35fc0b5106c8a7558b42b2c88..5e395bbc2326717657faab4566eea2ab9ca8d37f 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p2.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p2.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRawEvent/LArRawChannel.h" @@ -15,7 +15,7 @@ //#include "LArTPCnv/LArRawChannelCollection_p2.h" //#include "DataModel/DataPool.h" -void LArRawChannelContainerCnv_p2::transToPers(const LArRawChannelContainer* /*transCont*/, LArRawChannelContainer_p2* /*persCont*/, MsgStream &log) +void LArRawChannelContainerCnv_p2::transToPers(const LArRawChannelContainer* /*transCont*/, LArRawChannelContainer_p2* /*persCont*/, MsgStream &log) const { log << MSG::ERROR << "Writing LArRawChannelContainer_p2 not supported any more. Current version is LArRawChannelContainer_p3" << endmsg; @@ -74,7 +74,7 @@ void LArRawChannelContainerCnv_p2::transToPers(const LArRawChannelContainer* /*t */ -void LArRawChannelContainerCnv_p2::persToTrans(const LArRawChannelContainer_p2* persCont, LArRawChannelContainer* transCont, MsgStream &log) +void LArRawChannelContainerCnv_p2::persToTrans(const LArRawChannelContainer_p2* persCont, LArRawChannelContainer* transCont, MsgStream &log) const { //LArRawChannelContainer_Cnvp1_base_t::persToTrans(pers,trans,log); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p3.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p3.cxx index 16f1a759e5b6e98ce9e59d80e62b939407658d25..bb740262f9a54c59def185adbc05eca97f05062a 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p3.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p3.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRawEvent/LArRawChannel.h" @@ -12,7 +12,7 @@ #include "LArTPCnv/LArRawChannelContainerCnv_p3.h" -void LArRawChannelContainerCnv_p3::transToPers(const LArRawChannelContainer* transCont, LArRawChannelContainer_p3* persCont, MsgStream &log) +void LArRawChannelContainerCnv_p3::transToPers(const LArRawChannelContainer* transCont, LArRawChannelContainer_p3* persCont, MsgStream &log) const { std::size_t nChannels=transCont->size(); persCont->m_channels.resize(nChannels); @@ -22,7 +22,7 @@ void LArRawChannelContainerCnv_p3::transToPers(const LArRawChannelContainer* tra log << MSG::DEBUG << " *** Writing LArRawChannelContainer_p3" << endmsg; } -void LArRawChannelContainerCnv_p3::persToTrans(const LArRawChannelContainer_p3* persCont, LArRawChannelContainer* transCont, MsgStream &log) +void LArRawChannelContainerCnv_p3::persToTrans(const LArRawChannelContainer_p3* persCont, LArRawChannelContainer* transCont, MsgStream &log) const { std::size_t nChannels=persCont->m_channels.size(); transCont->resize(nChannels); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p4.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p4.cxx index 4a43f35f4de28408eb11fa64b8542cd48081d68e..ec78a38023ed3ade773f15ab11cd5dadae958f71 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p4.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawChannelContainerCnv_p4.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArRawEvent/LArRawChannel.h" @@ -12,7 +12,7 @@ #include "LArTPCnv/LArRawChannelContainerCnv_p4.h" -void LArRawChannelContainerCnv_p4::transToPers(const LArRawChannelContainer* transCont, LArRawChannelContainer_p4* persCont, MsgStream &log) +void LArRawChannelContainerCnv_p4::transToPers(const LArRawChannelContainer* transCont, LArRawChannelContainer_p4* persCont, MsgStream &log) const { // std::cout << " *** Write LArRawChannelContainer_p4 " << std::endl; std::size_t nChannels=transCont->size(); @@ -23,7 +23,7 @@ void LArRawChannelContainerCnv_p4::transToPers(const LArRawChannelContainer* tra log << MSG::DEBUG << " *** Writing LArRawChannelContainer_p4" << endmsg; } -void LArRawChannelContainerCnv_p4::persToTrans(const LArRawChannelContainer_p4* persCont, LArRawChannelContainer* transCont, MsgStream &log) +void LArRawChannelContainerCnv_p4::persToTrans(const LArRawChannelContainer_p4* persCont, LArRawChannelContainer* transCont, MsgStream &log) const { // std::cout << " *** Read LArRawChannelContainer_p4 " << std::endl; std::size_t nChannels=persCont->m_channels.size(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawSCContainerCnv_p1.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawSCContainerCnv_p1.cxx index 7e63b1ac241d55d938ff1e932a10bbf4f17c1b54..aa0c0a050aa597315f136b4f70ac862bac3dcd06 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawSCContainerCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArRawSCContainerCnv_p1.cxx @@ -11,7 +11,7 @@ void LArRawSCContainerCnv_p1::persToTrans(const LArRawSCContainer_p1* pers, - LArRawSCContainer* trans, MsgStream &log) + LArRawSCContainer* trans, MsgStream &log) const { const unsigned nDigits=pers->m_channelID.size(); if (nDigits != pers->m_chan.size() || nDigits != pers->m_nEnergies.size()) { @@ -57,7 +57,7 @@ LArRawSCContainerCnv_p1::persToTrans(const LArRawSCContainer_p1* pers, void LArRawSCContainerCnv_p1::transToPers(const LArRawSCContainer* trans, - LArRawSCContainer_p1* pers, MsgStream &/*log*/) + LArRawSCContainer_p1* pers, MsgStream &/*log*/) const { unsigned int nDigits=trans->size(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/src/LArSCDigitContainerCnv_p1.cxx b/LArCalorimeter/LArCnv/LArTPCnv/src/LArSCDigitContainerCnv_p1.cxx index ee681237f6c54c1d342f1c60c3974256b9cb6957..023a03d84e8b2eb5be567e6692bfb4442eeb652e 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/src/LArSCDigitContainerCnv_p1.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/src/LArSCDigitContainerCnv_p1.cxx @@ -11,7 +11,7 @@ void LArSCDigitContainerCnv_p1::persToTrans(const LArSCDigitContainer_p1* pers, - LArSCDigitContainer* trans, MsgStream &log) + LArSCDigitContainer* trans, MsgStream &log) const { const unsigned nDigits=pers->m_channelID.size(); if (nDigits > 0 && (nDigits != pers->m_chan.size() || nDigits != pers->m_nSamples.size() || nDigits*pers->m_nSamples[0] != pers->m_bcids.size() || nDigits*pers->m_nSamples[0] != pers->m_samples.size())) { @@ -47,7 +47,7 @@ LArSCDigitContainerCnv_p1::persToTrans(const LArSCDigitContainer_p1* pers, void LArSCDigitContainerCnv_p1::transToPers(const LArSCDigitContainer* trans, - LArSCDigitContainer_p1* pers, MsgStream &/*log*/) + LArSCDigitContainer_p1* pers, MsgStream &/*log*/) const { unsigned int nDigits=trans->size(); diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArDigitContainerCnv_p1_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArDigitContainerCnv_p1_test.cxx index 446faf2a86f29b24a147d4151206b7f27bc86ea1..13dbdad19a0133872f9f8dfc7cd913d78dadecf9 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArDigitContainerCnv_p1_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArDigitContainerCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArDigitContainerCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -17,6 +15,7 @@ #include "LArRawEvent/LArDigitContainer.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -53,7 +52,7 @@ void testit (const LArDigitContainer& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -76,7 +75,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArFebErrorSummaryCnv_p1_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArFebErrorSummaryCnv_p1_test.cxx index ceb6ae349594308dcf50577e375a0bf356ff3bdf..34797230b0ba9c5941017d23cd05e2bb5f841549 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArFebErrorSummaryCnv_p1_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArFebErrorSummaryCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArFebErrorSummaryCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "LArTPCnv/LArFebErrorSummaryCnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -39,7 +38,7 @@ void testit (const LArFebErrorSummary& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -53,7 +52,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArLATOMEHeaderContainerCnv_p1_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArLATOMEHeaderContainerCnv_p1_test.cxx index 35ca7f70958ed039800e45d9ca5f6443385be609..b23ce00b88210fd0b27659b1844653ac0b70dc4d 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArLATOMEHeaderContainerCnv_p1_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArLATOMEHeaderContainerCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArLATOMEHeaderContainerCnv_p1_test.cxx * @author Pavol Strizenec @@ -16,6 +14,7 @@ #include "LArRawEvent/LArLATOMEHeaderContainer.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -53,7 +52,7 @@ void testit (const LArLATOMEHeaderContainer& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -68,7 +67,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p1_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p1_test.cxx index 4fb3a5eba4338ad2930b09038790ed956c99c617..b3b3787b800ec3930ac0709795a754772a226397 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p1_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p1_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArNoisyROSSummaryCnv_p1_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "LArTPCnv/LArNoisyROSummaryCnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -46,7 +45,7 @@ void testit (const LArNoisyROSummary& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -68,7 +67,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p2_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p2_test.cxx index 02fbecd681a4daf17fb94e5f25ce37f9375bbfc9..e59b1415dbed91fec3d7d60e929a636e2c6e5d33 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p2_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArNoisyROSSummaryCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "LArTPCnv/LArNoisyROSummaryCnv_p2.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -46,7 +45,7 @@ void testit (const LArNoisyROSummary& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -68,7 +67,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p3_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p3_test.cxx index e07c40b853c7dc8b1f072697e637ece844eed8d1..df45785c3aaa0b420c696dec964b55c616e7c740 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p3_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p3_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArNoisyROSSummaryCnv_p3_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "LArTPCnv/LArNoisyROSummaryCnv_p3.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -46,7 +45,7 @@ void testit (const LArNoisyROSummary& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -68,7 +67,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p4_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p4_test.cxx index fab815bd75648d3f969f5b8171834b3e34ca083f..619ce939e98b17c16f2492f24512428889c762f5 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p4_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArNoisyROSummaryCnv_p4_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArNoisyROSSummaryCnv_p3_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "LArTPCnv/LArNoisyROSummaryCnv_p4.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -48,7 +47,7 @@ void testit (const LArNoisyROSummary& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -74,7 +73,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawChannelCnv_p2_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawChannelCnv_p2_test.cxx index 79b47d5a3d8059e8e8a588ad3d495a5046a8c30b..eaa39cdba578b8f05f8ed26adadc929e155e6b2d 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawChannelCnv_p2_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawChannelCnv_p2_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArRawChannelCnv_p2_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "LArTPCnv/LArRawChannelCnv_p2.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -44,7 +43,7 @@ void testit (const LArRawChannel& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -60,7 +59,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawChannelContainerCnv_p4_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawChannelContainerCnv_p4_test.cxx index 1075256545277a5e800477c2e00d03bd40d7036d..d4c631fed1cb5a85e5fffb560d4e153b2da3bd02 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawChannelContainerCnv_p4_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawChannelContainerCnv_p4_test.cxx @@ -1,8 +1,6 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - -// $Id$ /** * @file LArTPCnv/test/LArRawChannelContainerCnv_p4_test.cxx * @author scott snyder <snyder@bnl.gov> @@ -15,6 +13,7 @@ #include "LArTPCnv/LArRawChannelContainerCnv_p4.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -53,7 +52,7 @@ void testit (const LArRawChannelContainer& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -76,7 +75,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawSCContainerCnv_p1_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawSCContainerCnv_p1_test.cxx index fa788fc20a0e813865bf59dc12a0bbb9b8fe03b4..c00f55b3dc0a55f0b3552f8e5560624309dd26a5 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawSCContainerCnv_p1_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArRawSCContainerCnv_p1_test.cxx @@ -8,6 +8,7 @@ #include "LArRawEvent/LArRawSCContainer.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -44,7 +45,7 @@ void testit (const LArRawSCContainer& trans1) } -void test1() +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -73,7 +74,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { test1(); return 0; diff --git a/LArCalorimeter/LArCnv/LArTPCnv/test/LArSCDigitContainerCnv_p1_test.cxx b/LArCalorimeter/LArCnv/LArTPCnv/test/LArSCDigitContainerCnv_p1_test.cxx index e74a162885ee67066d23b18c4ebf7e8118251698..8aaadad6594b178926547870943dca16669600dc 100644 --- a/LArCalorimeter/LArCnv/LArTPCnv/test/LArSCDigitContainerCnv_p1_test.cxx +++ b/LArCalorimeter/LArCnv/LArTPCnv/test/LArSCDigitContainerCnv_p1_test.cxx @@ -6,6 +6,7 @@ #include "LArTPCnv/LArSCDigitContainerCnv_p1.h" #include "TestTools/leakcheck.h" #include "GaudiKernel/MsgStream.h" +#include "CxxUtils/checker_macros.h" #include <cassert> #include <iostream> @@ -39,7 +40,8 @@ void testit (const LArSCDigitContainer& trans1) compare (trans1, trans2); } -void test1() + +void test1 ATLAS_NOT_THREAD_SAFE () { std::cout << "test1\n"; Athena_test::Leakcheck check; @@ -66,7 +68,7 @@ void test1() } -int main() +int main ATLAS_NOT_THREAD_SAFE () { std::cout << "starting\n"<<std::endl; test1(); diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBDetectorRegion.h b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBDetectorRegion.h index b21080241a3abda57591750168dfaf6beb58eb98..d9350a97cb3e37ff509174e9455eda6c05c9b6c5 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBDetectorRegion.h +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBDetectorRegion.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARREADOUTGEOMETRY_EMBDETECTORREGION_H @@ -22,6 +22,8 @@ * It provides access to the EMB Cells. */ +class GeoAlignmentStore; + class EMBDetectorRegion : public GeoVDetectorElement { @@ -83,21 +85,12 @@ class EMBDetectorRegion : public GeoVDetectorElement /** * @brief Returns the absolute transform of this element. */ - const Amg::Transform3D getAbsoluteTransformAmg () const; + const Amg::Transform3D& getAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const; /** * @brief Returns the absolute transform of this element. */ - const Amg::Transform3D getDefAbsoluteTransformAmg () const; - /** - * @brief Returns the absolute transform of this element. - */ - const GeoTrf::Transform3D & getAbsoluteTransform () const; - - /** - * @brief Returns the absolute transform of this element. - */ - const GeoTrf::Transform3D & getDefAbsoluteTransform () const; + const Amg::Transform3D& getDefAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const; /** * @brief The endcap index. 0=negative, 1=positive. diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMECDetectorRegion.h b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMECDetectorRegion.h index 23bcc382d038bb12374814d695ced7d204e73c36..a6c1bcb76f2b03eeba6e20162fb9daff2b815dd2 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMECDetectorRegion.h +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMECDetectorRegion.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARREADOUTGEOMETRY_EMECDETECTORREGION_H @@ -24,6 +24,7 @@ * It provides access to the EMEC Cells. */ +class GeoAlignmentStore; class EMECDetectorRegion : public GeoVDetectorElement { @@ -90,17 +91,7 @@ class EMECDetectorRegion : public GeoVDetectorElement * @brief returns the end eta index in the region. */ unsigned int endEtaIndex () const; - - /** - * @brief Returns the absolute transform of this element. - */ - const GeoTrf::Transform3D & getAbsoluteTransform () const; - - /** - * @brief Returns the absolute transform of this element. - */ - const GeoTrf::Transform3D & getDefAbsoluteTransform () const; - + /** * @brief Returns the position of the center of the reference * plane of the EMEC (back of front tranverse bars). This @@ -119,12 +110,12 @@ class EMECDetectorRegion : public GeoVDetectorElement /** * @brief Returns the absolute transform of this element. */ - const Amg::Transform3D getAbsoluteTransformAmg () const; + const Amg::Transform3D& getAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const; /** * @brief Returns the absolute transform of this element. */ - const Amg::Transform3D getDefAbsoluteTransformAmg () const; + const Amg::Transform3D& getDefAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const; /** * @brief Returns the position of the center of the reference diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/FCALModule.h b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/FCALModule.h index 33c4ec37fc090e9151fd33835ee1693ee30170d2..27b10a0b7a7fe5224af73947636b945b9bda4a7d 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/FCALModule.h +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/FCALModule.h @@ -1,10 +1,10 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARREADOUTGEOMETRY_FCALMODULE_H #define LARREADOUTGEOMETRY_FCALMODULE_H -#include <vector> + #include "Identifier/Identifier.h" #include "LArReadoutGeometry/FCALTile.h" #include "GeoModelKernel/GeoVDetectorElement.h" @@ -13,8 +13,7 @@ #include "GeoPrimitives/GeoPrimitives.h" #include "CxxUtils/CachedValue.h" #include <utility> - -class FCALDetectorManager; +#include <vector> /** * @class FCALModule @@ -27,7 +26,8 @@ class FCALDetectorManager; * It provides access to the FCAL Tiles. */ - +class FCALDetectorManager; +class GeoAlignmentStore; class FCALModule : public GeoVDetectorElement { @@ -102,22 +102,12 @@ class FCALModule : public GeoVDetectorElement /** * @brief Returns the absolute transform of this element. */ - const GeoTrf::Transform3D & getAbsoluteTransform () const; - - /** - * @brief Returns the absolute transform of this element. - */ - const GeoTrf::Transform3D & getDefAbsoluteTransform () const; - - /** - * @brief Returns the absolute transform of this element. - */ - const Amg::Transform3D getAbsoluteTransformAmg () const; + const Amg::Transform3D& getAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const; /** * @brief Returns the absolute transform of this element. */ - const Amg::Transform3D getDefAbsoluteTransformAmg () const; + const Amg::Transform3D& getDefAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const; double getProjectivityDisplacement() const; diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/HECDetectorRegion.h b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/HECDetectorRegion.h index 776adb869626e9719a2d493336a2cd5d5a76c320..ce24c2d4390f4c2f1614cc49f6b0c47a8d266643 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/HECDetectorRegion.h +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/HECDetectorRegion.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef LARREADOUTGEOMETRY_HECDETECTORREGION_H @@ -24,6 +24,7 @@ * provides access to the HEC Cells. */ +class GeoAlignmentStore; class HECDetectorRegion : public GeoVDetectorElement @@ -92,22 +93,12 @@ class HECDetectorRegion : public GeoVDetectorElement /** * @brief Returns the absolute transform of this element. */ - const GeoTrf::Transform3D & getAbsoluteTransform () const; - - /** - * @brief Returns the absolute transform of this element. - */ - const GeoTrf::Transform3D & getDefAbsoluteTransform () const; - - /** - * @brief Returns the absolute transform of this element. - */ - const Amg::Transform3D getAbsoluteTransformAmg () const; + const Amg::Transform3D& getAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const; /** * @brief Returns the absolute transform of this element. */ - const Amg::Transform3D getDefAbsoluteTransformAmg () const; + const Amg::Transform3D& getDefAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const; /** * @brief Returns the position of the center of the reference diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBAccordionDetails.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBAccordionDetails.cxx index f53b0416065194038ee4cb4cb658eb0b66c3ca0d..2330f9f8ae626023fb5c5db62b2f3c8fbb19ada9 100644 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBAccordionDetails.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBAccordionDetails.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArReadoutGeometry/EMBAccordionDetails.h" @@ -8,6 +8,7 @@ #include "RDBAccessSvc/IRDBRecord.h" #include "RDBAccessSvc/IRDBRecordset.h" #include "GeoModelInterfaces/IGeoModelSvc.h" +#include "GeoModelInterfaces/IGeoDbTagSvc.h" #include "GaudiKernel/ISvcLocator.h" #include "GaudiKernel/Bootstrap.h" #include "GaudiKernel/PhysicalConstants.h" @@ -201,38 +202,39 @@ int EMBAccordionDetails::Clockwork::phiGap(double radius, double xhit, const dou -EMBAccordionDetails::EMBAccordionDetails():m_c(new Clockwork()) { - // Access the GeoModelSvc: - IGeoModelSvc *geoModel; - StatusCode status; +EMBAccordionDetails::EMBAccordionDetails() + : m_c(new Clockwork()) +{ + ISvcLocator *svcLocator = Gaudi::svcLocator(); + IRDBAccessSvc *rdbAccess{nullptr}; + IGeoModelSvc *geoModel{nullptr}; + IGeoDbTagSvc *geoDbTagSvc{nullptr}; - ISvcLocator* svcLocator = Gaudi::svcLocator(); - status = svcLocator->service ("GeoModelSvc",geoModel); - if (status != StatusCode::SUCCESS) { - throw std::runtime_error ("Cannot locate GeoModelSvc!!"); - } - - // Access the geometry database: - IRDBAccessSvc *pAccessSvc; - status=svcLocator->service("RDBAccessSvc",pAccessSvc); - if (status != StatusCode::SUCCESS) { - throw std::runtime_error ("Cannot locate RDBAccessSvc!!"); + if(svcLocator->service("GeoModelSvc",geoModel) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoModelSvc"); + + if(svcLocator->service("GeoDbTagSvc",geoDbTagSvc) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoDbTagSvc"); + + if(svcLocator->service(geoDbTagSvc->getParamSvcName(),rdbAccess) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access RDBAccessSvc"); + + std::string detectorKey, detectorNode; + + if(geoDbTagSvc->getSqliteReader()==nullptr) { + std::string AtlasVersion = geoModel->atlasVersion(); + std::string LArVersion = geoModel->LAr_VersionOverride(); + + detectorKey = LArVersion.empty() ? AtlasVersion : LArVersion; + detectorNode = LArVersion.empty() ? "ATLAS" : "LAr"; } - - // Obtain the geometry version information: - - std::string AtlasVersion = geoModel->atlasVersion(); - std::string LArVersion = geoModel->LAr_VersionOverride(); - - std::string detectorKey = LArVersion.empty() ? AtlasVersion : LArVersion; - std::string detectorNode = LArVersion.empty() ? "ATLAS" : "LAr"; - - IRDBRecordset_ptr barrelGeometry = pAccessSvc->getRecordsetPtr("BarrelGeometry",detectorKey,detectorNode); + + IRDBRecordset_ptr barrelGeometry = rdbAccess->getRecordsetPtr("BarrelGeometry",detectorKey,detectorNode); if (barrelGeometry->size()==0) { throw std::runtime_error("Cannot find the BarrelGeometry Table"); } - IRDBRecordset_ptr barrelLongDiv = pAccessSvc->getRecordsetPtr("BarrelLongDiv",detectorKey,detectorNode); + IRDBRecordset_ptr barrelLongDiv = rdbAccess->getRecordsetPtr("BarrelLongDiv",detectorKey,detectorNode); if (barrelLongDiv->size()==0) { throw std::runtime_error("Cannot find the BarrelLongDiv Table"); } diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBBasicReadoutNumbers.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBBasicReadoutNumbers.cxx index 064049f3c1e052f6ebba05d3fcc2342fb0e6a8ff..5206df5e096ab052e41dca3d959c5fa4dab82954 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBBasicReadoutNumbers.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBBasicReadoutNumbers.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "GaudiKernel/MsgStream.h" @@ -13,39 +13,44 @@ #include "GeoModelInterfaces/IGeoModelSvc.h" +#include "GeoModelInterfaces/IGeoDbTagSvc.h" #include "GeoModelUtilities/DecodeVersionKey.h" #include "LArReadoutGeometry/EMBBasicReadoutNumbers.h" EMBBasicReadoutNumbers::EMBBasicReadoutNumbers() { - - // The EMB gets and managers certain arrays needed to build descriptors. Here is that: ISvcLocator *svcLocator = Gaudi::svcLocator(); - IRDBAccessSvc* rdbAccess; - IGeoModelSvc * geoModel; - - if (svcLocator->service ("GeoModelSvc",geoModel) == StatusCode::FAILURE) - throw std::runtime_error("Error in LArDetectorFactoryH62002, cannot access GeoModelSvc"); + IRDBAccessSvc *rdbAccess{nullptr}; + IGeoModelSvc *geoModel{nullptr}; + IGeoDbTagSvc *geoDbTagSvc{nullptr}; - if(svcLocator->service ("RDBAccessSvc",rdbAccess) == StatusCode::FAILURE) - throw std::runtime_error("Error in LArDetectorFactoryH62002, cannot access RDBAccessSvc"); + if(svcLocator->service("GeoModelSvc",geoModel) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoModelSvc"); - DecodeVersionKey larVersionKey(geoModel, "LAr"); + if(svcLocator->service("GeoDbTagSvc",geoDbTagSvc) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoDbTagSvc"); - IRDBRecordset_ptr barrelLongDiv = rdbAccess->getRecordsetPtr("BarrelLongDiv", larVersionKey.tag(),larVersionKey.node()); - if (barrelLongDiv->size()==0) throw std::runtime_error("Error getting BarrelLongDiv table"); + if(svcLocator->service(geoDbTagSvc->getParamSvcName(),rdbAccess) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access RDBAccessSvc"); + std::string larKey, larNode; + if(geoDbTagSvc->getSqliteReader()==nullptr) { + DecodeVersionKey larVersionKey(geoModel, "LAr"); + larKey = larVersionKey.tag(); + larNode = larVersionKey.node(); + } - IRDBRecordset_ptr barrelGeometry = rdbAccess->getRecordsetPtr("BarrelGeometry", larVersionKey.tag(),larVersionKey.node()); - if (barrelGeometry->size()==0) throw std::runtime_error("Error getting BarrelGeometry table"); + IRDBRecordset_ptr barrelLongDiv = rdbAccess->getRecordsetPtr("BarrelLongDiv", larKey, larNode); + if (barrelLongDiv->size()==0) throw std::runtime_error("Error getting BarrelLongDiv table"); + IRDBRecordset_ptr barrelGeometry = rdbAccess->getRecordsetPtr("BarrelGeometry", larKey, larNode); + if (barrelGeometry->size()==0) throw std::runtime_error("Error getting BarrelGeometry table"); - IRDBRecordset_ptr presamplerGeometry = rdbAccess->getRecordsetPtr("PresamplerGeometry", larVersionKey.tag(),larVersionKey.node()); - if (presamplerGeometry->size()==0) throw std::runtime_error("Error getting PresamplerGeometry table"); + IRDBRecordset_ptr presamplerGeometry = rdbAccess->getRecordsetPtr("PresamplerGeometry", larKey, larNode); + if (presamplerGeometry->size()==0) throw std::runtime_error("Error getting PresamplerGeometry table"); - - IRDBRecordset_ptr embSampSep = rdbAccess->getRecordsetPtr("EMBSampSep", larVersionKey.tag(),larVersionKey.node()); + IRDBRecordset_ptr embSampSep = rdbAccess->getRecordsetPtr("EMBSampSep", larKey, larNode); if (embSampSep->size()==0) { embSampSep = rdbAccess->getRecordsetPtr("EMBSampSep", "EMBSampSep-00"); if (embSampSep->size()==0) { diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBDetectorRegion.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBDetectorRegion.cxx index 1fd7744415bc490c07de617e378f06b67e9b9dec..4250503fdf281c9d60368c874178fa6bbc274013 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBDetectorRegion.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBDetectorRegion.cxx @@ -1,11 +1,12 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "GeoModelKernel/GeoVFullPhysVol.h" #include "LArReadoutGeometry/EMBDetectorRegion.h" #include "GeoPrimitives/GeoPrimitives.h" +#include "GeoModelUtilities/GeoAlignmentStore.h" EMBDetectorRegion::EMBDetectorRegion (const GeoVFullPhysVol *physVol , const EMBDetDescr *embDescriptor @@ -17,7 +18,6 @@ EMBDetectorRegion::EMBDetectorRegion (const GeoVFullPhysVol *physVol m_descriptor->ref(); } - EMBDetectorRegion::~EMBDetectorRegion() { m_descriptor->unref(); @@ -28,25 +28,18 @@ EMBCellConstLink EMBDetectorRegion::getEMBCell (unsigned int ieta, unsigned int return EMBCellConstLink(new EMBCell(m_endcapIndex,m_descriptor,ieta,iphi)); } -const Amg::Transform3D EMBDetectorRegion::getAbsoluteTransformAmg () const -{ - const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getAbsoluteTransform(); -} - -const Amg::Transform3D EMBDetectorRegion::getDefAbsoluteTransformAmg () const -{ - const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getDefAbsoluteTransform(); -} -const GeoTrf::Transform3D & EMBDetectorRegion::getAbsoluteTransform () const +const Amg::Transform3D& EMBDetectorRegion::getAbsoluteTransform (const GeoAlignmentStore* alignStore) const { const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getAbsoluteTransform(); + return alignStore + ? fullPhysVol->getCachedAbsoluteTransform(alignStore) + : fullPhysVol->getAbsoluteTransform(); } -const GeoTrf::Transform3D & EMBDetectorRegion::getDefAbsoluteTransform () const +const Amg::Transform3D& EMBDetectorRegion::getDefAbsoluteTransform (const GeoAlignmentStore* alignStore) const { const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getDefAbsoluteTransform(); + return alignStore + ? fullPhysVol->getCachedDefAbsoluteTransform(alignStore) + : fullPhysVol->getDefAbsoluteTransform(); } diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMECDetectorManager.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMECDetectorManager.cxx index 7ef593befa744d502846814c8ccca8770527da14..361e0c2e8e5a0ab4173b2d53f3884b811a5e010e 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMECDetectorManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMECDetectorManager.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "GaudiKernel/MsgStream.h" @@ -12,6 +12,7 @@ #include "RDBAccessSvc/IRDBAccessSvc.h" #include "GeoModelInterfaces/IGeoModelSvc.h" +#include "GeoModelInterfaces/IGeoDbTagSvc.h" #include "GeoModelUtilities/DecodeVersionKey.h" #include "LArReadoutGeometry/EMECDetectorManager.h" #include "LArReadoutGeometry/EMECDetectorRegion.h" @@ -32,7 +33,7 @@ EMECDetectorManager::EMECDetectorManager(const EMECHVManager* hvManagerInner for (unsigned int s=0;s<4;s++) { for (unsigned int io=0;io<2;io++) { for (unsigned int e=0;e<2;e++) { - m_DetRegionsRandom[r][s][io][e]=NULL; + m_DetRegionsRandom[r][s][io][e]=nullptr; } } } @@ -43,17 +44,27 @@ EMECDetectorManager::EMECDetectorManager(const EMECHVManager* hvManagerInner // The EMEC gets and managers certain arrays needed to build descriptors. Here is that: ISvcLocator *svcLocator = Gaudi::svcLocator(); - IRDBAccessSvc* rdbAccess; - IGeoModelSvc * geoModel; - - if (svcLocator->service ("GeoModelSvc",geoModel) == StatusCode::FAILURE) - throw std::runtime_error("Error in LArDetectorFactoryH62002, cannot access GeoModelSvc"); + IRDBAccessSvc *rdbAccess{nullptr}; + IGeoModelSvc *geoModel{nullptr}; + IGeoDbTagSvc *geoDbTagSvc{nullptr}; + + if(svcLocator->service("GeoModelSvc",geoModel) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoModelSvc"); - if(svcLocator->service ("RDBAccessSvc",rdbAccess) == StatusCode::FAILURE) - throw std::runtime_error("Error in LArDetectorFactoryH62002, cannot access RDBAccessSvc"); + if(svcLocator->service("GeoDbTagSvc",geoDbTagSvc) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoDbTagSvc"); - DecodeVersionKey larVersionKey(geoModel, "LAr"); - IRDBRecordset_ptr emecSamplingSep = rdbAccess->getRecordsetPtr("EmecSamplingSep", larVersionKey.tag(),larVersionKey.node()); + if(svcLocator->service(geoDbTagSvc->getParamSvcName(),rdbAccess) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access RDBAccessSvc"); + + std::string larKey, larNode; + if(geoDbTagSvc->getSqliteReader()==nullptr) { + DecodeVersionKey larVersionKey(geoModel, "LAr"); + larKey = larVersionKey.tag(); + larNode = larVersionKey.node(); + } + + IRDBRecordset_ptr emecSamplingSep = rdbAccess->getRecordsetPtr("EmecSamplingSep", larKey, larNode); if (emecSamplingSep->size()==0) throw std::runtime_error("Error getting EmecSamplingSep table"); const IRDBRecord *ess = (*emecSamplingSep)[0]; @@ -61,17 +72,18 @@ EMECDetectorManager::EMECDetectorManager(const EMECHVManager* hvManagerInner for (int j=0;j<44;j++) m_zsep12.push_back(ess->getDouble("ZSEP12",j)*Gaudi::Units::cm); for (int j=0;j<22;j++) m_zsep23.push_back(ess->getDouble("ZSEP23",j)*Gaudi::Units::cm); - IRDBRecordset_ptr emecMagicNumbers = rdbAccess->getRecordsetPtr("EmecMagicNumbers", larVersionKey.tag(),larVersionKey.node()); + IRDBRecordset_ptr emecMagicNumbers = rdbAccess->getRecordsetPtr("EmecMagicNumbers", larKey, larNode); if (emecMagicNumbers->size()==0) { emecMagicNumbers = rdbAccess->getRecordsetPtr("EmecMagicNumbers", "EmecMagicNumbers-00"); - if (emecMagicNumbers->size()==0) throw std::runtime_error("Error getting EmecMagicNumbers table"); + if (emecMagicNumbers->size()==0) { + throw std::runtime_error("Error getting EmecMagicNumbers table"); + } } m_MagicNumbers->focalToRef =(*emecMagicNumbers)[0]->getDouble("FOCALTOREF")*Gaudi::Units::mm; m_MagicNumbers->refToActive =(*emecMagicNumbers)[0]->getDouble("REFTOACTIVE")*Gaudi::Units::mm; m_MagicNumbers->activeLength =(*emecMagicNumbers)[0]->getDouble("ACTIVELENGTH")*Gaudi::Units::mm; m_MagicNumbers->refToPresampler =(*emecMagicNumbers)[0]->getDouble("REFTOPRESAMPLER")*Gaudi::Units::mm; m_MagicNumbers->presamplerLength =(*emecMagicNumbers)[0]->getDouble("PRESAMPLERLENGTH")*Gaudi::Units::mm; - } diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMECDetectorRegion.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMECDetectorRegion.cxx index 107494cb4b804b4a7c6b38d04619889c7565cd5f..35b1c7cd3bf41553f51d2b1235df9d5f060186d8 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMECDetectorRegion.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMECDetectorRegion.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "GeoModelKernel/GeoVFullPhysVol.h" @@ -7,6 +7,7 @@ #include "LArReadoutGeometry/EMECDetectorRegion.h" #include "GeoModelKernel/GeoPcon.h" #include "GeoPrimitives/CLHEPtoEigenConverter.h" +#include "GeoModelUtilities/GeoAlignmentStore.h" EMECDetectorRegion::EMECDetectorRegion (const GeoVFullPhysVol *physVol , const EMECDetDescr *emecDescriptor @@ -30,18 +31,6 @@ EMECCellConstLink EMECDetectorRegion::getEMECCell (unsigned int ieta, unsigned i return EMECCellConstLink(new EMECCell(m_endcapIndex,m_descriptor,ieta,iphi)); } -const GeoTrf::Transform3D & EMECDetectorRegion::getAbsoluteTransform () const -{ - const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getAbsoluteTransform(); -} - -const GeoTrf::Transform3D & EMECDetectorRegion::getDefAbsoluteTransform () const -{ - const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getDefAbsoluteTransform(); -} - HepGeom::Point3D<double> EMECDetectorRegion::getRefPlanePos () const { const GeoVFullPhysVol *physVol = getMaterialGeom(); @@ -63,14 +52,20 @@ HepGeom::Point3D<double> EMECDetectorRegion::getFocalPointPos () const return zRef - focalPos; } -const Amg::Transform3D EMECDetectorRegion::getAbsoluteTransformAmg () const +const Amg::Transform3D& EMECDetectorRegion::getAbsoluteTransform (const GeoAlignmentStore* alignStore) const { - return getAbsoluteTransform(); + const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); + return alignStore + ? fullPhysVol->getCachedAbsoluteTransform(alignStore) + : fullPhysVol->getAbsoluteTransform(); } -const Amg::Transform3D EMECDetectorRegion::getDefAbsoluteTransformAmg () const +const Amg::Transform3D& EMECDetectorRegion::getDefAbsoluteTransform (const GeoAlignmentStore* alignStore) const { - return getDefAbsoluteTransform(); + const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); + return alignStore + ? fullPhysVol->getCachedDefAbsoluteTransform(alignStore) + : fullPhysVol->getDefAbsoluteTransform(); } Amg::Vector3D EMECDetectorRegion::getRefPlanePosAmg () const diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/FCALModule.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/FCALModule.cxx index 105837fe0894d6ef872b59db169245a60c7f8fa6..423e68b9207e967f7c5d3e3f857132e34a3e47ff 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/FCALModule.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/FCALModule.cxx @@ -2,15 +2,15 @@ Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ +#include "LArReadoutGeometry/FCALModule.h" #include "LArReadoutGeometry/FCAL_ChannelMap.h" #include "LArReadoutGeometry/FCALDetectorManager.h" + #include "GeoModelKernel/GeoVFullPhysVol.h" #include "GeoModelKernel/GeoLogVol.h" #include "GeoModelKernel/GeoShape.h" #include "GeoModelKernel/GeoTubs.h" - -// FCALModule -#include "LArReadoutGeometry/FCALModule.h" +#include "GeoModelUtilities/GeoAlignmentStore.h" #include <algorithm> @@ -27,12 +27,12 @@ bool operator < (const FCALTile &t, unsigned int i) { // Class FCALModule FCALModule::FCALModule (const GeoVFullPhysVol *physVol, Module module, Endcap endcap, double projectivityDisplacement) - :GeoVDetectorElement(physVol), - m_Mod(module), - m_EC(endcap), - m_manager(0), - m_dz(((const GeoTubs *) physVol->getLogVol()->getShape())->getZHalfLength()*2.0), - m_projectivityDisplacement(projectivityDisplacement) + : GeoVDetectorElement(physVol) + , m_Mod(module) + , m_EC(endcap) + , m_manager(nullptr) + , m_dz(((const GeoTubs *) physVol->getLogVol()->getShape())->getZHalfLength()*2.0) + , m_projectivityDisplacement(projectivityDisplacement) { } @@ -93,26 +93,20 @@ double FCALModule::getFullDepthZ (const FCALTile& ) const return m_dz; } -const GeoTrf::Transform3D & FCALModule::getAbsoluteTransform () const +const Amg::Transform3D& FCALModule::getAbsoluteTransform (const GeoAlignmentStore* alignStore) const { const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getAbsoluteTransform(); + return alignStore + ? fullPhysVol->getCachedAbsoluteTransform(alignStore) + : fullPhysVol->getAbsoluteTransform(); } -const GeoTrf::Transform3D & FCALModule::getDefAbsoluteTransform () const +const Amg::Transform3D& FCALModule::getDefAbsoluteTransform (const GeoAlignmentStore* alignStore) const { const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getDefAbsoluteTransform(); -} - -const Amg::Transform3D FCALModule::getAbsoluteTransformAmg () const -{ - return getAbsoluteTransform(); -} - -const Amg::Transform3D FCALModule::getDefAbsoluteTransformAmg () const -{ - return getDefAbsoluteTransform(); + return alignStore + ? fullPhysVol->getCachedDefAbsoluteTransform(alignStore) + : fullPhysVol->getDefAbsoluteTransform(); } void FCALModule::setManager (FCALDetectorManager* fcalManager) diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetDescr.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetDescr.cxx index 426a5e9a232786e2f983a568426d92c58afdb786..c616e8184b00919ec7b7c322db2843c27fdc3a47 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetDescr.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetDescr.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArReadoutGeometry/HECDetDescr.h" @@ -11,6 +11,7 @@ #include "RDBAccessSvc/IRDBRecordset.h" #include "RDBAccessSvc/IRDBAccessSvc.h" #include "GeoModelInterfaces/IGeoModelSvc.h" +#include "GeoModelInterfaces/IGeoDbTagSvc.h" #include "GeoModelUtilities/DecodeVersionKey.h" HECDetDescr::HECDetDescr (const HECDetectorManager *detManager @@ -29,17 +30,27 @@ HECDetDescr::HECDetDescr (const HECDetectorManager *detManager { // This will soon be unnecessary (when the wheels are divided! ISvcLocator *svcLocator = Gaudi::svcLocator(); - IRDBAccessSvc* rdbAccess; - IGeoModelSvc * geoModel; - - if (svcLocator->service ("GeoModelSvc",geoModel) == StatusCode::FAILURE) - throw std::runtime_error("Error in HECDetDescr, cannot access GeoModelSvc"); + IRDBAccessSvc *rdbAccess{nullptr}; + IGeoModelSvc *geoModel{nullptr}; + IGeoDbTagSvc *geoDbTagSvc{nullptr}; + + if(svcLocator->service("GeoModelSvc",geoModel) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoModelSvc"); + + if(svcLocator->service("GeoDbTagSvc",geoDbTagSvc) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoDbTagSvc"); - if(svcLocator->service ("RDBAccessSvc",rdbAccess) == StatusCode::FAILURE) - throw std::runtime_error("Error in HECDetDescr, cannot access RDBAccessSvc"); + if(svcLocator->service(geoDbTagSvc->getParamSvcName(),rdbAccess) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access RDBAccessSvc"); + + std::string larKey, larNode; + if(geoDbTagSvc->getSqliteReader()==nullptr) { + DecodeVersionKey larVersionKey(geoModel, "LAr"); + larKey = larVersionKey.tag(); + larNode = larVersionKey.node(); + } - DecodeVersionKey larVersionKey(geoModel, "LAr"); - IRDBRecordset_ptr hadronicEndcap = rdbAccess->getRecordsetPtr("HadronicEndcap", larVersionKey.tag(), larVersionKey.node()); +IRDBRecordset_ptr hadronicEndcap = rdbAccess->getRecordsetPtr("HadronicEndcap", larKey, larNode); if (hadronicEndcap->size()==0) throw std::runtime_error("Error getting HadronicEndcap table"); // End of soon-to-be-unnecessary part. diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetectorManager.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetectorManager.cxx index a62161e8d07b3895d9377fda0ff2727e9f030738..07fe533ff007315c0814704c3da0f2765e7798ac 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetectorManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetectorManager.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArReadoutGeometry/HECDetDescr.h" @@ -12,6 +12,7 @@ #include "RDBAccessSvc/IRDBRecordset.h" #include "RDBAccessSvc/IRDBAccessSvc.h" #include "GeoModelInterfaces/IGeoModelSvc.h" +#include "GeoModelInterfaces/IGeoDbTagSvc.h" #include "GeoModelUtilities/DecodeVersionKey.h" #include "LArReadoutGeometry/HECDetectorManager.h" #include "LArHV/LArHVManager.h" @@ -26,36 +27,49 @@ HECDetectorManager::HECDetectorManager(const HECHVManager* hvManager, bool isTes setName("LArHEC"); ISvcLocator *svcLocator = Gaudi::svcLocator(); - IRDBAccessSvc* rdbAccess; - IGeoModelSvc * geoModel; - - if (svcLocator->service ("GeoModelSvc",geoModel) == StatusCode::FAILURE) + IRDBAccessSvc *rdbAccess{nullptr}; + IGeoModelSvc *geoModel{nullptr}; + IGeoDbTagSvc *geoDbTagSvc{nullptr}; + + if(svcLocator->service("GeoModelSvc",geoModel) == StatusCode::FAILURE) throw std::runtime_error("Error in HECDetectorManager, cannot access GeoModelSvc"); - if(svcLocator->service ("RDBAccessSvc",rdbAccess) == StatusCode::FAILURE) + if(svcLocator->service("GeoDbTagSvc",geoDbTagSvc) == StatusCode::FAILURE) + throw std::runtime_error("Error in HECDetectorManager, cannot access GeoDbTagSvc"); + + if(svcLocator->service(geoDbTagSvc->getParamSvcName(),rdbAccess) == StatusCode::FAILURE) throw std::runtime_error("Error in HECDetectorManager, cannot access RDBAccessSvc"); - DecodeVersionKey larVersionKey(geoModel, "LAr"); - IRDBRecordset_ptr hecLongBlock = rdbAccess->getRecordsetPtr("HecLongitudinalBlock", larVersionKey.tag(),larVersionKey.node()); - IRDBRecordset_ptr hecPad = rdbAccess->getRecordsetPtr("HecPad", larVersionKey.tag(),larVersionKey.node()); - IRDBRecordset_ptr hadronicEndcap = rdbAccess->getRecordsetPtr("HadronicEndcap", larVersionKey.tag(), larVersionKey.node()); + std::string larKey, larNode; + if(geoDbTagSvc->getSqliteReader()==nullptr) { + DecodeVersionKey larVersionKey(geoModel, "LAr"); + larKey = larVersionKey.tag(); + larNode = larVersionKey.node(); + } + + IRDBRecordset_ptr hecLongBlock = rdbAccess->getRecordsetPtr("HecLongitudinalBlock",larKey,larNode); + IRDBRecordset_ptr hecPad = rdbAccess->getRecordsetPtr("HecPad",larKey,larNode); + IRDBRecordset_ptr hadronicEndcap = rdbAccess->getRecordsetPtr("HadronicEndcap",larKey,larNode); - if(hecLongBlock->size()==0) - { - hecLongBlock = rdbAccess->getRecordsetPtr("HecLongitudinalBlock", "HecLongitudinalBlock-00"); - if (hecLongBlock->size()==0) throw std::runtime_error("Error getting HecLongitudinalBlock table"); + if(hecLongBlock->size()==0) { + hecLongBlock = rdbAccess->getRecordsetPtr("HecLongitudinalBlock", "HecLongitudinalBlock-00"); + if (hecLongBlock->size()==0) { + throw std::runtime_error("Error getting HecLongitudinalBlock table"); + } } - if(hecPad->size()==0) - { - hecPad = rdbAccess->getRecordsetPtr("HecPad","HecPad-00"); - if (hecPad->size()==0) throw std::runtime_error("Error getting HecPad table"); + if(hecPad->size()==0) { + hecPad = rdbAccess->getRecordsetPtr("HecPad","HecPad-00"); + if (hecPad->size()==0) { + throw std::runtime_error("Error getting HecPad table"); + } } - if(hadronicEndcap->size()==0) - { - hadronicEndcap = rdbAccess->getRecordsetPtr("HadronicEndcap","HadronicEndcap-00"); - if (hadronicEndcap->size()==0) throw std::runtime_error("Error getting HadronicEndcap table"); + if(hadronicEndcap->size()==0) { + hadronicEndcap = rdbAccess->getRecordsetPtr("HadronicEndcap","HadronicEndcap-00"); + if (hadronicEndcap->size()==0) { + throw std::runtime_error("Error getting HadronicEndcap table"); + } } if (hecPad->size()!=hecLongBlock->size()) throw std::runtime_error("Error. Hec[LongitudinalBlock,Pad] size discrepancy"); diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetectorRegion.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetectorRegion.cxx index 484cc4adad2619cd176391f74f391d7d3192464e..c85bbebd213e34e802dcd3d890997d541203b24b 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetectorRegion.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/HECDetectorRegion.cxx @@ -1,11 +1,12 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "LArReadoutGeometry/HECDetectorRegion.h" #include "GeoModelKernel/GeoVFullPhysVol.h" #include "GeoModelKernel/GeoPcon.h" #include "GeoPrimitives/CLHEPtoEigenConverter.h" +#include "GeoModelUtilities/GeoAlignmentStore.h" HECDetectorRegion::HECDetectorRegion (const GeoVFullPhysVol *physVol , const HECDetDescr *hecDescriptor @@ -31,31 +32,25 @@ HECCellConstLink HECDetectorRegion::getHECCell (unsigned int ieta, unsigned int return HECCellConstLink(cell); } -const GeoTrf::Transform3D & HECDetectorRegion::getAbsoluteTransform () const -{ - const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getAbsoluteTransform(); -} - -const GeoTrf::Transform3D & HECDetectorRegion::getDefAbsoluteTransform () const -{ - const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); - return fullPhysVol->getDefAbsoluteTransform(); -} - Amg::Vector3D HECDetectorRegion::getRefPlanePosAmg () const { HepGeom::Point3D<double> clhepPoint = getRefPlanePos(); return Amg::Vector3D(clhepPoint.x(), clhepPoint.y(), clhepPoint.z()); } -const Amg::Transform3D HECDetectorRegion::getAbsoluteTransformAmg () const +const Amg::Transform3D& HECDetectorRegion::getAbsoluteTransform (const GeoAlignmentStore* alignStore) const { - return getAbsoluteTransform(); + const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); + return alignStore + ? fullPhysVol->getCachedAbsoluteTransform(alignStore) + : fullPhysVol->getAbsoluteTransform(); } -const Amg::Transform3D HECDetectorRegion::getDefAbsoluteTransformAmg () const +const Amg::Transform3D& HECDetectorRegion::getDefAbsoluteTransform (const GeoAlignmentStore* alignStore) const { - return getDefAbsoluteTransform(); + const GeoVFullPhysVol *fullPhysVol = getMaterialGeom(); + return alignStore + ? fullPhysVol->getCachedDefAbsoluteTransform(alignStore) + : fullPhysVol->getDefAbsoluteTransform(); } Amg::Vector3D HECDetectorRegion::getFocalPointPosAmg () const diff --git a/LumiBlock/LumiBlockComps/Root/LumiBlockMetaDataTool.cxx b/LumiBlock/LumiBlockComps/Root/LumiBlockMetaDataTool.cxx index b6ffa7dfa2b794224d7a559dc3f6c5c8556533d0..4d5df86d20651069241eeb44f5914d6390d892cb 100644 --- a/LumiBlock/LumiBlockComps/Root/LumiBlockMetaDataTool.cxx +++ b/LumiBlock/LumiBlockComps/Root/LumiBlockMetaDataTool.cxx @@ -107,7 +107,7 @@ StatusCode LumiBlockMetaDataTool::beginInputFile(const SG::SourceID&) if (m_pInputStore->contains<xAOD::LumiBlockRangeContainer>(m_LBColl_name)) { ATH_MSG_INFO(" Contains xAOD::LumiBlockRangeContainer " << m_LBColl_name); - const xAOD::LumiBlockRangeContainer* lbrange =0; + const xAOD::LumiBlockRangeContainer* lbrange =nullptr; StatusCode sc = m_pInputStore->retrieve(lbrange,m_LBColl_name); if (!sc.isSuccess()) { ATH_MSG_INFO( "Could not find unfinished xAOD::LumiBlockRangeContainer in input metatdata store" ); @@ -121,7 +121,7 @@ StatusCode LumiBlockMetaDataTool::beginInputFile(const SG::SourceID&) } if (m_pInputStore->contains<xAOD::LumiBlockRangeContainer>(m_unfinishedLBColl_name)) { ATH_MSG_INFO(" Contains xAOD::LumiBlockRangeContainer " << m_unfinishedLBColl_name); - const xAOD::LumiBlockRangeContainer* lbrange =0; + const xAOD::LumiBlockRangeContainer* lbrange =nullptr; StatusCode sc = m_pInputStore->retrieve(lbrange,m_unfinishedLBColl_name); if (!sc.isSuccess()) { ATH_MSG_INFO( "Could not find unfinished xAOD::LumiBlockRangeContainer in input metatdata store" ); @@ -135,7 +135,7 @@ StatusCode LumiBlockMetaDataTool::beginInputFile(const SG::SourceID&) } if (m_pInputStore->contains<xAOD::LumiBlockRangeContainer>(m_suspectLBColl_name)) { ATH_MSG_INFO(" Contains xAOD::LumiBlockRangeContainer " << m_suspectLBColl_name); - const xAOD::LumiBlockRangeContainer* lbrange =0; + const xAOD::LumiBlockRangeContainer* lbrange =nullptr; StatusCode sc = m_pInputStore->retrieve(lbrange,m_suspectLBColl_name); if (!sc.isSuccess()) { ATH_MSG_INFO( "Could not find suspect xAOD::LumiBlockRangeContainer in input metatdata store" ); @@ -201,7 +201,7 @@ StatusCode LumiBlockMetaDataTool::finishUp() { xAOD::LumiBlockRangeAuxContainer* piovSuspectAux = new xAOD::LumiBlockRangeAuxContainer(); piovSuspect->setStore( piovSuspectAux ); - if(m_cacheSuspectOutputRangeContainer->size()>0) { + if(!m_cacheSuspectOutputRangeContainer->empty()) { ATH_MSG_VERBOSE("Suspect OutputRangeCollection with size " << m_cacheSuspectOutputRangeContainer->size()); for (const auto range : *m_cacheSuspectOutputRangeContainer) { auto iovr = std::make_unique<xAOD::LumiBlockRange>(*range); @@ -209,7 +209,7 @@ StatusCode LumiBlockMetaDataTool::finishUp() { } } - if(m_cacheOutputRangeContainer->size()>0) { + if(!m_cacheOutputRangeContainer->empty()) { ATH_MSG_VERBOSE("OutputRangeCollection with size " << m_cacheOutputRangeContainer->size()); m_cacheOutputRangeContainer->sort(xAOD::SortLumiBlockRangeByStart()); @@ -276,7 +276,7 @@ StatusCode LumiBlockMetaDataTool::finishUp() { } - if(piovComplete->size()>0) { + if(!piovComplete->empty()) { ATH_MSG_DEBUG( "Number of Complete LumiBlocks:" << piovComplete->size() ); for (const auto range : *piovComplete) { ATH_MSG_INFO("\t [ (" @@ -289,7 +289,7 @@ StatusCode LumiBlockMetaDataTool::finishUp() { } } - if(piovUnfinished->size()>0) { + if(!piovUnfinished->empty()) { ATH_MSG_DEBUG( "Number of Unfinished LumiBlocks:" << piovUnfinished->size() ); for (const auto range : *piovUnfinished) { ATH_MSG_INFO("\t [ (" @@ -301,7 +301,7 @@ StatusCode LumiBlockMetaDataTool::finishUp() { << " ]"); } } - if(piovSuspect->size()>0) { + if(!piovSuspect->empty()) { ATH_MSG_DEBUG( "Number of Suspect LumiBlocks:" << piovSuspect->size() ); for (const auto range : *piovSuspect) { ATH_MSG_INFO("\t [ (" @@ -316,19 +316,19 @@ StatusCode LumiBlockMetaDataTool::finishUp() { // Store the LumiBlockRangeContainer in the metadata store // ======================================================= - if(piovComplete->size()>0) { + if(!piovComplete->empty()) { ATH_MSG_INFO( "Write Complete LumiBlocks with size " << piovComplete->size()); ATH_CHECK( m_pMetaDataStore->record( piovComplete, m_LBColl_name ) ); ATH_CHECK( m_pMetaDataStore->record( piovCompleteAux, m_LBColl_name + "Aux." ) ); } - if(piovUnfinished->size()>0) { + if(!piovUnfinished->empty()) { ATH_MSG_INFO( "Write Unfinished LumiBlocks with size " << piovUnfinished->size()); ATH_CHECK( m_pMetaDataStore->record( piovUnfinished, m_unfinishedLBColl_name ) ); ATH_CHECK( m_pMetaDataStore->record( piovUnfinishedAux, m_unfinishedLBColl_name + "Aux." ) ); } - if(piovSuspect->size()>0) { + if(!piovSuspect->empty()) { ATH_MSG_INFO( "Write Suspect LumiBlocks with size " << piovSuspect->size()); ATH_CHECK( m_pMetaDataStore->record( piovSuspect, m_suspectLBColl_name ) ); ATH_CHECK( m_pMetaDataStore->record( piovSuspectAux, m_suspectLBColl_name + "Aux." ) ); diff --git a/LumiBlock/LumiBlockComps/src/BunchCrossingCondAlg.cxx b/LumiBlock/LumiBlockComps/src/BunchCrossingCondAlg.cxx index b4801289cda09e990cf7fd5febec481f27c6c233..6377f22a64c36c7e6708d85837a2c53ab1fb34fc 100644 --- a/LumiBlock/LumiBlockComps/src/BunchCrossingCondAlg.cxx +++ b/LumiBlock/LumiBlockComps/src/BunchCrossingCondAlg.cxx @@ -3,12 +3,12 @@ */ #include "BunchCrossingCondAlg.h" +#include "CoolKernel/IObject.h" +#include "CoralBase/Blob.h" #include "StoreGate/ReadCondHandle.h" #include "StoreGate/WriteCondHandle.h" -#include <stdint.h> #include <charconv> -#include "CoralBase/Blob.h" -#include "CoolKernel/IObject.h" +#include <cstdint> #include "CoralBase/AttributeListException.h" @@ -55,7 +55,7 @@ StatusCode BunchCrossingCondAlg::execute (const EventContext& ctx) const { const float minBunchIntensity=0.001; std::vector<float> bunches=tokenize(sbunches); - if (bunches.size()>0) { + if (!bunches.empty()) { // Check if the pattern "fits into" the LHC: if( BunchCrossingCondData::m_MAX_BCID % bunches.size() ) { @@ -217,7 +217,7 @@ std::vector<BunchCrossingCondData::bunchTrain_t> BunchCrossingCondAlg::findTrain } - if (holes.size()<1) { + if (holes.empty()) { ATH_MSG_ERROR("Looks like we have bunch train spanning the entire ring w/o any gap. Really?"); return result; } diff --git a/LumiBlock/LumiBlockComps/src/BunchCrossingCondTest.h b/LumiBlock/LumiBlockComps/src/BunchCrossingCondTest.h index 4bd599f357f61b446df189273fcce0199626dc54..4eeea64f674fc0ea7a6629b6ce8cb55c71219e96 100644 --- a/LumiBlock/LumiBlockComps/src/BunchCrossingCondTest.h +++ b/LumiBlock/LumiBlockComps/src/BunchCrossingCondTest.h @@ -28,9 +28,9 @@ public: private: /// Function for printing detailed info about a given bunch crossing - void printInfo(const BunchCrossingCondData* bccd, unsigned int bcid, std::ostream& out); + static void printInfo(const BunchCrossingCondData* bccd, unsigned int bcid, std::ostream& out); - void printCompactInfo(const BunchCrossingCondData* bccd, unsigned int bcid, std::ostream& out); + static void printCompactInfo(const BunchCrossingCondData* bccd, unsigned int bcid, std::ostream& out); SG::ReadCondHandleKey<BunchCrossingCondData> m_inputKey{this,"InputKey","BunchCrossingData",""}; diff --git a/LumiBlock/LumiBlockComps/src/CreateLumiBlockCollectionFromFile.cxx b/LumiBlock/LumiBlockComps/src/CreateLumiBlockCollectionFromFile.cxx index 284f0f78477f8f4e5a5788bc2d1f81cede3d8ab2..f7830582996b473ec361102b1b09cae71ce13fd5 100644 --- a/LumiBlock/LumiBlockComps/src/CreateLumiBlockCollectionFromFile.cxx +++ b/LumiBlock/LumiBlockComps/src/CreateLumiBlockCollectionFromFile.cxx @@ -149,7 +149,7 @@ StatusCode CreateLumiBlockCollectionFromFile::fillLumiBlockCollection() iovr->setEventsSeen(p.second.second); } - if(piovComplete->size()>0) { + if(!piovComplete->empty()) { ATH_MSG_INFO( "Number of Complete LumiBlocks:" << piovComplete->size() ); for(const xAOD::LumiBlockRange* lbr : *piovComplete) { ATH_MSG_INFO("\t [ (" @@ -162,7 +162,7 @@ StatusCode CreateLumiBlockCollectionFromFile::fillLumiBlockCollection() } } - if(piovUnfinished->size()>0) { + if(!piovUnfinished->empty()) { ATH_MSG_INFO( "Number of Unfinished LumiBlocks:" << piovUnfinished->size() ); for(const xAOD::LumiBlockRange* lbr : *piovUnfinished) { ATH_MSG_INFO("\t [ (" @@ -175,7 +175,7 @@ StatusCode CreateLumiBlockCollectionFromFile::fillLumiBlockCollection() } } - if(piovSuspect->size()>0) { + if(!piovSuspect->empty()) { ATH_MSG_INFO( "Number of Suspect LumiBlocks:" << piovSuspect->size() ); for(const xAOD::LumiBlockRange* lbr : *piovSuspect) { ATH_MSG_INFO("\t [ (" @@ -190,17 +190,17 @@ StatusCode CreateLumiBlockCollectionFromFile::fillLumiBlockCollection() // Store the LumiBlockCollection in the metadata store // ======================================================= - if(piovComplete->size()>0) { + if(!piovComplete->empty()) { ATH_CHECK( m_metaStore->record( std::move(piovComplete), m_LBColl_name ) ); ATH_CHECK( m_metaStore->record( std::move(piovCompleteAux), m_LBColl_name + "Aux." ) ); } - if(piovUnfinished->size()>0) { + if(!piovUnfinished->empty()) { ATH_CHECK( m_metaStore->record( std::move(piovUnfinished), m_unfinishedLBColl_name ) ); ATH_CHECK( m_metaStore->record( std::move(piovUnfinishedAux), m_unfinishedLBColl_name + "Aux." ) ); } - if(piovSuspect->size()>0) { + if(!piovSuspect->empty()) { ATH_CHECK( m_metaStore->record( std::move(piovSuspect), m_suspectLBColl_name ) ); ATH_CHECK( m_metaStore->record( std::move(piovSuspectAux), m_suspectLBColl_name + "Aux." ) ); } @@ -217,7 +217,7 @@ void CreateLumiBlockCollectionFromFile::handle(const Incident& inc) { if(inc.type() == "MetaDataStop") { ATH_MSG_INFO( " finishUp: write lumiblocks to meta data store " ); - if(m_LumiBlockInfo.size()>0) { + if(!m_LumiBlockInfo.empty()) { if(fillLumiBlockCollection().isFailure()) { ATH_MSG_ERROR( "Could not fill lumiblock collections" ); } diff --git a/LumiBlock/LumiBlockComps/src/LumiBlockMuTool.cxx b/LumiBlock/LumiBlockComps/src/LumiBlockMuTool.cxx index a0924aaded1adc0d09fd241dcac611d76709c8cd..2a2909efbdc068621032b6e3da75c85586680c2e 100644 --- a/LumiBlock/LumiBlockComps/src/LumiBlockMuTool.cxx +++ b/LumiBlock/LumiBlockComps/src/LumiBlockMuTool.cxx @@ -31,8 +31,6 @@ LumiBlockMuTool::actualInteractionsPerCrossing() const { SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey); SG::ReadDecorHandle<xAOD::EventInfo,float> actMu(m_rdhkActMu); float mu = actMu.isPresent() ? actMu(0) : 0.; - - if (eventInfo->eventType(xAOD::EventInfo::IS_SIMULATION) && mu < 0) return eventInfo->lumiBlock() % 100; return mu; } @@ -42,7 +40,5 @@ LumiBlockMuTool::averageInteractionsPerCrossing() const{ SG::ReadHandle<xAOD::EventInfo> eventInfo(m_eventInfoKey); SG::ReadDecorHandle<xAOD::EventInfo,float> aveMu(m_rdhkAveMu); float mu = aveMu.isPresent() ? aveMu(0) : 0.; - - if (eventInfo->eventType(xAOD::EventInfo::IS_SIMULATION) && mu <= 0) return eventInfo->lumiBlock() % 100; return mu; } diff --git a/LumiBlock/LumiBlockComps/src/LumiBlockMuTool.h b/LumiBlock/LumiBlockComps/src/LumiBlockMuTool.h index 7da01e053c2d55972b9d6325ee1fe816f970f47f..786d6f63472eb64e58be6e7ec79472ad3fb3be71 100644 --- a/LumiBlock/LumiBlockComps/src/LumiBlockMuTool.h +++ b/LumiBlock/LumiBlockComps/src/LumiBlockMuTool.h @@ -36,10 +36,10 @@ class LumiBlockMuTool: public extends<AthAlgTool, ILumiBlockMuTool> { // ---------------- user interface ------------------- // Return interactions per crossing (mu) averaged over all BCIDs in physics bunch group - virtual float averageInteractionsPerCrossing() const override; + virtual float averageInteractionsPerCrossing() const override final; // Return interactions per crossing (mu) for this specific BCID - virtual float actualInteractionsPerCrossing() const override; + virtual float actualInteractionsPerCrossing() const override final; // Functions virtual StatusCode initialize() override; diff --git a/LumiBlock/LumiBlockComps/src/LumiCalibrator.cxx b/LumiBlock/LumiBlockComps/src/LumiCalibrator.cxx index 165e1cc4501e82f5f73806a84e1c6326d9da4a59..ffdec15261f9562d53673452e853aec4b851b8c3 100644 --- a/LumiBlock/LumiBlockComps/src/LumiCalibrator.cxx +++ b/LumiBlock/LumiBlockComps/src/LumiCalibrator.cxx @@ -69,7 +69,7 @@ LumiCalibrator::calibrateMu(float rawLumi, float& calMu) const if (m_fType == "Polynomial") { // Check parameter length - if (m_parVec.size() < 1) return false; + if (m_parVec.empty()) return false; unsigned int nrange = m_parVec[0]; @@ -177,7 +177,7 @@ LumiCalibrator::calibrateMu(float rawLumi, float& calMu) const // Vincent's Newton-Rhapson method float -LumiCalibrator::getMuVis(float rawPerBX, float sigo, float siga) const +LumiCalibrator::getMuVis(float rawPerBX, float sigo, float siga) { //std::cout << "getMuVis("<<rawPerBX<<","<<sigo<<","<<siga<<")"<<std::endl; @@ -190,8 +190,8 @@ LumiCalibrator::getMuVis(float rawPerBX, float sigo, float siga) const // Set a fixed number of cycles, but break if we converge faster for (int i=0; i<30; i++) { mu = munew; - y = rawPerBX - 1. - exp(-b * mu) + 2. * exp(-a * mu); - dy = b * exp(-b * mu) - 2. * a * exp(-a * mu); + y = rawPerBX - 1. - std::exp(-b * mu) + 2. * std::exp(-a * mu); + dy = b * std::exp(-b * mu) - 2. * a * std::exp(-a * mu); munew = mu-y/dy; //std::cout << i <<" - munew: " << munew << " mu:" << mu << " diff:" @@ -199,7 +199,7 @@ LumiCalibrator::getMuVis(float rawPerBX, float sigo, float siga) const // Protect against unphysical values if (munew <= 0.) return -1.; - if (fabs(munew-mu)/munew < 1.E-5) break; + if (std::abs(munew-mu)/munew < 1.E-5) break; } return munew; @@ -207,11 +207,11 @@ LumiCalibrator::getMuVis(float rawPerBX, float sigo, float siga) const // Mika's original brute-force method float rpbx(float sr, float mu) { - return 1. - 2.*exp(-(1+sr)*mu/2.) + exp(-sr*mu); + return 1. - 2.*std::exp(-(1+sr)*mu/2.) + std::exp(-sr*mu); } float -LumiCalibrator::getMuVis2(float rawPerBX, float sigo, float siga) const +LumiCalibrator::getMuVis2(float rawPerBX, float sigo, float siga) { float muvl=1e-10; float muvu=100.; diff --git a/LumiBlock/LumiBlockComps/src/LumiCalibrator.h b/LumiBlock/LumiBlockComps/src/LumiCalibrator.h index 362fb77b2920ce3981cd85eb052e934959ce513b..afdcb37ac69441730d0beb690d75ddb6dfacabff 100644 --- a/LumiBlock/LumiBlockComps/src/LumiCalibrator.h +++ b/LumiBlock/LumiBlockComps/src/LumiCalibrator.h @@ -42,8 +42,8 @@ class LumiCalibrator { float m_muToLumi; std::vector<float> m_parVec; - float getMuVis(float rawPerBX, float sigo, float siga) const; - float getMuVis2(float rawPerBX, float sigo, float siga) const; + static float getMuVis(float rawPerBX, float sigo, float siga) ; + static float getMuVis2(float rawPerBX, float sigo, float siga) ; }; diff --git a/LumiBlock/LumiBlockComps/src/LuminosityCondAlg.cxx b/LumiBlock/LumiBlockComps/src/LuminosityCondAlg.cxx index 1d991fc7032cd92aa68e223105b48d769b23a4bd..b22058cb90a5fb4701a3ba250f7050b77dae02d7 100644 --- a/LumiBlock/LumiBlockComps/src/LuminosityCondAlg.cxx +++ b/LumiBlock/LumiBlockComps/src/LuminosityCondAlg.cxx @@ -110,7 +110,7 @@ LuminosityCondAlg::execute (const EventContext& ctx) const const float avgMu = eventinfo->averageInteractionsPerCrossing(); const auto& attr = (**digitizationFolder)[std::string("BeamIntensityPattern")]; - const std::string sbunches = attr.data<std::string>(); + const std::string& sbunches = attr.data<std::string>(); std::vector<float> bunchpattern = tokenize(sbunches); if (bunchpattern.size() != LuminosityCondData::TOTAL_LHC_BCIDS) { diff --git a/LumiBlock/LumiBlockComps/src/TrigLiveFractionCondAlg.cxx b/LumiBlock/LumiBlockComps/src/TrigLiveFractionCondAlg.cxx index ad833ecf786e2ffb7a35f3bc9f3ee16a1bb6e0a6..6069e587abb33766fb33a3356db8e53f2f07a138 100644 --- a/LumiBlock/LumiBlockComps/src/TrigLiveFractionCondAlg.cxx +++ b/LumiBlock/LumiBlockComps/src/TrigLiveFractionCondAlg.cxx @@ -182,7 +182,7 @@ TrigLiveFractionCondAlg::lumiWeight (const LuminosityCondData& lumi, const std::vector<float>& liveFractionLo, const std::vector<float>& liveFractionHi, float& lumiLiveFractionLo, - float& lumiLiveFractionHi) const + float& lumiLiveFractionHi) { double numsumlo = 0.; double numsumhi = 0.; diff --git a/LumiBlock/LumiBlockComps/src/TrigLiveFractionCondAlg.h b/LumiBlock/LumiBlockComps/src/TrigLiveFractionCondAlg.h index 51841c6a530e8b4b2c7c6e7033534af48e6d2e33..a33831601dc61ae88d89089e5699ddff87ea64e9 100644 --- a/LumiBlock/LumiBlockComps/src/TrigLiveFractionCondAlg.h +++ b/LumiBlock/LumiBlockComps/src/TrigLiveFractionCondAlg.h @@ -77,11 +77,11 @@ private: * @param lumiLiveFractionLo[out] Weighted average live fractions, low-prio. * @param lumiLiveFractionHi[out] Weighted average live fractions, high-prio. */ - StatusCode lumiWeight (const LuminosityCondData& lumi, + static StatusCode lumiWeight (const LuminosityCondData& lumi, const std::vector<float>& liveFractionLo, const std::vector<float>& liveFractionHi, float& lumiLiveFractionLo, - float& lumiLiveFractionHi) const; + float& lumiLiveFractionHi) ; /// Input deadtime folder. diff --git a/LumiBlock/LumiBlockComps/test/LBDurationCondAlg_test.cxx b/LumiBlock/LumiBlockComps/test/LBDurationCondAlg_test.cxx index b743b41ab82910a4a3fe552dbc81e0654515381d..d756f095cc0992b66f59561258032734b2699af3 100644 --- a/LumiBlock/LumiBlockComps/test/LBDurationCondAlg_test.cxx +++ b/LumiBlock/LumiBlockComps/test/LBDurationCondAlg_test.cxx @@ -63,7 +63,7 @@ void test1 (ISvcLocator* svcloc) CondCont<LBDurationCondData>* cc2 = nullptr; assert( conditionStore->retrieve (cc2, "LBDurationCondData").isSuccess() ); - const LBDurationCondData* data = 0; + const LBDurationCondData* data = nullptr; const EventIDRange* range2p = nullptr; assert (cc2->find (eid, data, &range2p)); assert (range2p->start().time_stamp() == timestamp(0).time_stamp()); diff --git a/LumiBlock/LumiBlockComps/test/LuminosityCondAlg_test.cxx b/LumiBlock/LumiBlockComps/test/LuminosityCondAlg_test.cxx index e1ede9b0be3fe30f5e005abe7f17efc3b4c18453..cc2068186d93822ceae58933a25898f130d10419 100644 --- a/LumiBlock/LumiBlockComps/test/LuminosityCondAlg_test.cxx +++ b/LumiBlock/LumiBlockComps/test/LuminosityCondAlg_test.cxx @@ -76,7 +76,7 @@ void push_float (float x, std::vector<uint8_t>& data) union { float f; uint32_t i; - } cnv; + } cnv{}; cnv.f = x; data.push_back (cnv.i & 0xff); data.push_back ((cnv.i>>8) & 0xff); diff --git a/LumiBlock/LumiBlockComps/test/TrigLiveFractionCondAlg_test.cxx b/LumiBlock/LumiBlockComps/test/TrigLiveFractionCondAlg_test.cxx index 7452f3bedad6ee336ed781d077df0974d92988e0..37a66589da1eb51f9d8a0b3d9df3082e550f7b21 100644 --- a/LumiBlock/LumiBlockComps/test/TrigLiveFractionCondAlg_test.cxx +++ b/LumiBlock/LumiBlockComps/test/TrigLiveFractionCondAlg_test.cxx @@ -195,7 +195,7 @@ void test1 (ISvcLocator* svcloc) CondCont<TrigLiveFractionCondData>* ccout = nullptr; assert( conditionStore->retrieve (ccout, "TrigLiveFractionCondData").isSuccess() ); - const TrigLiveFractionCondData* data = 0; + const TrigLiveFractionCondData* data = nullptr; const EventIDRange* rangeout = nullptr; assert (ccout->find (eid, data, &rangeout)); assert (rangeout->start().time_stamp() == timestamp(0).time_stamp()); diff --git a/MuonSpectrometer/Amdcsimrec/AmdcAth/AmdcAth/ATLAS_CHECK_THREAD_SAFETY b/MuonSpectrometer/Amdcsimrec/AmdcAth/AmdcAth/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..bf0d860eac997aa5f54c4cd00226ce3beceb0a1f --- /dev/null +++ b/MuonSpectrometer/Amdcsimrec/AmdcAth/AmdcAth/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +MuonSpectrometer/Amdcsimrec/AmdcAth diff --git a/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacement.cxx b/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacement.cxx index 6a69187a444c13fe2aacacf4fa88872a5d00941e..edb48cf3a715bcb7c04426f52050efd27946d38c 100644 --- a/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacement.cxx +++ b/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacement.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TomoTubeDisplacement.h" @@ -9,7 +9,7 @@ void tomotubedisplacement_( int& optionflag, - std::string TheStationName, int& jff, int& jzz, int& MulLay, int& JLay, int& Tube, + const std::string& TheStationName, int& jff, int& jzz, int& MulLay, int& JLay, int& Tube, double& Delta_szt_z_n , double& Delta_szt_t_n , double& Delta_szt_z_p , double& Delta_szt_t_p ){ diff --git a/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacement.h b/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacement.h index a1adce705b0111a490c083d87107b55704536563..a1ff17115fb0d5f7e5c4e39dd72e4b380b05d29c 100644 --- a/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacement.h +++ b/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacement.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef AMDCSTAND_TOMOTUBEDISPLACEMENT_H @@ -9,7 +9,7 @@ void tomotubedisplacement_( int& optionflag, - std::string TheStationName, int& jff, int& jzz, int& MulLay, int& JLay, int& Tube, + const std::string& TheStationName, int& jff, int& jzz, int& MulLay, int& JLay, int& Tube, double& Delta_szt_z_n , double& Delta_szt_t_n , double& Delta_szt_z_p , double& Delta_szt_t_p ); diff --git a/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacementContinuous.cxx b/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacementContinuous.cxx index 87476be5716f0a9b3038b39ab4cd4c33ce42b6d3..7ccb5b5cd3f7ccf1de888c1cb0294ae61c6435d5 100644 --- a/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacementContinuous.cxx +++ b/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacementContinuous.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TomoTubeDisplacement.h" @@ -11,7 +11,7 @@ void tomotubedisplacementcontinuous_( int Iside_In, int optionflag, - std::string TheStationName, int jff, int jzz, int MulLay, + const std::string& TheStationName, int jff, int jzz, int MulLay, double& /*szt_s*/ , double& szt_z , double& szt_t , double& Delta_szt_s_c, double& Delta_szt_z_c, double& Delta_szt_t_c ){ diff --git a/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacementContinuous.h b/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacementContinuous.h index 8917f0e04579a39c80ac7d4959d637b14956e1af..1a5cffcdee7897a36cce2b612f9e948fb5c6c02f 100644 --- a/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacementContinuous.h +++ b/MuonSpectrometer/Amdcsimrec/AmdcStand/src/TomoTubeDisplacementContinuous.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef AMDCSTAND_TOMOTUBEDISPLACEMENTCONTINUOUS_H @@ -10,7 +10,7 @@ void tomotubedisplacementcontinuous_( int Iside_In, int optionflag, - std::string TheStationName, int jff, int jzz, int MulLay, + const std::string& TheStationName, int jff, int jzz, int MulLay, double& szt_s , double& szt_z , double& szt_t , double& Delta_szt_s_c, double& Delta_szt_z_c, double& Delta_szt_t_c ); diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/MMPrepDataContainerCnv_p1.cxx b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/MMPrepDataContainerCnv_p1.cxx index 3f185dc8853fa751948d987a3ca286ffcff8b990..7d98f6575053acaaf06cae4e1fca0db6464ed310 100644 --- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/MMPrepDataContainerCnv_p1.cxx +++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/src/MuonPrepRawData/MMPrepDataContainerCnv_p1.cxx @@ -2,231 +2,235 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ -#include "MuonPrepRawData/MMPrepData.h" -#include "MuonPrepRawData/MMPrepDataContainer.h" +#include "MuonEventTPCnv/MuonPrepRawData/MMPrepDataContainerCnv_p1.h" + +#include "MuonEventTPCnv/MuonPrepRawData/MMPrepDataCnv_p1.h" #include "MuonEventTPCnv/MuonPrepRawData/MMPrepData_p1.h" #include "MuonIdHelpers/MmIdHelper.h" +#include "MuonPrepRawData/MMPrepData.h" +#include "MuonPrepRawData/MMPrepDataContainer.h" #include "MuonReadoutGeometry/MuonDetectorManager.h" -#include "MuonEventTPCnv/MuonPrepRawData/MMPrepDataCnv_p1.h" -#include "MuonEventTPCnv/MuonPrepRawData/MMPrepDataContainerCnv_p1.h" // Gaudi -#include "GaudiKernel/ISvcLocator.h" #include "GaudiKernel/Bootstrap.h" +#include "GaudiKernel/ISvcLocator.h" // Athena #include "StoreGate/StoreGateSvc.h" +StatusCode Muon::MMPrepDataContainerCnv_p1::initialize(MsgStream& log) { + // Do not initialize again: + m_isInitialized = true; -StatusCode Muon::MMPrepDataContainerCnv_p1::initialize(MsgStream &log) { - // Do not initialize again: - m_isInitialized=true; - - // Get Storegate, ID helpers, and so on - ISvcLocator* svcLocator = Gaudi::svcLocator(); - // get StoreGate service - StatusCode sc = svcLocator->service("StoreGateSvc", m_storeGate); - if (sc.isFailure()) { - log << MSG::FATAL << "StoreGate service not found !" << endmsg; - return StatusCode::FAILURE; - } - - // get DetectorStore service - StoreGateSvc *detStore; - sc = svcLocator->service("DetectorStore", detStore); - if (sc.isFailure()) { - log << MSG::FATAL << "DetectorStore service not found !" << endmsg; - return StatusCode::FAILURE; - } else { - if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Found DetectorStore." << endmsg; - } - - // Get the helper from the detector store - sc = detStore->retrieve(m_MMId); - if (sc.isFailure()) { - log << MSG::FATAL << "Could not get MM IdHelper !" << endmsg; - return StatusCode::FAILURE; - } else { - if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Found the MM IdHelper." << endmsg; - } - - sc = detStore->retrieve(m_muonDetMgr); - if (sc.isFailure()) { - log << MSG::FATAL << "Could not get DetectorDescription manager" << endmsg; - return sc; - } - - if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Converter initialized." << endmsg; - return StatusCode::SUCCESS; -} + // Get Storegate, ID helpers, and so on + ISvcLocator* svcLocator = Gaudi::svcLocator(); + // get StoreGate service + StatusCode sc = svcLocator->service("StoreGateSvc", m_storeGate); + if (sc.isFailure()) { + log << MSG::FATAL << "StoreGate service not found !" << endmsg; + return StatusCode::FAILURE; + } -void Muon::MMPrepDataContainerCnv_p1::transToPers(const Muon::MMPrepDataContainer* transCont, Muon::MMPrepDataContainer_p1* persCont, MsgStream &log) -{ - if(!m_isInitialized) { - if (this->initialize(log) != StatusCode::SUCCESS) { - log << MSG::FATAL << "Could not initialize MMPrepDataContainerCnv_p1 " << endmsg; - } - } - // The transient model has a container holding collections (= 64 modules in MmIdHelper - // each consisting of two MicroMegas quadruplets in reality) and the collections hold channels. - // - // The persistent model flattens this so that the persistent - // container has two vectors: - // 1) all collections, and - // 2) all PRDs - // - // The persistent collections, then only maintain indexes into the - // container's vector of all channels. - // - // So here we loop over all collection and add their channels - // to the container's vector, saving the indexes in the collection. - - MMPrepDataCnv_p1 chanCnv; - Muon::MMPrepDataContainer::const_iterator it_Coll = transCont->begin(); - Muon::MMPrepDataContainer::const_iterator it_CollEnd = transCont->end(); - unsigned int pcollBegin = 0; // index to start of persistent collection we're filling, in long list of persistent PRDs - unsigned int pcollEnd = 0; // index to end - int numColl = transCont->numberOfCollections(); - persCont->m_collections.resize(numColl); - log << MSG::DEBUG<< " Preparing " << persCont->m_collections.size() << "collections" <<endmsg; - - for (unsigned int pcollIndex = 0; it_Coll != it_CollEnd; ++pcollIndex, it_Coll++) { - const Muon::MMPrepDataCollection& collection = (**it_Coll); - log << MSG::DEBUG<<"Coll hash for "<<pcollIndex<<": "<<collection.identifyHash()<<endmsg; - // Add in new collection - Muon::MuonPRD_Collection_p2& pcollection = persCont->m_collections[pcollIndex]; //get ref to collection we're going to fill - - pcollBegin = pcollEnd; // Next collection starts at end of previous one. - pcollEnd += collection.size(); - - pcollection.m_hashId = collection.identifyHash(); // the collection hash is the module hash in MmIdHelper - pcollection.m_id = collection.identify().get_identifier32().get_compact(); - pcollection.m_size = collection.size(); - // Add in channels - persCont->m_prds.resize(pcollEnd); // FIXME! isn't this potentially a bit slow? Do a resize and a copy for each loop? EJWM. - persCont->m_prdDeltaId.resize(pcollEnd); - - for (unsigned int i = 0; i < collection.size(); ++i) { - unsigned int pchanIndex=i+pcollBegin; - const MMPrepData* chan = collection[i]; // channel being converted - MMPrepData_p1* pchan = &(persCont->m_prds[pchanIndex]); // persistent version to fill - chanCnv.transToPers(chan, pchan, log); // convert from MMPrepData to MMPrepData_p1 - - // persCont->m_prdDeltaId is of data type unsigned short, thus we need to encode the channel (starting from the - // collection (module) is in contained) into 16 bits, we do it by storing multilayer, gasGap and channel - int multilayer = (m_MMId->multilayer(chan->identify())-1); // ranges between 1-2 (1bit) - int gasGap = (m_MMId->gasGap(chan->identify())-1); // ranges between 1-4 (2bits) - int channel = (m_MMId->channel(chan->identify())-m_MMId->channelMin()); // ranges between 1-5012 (13bits) - - // created an unsigned short and store multilayer, gasGap and channel by bit-shifts - unsigned short diff = ( channel << 3 | gasGap << 1 | multilayer) ; - log << MSG::DEBUG << "Translated id=" << chan->identify().get_compact() << " (multilayer=" << multilayer << ", gasGap=" << gasGap << ", channel=" << channel << ") into diff=" << diff << endmsg; - - persCont->m_prdDeltaId[pchanIndex]=diff; //store delta identifiers, rather than full identifiers - - if (chan->detectorElement() != m_muonDetMgr->getMMReadoutElement(chan->identify())) - log << MSG::WARNING<<"DE from det manager ("<<m_muonDetMgr->getMMReadoutElement(chan->identify()) - <<") does not match that from PRD ("<<chan->detectorElement()<<")"<<endmsg; + // get DetectorStore service + StoreGateSvc* detStore; + sc = svcLocator->service("DetectorStore", detStore); + if (sc.isFailure()) { + log << MSG::FATAL << "DetectorStore service not found !" << endmsg; + return StatusCode::FAILURE; + } else { + if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Found DetectorStore." << endmsg; } - } - log << MSG::DEBUG<< " *** Writing MMPrepDataContainer ***" <<endmsg; -} -void Muon::MMPrepDataContainerCnv_p1::persToTrans(const Muon::MMPrepDataContainer_p1* persCont, Muon::MMPrepDataContainer* transCont, MsgStream &log) -{ - - // The transient model has a container holding collections (= 64 modules in MmIdHelper - // each consisting of two MicroMegas quadruplets in reality) and the collections hold channels. - // - // The persistent model flattens this so that the persistent - // container has two vectors: - // 1) all collections, and - // 2) all channels - // - // The persistent collections, then only maintain indexes into the - // container's vector of all channels. - // - // So here we loop over all collection and extract their channels - // from the vector. - - Muon::MMPrepDataCollection* coll = nullptr; - - MMPrepDataCnv_p1 chanCnv; - unsigned int pchanIndex(0); // position within persCont->m_prds. Incremented inside innermost loop - unsigned int pCollEnd = persCont->m_collections.size(); - log << MSG::DEBUG<< " Reading " << pCollEnd << "Collections" <<endmsg; - for (unsigned int pcollIndex = 0; pcollIndex < pCollEnd; ++pcollIndex) { - const Muon::MuonPRD_Collection_p2& pcoll = persCont->m_collections[pcollIndex]; - IdentifierHash collIDHash(pcoll.m_hashId); - log << MSG::DEBUG<<"Coll hash for "<<pcollIndex<<": "<<collIDHash<<endmsg; - - coll = new Muon::MMPrepDataCollection(collIDHash); - coll->setIdentifier(Identifier(pcoll.m_id)); - - unsigned int pchanEnd = pchanIndex+pcoll.m_size; - unsigned int chanIndex = 0; // transient index - - coll->reserve(pcoll.m_size); - // Fill with channels - for (; pchanIndex < pchanEnd; ++ pchanIndex, ++chanIndex) { - const MMPrepData_p1* pchan = &(persCont->m_prds[pchanIndex]); - - /// get the cluster Identifier from the collection Identifier and the persCont->m_prdDeltaId (unsigned short) - unsigned short diff = persCont->m_prdDeltaId[pchanIndex]; - // we need to redo the bit-shift to retrieve channel, gasGap and multilayer - int channel = (diff>>3); - int gasGap = ( 3 & (diff>>1)); - int multilayer = ( 1 & diff); - Identifier clusId = m_MMId->channelID(Identifier(pcoll.m_id), multilayer+1, gasGap+1, channel+m_MMId->channelMin()); - log << MSG::DEBUG << "Diff of " << diff << " translated into multilayer=" << multilayer << ", gasGap=" << gasGap << ", channel=" << channel << " -> id=" << clusId.get_compact() << endmsg; - - const MuonGM::MMReadoutElement* detEl = m_muonDetMgr->getMMReadoutElement(clusId); - if (!detEl) { - if (log.level() <= MSG::WARNING) - log << MSG::WARNING<< "Muon::MMPrepDataContainerCnv_p1::persToTrans: could not get valid det element for PRD with id="<< m_MMId->show_to_string(clusId) <<". Skipping."<<endmsg; - continue; - } - - auto chan = std::make_unique<MMPrepData> - (chanCnv.createMMPrepData (pchan, clusId, detEl, log)); - - if ( !m_MMId->valid(chan->identify()) ) { - log << MSG::WARNING << "MM PRD has invalid Identifier of "<< chan->identify().get_compact() - <<" - are you sure you have the correct geometry loaded, and NSW enabled?" << endmsg; - } - - // chanCnv.persToTrans(pchan, chan, log); // Fill chan with data from pchan FIXME! Put this back once diff is sane. - - log << MSG::DEBUG<<"chan identify(): "<<chan->identify().get_compact()<<endmsg; - - chan->setHashAndIndex(collIDHash, chanIndex); - coll->push_back(std::move(chan)); - + // Get the helper from the detector store + sc = detStore->retrieve(m_MMId); + if (sc.isFailure()) { + log << MSG::FATAL << "Could not get MM IdHelper !" << endmsg; + return StatusCode::FAILURE; + } else { + if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Found the MM IdHelper." << endmsg; } - // register the rdo collection in IDC with hash - faster addCollection - StatusCode sc = transCont->addCollection(coll, collIDHash); + sc = detStore->retrieve(m_muonDetMgr); if (sc.isFailure()) { - throw std::runtime_error("Failed to add collection to Identifiable Container"); + log << MSG::FATAL << "Could not get DetectorDescription manager" << endmsg; + return sc; } - log << MSG::DEBUG << "AthenaPoolTPCnvIDCont::persToTrans, collection, hash_id/coll id = " << (int) collIDHash << " / " << - coll->identify().get_compact() << ", added to Identifiable container." << endmsg; - } - log << MSG::DEBUG<< " *** Reading MMPrepDataContainer ***" << endmsg; + if (log.level() <= MSG::DEBUG) log << MSG::DEBUG << "Converter initialized." << endmsg; + return StatusCode::SUCCESS; } -Muon::MMPrepDataContainer* Muon::MMPrepDataContainerCnv_p1::createTransient(const Muon::MMPrepDataContainer_p1* persObj, MsgStream& log) -{ - if(!m_isInitialized) { - if (this->initialize(log) != StatusCode::SUCCESS) { - log << MSG::FATAL << "Could not initialize MMPrepDataContainerCnv_p1 " << endmsg; - return nullptr; - } - } - std::unique_ptr<Muon::MMPrepDataContainer> trans(new Muon::MMPrepDataContainer(m_MMId->module_hash_max())); - persToTrans(persObj, trans.get(), log); - return(trans.release()); +void Muon::MMPrepDataContainerCnv_p1::transToPers(const Muon::MMPrepDataContainer* transCont, Muon::MMPrepDataContainer_p1* persCont, + MsgStream& log) { + if (!m_isInitialized) { + if (this->initialize(log) != StatusCode::SUCCESS) { + log << MSG::FATAL << "Could not initialize MMPrepDataContainerCnv_p1 " << endmsg; + } + } + // The transient model has a container holding collections (= 64 modules in MmIdHelper + // each consisting of two MicroMegas quadruplets in reality) and the collections hold channels. + // + // The persistent model flattens this so that the persistent + // container has two vectors: + // 1) all collections, and + // 2) all PRDs + // + // The persistent collections, then only maintain indexes into the + // container's vector of all channels. + // + // So here we loop over all collection and add their channels + // to the container's vector, saving the indexes in the collection. + + MMPrepDataCnv_p1 chanCnv; + Muon::MMPrepDataContainer::const_iterator it_Coll = transCont->begin(); + Muon::MMPrepDataContainer::const_iterator it_CollEnd = transCont->end(); + unsigned int pcollEnd = 0; // index to end + int numColl = transCont->numberOfCollections(); + persCont->m_collections.resize(numColl); + if (log.level() <= MSG::DEBUG) { log << MSG::DEBUG << " Preparing " << persCont->m_collections.size() << "collections" << endmsg; } + + for (unsigned int pcollIndex = 0; it_Coll != it_CollEnd; ++pcollIndex, ++it_Coll) { + const Muon::MMPrepDataCollection& collection = (**it_Coll); + if (log.level() <= MSG::DEBUG) { + log << MSG::DEBUG << "Coll hash for " << pcollIndex << ": " << collection.identifyHash() << endmsg; + } + // Add in new collection + Muon::MuonPRD_Collection_p2& pcollection = persCont->m_collections[pcollIndex]; // get ref to collection we're going to fill + + pcollEnd += collection.size(); + + pcollection.m_hashId = collection.identifyHash(); // the collection hash is the module hash in MmIdHelper + pcollection.m_id = collection.identify().get_identifier32().get_compact(); + pcollection.m_size = collection.size(); + // Add in channels + persCont->m_prds.reserve(pcollEnd); + persCont->m_prdDeltaId.reserve(pcollEnd); + + for (unsigned int i = 0; i < collection.size(); ++i) { + const MMPrepData* chan = collection[i]; // channel being converted + MMPrepData_p1 pchan{}; // persistent version to fill + const Identifier chan_id = chan->identify(); + chanCnv.transToPers(chan, &pchan, log); // convert from MMPrepData to MMPrepData_p1 + + // persCont->m_prdDeltaId is of data type unsigned short, thus we need to encode the channel (starting from the + // collection (module) is in contained) into 16 bits, we do it by storing multilayer, gasGap and channel + int multilayer = (m_MMId->multilayer(chan_id) - 1); // ranges between 1-2 (1bit) + int gasGap = (m_MMId->gasGap(chan_id) - 1); // ranges between 1-4 (2bits) + int channel = (m_MMId->channel(chan_id) - m_MMId->channelMin()); // ranges between 1-5012 (13bits) + + // created an unsigned short and store multilayer, gasGap and channel by bit-shifts + unsigned short diff = (channel << 3 | gasGap << 1 | multilayer); + if (log.level() <= MSG::DEBUG) { + log << MSG::DEBUG << "Translated id=" << chan_id.get_compact() << " (multilayer=" << multilayer << ", gasGap=" << gasGap + << ", channel=" << channel << ") into diff=" << diff << endmsg; + } + + persCont->m_prdDeltaId.emplace_back(diff); // store delta identifiers, rather than full identifiers + + const MuonGM::MMReadoutElement* ele_from_mgr = m_muonDetMgr->getMMReadoutElement(chan_id); + if (log.level() <= MSG::WARNING && chan->detectorElement()->identify() != ele_from_mgr->identify()) { + log << MSG::WARNING << "DE from det manager (" << m_MMId->print_to_string(ele_from_mgr->identify()) + << ") does not match that from PRD (" << m_MMId->print_to_string(chan->detectorElement()->identify()) << ") for PRD " + << m_MMId->print_to_string(chan_id) << endmsg; + } + persCont->m_prds.emplace_back(std::move(pchan)); + } + } + log << MSG::DEBUG << " *** Writing MMPrepDataContainer ***" << endmsg; } +void Muon::MMPrepDataContainerCnv_p1::persToTrans(const Muon::MMPrepDataContainer_p1* persCont, Muon::MMPrepDataContainer* transCont, + MsgStream& log) { + // The transient model has a container holding collections (= 64 modules in MmIdHelper + // each consisting of two MicroMegas quadruplets in reality) and the collections hold channels. + // + // The persistent model flattens this so that the persistent + // container has two vectors: + // 1) all collections, and + // 2) all channels + // + // The persistent collections, then only maintain indexes into the + // container's vector of all channels. + // + // So here we loop over all collection and extract their channels + // from the vector. + + Muon::MMPrepDataCollection* coll = nullptr; + + MMPrepDataCnv_p1 chanCnv; + unsigned int pchanIndex(0); // position within persCont->m_prds. Incremented inside innermost loop + unsigned int pCollEnd = persCont->m_collections.size(); + if (log.level() <= MSG::DEBUG) { log << MSG::DEBUG << " Reading " << pCollEnd << "Collections" << endmsg; } + for (unsigned int pcollIndex = 0; pcollIndex < pCollEnd; ++pcollIndex) { + const Muon::MuonPRD_Collection_p2& pcoll = persCont->m_collections[pcollIndex]; + IdentifierHash collIDHash(pcoll.m_hashId); + if (log.level() <= MSG::DEBUG) { log << MSG::DEBUG << "Coll hash for " << pcollIndex << ": " << collIDHash << endmsg; } + + coll = new Muon::MMPrepDataCollection(collIDHash); + coll->setIdentifier(Identifier(pcoll.m_id)); + + unsigned int pchanEnd = pchanIndex + pcoll.m_size; + unsigned int chanIndex = 0; // transient index + + coll->reserve(pcoll.m_size); + // Fill with channels + for (; pchanIndex < pchanEnd; ++pchanIndex, ++chanIndex) { + const MMPrepData_p1* pchan = &(persCont->m_prds[pchanIndex]); + + /// get the cluster Identifier from the collection Identifier and the persCont->m_prdDeltaId (unsigned short) + unsigned short diff = persCont->m_prdDeltaId[pchanIndex]; + // we need to redo the bit-shift to retrieve channel, gasGap and multilayer + int channel = (diff >> 3); + int gasGap = (3 & (diff >> 1)); + int multilayer = (1 & diff); + Identifier clusId = m_MMId->channelID(Identifier(pcoll.m_id), multilayer + 1, gasGap + 1, channel + m_MMId->channelMin()); + if (log.level() <= MSG::DEBUG) { + log << MSG::DEBUG << "Diff of " << diff << " translated into multilayer=" << multilayer << ", gasGap=" << gasGap + << ", channel=" << channel << " -> id=" << clusId.get_compact() << endmsg; + } + + const MuonGM::MMReadoutElement* detEl = m_muonDetMgr->getMMReadoutElement(clusId); + if (!detEl) { + if (log.level() <= MSG::WARNING) { + log << MSG::WARNING << "Muon::MMPrepDataContainerCnv_p1::persToTrans: could not get valid det element for PRD with id=" + << m_MMId->show_to_string(clusId) << ". Skipping." << endmsg; + } + continue; + } + + auto chan = std::make_unique<MMPrepData>(chanCnv.createMMPrepData(pchan, clusId, detEl, log)); + + if (!m_MMId->valid(chan->identify())) { + log << MSG::WARNING << "MM PRD has invalid Identifier of " << chan->identify().get_compact() + << " - are you sure you have the correct geometry loaded, and NSW enabled?" << endmsg; + } + + // chanCnv.persToTrans(pchan, chan, log); // Fill chan with data from pchan FIXME! Put this back once diff is sane. + if (log.level() <= MSG::DEBUG) { log << MSG::DEBUG << "chan identify(): " << chan->identify().get_compact() << endmsg; } + + chan->setHashAndIndex(collIDHash, chanIndex); + coll->push_back(std::move(chan)); + } + + // register the rdo collection in IDC with hash - faster addCollection + StatusCode sc = transCont->addCollection(coll, collIDHash); + if (sc.isFailure()) { throw std::runtime_error("Failed to add collection to Identifiable Container"); } + if (log.level() <= MSG::DEBUG) { + log << MSG::DEBUG << "AthenaPoolTPCnvIDCont::persToTrans, collection, hash_id/coll id = " << (int)collIDHash << " / " + << coll->identify().get_compact() << ", added to Identifiable container." << endmsg; + } + } + if (log.level() <= MSG::DEBUG) { log << MSG::DEBUG << " *** Reading MMPrepDataContainer ***" << endmsg; } +} +Muon::MMPrepDataContainer* Muon::MMPrepDataContainerCnv_p1::createTransient(const Muon::MMPrepDataContainer_p1* persObj, MsgStream& log) { + if (!m_isInitialized) { + if (this->initialize(log) != StatusCode::SUCCESS) { + log << MSG::FATAL << "Could not initialize MMPrepDataContainerCnv_p1 " << endmsg; + return nullptr; + } + } + std::unique_ptr<Muon::MMPrepDataContainer> trans = std::make_unique<Muon::MMPrepDataContainer>(m_MMId->module_hash_max()); + persToTrans(persObj, trans.get(), log); + return (trans.release()); +} diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonChannelDesign.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonChannelDesign.h index 4fe5874626571ca121271ed35a4ebbb7e92232c9..2291e70411a51e0fd9f4328b5f4c54935f20e241 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonChannelDesign.h +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonChannelDesign.h @@ -75,6 +75,12 @@ namespace MuonGM { /** calculate local wire group number, range 1=64 like identifiers. Returns -1 if out of range */ int wireGroupNumber( const Amg::Vector2D& pos ) const; + /** calculate the sTGC wire number, with the index of first wire being 1. + * The method can return a value outside the range [1, nch]. + * It returns -1 if not a sTGC chamber. + */ + int wireNumber( const Amg::Vector2D& pos ) const; + /** calculate local channel position for a given channel number */ bool channelPosition( int channel, Amg::Vector2D& pos ) const; @@ -207,15 +213,12 @@ namespace MuonGM { // The wires in the 1st gas volume of QL1, QS1 can not be read for digits if (type==MuonChannelDesign::phiStrip && detType==MuonChannelDesign::DetType::STGC) { // sTGC Wires //First, find the wire number associated to the position - int wireNumber; - if (pos.x() > -0.5*maxYSize && pos.x() < firstPos) // Before first wire - wireNumber = 1; - else wireNumber = (pos.x() - firstPos)/inputPitch + 1; - //find wire group associated to wire number + int wire_number = wireNumber(pos); + ////find wire group associated to wire number int grNumber; - if (wireNumber <= firstPitch) grNumber = 1; // firstPitch in this case is number of wires in 1st group + if (wire_number <= firstPitch) grNumber = 1; // firstPitch in this case is number of wires in 1st group else { - grNumber = (wireNumber - 1 - firstPitch)/groupWidth +2; // 20 wires per group, + grNumber = (wire_number - 1 - firstPitch)/groupWidth +2; // 20 wires per group, /* If a hit is positionned after the last wire but inside the gas volume This is really a check for the few mm on the fringe of the gas volume Especially important for QL3. We still consider the digit active */ @@ -236,6 +239,24 @@ namespace MuonGM { } + inline int MuonChannelDesign::wireNumber( const Amg::Vector2D& pos ) const { + int wire_number{-1}; + // Only determine wire number for sTGC wire surfaces + if (type==MuonChannelDesign::phiStrip && detType==MuonChannelDesign::DetType::STGC) { + if ((pos.x() > -0.5*maxYSize) && (pos.x() < firstPos)) { // Before first wire + wire_number = 1; + } else { + wire_number = (pos.x() - firstPos)/inputPitch + 1; + // Print a warning if the wire number is outside the range [1, nch] + if ((wire_number < 1) || (wire_number > nch)) { + MsgStream log(Athena::getMessageSvc(),"MuonChannelDesign"); + if (log.level()<=MSG::WARNING) log << MSG::WARNING << "sTGC wire number out of range: wire number = " << wire_number << " local pos = (" << pos.x() << ", " << pos.y() << ")" << endmsg; + } + } + } + return wire_number; + } + inline bool MuonChannelDesign::channelPosition( int st, Amg::Vector2D& pos ) const { diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h index a9da41013b4a10725a36aba64b4ded31550bb959..83ad62d2b2272fae2ef92f6b0ca5848bf25d8d33 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/sTgcReadoutElement.h @@ -61,6 +61,20 @@ namespace MuonGM { /** pad number corresponding to local position */ int padNumber( const Amg::Vector2D& pos, const Identifier& id) const; + /** wire number corresponding to local position */ + int wireNumber( const Amg::Vector2D& pos, const Identifier& id) const; + + /** single wire pitch. + * sTGC wire pitch is the same for all chambers, + * so the default gas gap is set to the 1st gap */ + double wirePitch(int gas_gap = 1) const; + + /** Get the local position of the first wire of the chamber corresponding to the identifier */ + double positionFirstWire(const Identifier& id) const; + + /** Get the total number of wires (single wires) of a chamber **/ + int numberOfWires(const Identifier& id) const; + /** pad position */ bool padPosition( const Identifier& id, Amg::Vector2D& pos) const; @@ -377,7 +391,6 @@ namespace MuonGM { pos[1] = etaPos.x(); } - } // namespace MuonGM #endif // MUONREADOUTGEOMETRY_STGCREADOUTELEMENT_H diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx index 93d8d0f762b25bba0db7631d85b00f94582cc868..acbce6bd1e14f36d65953aed2fbef453f1069b5e 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/sTgcReadoutElement.cxx @@ -657,4 +657,57 @@ namespace MuonGM { return -1; } + int sTgcReadoutElement::wireNumber( const Amg::Vector2D& pos, const Identifier& id) const { + const MuonChannelDesign* design = getDesign(id); + if(!design) { + MsgStream log(Athena::getMessageSvc(),"sTgcReadoutElement"); + log << MSG::WARNING << "no wire design when trying to get the wire number" << endmsg; + return -1; + } + return design->wireNumber(pos); + } + + double sTgcReadoutElement::wirePitch(int gas_gap) const { + if (m_phiDesign.size() < 1) { + MsgStream log(Athena::getMessageSvc(),"sTgcReadoutElement"); + log << MSG::WARNING << "no wire design when trying to get the wire pitch" << endmsg; + return -1.0; + } + return (m_phiDesign[gas_gap-1]).inputPitch; + } + + double sTgcReadoutElement::positionFirstWire(const Identifier& id) const { + double pos_wire = -9999.9; + if (manager()->stgcIdHelper()->channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) { + const MuonChannelDesign* design = getDesign(id); + if (!design) { + MsgStream log(Athena::getMessageSvc(),"sTgcReadoutElement"); + log << MSG::WARNING << "no wire design when trying to get the 1st wire position" << endmsg; + return pos_wire; + } + pos_wire = design->firstPos; + } else { + MsgStream log(Athena::getMessageSvc(),"sTgcReadoutElement"); + log << MSG::WARNING << "attempt to retrieve the 1st wire position with a wrong identifier" << endmsg; + } + return pos_wire; + } + + int sTgcReadoutElement::numberOfWires(const Identifier& id) const { + int nWires = -1; + if (manager()->stgcIdHelper()->channelType(id) == sTgcIdHelper::sTgcChannelTypes::Wire) { + const MuonChannelDesign* design = getDesign(id); + if (!design) { + MsgStream log(Athena::getMessageSvc(),"sTgcReadoutElement"); + log << MSG::WARNING << "no wire design when trying to get the total number of wires" << endmsg; + return nWires; + } + nWires = design->nch; + } else { + MsgStream log(Athena::getMessageSvc(),"sTgcReadoutElement"); + log << MSG::WARNING << "attempt to retrieve the number of wires with a wrong identifier" << endmsg; + } + return nWires; + } + } // namespace MuonGM diff --git a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilder.cxx b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilder.cxx index 0edcf4c261b0ca1c2c9988185151336840ad1396..9d19da55f089ca4a78b8a4082679b6a3e65445c6 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilder.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilder.cxx @@ -852,8 +852,14 @@ void Muon::MuonStationBuilder::identifyLayers(const Trk::DetachedTrackingVolume* const Trk::Layer* assocLay = nullptr; if (assocVol) assocLay = assocVol->associatedLayer(gpi); unsigned int iD = idi.get_identifier32().get_compact(); - if (assocVol && assocLay) const_cast<Trk::Layer*>(assocLay)->setLayerType(iD); - if (assocLay) assocLay->setRef((assocLay->surfaceRepresentation().transform().inverse() * gpi)[1]); + if (assocVol && assocLay) { + const_cast<Trk::Layer*>(assocLay)->setLayerType(iD); + } + if (assocLay) { + const_cast<Trk::Layer*>(assocLay)->setRef( + (assocLay->surfaceRepresentation().transform().inverse() * + gpi)[1]); + } } } else { ATH_MSG_DEBUG("cscRE not found:" << st << "," << eta << "," << phi); @@ -966,11 +972,13 @@ void Muon::MuonStationBuilder::identifyLayers(const Trk::DetachedTrackingVolume* double sign = (ref > 0.) ? 1. : -1.; int dec = int(ref / 1e5); ref = ref - dec * 1e5 - 0.5 * (sign + 1) * 1e5; - if (fabs(ref - loc) > 0.001) { // re-pack - cLays[il]->setRef(loc + dec * 1e5 + 0.5 * (sign + 1) * 1e5); + if (std::abs(ref - loc) > 0.001) { // re-pack + (const_cast<Trk::Layer*>(cLays[il])) + ->setRef(loc + dec * 1e5 + 0.5 * (sign + 1) * 1e5); } - } else if (fabs(ref - loc) > 0.001) - cLays[il]->setRef(loc); + } else if (std::abs(ref - loc) > 0.001){ + (const_cast<Trk::Layer*>(cLays[il]))->setRef(loc); + } } } } @@ -1131,7 +1139,7 @@ void Muon::MuonStationBuilder::identifyPrototype(const Trk::TrackingVolume* stat const Amg::Vector3D locPos = (*layers)[il]->surfaceRepresentation().transform().inverse() * transf.inverse() * rpc->surface(etaId).center(); - (*layers)[il]->setRef(swap + locPos[0]); + (const_cast<Trk::Layer*>((*layers)[il]))->setRef(swap + locPos[0]); } } } diff --git a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilderCond.cxx b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilderCond.cxx index fe47a382d7f21e7ce41b07b1770b363be9b559cc..424f97b7a2e16ec3e4f7a9ad9a347a555ebde94e 100644 --- a/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilderCond.cxx +++ b/MuonSpectrometer/MuonDetDescr/MuonTrackingGeometry/src/MuonStationBuilderCond.cxx @@ -858,8 +858,12 @@ void Muon::MuonStationBuilderCond::identifyLayers(const Trk::DetachedTrackingVol const Trk::Layer* assocLay = nullptr; if (assocVol) assocLay = assocVol->associatedLayer(gpi); unsigned int iD = idi.get_identifier32().get_compact(); - if (assocVol && assocLay) const_cast< Trk::Layer*>(assocLay)->setLayerType(iD); - if (assocLay) assocLay->setRef((assocLay->surfaceRepresentation().transform().inverse() * gpi)[1]); + if (assocVol && assocLay) { + const_cast< Trk::Layer*>(assocLay)->setLayerType(iD); + } + if (assocLay) { + (const_cast< Trk::Layer*> (assocLay))->setRef((assocLay->surfaceRepresentation().transform().inverse() * gpi)[1]); + } } } else { ATH_MSG_DEBUG("cscRE not found:" << st << "," << eta << "," << phi); @@ -972,11 +976,12 @@ void Muon::MuonStationBuilderCond::identifyLayers(const Trk::DetachedTrackingVol double sign = (ref > 0.) ? 1. : -1.; int dec = int(ref / 1e5); ref = ref - dec * 1e5 - 0.5 * (sign + 1) * 1e5; - if (fabs(ref - loc) > 0.001) { // re-pack - cLays[il]->setRef(loc + dec * 1e5 + 0.5 * (sign + 1) * 1e5); + if (std::abs(ref - loc) > 0.001) { // re-pack + (const_cast<Trk::Layer*>(cLays[il]))->setRef(loc + dec * 1e5 + 0.5 * (sign + 1) * 1e5); } - } else if (fabs(ref - loc) > 0.001) - cLays[il]->setRef(loc); + } else if (std::abs(ref - loc) > 0.001){ + (const_cast<Trk::Layer*>(cLays[il]))->setRef(loc); + } } } } @@ -1138,7 +1143,7 @@ void Muon::MuonStationBuilderCond::identifyPrototype(const Trk::TrackingVolume* const Amg::Vector3D locPos = (*layers)[il]->surfaceRepresentation().transform().inverse() * transf.inverse() * rpc->surface(etaId).center(); - (*layers)[il]->setRef(swap + locPos[0]); + (const_cast<Trk::Layer*>((*layers)[il]))->setRef(swap + locPos[0]); } } } diff --git a/MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx b/MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx index 541835d6254a7e7443e3a2fd127ed77884fbc21c..49864957340235f8be9acb756dd7825ef074e450 100644 --- a/MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx +++ b/MuonSpectrometer/MuonGeoModel/src/MultiLayer.cxx @@ -3,7 +3,7 @@ */ #include "MuonGeoModel/MultiLayer.h" - +#include "MuonIdHelpers/MdtIdHelper.h" #include "AthenaKernel/getMessageSvc.h" #include "GaudiKernel/SystemOfUnits.h" #include "GeoGenericFunctions/AbsFunction.h" @@ -49,7 +49,7 @@ using namespace GeoXF; namespace { // the tube number of a tube in a tubeLayer in encoded in the GeoSerialIdentifier (modulo maxNTubesPerLayer) - static constexpr unsigned int const maxNTubesPerLayer = 120; + constexpr unsigned int maxNTubesPerLayer = MdtIdHelper::maxNTubesPerLayer; } // namespace namespace MuonGM { diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/CaruanaSTgcClusterBuilderTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/CaruanaSTgcClusterBuilderTool.cxx index 33adb9bd1a94f6cde0d6c68b447c7a34ac857983..791c7517e4c1918c36dd5c9ffb58a852a1f4eecc 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/CaruanaSTgcClusterBuilderTool.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/CaruanaSTgcClusterBuilderTool.cxx @@ -107,10 +107,20 @@ StatusCode Muon::CaruanaSTgcClusterBuilderTool::getClusters(std::vector<Muon::sT elementsIdentifier.push_back(it.identify()); } - // If the cluster is a cluster of pads or wires, use the default weighted mean method to compute the reconstructed postion. If it is a cluster of strips, we use the Caruana method of fitting a Gaussian to the distribution + // If the cluster is a cluster of pads or wires, use the default weighted mean method to compute the reconstructed postion. If it is a cluster of strips (with multiplicity >= 3), we use the Caruana method of fitting a Gaussian to the distribution bool caruanaFail = false; // If the Caruana method fails at some point this is changed to true and the reconstruction reverts to the weighted mean method - double sigmaSq = 0.0; + + // If it is a strip cluster, make sure there are 3 or more strips with non-zero charge, otherwise revert to the weighted mean method if (isStrip){ + int multiplicity = 0; + for (auto stripCharge : elementsCharge){ + if (stripCharge > 0) multiplicity += 1; + } + if (multiplicity < 3) caruanaFail = true; + } + + double sigmaSq = 0.0; + if (isStrip && !caruanaFail){ // Here we implement the Caruana method to reconstruct the position of the cluster AmgSymMatrix(3) elementPosMatrix; for (int i=0; i<3; i++){ diff --git a/MuonSpectrometer/MuonReconstruction/MuonPatternFinders/MuonPatternFinderTools/MuonHoughPatternTools/src/MuonHoughPatternFinderTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonPatternFinders/MuonPatternFinderTools/MuonHoughPatternTools/src/MuonHoughPatternFinderTool.cxx index efb8131c8a70341508c2eae21e01d78f197d0339..52af74221629e930dbd859fc2fee8b16b4718984 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonPatternFinders/MuonPatternFinderTools/MuonHoughPatternTools/src/MuonHoughPatternFinderTool.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonPatternFinders/MuonPatternFinderTools/MuonHoughPatternTools/src/MuonHoughPatternFinderTool.cxx @@ -29,8 +29,6 @@ using namespace TrkDriftCircleMath; -// maxNTubesPerLayer is included via DriftCircle.h - namespace Muon { MuonHoughPatternFinderTool::MuonHoughPatternFinderTool(const std::string& t, @@ -1156,9 +1154,8 @@ MuonHoughPatternFinderTool::addMdtCollection( for (unsigned int i = 0; i < prdsize; i++) { if (prob[i] < 0.01) continue; - double global_radius = - std::sqrt(hitx[i] * hitx[i] + hity[i] * hity[i]); // global radius - const TrkDriftCircleMath::LocPos lpos(global_radius, + double global_radius = std::hypot(hitx[i] , hity[i]); // global radius + const TrkDriftCircleMath::LocVec2D lpos(global_radius, hitz[i]); // global coordinates // create identifier TrkDriftCircleMath::MdtId mdtid( @@ -1170,7 +1167,7 @@ MuonHoughPatternFinderTool::addMdtCollection( TrkDriftCircleMath::DriftCircle::InTime, mdtid, i); - dcs.push_back(dc); + dcs.emplace_back(std::move(dc)); } bool seg_found = true; @@ -1833,7 +1830,7 @@ MuonHoughPatternFinderTool::fastSegmentFinder(TrkDriftCircleMath::DCVec& dcs, int nhits = 0; for (; it1 != it_end; ++it1, nhits++) { sel[nhits] = 0; - int isort = maxNTubesPerLayer * (4 * (it1->id().ml()) + it1->id().lay()) + + int isort = MdtIdHelper::maxNTubesPerLayer * (4 * (it1->id().ml()) + it1->id().lay()) + it1->id().tube(); dcsId[isort] = nhits; int ilay = 4 * (it1->id().ml()) + it1->id().lay(); @@ -1963,7 +1960,7 @@ MuonHoughPatternFinderTool::fastSegmentFinder(TrkDriftCircleMath::DCVec& dcs, TrkDriftCircleMath::DCOnTrackIt itt_end = hitsOnLineSel.end(); int i = 0; for (; itt != itt_end; ++itt, i++) { - int isort = maxNTubesPerLayer * (4 * (itt->id().ml()) + itt->id().lay()) + + int isort = MdtIdHelper::maxNTubesPerLayer * (4 * (itt->id().ml()) + itt->id().lay()) + itt->id().tube(); if (dcsId.count(isort) == 1) { int dcsIndex = dcsId[isort]; diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MdtIntersectGeometry.h b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MdtIntersectGeometry.h index 5c0e89d3a462d7925df7afe2fb34d011ac609e2d..4d1ff22e47a0f25f663ae530bbfb52935f7bb5a1 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MdtIntersectGeometry.h +++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MdtIntersectGeometry.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef MDTINTERSECTGEOMETRY_H @@ -8,6 +8,7 @@ #include "MuonStationIntersectSvc/MuonIntersectGeometry.h" #include "Identifier/Identifier.h" #include "GeoPrimitives/GeoPrimitives.h" +#include "TrkDriftCircleMath/MdtChamberGeometry.h" class MsgStream; namespace MuonGM { @@ -34,7 +35,7 @@ namespace Muon { const Amg::Transform3D& transform() const { return m_transform; } - const TrkDriftCircleMath::MdtChamberGeometry* mdtChamberGeometry() const { return m_mdtGeometry; } + const TrkDriftCircleMath::MdtChamberGeometry* mdtChamberGeometry() const { return m_mdtGeometry.get(); } const Identifier& chamberId() const { return m_chid; } private: @@ -42,16 +43,16 @@ namespace Muon { void init(MsgStream* msg); void fillDeadTubes(const MuonGM::MdtReadoutElement* mydetEl, MsgStream* msg); - Identifier m_chid; + Identifier m_chid{}; Amg::Transform3D m_transform; - TrkDriftCircleMath::MdtChamberGeometry* m_mdtGeometry; - const MuonGM::MdtReadoutElement* m_detElMl0{}; - const MuonGM::MdtReadoutElement* m_detElMl1{}; - const MuonGM::MuonDetectorManager* m_detMgr; // cannot use ReadCondHandleKey since no athena component - const MdtCondDbData* m_dbData; - const Muon::IMuonIdHelperSvc* m_idHelperSvc; - std::set<Identifier> m_deadTubesML; - std::vector<Identifier> m_deadTubes; + std::unique_ptr<TrkDriftCircleMath::MdtChamberGeometry> m_mdtGeometry{}; + const MuonGM::MdtReadoutElement* m_detElMl0{nullptr}; + const MuonGM::MdtReadoutElement* m_detElMl1{nullptr}; + const MuonGM::MuonDetectorManager* m_detMgr{nullptr}; // cannot use ReadCondHandleKey since no athena component + const MdtCondDbData* m_dbData{nullptr}; + const Muon::IMuonIdHelperSvc* m_idHelperSvc{nullptr}; + std::set<Identifier> m_deadTubesML{}; + std::vector<Identifier> m_deadTubes{}; }; } diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MuonIntersectGeometry.h b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MuonIntersectGeometry.h index c422dbced05700fdf3475f36d57f5565bcd736ee..1bb95f1acba1203ab726dd0d4f43bc298b5db10c 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MuonIntersectGeometry.h +++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/MuonStationIntersectSvc/MuonIntersectGeometry.h @@ -12,10 +12,7 @@ namespace Muon { class MuonIntersectGeometry { public: - MuonIntersectGeometry() {} - virtual ~MuonIntersectGeometry() {} - - + virtual ~MuonIntersectGeometry() = default; virtual const MuonStationIntersect intersection( const Amg::Vector3D& pos, const Amg::Vector3D& dir) const = 0; diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MdtIntersectGeometry.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MdtIntersectGeometry.cxx index 377ae12bed0ffc3ed0fdce380ddf36d5f0db84b2..4c540c4b956c40d385c604624318aee89a8e9d14 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MdtIntersectGeometry.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MdtIntersectGeometry.cxx @@ -6,7 +6,6 @@ #include "GaudiKernel/MsgStream.h" #include "AthenaKernel/getMessageSvc.h" -#include "TrkDriftCircleMath/MdtChamberGeometry.h" #include "MuonReadoutGeometry/MdtReadoutElement.h" #include "MuonReadoutGeometry/MuonDetectorManager.h" #include "MuonIdHelpers/IMuonIdHelperSvc.h" @@ -21,7 +20,6 @@ namespace Muon{ MdtIntersectGeometry::MdtIntersectGeometry(const Identifier& chid, const MuonGM::MuonDetectorManager* detMgr, const MdtCondDbData* dbData, MsgStream* msg, const Muon::IMuonIdHelperSvc* idHelp) : m_chid(chid), - m_mdtGeometry(nullptr), m_detMgr(detMgr), m_dbData(dbData), m_idHelperSvc(idHelp) @@ -32,8 +30,7 @@ namespace Muon{ MdtIntersectGeometry::MdtIntersectGeometry(const MdtIntersectGeometry &right) { m_chid = right.m_chid; m_transform = right.m_transform; - m_mdtGeometry = new TrkDriftCircleMath::MdtChamberGeometry(); - *m_mdtGeometry = *right.m_mdtGeometry; + m_mdtGeometry = std::make_unique<TrkDriftCircleMath::MdtChamberGeometry>(*right.m_mdtGeometry); m_detElMl0 = right.m_detElMl0; m_detElMl1 = right.m_detElMl1; m_detMgr = right.m_detMgr; @@ -45,8 +42,7 @@ namespace Muon{ if (this!=&right) { m_chid = right.m_chid; m_transform = right.m_transform; - if(m_mdtGeometry) delete m_mdtGeometry; - m_mdtGeometry = new TrkDriftCircleMath::MdtChamberGeometry(*right.m_mdtGeometry); + m_mdtGeometry = std::make_unique<TrkDriftCircleMath::MdtChamberGeometry>(*right.m_mdtGeometry); m_detElMl0 = right.m_detElMl0; m_detElMl1 = right.m_detElMl1; m_detMgr = right.m_detMgr; @@ -56,9 +52,7 @@ namespace Muon{ return *this; } - MdtIntersectGeometry::~MdtIntersectGeometry(){ - delete m_mdtGeometry; - } + MdtIntersectGeometry::~MdtIntersectGeometry()= default; const MuonStationIntersect MdtIntersectGeometry::intersection( const Amg::Vector3D& pos, const Amg::Vector3D& dir) const { @@ -76,9 +70,9 @@ namespace Muon{ double dxdy = std::abs(ldir.y()) > 0.001 ? ldir.x()/ldir.y() : 1000.; double lineAngle = std::atan2(ldir.z(),ldir.y()); - TrkDriftCircleMath::LocPos linePos( lpos.y(),lpos.z() ); + TrkDriftCircleMath::LocVec2D linePos( lpos.y(),lpos.z() ); TrkDriftCircleMath::Line line( linePos, lineAngle ); - const TrkDriftCircleMath::DCVec& dcs = m_mdtGeometry->tubesPassedByLine( line ); + const TrkDriftCircleMath::DCVec dcs = m_mdtGeometry->tubesPassedByLine( line ); MuonStationIntersect::TubeIntersects intersects; @@ -95,9 +89,9 @@ namespace Muon{ continue; } double distWall = std::abs(xint) - 0.5*tubeLength( mdtId.ml(), mdtId.lay(), mdtId.tube() ); - intersects.push_back( MuonTubeIntersect( tubeid, dit->dr(), distWall ) ); + intersects.emplace_back( tubeid, dit->dr(), distWall); } - intersect.setTubeIntersects( intersects ); + intersect.setTubeIntersects( std::move(intersects) ); return intersect; } @@ -106,7 +100,7 @@ namespace Muon{ { if (ml<0 || ml>1) throw std::runtime_error(Form("File: %s, Line: %d\nMdtIntersectGeometry::tubeLength() - got called with ml=%d which is definitely out of range", __FILE__, __LINE__,ml)); if (layer<0 || layer>3) throw std::runtime_error(Form("File: %s, Line: %d\nMdtIntersectGeometry::tubeLength() - got called with layer=%d which is definitely out of range", __FILE__, __LINE__,layer)); - if (tube<0 || tube>int(maxNTubesPerLayer-1)) throw std::runtime_error(Form("File: %s, Line: %d\nMdtIntersectGeometry::tubeLength() - got called with tube=%d which is definitely out of range", __FILE__, __LINE__,tube)); + if (tube<0 || tube>=int(MdtIdHelper::maxNTubesPerLayer)) throw std::runtime_error(Form("File: %s, Line: %d\nMdtIntersectGeometry::tubeLength() - got called with tube=%d which is definitely out of range", __FILE__, __LINE__,tube)); // shift by one to account for MuonGeoModel scheme int theTube = tube+1; int theLayer = layer+1; @@ -165,7 +159,7 @@ namespace Muon{ // if both are dead give a WARNING // check status of the two multilayers using the MdtCondDbData if it exists // otherwise (i.e. online) they are treated as both good by default - bool goodMl0,goodMl1; + bool goodMl0{false},goodMl1{false}; if(m_dbData){ goodMl0 = m_dbData->isGoodMultilayer(firstIdml0); goodMl1 = m_detElMl1 ? m_dbData->isGoodMultilayer(firstIdml1) : false; @@ -201,8 +195,8 @@ namespace Muon{ Amg::Vector3D firstTubeMl0 = transform()*(m_detElMl0->tubePos( firstIdml0 )); Amg::Vector3D firstTubeMl1 = m_detElMl1 ? transform()*(m_detElMl1->tubePos( firstIdml1 )) : Amg::Vector3D(); - TrkDriftCircleMath::LocPos firstTube0( firstTubeMl0.y(), firstTubeMl0.z() ); - TrkDriftCircleMath::LocPos firstTube1( firstTubeMl1.y(), firstTubeMl1.z() ); + TrkDriftCircleMath::LocVec2D firstTube0( firstTubeMl0.y(), firstTubeMl0.z() ); + TrkDriftCircleMath::LocVec2D firstTube1( firstTubeMl1.y(), firstTubeMl1.z() ); // position second tube in ml 0 Identifier secondIdml0 = m_idHelperSvc->mdtIdHelper().channelID( name,eta,phi,firstMlIndex,1,2 ); @@ -219,7 +213,7 @@ namespace Muon{ double tubeStage = (firstTubeMl0lay1 - firstTubeMl0).y(); // tube stagering distance double layDist = (firstTubeMl0lay1 - firstTubeMl0).z(); // distance between layers - m_mdtGeometry = new TrkDriftCircleMath::MdtChamberGeometry(stationId,nml,nlay,ntube0,ntube1,firstTube0,firstTube1, + m_mdtGeometry = std::make_unique<TrkDriftCircleMath::MdtChamberGeometry>(stationId,nml,nlay,ntube0,ntube1,firstTube0,firstTube1, tubeDist,tubeStage,layDist,m_detElMl0->center().theta()); // finally if the first ml is dead, configure the MdtChamberGeometry accordingly @@ -247,7 +241,7 @@ namespace Muon{ std::vector<int>::iterator it = tubes.begin(); for(int layer = 1; layer <= mydetEl->getNLayers(); layer++){ for(int tube = 1; tube <= mydetEl->getNtubesperlayer(); tube++){ - int want_id = layer*maxNTubesPerLayer + tube; + int want_id = layer*MdtIdHelper::maxNTubesPerLayer + tube; if (it != tubes.end() && *it == want_id) { ++it; } diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MuonStationIntersectSvc.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MuonStationIntersectSvc.cxx index 6b193840629156fb2fa21e4daa1c77590ec16227..3cb93363a61510c6ab0456b261cc4adb9cab4062 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MuonStationIntersectSvc.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectSvc/src/MuonStationIntersectSvc.cxx @@ -52,7 +52,7 @@ const std::vector<std::unique_ptr<Muon::MdtIntersectGeometry> > MuonStationInter continue; } } - stations.push_back(std::make_unique<Muon::MdtIntersectGeometry>( chId, detMgr,dbData,&this->msgStream(),m_idHelperSvc.get())); + stations.emplace_back(std::make_unique<Muon::MdtIntersectGeometry>( chId, detMgr,dbData,&this->msgStream(),m_idHelperSvc.get())); } return stations; } diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerInterfaces/MuonSegmentMakerInterfaces/IDCSLFitProvider.h b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerInterfaces/MuonSegmentMakerInterfaces/IDCSLFitProvider.h index 414a1c67891e5ae47383cdec0969073649e7472d..9c7996e77323eb87c68bbcf8e3b8288ce8d483e9 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerInterfaces/MuonSegmentMakerInterfaces/IDCSLFitProvider.h +++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerInterfaces/MuonSegmentMakerInterfaces/IDCSLFitProvider.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef MUON_IDCSLFITPROVIDER @@ -7,8 +7,6 @@ #include "GaudiKernel/IAlgTool.h" -static const InterfaceID IID_IDCSLFitProvider - ("Muon::IDCSLFitProvider",1,0); namespace TrkDriftCircleMath { class DCSLFitter; @@ -17,24 +15,34 @@ namespace TrkDriftCircleMath { namespace Muon { /** Interface for tools resolving ambigueties and remove outliers in Muon::MuonSegment objects */ - class IDCSLFitProvider : virtual public IAlgTool - { + class IDCSLFitProvider : virtual public IAlgTool { public: - static const InterfaceID& interfaceID(); - - /** @brief fitter factory - @return provides pointer to fitter, ownsership not passed to client - */ - virtual const TrkDriftCircleMath::DCSLFitter* getFitter() const = 0; + static const InterfaceID& interfaceID(){ + static const InterfaceID IID_IDCSLFitProvider("Muon::IDCSLFitProvider",1,0); + return IID_IDCSLFitProvider; + } + /** @brief fitter factory + @return provides pointer to fitter, ownsership not passed to client + */ + virtual const TrkDriftCircleMath::DCSLFitter* getFitter() const = 0; + /** + * @brief default destructor + * + */ + virtual ~IDCSLFitProvider() = default; + + /** + * @brief Helper struct to overload the destructors of smart pointers + * + */ + struct Unowned{ + void operator()(const TrkDriftCircleMath::DCSLFitter*) const {} + }; }; - inline const InterfaceID& IDCSLFitProvider::interfaceID() - { - return IID_IDCSLFitProvider; - } -} // end of name space + } // end of name space #endif // IDCSLFitProvider_H diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/DCMathSegmentMaker.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/DCMathSegmentMaker.cxx index c797b60509f04bd965360803f1788053da75722b..dcce16e488f1bc5c3a0dbd5db0677e9482c4c785 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/DCMathSegmentMaker.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/DCMathSegmentMaker.cxx @@ -212,7 +212,7 @@ namespace Muon { // calculate local AMDB position Amg::Vector3D locPos = gToStation * mdt->prepRawData()->globalPosition(); - TrkDriftCircleMath::LocPos lpos(locPos.y(), locPos.z()); + TrkDriftCircleMath::LocVec2D lpos(locPos.y(), locPos.z()); double r = mdt->localParameters()[Trk::locR]; double dr = Amg::error(mdt->localCovariance(), Trk::locR); @@ -242,7 +242,7 @@ namespace Muon { // create line double angleYZ = seg.localDirection().angleYZ(); const Amg::Vector3D lpos = gToStation * seg.globalPosition(); - TrkDriftCircleMath::LocPos segPos(lpos.y(), lpos.z()); + TrkDriftCircleMath::LocVec2D segPos(lpos.y(), lpos.z()); TrkDriftCircleMath::Line segPars(segPos, angleYZ); const Trk::FitQuality* fq = seg.fitQuality(); @@ -433,7 +433,7 @@ namespace Muon { double angle = m_sinAngleCut; if (sinAngleCut > 0) angle = sinAngleCut; - TrkDriftCircleMath::Road road(TrkDriftCircleMath::LocPos(0., 0.), road_angleYZ, chamber_angleYZ, angle); + TrkDriftCircleMath::Road road(TrkDriftCircleMath::LocVec2D(0., 0.), road_angleYZ, chamber_angleYZ, angle); // call segment finder TrkDriftCircleMath::SegVec segs = m_segmentFinder->findSegments(dcs, cls, road, dcStatistics, multiGeo.get()); @@ -1309,7 +1309,7 @@ namespace Muon { // calculate local cluster position Amg::Vector3D locPos = gToStation * cit->globalPos; - TrkDriftCircleMath::LocPos lp(locPos.y(), locPos.z()); + TrkDriftCircleMath::LocVec2D lp(locPos.y(), locPos.z()); if (std::abs(lp.y()) > m_maxAssociateClusterDistance) { ATH_MSG_VERBOSE(" Discarding cluster with large distance from chamber " << m_idHelperSvc->toString(id)); @@ -1360,7 +1360,7 @@ namespace Muon { // calculate local AMDB position Amg::Vector3D locPos = gToStation * rot->prepRawData()->globalPosition(); - TrkDriftCircleMath::LocPos lpos(locPos.y(), locPos.z()); + TrkDriftCircleMath::LocVec2D lpos(locPos.y(), locPos.z()); double r = rot->localParameters()[Trk::locR]; double dr = Amg::error(rot->localCovariance(), Trk::locR) * errorScale; @@ -1459,8 +1459,8 @@ namespace Muon { Identifier secondIdml0 = m_idHelperSvc->mdtIdHelper().channelID(name, eta, phi, 1, 1, 2); Amg::Vector3D secondTubeMl0 = gToStation * (detEl1->surface(secondIdml0).center()); - TrkDriftCircleMath::LocPos firstTube0(firstTubeMl0.y(), firstTubeMl0.z()); - TrkDriftCircleMath::LocPos firstTube1(firstTubeMl1.y(), firstTubeMl1.z()); + TrkDriftCircleMath::LocVec2D firstTube0(firstTubeMl0.y(), firstTubeMl0.z()); + TrkDriftCircleMath::LocVec2D firstTube1(firstTubeMl1.y(), firstTubeMl1.z()); // position first tube ml 0 and 1 Identifier firstIdml0lay1 = m_idHelperSvc->mdtIdHelper().channelID(name, eta, phi, 1, 2, 1); @@ -1493,12 +1493,12 @@ namespace Muon { if (segment.hasCurvatureParameters()) { // ml2 segment direction double ml2phi = line.phi() - segment.deltaAlpha(); - TrkDriftCircleMath::LocDir ml2dir(std::cos(ml2phi), std::sin(ml2phi)); + TrkDriftCircleMath::LocVec2D ml2dir(std::cos(ml2phi), std::sin(ml2phi)); // ml2 segment position - const TrkDriftCircleMath::LocPos ml1LocPos = multiGeo->tubePosition(0, multiGeo->nlay(), 0); - const TrkDriftCircleMath::LocPos ml2LocPos = multiGeo->tubePosition(1, 1, 0); + const TrkDriftCircleMath::LocVec2D ml1LocPos = multiGeo->tubePosition(0, multiGeo->nlay(), 0); + const TrkDriftCircleMath::LocVec2D ml2LocPos = multiGeo->tubePosition(1, 1, 0); double chamberMidPtY = (ml1LocPos.y() + ml2LocPos.y()) / 2.0; - TrkDriftCircleMath::LocPos ml2pos(segment.deltab(), chamberMidPtY); + TrkDriftCircleMath::LocVec2D ml2pos(segment.deltab(), chamberMidPtY); // construct the new ml2 segment line & transform const TrkDriftCircleMath::Line ml2line(ml2pos, ml2dir); TrkDriftCircleMath::TransformToLine tmptoLine(ml2line); @@ -1520,13 +1520,13 @@ namespace Muon { TrkDriftCircleMath::TransformToLine toLine = toLineml1; if (m_idHelperSvc->mdtIdHelper().multilayer(riodc->identify()) == 2) toLine = toLineml2; // calculate position of hit in line frame - TrkDriftCircleMath::LocPos pointOnHit = toLine.toLine(dcit->position()); + TrkDriftCircleMath::LocVec2D pointOnHit = toLine.toLine(dcit->position()); // calculate position of hit on line in line frame - TrkDriftCircleMath::LocPos pointOnLine(pointOnHit.x(), 0.); + TrkDriftCircleMath::LocVec2D pointOnLine(pointOnHit.x(), 0.); // transform back to local AMDB coordinates - TrkDriftCircleMath::LocPos pointOnLineAMDB = toLine.toLocal(pointOnLine); + TrkDriftCircleMath::LocVec2D pointOnLineAMDB = toLine.toLocal(pointOnLine); // get position along wire from ROT Amg::Vector3D posAlong = gToStation * riodc->globalPosition(); @@ -1918,7 +1918,7 @@ namespace Muon { Amg::Vector3D locPos = gToStation * (*cit)->globalPos; // calculate intersect of segment with cluster - TrkDriftCircleMath::Cluster cl(TrkDriftCircleMath::LocPos(locPos.y(), locPos.z()), 1.); + TrkDriftCircleMath::Cluster cl(TrkDriftCircleMath::LocVec2D(locPos.y(), locPos.z()), 1.); double residual = resWithSegment.residual(cl); double segError = sqrt(resWithSegment.trackError2(cl)); const MuonGM::RpcReadoutElement* detEl = dynamic_cast<const MuonGM::RpcReadoutElement*>((*cit)->phiHit->detectorElement()); @@ -2009,16 +2009,16 @@ namespace Muon { // calculate local AMDB position Amg::Vector3D locPos = gToStation * hitPos; - TrkDriftCircleMath::LocPos lpos(locPos.y(), locPos.z()); + TrkDriftCircleMath::LocVec2D lpos(locPos.y(), locPos.z()); // calculate distance of segment to measurement surface double delta_y = lpos.y() - line.position().y(); // calculate position of hit in line frame - TrkDriftCircleMath::LocPos lineSurfaceIntersect(delta_y * cos_sinLine + line.position().x(), lpos.y()); + TrkDriftCircleMath::LocVec2D lineSurfaceIntersect(delta_y * cos_sinLine + line.position().x(), lpos.y()); // calculate position of hit in line frame - TrkDriftCircleMath::LocPos pointOnHit = toLine.toLine(lineSurfaceIntersect); + TrkDriftCircleMath::LocVec2D pointOnHit = toLine.toLine(lineSurfaceIntersect); return pointOnHit.x(); } @@ -2042,13 +2042,13 @@ namespace Muon { // calculate sp postion in AMDB reference frame Amg::Vector3D locPos = gToStation * spacePoint.globalPos; - TrkDriftCircleMath::LocPos lpos(locPos.y(), locPos.z()); + TrkDriftCircleMath::LocVec2D lpos(locPos.y(), locPos.z()); // calculate distance of segment to measurement surface double delta_y = lpos.y() - line.position().y(); // calculate position of hit in line frame - TrkDriftCircleMath::LocPos lineSurfaceIntersect(delta_y * cos_sinLine + line.position().x(), lpos.y()); + TrkDriftCircleMath::LocVec2D lineSurfaceIntersect(delta_y * cos_sinLine + line.position().x(), lpos.y()); // calculate position of hit in line frame double residual = lpos.x() - lineSurfaceIntersect.x(); diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/MdtMathSegmentFinder.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/MdtMathSegmentFinder.cxx index ff87b26c629c28e44657f9c807efe3a080d93bce..797603bdad6dd5d29bb768bcec9738ebccc4665f 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/MdtMathSegmentFinder.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/DCMathSegmentMaker/src/MdtMathSegmentFinder.cxx @@ -10,6 +10,8 @@ #include "TrkDriftCircleMath/Road.h" #include "TrkDriftCircleMath/SegmentFinder.h" + + namespace Muon { MdtMathSegmentFinder::MdtMathSegmentFinder(const std::string& t, const std::string& n, const IInterface* p) : AthAlgTool(t, n, p) { @@ -57,8 +59,7 @@ namespace Muon { const TrkDriftCircleMath::DCStatistics& dcstats, const TrkDriftCircleMath::ChamberGeometry* multiGeo = 0) const { // setup finder - std::unique_ptr<TrkDriftCircleMath::SegmentFinder> segmentFinder( - new TrkDriftCircleMath::SegmentFinder(m_roadWidth, m_mdtAssociationPullCut, false)); + std::unique_ptr<TrkDriftCircleMath::SegmentFinder> segmentFinder = std::make_unique<TrkDriftCircleMath::SegmentFinder>(m_roadWidth, m_mdtAssociationPullCut, false); // set debug level segmentFinder->debugLevel(m_finderDebugLevel); @@ -108,12 +109,11 @@ namespace Muon { // set use of segment quality segmentFinder->setUseSegmentQuality(m_useSegmentQuality); - std::unique_ptr<TrkDriftCircleMath::DCSLFitter> dcslFitter; if (!m_dcslFitProvider.empty()) { - segmentFinder->setFitter(m_dcslFitProvider->getFitter()); + std::shared_ptr<const TrkDriftCircleMath::DCSLFitter> fitter(m_dcslFitProvider->getFitter(), Muon::IDCSLFitProvider::Unowned{}); + segmentFinder->setFitter(fitter); } else { - dcslFitter = std::make_unique<TrkDriftCircleMath::DCSLFitter>(); - segmentFinder->setFitter(dcslFitter.get()); + segmentFinder->setFitter(std::make_shared<TrkDriftCircleMath::DCSLFitter>()); } // set angle prediction from road @@ -164,8 +164,7 @@ namespace Muon { // to speed up reconstruction use default fitter if (!m_dcslFitProvider.empty()) { - dcslFitter = std::make_unique<TrkDriftCircleMath::DCSLFitter>(); - segmentFinder->setFitter(dcslFitter.get()); + segmentFinder->setFitter(std::make_shared<TrkDriftCircleMath::DCSLFitter>()); } // use tight road cuts and only look for pointing segments diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MdtSegmentT0Fitter/src/MdtSegmentT0Fitter.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MdtSegmentT0Fitter/src/MdtSegmentT0Fitter.cxx index e0d6e46c3c8f4ba28599f287e9442eb512046cb0..2e67d02ecfa29da3072550dd30fbf8e50bbb30d0 100755 --- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MdtSegmentT0Fitter/src/MdtSegmentT0Fitter.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MdtSegmentT0Fitter/src/MdtSegmentT0Fitter.cxx @@ -653,7 +653,7 @@ namespace TrkDriftCircleMath { chi2 += 1.; } result.set( chi2, nhits-NUMPAR, dtheta, -1.*dy0 ); - result.line().set( LocPos( Zc - sinus*d, Yc + cosin*d ), ang ); + result.line().set( LocVec2D( Zc - sinus*d, Yc + cosin*d ), ang ); if(t0==0.) t0=0.00001; result.setT0Shift(t0,t0Err); diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonRefitTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonRefitTool.cxx index a4f461a11d41e54527aaf64004441908b981b02c..68c2be6344378c97ecbd6d351173cbd9080fb560 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonRefitTool.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonRefitTool.cxx @@ -1337,16 +1337,15 @@ namespace Muon { TrkDriftCircleMath::DCSLFitter dcslFitter; TrkDriftCircleMath::SegmentFinder segFinder(5., 3., false); - if (!m_t0Fitter.empty()) { segFinder.setFitter(m_t0Fitter->getFitter()); } + if (!m_t0Fitter.empty()) { + std::shared_ptr<const TrkDriftCircleMath::DCSLFitter> fitter(m_t0Fitter->getFitter(), Muon::IDCSLFitProvider::Unowned{}); + segFinder.setFitter(fitter); + } segFinder.debugLevel(m_finderDebugLevel); segFinder.setRecoverMDT(false); unsigned index = 0; - std::vector<const MdtDriftCircleOnTrack*>::const_iterator it = hits.begin(); - std::vector<const MdtDriftCircleOnTrack*>::const_iterator it_end = hits.end(); - for (; it != it_end; ++it) { - const MdtDriftCircleOnTrack* mdt = dynamic_cast<const MdtDriftCircleOnTrack*>(*it); - + for ( const MdtDriftCircleOnTrack* mdt: hits) { if (!mdt) { continue; } Identifier id = mdt->identify(); @@ -1360,7 +1359,7 @@ namespace Muon { } // calculate local AMDB position Amg::Vector3D locPos = gToStation * mdt->prepRawData()->globalPosition(); - TrkDriftCircleMath::LocPos lpos(locPos.y(), locPos.z()); + TrkDriftCircleMath::LocVec2D lpos(locPos.y(), locPos.z()); double r = std::abs(mdt->localParameters()[Trk::locR]); double dr = Amg::error(mdt->localCovariance(), Trk::locR); @@ -1373,9 +1372,8 @@ namespace Muon { // create new DriftCircle TrkDriftCircleMath::DriftCircle dc(lpos, r, 1., dr, TrkDriftCircleMath::DriftCircle::InTime, mdtid, index, mdt); - TrkDriftCircleMath::DCOnTrack dcOnTrack(dc, 1., 1.); - dcs.push_back(dc); - dcsOnTrack.push_back(dcOnTrack); + dcsOnTrack.emplace_back(dc, 1., 1.); + dcs.emplace_back(std::move(dc)); indexIdMap.emplace_back(id, false); ++index; @@ -1406,7 +1404,7 @@ namespace Muon { const Amg::Vector3D lpos = gToStation * pars.position(); - TrkDriftCircleMath::LocPos segPos(lpos.y(), lpos.z()); + TrkDriftCircleMath::LocVec2D segPos(lpos.y(), lpos.z()); TrkDriftCircleMath::Line segPars(segPos, angleYZ); ATH_MSG_DEBUG("Seeding angles " << track_angleYZ << " from surf " << angleYZ << " ch angle " << chamber_angleYZ << " pos " diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooCandidateMatchingTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooCandidateMatchingTool.cxx index 98c7f063a0fa33d93a57f90c1f8978fc4295749b..745a96bb5c74c11df4b4faded23bdda891b7496f 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooCandidateMatchingTool.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooCandidateMatchingTool.cxx @@ -27,8 +27,8 @@ namespace { // local funcs // limit angle difference to -pi/2 < x <= pi/2 inline double theta_diff(double x) { - while (x <= -M_PI / 2.0) x += M_PI; - while (x > +M_PI / 2.0) x -= M_PI; + while (x <= -M_PI_2) x += M_PI; + while (x > +M_PI_2) x -= M_PI; return x; } diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.cxx index 90ab51f8ee557408e3785fd82e377cd1e938175d..54160d5c8a2bd1651f221a427d1cb95768625e49 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackBuilder.cxx @@ -1299,12 +1299,12 @@ namespace Muon { } bool inBounds = false; - Amg::Vector2D locPos; - bool ok = meas->associatedSurface().globalToLocal(impactPars->position(), impactPars->momentum(), locPos); + Amg::Vector2D LocVec2D; + bool ok = meas->associatedSurface().globalToLocal(impactPars->position(), impactPars->momentum(), LocVec2D); // delete impactPars; if (ok) { if (msgLvl(MSG::VERBOSE)) - msg(MSG::VERBOSE) << " lpos (" << locPos[Trk::locX] << "," << locPos[Trk::locY] << ")"; + msg(MSG::VERBOSE) << " lpos (" << LocVec2D[Trk::locX] << "," << LocVec2D[Trk::locY] << ")"; double tol1 = 50.; double tol2 = tol1; Identifier id = m_edmHelperSvc->getIdentifier(*meas); @@ -1321,9 +1321,9 @@ namespace Muon { // for MM, perform the bound check from the detector element to take into account edge passivation const MMClusterOnTrack* mmClusterOnTrack = dynamic_cast<const MMClusterOnTrack*>(meas); if (mmClusterOnTrack) { - inBounds = mmClusterOnTrack->detectorElement()->insideActiveBounds(id, locPos, tol1, tol2); + inBounds = mmClusterOnTrack->detectorElement()->insideActiveBounds(id, LocVec2D, tol1, tol2); } else { - inBounds = meas->associatedSurface().insideBounds(locPos, tol1, tol2); + inBounds = meas->associatedSurface().insideBounds(LocVec2D, tol1, tol2); } if (msgLvl(MSG::VERBOSE)) { diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackFitter.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackFitter.cxx index 3a82baf59860b485740b378f9f4e20cfcab56f50..0bde573cb1bced7c5ac155596dc85dba248b2e48 100644 --- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackFitter.cxx +++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackSteeringTools/src/MooTrackFitter.cxx @@ -25,7 +25,7 @@ #include "MuonTrackMakerUtils/SortMeasurementsByPosition.h" #include "TrkDetDescrUtils/Intersection.h" #include "TrkDriftCircleMath/Line.h" -#include "TrkDriftCircleMath/LocPos.h" +#include "TrkDriftCircleMath/LocVec2D.h" #include "TrkDriftCircleMath/MatchDCWithLine.h" #include "TrkDriftCircleMath/Segment.h" #include "TrkEventPrimitives/LocalDirection.h" @@ -1021,10 +1021,10 @@ namespace Muon { // calculate position fake double lyfake = halfLength - 50.; - Amg::Vector2D locpos_plus(0., lyfake); - const Amg::Vector3D fakePos_plus = meas.associatedSurface().localToGlobal(locpos_plus); - Amg::Vector2D locpos_min(0., -lyfake); - const Amg::Vector3D fakePos_min = meas.associatedSurface().localToGlobal(locpos_min); + Amg::Vector2D LocVec2D_plus(0., lyfake); + const Amg::Vector3D fakePos_plus = meas.associatedSurface().localToGlobal(LocVec2D_plus); + Amg::Vector2D LocVec2D_min(0., -lyfake); + const Amg::Vector3D fakePos_min = meas.associatedSurface().localToGlobal(LocVec2D_min); double phi_min = fakePos_min.phi(); double phi_plus = fakePos_plus.phi(); @@ -1055,8 +1055,8 @@ namespace Muon { garbage.push_back(fake); if (msgLvl(MSG::DEBUG)) { - Amg::Vector2D locpos(0., fake->localParameters().get(Trk::locY)); - const Amg::Vector3D fakePos = meas.associatedSurface().localToGlobal(locpos); + Amg::Vector2D LocVec2D(0., fake->localParameters().get(Trk::locY)); + const Amg::Vector3D fakePos = meas.associatedSurface().localToGlobal(LocVec2D); msg(MSG::DEBUG) << MSG::DEBUG << " createFakePhiForMeasurement for: " << m_idHelperSvc->toStringChamber(id) << " locY " << ly << " errpr " << errPos << " phi " << fakePos.phi() << endmsg; @@ -2078,8 +2078,8 @@ namespace Muon { tubeRadius = detEl->innerTubeRadius(); // calculate local AMDB position - Amg::Vector3D locPos = gToStation * mdt->prepRawData()->globalPosition(); - TrkDriftCircleMath::LocPos lpos(locPos.y(), locPos.z()); + Amg::Vector3D LocVec2D = gToStation * mdt->prepRawData()->globalPosition(); + TrkDriftCircleMath::LocVec2D lpos(LocVec2D.y(), LocVec2D.z()); double r = mdt->localParameters()[Trk::locR]; double dr = Amg::error(mdt->localCovariance(), Trk::locR); @@ -2106,7 +2106,7 @@ namespace Muon { << " local parameters " << lpos.y() << " " << lpos.z() << " phi " << angleYZ << " with " << dcs.size() << " hits "); - TrkDriftCircleMath::LocPos segPos(lpos.y(), lpos.z()); + TrkDriftCircleMath::LocVec2D segPos(lpos.y(), lpos.z()); TrkDriftCircleMath::Line segPars(segPos, angleYZ); TrkDriftCircleMath::Segment segment(TrkDriftCircleMath::Line(0., 0., 0.), TrkDriftCircleMath::DCOnTrackVec()); diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonPhysValMonitoring/src/MuonPhysValMonitoringTool.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonPhysValMonitoring/src/MuonPhysValMonitoringTool.cxx index a46ae742f98f4818a6b510779b9f9015c32ab8df..46785fb731cb70680201d51e93f255be927fd0d0 100644 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonPhysValMonitoring/src/MuonPhysValMonitoringTool.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonPhysValMonitoring/src/MuonPhysValMonitoringTool.cxx @@ -537,7 +537,6 @@ StatusCode MuonPhysValMonitoringTool::fillHistograms() return sc; } else ATH_MSG_DEBUG("TriggerDecision accessed"); - m_trigDec->ExperimentalAndExpertMethods()->enable(); auto chainGroups = m_trigDec->getChainGroup("HLT_.*mu.*"); for(auto &trig : chainGroups->getListOfTriggers()) { if(m_trigDec->isPassed(trig, TrigDefs::EF_passedRaw )) {ATH_MSG_DEBUG("Chain "<<trig <<" is passed: YES");} diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataMonAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataMonAlg.cxx index d5413942046e9d859c006512e0cd689fee0239f4..59deade38e8faa8ee6ff10c37d40613375f499e4 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataMonAlg.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataMonAlg.cxx @@ -28,6 +28,7 @@ #include "MuonCalibIdentifier/MuonFixedId.h" #include "MdtCalibFitters/MTStraightLine.h" #include "MuonSegment/MuonSegment.h" +#include "MuonIdHelpers/MdtIdHelper.h" #include "MdtRawDataMonitoring/MuonChamberIDSelector.h" #include "MdtRawDataMonitoring/MdtRawDataMonAlg.h" @@ -54,7 +55,7 @@ namespace { // the tube number of a tube in a tubeLayer in encoded in the GeoSerialIdentifier (modulo maxNTubesPerLayer) - static constexpr unsigned int const maxNTubesPerLayer = 120; + constexpr unsigned int maxNTubesPerLayer = MdtIdHelper::maxNTubesPerLayer; } struct MDTOverviewHistogramStruct { diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataValAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataValAlg.cxx index 7b7cc0b1623283209e32558cb2a07ca44aa06813..2e51be20c960f87ab3301859b36934160be9e608 100755 --- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataValAlg.cxx +++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataValAlg.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ ///////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -44,7 +44,7 @@ #include "TrkTrack/Track.h" #include "GeoModelUtilities/GeoGetIds.h" #include "GaudiKernel/MsgStream.h" - +#include "MuonIdHelpers/MdtIdHelper.h" //root includes #include <TH1F.h> #include <TH2F.h> @@ -53,14 +53,14 @@ namespace { // the tube number of a tube in a tubeLayer in encoded in the GeoSerialIdentifier (modulo maxNTubesPerLayer) - static constexpr unsigned int const maxNTubesPerLayer = 120; + constexpr unsigned int maxNTubesPerLayer = MdtIdHelper::maxNTubesPerLayer; + + enum {enumBarrelA, enumBarrelC, enumEndCapA, enumEndCapC}; + enum {enumBarrel, enumEndCap}; + enum {enumInner, enumMiddle, enumOuter, enumExtra}; } -float parESD1, parESD2, parESD3, parESD4; -enum {enumBarrelA, enumBarrelC, enumEndCapA, enumEndCapC}; -enum {enumBarrel, enumEndCap}; -enum {enumInner, enumMiddle, enumOuter, enumExtra}; ///////////////////////////////////////////////////////////////////////////// // ********************************************************************* @@ -70,7 +70,7 @@ enum {enumInner, enumMiddle, enumOuter, enumExtra}; MdtRawDataValAlg::MdtRawDataValAlg( const std::string & type, const std::string & name, const IInterface* parent ) :ManagedMonitorToolBase( type, name, parent ), m_mg(0), - m_masked_tubes(NULL), + m_masked_tubes(nullptr), m_muonSelectionTool(this, "MuonSelectionTool", "CP::MuonSelectionTool/MuonSelectionTool"), m_DQFilterTools(this), m_atlas_ready(0), @@ -158,7 +158,7 @@ MdtRawDataValAlg::~MdtRawDataValAlg() if(m_hist_hash_list) { clear_hist_map(0); } - delete m_masked_tubes; m_masked_tubes = NULL; + delete m_masked_tubes; m_masked_tubes = nullptr; ATH_MSG_INFO(" deleting MdtRawDataValAlg " ); delete m_mg; diff --git a/PhysicsAnalysis/D3PDTools/EventLoopGrid/data/ELG_prun.py b/PhysicsAnalysis/D3PDTools/EventLoopGrid/data/ELG_prun.py index 17bda9fb0ea7649f11edbcfa037b9bd4bf4f644f..25017f6a1d1c069e7da5437decbc14c6287b8731 100644 --- a/PhysicsAnalysis/D3PDTools/EventLoopGrid/data/ELG_prun.py +++ b/PhysicsAnalysis/D3PDTools/EventLoopGrid/data/ELG_prun.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from __future__ import print_function @@ -50,8 +50,9 @@ def ELG_prun(sample) : 'useRootCore', 'useAthenaPackages'] + from ROOT import SH for opt in opts : - arg = sample.meta().castDouble('nc_' + opt, -1, ROOT.SH.MetaObject.CAST_NOCAST_DEFAULT) + arg = sample.meta().castDouble('nc_' + opt, -1, SH.MetaObject.CAST_NOCAST_DEFAULT) if abs(arg + 1) > 1e-6 : cmd += ["--" + opt + "=" + str(int(round(arg)))] else : @@ -60,7 +61,7 @@ def ELG_prun(sample) : cmd += ["--" + opt + "=" + arg] for switch in switches : - arg = sample.meta().castDouble('nc_' + switch, 0, ROOT.SH.MetaObject.CAST_NOCAST_DEFAULT) + arg = sample.meta().castDouble('nc_' + switch, 0, SH.MetaObject.CAST_NOCAST_DEFAULT) if arg != 0 : cmd += ["--" + switch] else : @@ -80,7 +81,7 @@ def ELG_prun(sample) : for opt in internalOpts : cmd += ["--" + opt + "=" + sample.meta().castString('nc_' + opt)] - if sample.meta().castDouble('nc_mergeOutput', 1, ROOT.SH.MetaObject.CAST_NOCAST_DEFAULT) == 0 or sample.meta().castString('nc_mergeOutput').upper() == 'FALSE' : + if sample.meta().castDouble('nc_mergeOutput', 1, SH.MetaObject.CAST_NOCAST_DEFAULT) == 0 or sample.meta().castString('nc_mergeOutput').upper() == 'FALSE' : #don't set merge script pass else : @@ -89,7 +90,7 @@ def ELG_prun(sample) : if len(sample.meta().castString('nc_EventLoop_SubmitFlags')) : cmd += shlex.split (sample.meta().castString('nc_EventLoop_SubmitFlags')) - if sample.meta().castDouble('nc_showCmd', 0, ROOT.SH.MetaObject.CAST_NOCAST_DEFAULT) != 0 : + if sample.meta().castDouble('nc_showCmd', 0, SH.MetaObject.CAST_NOCAST_DEFAULT) != 0 : print (cmd) if not os.path.isfile('jobcontents.tgz') : diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/python/ContainersOnTheFly.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/python/ContainersOnTheFly.py index 9cf685a5329fce3ed48d93b5b7b1fe8cf87c0d88..eee3921cdb9060672f4641800871527fd5e003dc 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/python/ContainersOnTheFly.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/python/ContainersOnTheFly.py @@ -83,6 +83,8 @@ ContainersOnTheFly = [ ["Kt4EMPFlowEventShape","xAOD::EventShape"], ["Kt4EMPFlowEventShapeAux","xAOD::EventShapeAuxInfo"], + ["Kt4EMPFlowPUSBEventShape","xAOD::EventShape"], + ["Kt4EMPFlowPUSBEventShapeAux","xAOD::EventShapeAuxInfo"], ["Kt4EMTopoOriginEventShape","xAOD::EventShape"], ["Kt4EMTopoOriginEventShapeAux","xAOD::EventShapeAuxInfo"], diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGAM3ExtraContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGAM3ExtraContent.py index bd1d12d646c7fa69e278714aaef19807134d91fa..3013d86e63a238d1553ea5cc4084412db3ffb828 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGAM3ExtraContent.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkEGamma/python/EGAM3ExtraContent.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration #Content included in addition to the Smart Slimming Content @@ -117,6 +117,8 @@ ExtraContainersTrigger=[ "HLT_xAOD__TrigPhotonContainer_L2PhotonFexAux.", "HLT_xAOD__CaloClusterContainer_TrigEFCaloCalibFex", "HLT_xAOD__CaloClusterContainer_TrigEFCaloCalibFexAux.", + "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_IDTrig", + "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_IDTrigAux." "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_EFID", "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_EFIDAux.", "LVL1EmTauRoIs", @@ -138,6 +140,4 @@ ExtraContainersTriggerDataOnly=[ "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_FTFAux.", "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_L2ID", "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_L2IDAux.", - "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_IDTrig", - "HLT_xAOD__TrackParticleContainer_InDetTrigTrackingxAODCnv_Electron_IDTrigAux." ] diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG1D1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG1D1.py index 98c5a31eddbd18142fac1a88d1673e4d4614fc15..e5545f2521b4005c2996d3f49dfa1c38b0f6e0e0 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG1D1.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/share/HIGG1D1.py @@ -25,6 +25,7 @@ from TriggerMenuMT.TriggerAPI.TriggerAPI import TriggerAPI from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod, TriggerType from DerivationFrameworkTrigger.TriggerMatchingHelper import TriggerMatchingHelper import re +from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc @@ -712,6 +713,11 @@ HIGG1D1SlimmingHelper.AppendToDictionary.update({ "AntiKt4PFlowCustomVtxJets": "Kt4EMPFlowEventShape":"xAOD::EventShape", "Kt4EMPFlowEventShapeAux":"xAOD::EventShapeAuxInfo", "BTagging_AntiKt4PFlowCustomVtx":"xAOD::BTaggingContainer", "BTagging_AntiKt4PFlowCustomVtxAux" : "xAOD::BTaggingAuxContainer", "ZeeRefittedPrimaryVertices":"xAOD::VertexContainer","ZeeRefittedPrimaryVerticesAux":"xAOD:VertexAuxContainer", + "MET_Track":"xAOD::MissingETContainer","MET_TrackAux":"xAOD::MissingETAuxContainer", + "egammaTopoSeededClusters":"xAOD::CaloClusterContainer","egammaTopoSeededClustersAux":"xAOD::CaloClusterAuxContainer", + "NeutralParticleFlowIsoCentralEventShape":"xAOD::EventShape", "NeutralParticleFlowIsoForwardEventShapeAux":"xAOD::EventShapeAuxInfo", + "NeutralParticleFlowIsoForwardEventShape":"xAOD::EventShape", "NeutralParticleFlowIsoForwardEventShapeAux":"xAOD::EventShapeAuxInfo", + "Kt4EMTopoOriginEventShape":"xAOD::EventShape", "Kt4EMTopoOriginEventShapeAux":"xAOD::EventShapeAuxInfo", }) HIGG1D1SlimmingHelper.AllVariables += [HggVertexContainerName,"ZeeRefittedPrimaryVertices","AntiKt4PFlowCustomVtxJets","Kt4PFlowCustomVtxEventShape","Kt4EMPFlowEventShape"] @@ -739,15 +745,13 @@ for tool in HIGG1D1_ClusterEnergyPerLayerDecorators: from DerivationFrameworkJetEtMiss.METCommon import addMETOutputs addMETOutputs(HIGG1D1SlimmingHelper,["AntiKt4EMPFlow","AntiKt4PFlowCustomVtxHgg"]) -HIGG1D1SlimmingHelper.StaticContent.append("xAOD::MissingETAssociationMap#METAssoc_AntiKt4PFlowCustomVtxHgg") -HIGG1D1SlimmingHelper.StaticContent.append("xAOD::MissingETAuxAssociationMap#METAssoc_AntiKt4PFlowCustomVtxHggAux.") -HIGG1D1SlimmingHelper.StaticContent.append("xAOD::MissingETContainer#MET_Core_AntiKt4PFlowCustomVtxHgg") -HIGG1D1SlimmingHelper.StaticContent.append("xAOD::MissingETAuxContainer#MET_Core_AntiKt4PFlowCustomVtxHggAux.") - +HIGG1D1Stream.AddItem("xAOD::MissingETAssociationMap#METAssoc_AntiKt4PFlowCustomVtxHgg") +HIGG1D1Stream.AddItem("xAOD::MissingETAuxAssociationMap#METAssoc_AntiKt4PFlowCustomVtxHggAux.") +HIGG1D1Stream.AddItem("xAOD::MissingETContainer#MET_Core_AntiKt4PFlowCustomVtxHgg") +HIGG1D1Stream.AddItem("xAOD::MissingETAuxContainer#MET_Core_AntiKt4PFlowCustomVtxHggAux.") HIGG1D1SlimmingHelper.IncludeEGammaTriggerContent = True - HIGG1D1Stream.AddItem("xAOD::CutBookkeeperContainer#CutBookkeepers") HIGG1D1Stream.AddItem("xAOD::CutBookkeeperAuxContainer#CutBookkeepersAux.") HIGG1D1Stream.AddItem("xAOD::CutBookkeeperContainer#IncompleteCutBookkeepers") @@ -760,7 +764,6 @@ HIGG1D1_trigmatching_helper_tau.add_to_slimming(HIGG1D1SlimmingHelper) # Final construction of output stream HIGG1D1SlimmingHelper.AppendContentToStream(HIGG1D1Stream) - #==================================================================== # Add our sequence to the top sequence #==================================================================== diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/src/TruthCategoriesDecorator.cxx b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/src/TruthCategoriesDecorator.cxx index ebff6ea5f64722e5bf3f3b12c65a3d3834f262f5..8d5a042fa49f8dac332acb893a550c91b18b79b9 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/src/TruthCategoriesDecorator.cxx +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkHiggs/src/TruthCategoriesDecorator.cxx @@ -95,7 +95,10 @@ namespace DerivationFramework { return HTXS::HiggsProdMode::UNKNOWN; } - for (const TString& prodMode:{"GGF","VBF","WH","QQ2ZH","GG2ZH","TTH","BBH","TH","THQB","WHT"}) { + static const std::vector<TString> prodModes = { + "GGF", "VBF", "WH", "QQ2ZH", "GG2ZH", "TTH", "BBH", "TH", "THQB", "WHT" + }; + for (const TString& prodMode : prodModes) { // loop over each mcID belonging to the production mode for ( int mcID : vectorize(m_config->GetValue("HTXS.MCsamples."+prodMode,"")) ){ diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/AntiKt4EMPFlowJetsCPContent.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/AntiKt4EMPFlowJetsCPContent.py index 18683335d3c19411b4788e79defb35745760ba5d..5596f9eda1ce972a27ec214e5193bb544dfc0e4f 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/AntiKt4EMPFlowJetsCPContent.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/AntiKt4EMPFlowJetsCPContent.py @@ -1,8 +1,10 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration AntiKt4EMPFlowJetsCPContent = [ "Kt4EMPFlowEventShape", "Kt4EMPFlowEventShapeAux.Density", +"Kt4EMPFlowPUSBEventShape", +"Kt4EMPFlowPUSBEventShapeAux.Density", "AntiKt4EMPFlowJets", "AntiKt4EMPFlowJetsAux.pt.eta.phi.m.JetConstitScaleMomentum_pt.JetConstitScaleMomentum_eta.JetConstitScaleMomentum_phi.JetConstitScaleMomentum_m.NumTrkPt500.SumPtTrkPt500.NumChargedPFOPt500.SumPtChargedPFOPt500.EnergyPerSampling.ActiveArea4vec_eta.ActiveArea4vec_m.ActiveArea4vec_phi.ActiveArea4vec_pt.DetectorEta.DetectorY.FracSamplingMax.FracSamplingMaxIndex.GhostTrack.Jvt.JVFCorr.JvtRpt.NumTrkPt1000.NumChargedPFOPt1000.TrackWidthPt1000.ChargedPFOWidthPt1000.GhostMuonSegmentCount.PartonTruthLabelID.ConeTruthLabelID.HadronConeExclExtendedTruthLabelID.HadronConeExclTruthLabelID.TrueFlavor.Timing.DFCommonJets_fJvt", "PrimaryVertices", diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/ExtendedJetCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/ExtendedJetCommon.py index dc2a0d494d704b3b1deff560256492fb90657c26..8866c60ce1ec616568f18d3884036935ddd90851 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/ExtendedJetCommon.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/ExtendedJetCommon.py @@ -6,7 +6,7 @@ #******************************************************************** from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkJob, DerivationFrameworkIsMonteCarlo -from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets, addStandardVRTrackJets, addSoftDropJets, addTrimmedJets, defineEDAlg +from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets, addStandardVRTrackJets, addTrimmedJets, defineEDAlg from JetJvtEfficiency.JetJvtEfficiencyToolConfig import getJvtEffTool from AthenaCommon import CfgMgr @@ -34,29 +34,17 @@ def nameJetsFromAlg(alg): def addDefaultTrimmedJets(sequence,outputlist,dotruth=True,writeUngroomed=False,linkVRGhosts=False): if DerivationFrameworkIsMonteCarlo and dotruth: - addTrimmedJets('AntiKt', 1.0, 'Truth', rclus=0.2, ptfrac=0.05, mods="truth_groomed", - algseq=sequence, outputGroup=outputlist, writeUngroomed=writeUngroomed) + if not hasattr(sequence,'jetalgAntiKt10TruthTrimmedPtFrac5SmallR20'): + addTrimmedJets('AntiKt', 1.0, 'Truth', rclus=0.2, ptfrac=0.05, mods="truth_groomed", + algseq=sequence, outputGroup=outputlist, writeUngroomed=writeUngroomed) addTrimmedJets('AntiKt', 1.0, 'LCTopo', rclus=0.2, ptfrac=0.05, mods="lctopo_groomed", - algseq=sequence, outputGroup=outputlist, writeUngroomed=writeUngroomed, includeVRGhosts=linkVRGhosts) + algseq=sequence, outputGroup=outputlist, writeUngroomed=writeUngroomed, includeVRGhosts=linkVRGhosts, + customGetters=jtm.gettersMap["lctopo_reduced"]) def addTCCTrimmedJets(sequence,outputlist,dotruth=True,writeUngroomed=False): addTrimmedJets('AntiKt', 1.0, 'TrackCaloCluster', rclus=0.2, ptfrac=0.05, mods="tcc_groomed", - algseq=sequence, outputGroup=outputlist, writeUngroomed=writeUngroomed) - -def addCSSKSoftDropJets(sequence, seq_name, logger=extjetlog): - from DerivationFrameworkFlavourTag.HbbCommon import addVRJets, buildVRJets - vrJetName, vrGhostLabel = buildVRJets( - sequence, do_ghost=True, logger=logger) - - addVRJets(sequence, do_ghost=True, logger=logger) - - addConstModJets("AntiKt", 1.0, "LCTopo", ["CS", "SK"], sequence, seq_name, - ptmin=40000, ptminFilter=50000, mods="lctopo_ungroomed", - addGetters=[vrGhostLabel.lower()]) - addSoftDropJets("AntiKt", 1.0, "LCTopo", beta=1.0, zcut=0.1, - algseq=sequence, outputGroup=seq_name, - writeUngroomed=True, mods="lctopo_groomed", - constmods=["CS", "SK"]) + algseq=sequence, outputGroup=outputlist, writeUngroomed=writeUngroomed, + customGetters=jtm.gettersMap["lctopo_reduced"]) ################################################################## # Jet helpers for ungroomed jets (removed in xAOD reduction) @@ -118,6 +106,8 @@ def addAntiKt4LCTopoJets(sequence, outputlist): def addAntiKt4EMPFlowJets(sequence, outputlist): addCHSPFlowObjects() addEventShape(0.4, "EMPFlow", sequence) + #New rho definition for precision recommendations + addEventShape(0.4, "EMPFlowPUSB", sequence) addStandardJets("AntiKt", 0.4, "EMPFlow", ptmin=5000, ptminFilter=10000, mods="pflow_ungroomed", calibOpt="arj:pflow", algseq=sequence, outputGroup=outputlist, customGetters=jtm.gettersMap["empflow_reduced"]) ################################################################## @@ -157,27 +147,38 @@ def addDAODJets(jetlist,sequence,outputlist): ################################################################## # 2 GeV cut after pileup suppression for in-situ Z -def addAntiKt4LowPtJets(sequence,outputlist): - addStandardJets("AntiKt", 0.4, "EMTopo", namesuffix="LowPt", ptmin=2000, ptminFilter=2000, - mods="emtopo_ungroomed", algseq=sequence, outputGroup=outputlist,calibOpt="ar") - addStandardJets("AntiKt", 0.4, "LCTopo", namesuffix="LowPt", ptmin=2000, ptminFilter=2000, - mods="lctopo_ungroomed", algseq=sequence, outputGroup=outputlist,calibOpt="ar") - - addCHSPFlowObjects() - addStandardJets("AntiKt", 0.4, "EMPFlow", namesuffix="LowPt", ptmin=2000, ptminFilter=2000, - mods="pflow_ungroomed", algseq=sequence, outputGroup=outputlist,calibOpt="ar:pflow") +def addAntiKt4LowPtJets(jetlist, sequence,outputlist): + if "AntiKt4EMTopoJets" in jetlist: + addStandardJets("AntiKt", 0.4, "EMTopo", namesuffix="LowPt", ptmin=2000, ptminFilter=2000, + mods="emtopo_ungroomed", customGetters=jtm.gettersMap["emtopo_reduced"], + algseq=sequence, outputGroup=outputlist,calibOpt="ar") + if "AntiKt4LCTopoJets" in jetlist: + addStandardJets("AntiKt", 0.4, "LCTopo", namesuffix="LowPt", ptmin=2000, ptminFilter=2000, + mods="lctopo_ungroomed", customGetters=jtm.gettersMap["lctopo_reduced"], + algseq=sequence, outputGroup=outputlist, calibOpt="ar") + if "AntiKt4EMPFlowJets" in jetlist: + addCHSPFlowObjects() + addStandardJets("AntiKt", 0.4, "EMPFlow", namesuffix="LowPt", ptmin=2000, ptminFilter=2000, + mods="pflow_ungroomed", customGetters=jtm.gettersMap["empflow_reduced"], + algseq=sequence, outputGroup=outputlist,calibOpt="ar:pflow") ################################################################## # 1 MeV cut at constituent level for MCJES -def addAntiKt4NoPtCutJets(sequence,outputlist): - addStandardJets("AntiKt", 0.4, "EMTopo", namesuffix="NoPtCut", ptmin=0, ptminFilter=1, - mods="emtopo_ungroomed", algseq=sequence, outputGroup=outputlist,calibOpt="none") - addStandardJets("AntiKt", 0.4, "LCTopo", namesuffix="NoPtCut", ptmin=0, ptminFilter=1, - mods="lctopo_ungroomed", algseq=sequence, outputGroup=outputlist,calibOpt="none") - addCHSPFlowObjects() - addStandardJets("AntiKt", 0.4, "EMPFlow", namesuffix="NoPtCut", ptmin=0, ptminFilter=1, - mods="pflow_ungroomed", algseq=sequence, outputGroup=outputlist,calibOpt="none") +def addAntiKt4NoPtCutJets(jetlist, sequence,outputlist): + if "AntiKt4EMTopoJets" in jetlist: + addStandardJets("AntiKt", 0.4, "EMTopo", namesuffix="NoPtCut", ptmin=0, ptminFilter=1, + mods="emtopo_ungroomed", customGetters=jtm.gettersMap["emtopo_reduced"], + algseq=sequence, outputGroup=outputlist,calibOpt="none") + if "AntiKt4LCTopoJets" in jetlist: + addStandardJets("AntiKt", 0.4, "LCTopo", namesuffix="NoPtCut", ptmin=0, ptminFilter=1, + mods="lctopo_ungroomed", customGetters=jtm.gettersMap["lctopo_reduced"], + algseq=sequence, outputGroup=outputlist,calibOpt="none") + if "AntiKt4EMPFlowJets" in jetlist: + addCHSPFlowObjects() + addStandardJets("AntiKt", 0.4, "EMPFlow", namesuffix="NoPtCut", ptmin=0, ptminFilter=1, + mods="pflow_ungroomed", customGetters=jtm.gettersMap["empflow_reduced"], + algseq=sequence, outputGroup=outputlist,calibOpt="none") ################################################################## @@ -510,7 +511,8 @@ def getPseudoJetAlg(inputType): "EMTopo" : jtm.emget, "LCTopoOrigin" : jtm.lcoriginget, "EMTopoOrigin" : jtm.emoriginget, - "EMPFlow": jtm.empflowget}[inputType] + "EMPFlow": jtm.empflowget, + "EMPFlowPUSB": jtm.empflowpusbget}[inputType] def addEventCleanFlags(sequence, workingPoints = ['Loose', 'Tight', 'LooseLLP']): @@ -546,4 +548,5 @@ def addEventCleanFlags(sequence, workingPoints = ['Loose', 'Tight', 'LooseLLP']) EventCleanPrefix=prefix, CleaningLevel=cleaningLevel, doEvent = ('Loose' in wp)) # Only store event-level flags for Loose and LooseLLP - sequence += algClean \ No newline at end of file + sequence += algClean + diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JetCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JetCommon.py index 5cd7eace301dbe4aa303edf938482d52a801b113..f809ad1f1de67a0fc4219b87a5f17b868bbb432f 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JetCommon.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/JetCommon.py @@ -22,34 +22,6 @@ addJetRecoToAlgSequence(DerivationFrameworkJob,eventShapeTools=None) DFJetAlgs = {} -################################################################## -# Schedule the augmentation of a flag to label events with large -# EMEC-IW Noise based on the presence of many bad quality clusters -################################################################## - -if hasattr(DerivationFrameworkJob,"BadBatmanAugmentation"): - dfjetlog.warning( "BadBatmanAugmentation: BadBatmanAugmentation already scheduled on sequence "+DerivationFrameworkJob.name ) -else: - # Check if we have clusters. If we don't then this cannot run - from RecExConfig.ObjKeyStore import objKeyStore - if objKeyStore.isInInput( "xAOD::CaloClusterContainer", "CaloCalTopoClusters" ): - # schedule it - batmanaug = CfgMgr.DerivationFramework__CommonAugmentation("BadBatmanAugmentation") - DerivationFrameworkJob += batmanaug - batmanaugtool = None - from AthenaCommon.AppMgr import ToolSvc - # create and add the tool to the alg if needed - if hasattr(ToolSvc,"BadBatmanAugmentationTool"): - batmanaugtool = getattr(ToolSvc,"BadBatmanAugmentationTool") - else: - batmanaugtool = CfgMgr.DerivationFramework__BadBatmanAugmentationTool("BadBatmanAugmentationTool") - ToolSvc += batmanaugtool - if batmanaugtool not in batmanaug.AugmentationTools: - batmanaug.AugmentationTools.append(batmanaugtool) - else: - if not objKeyStore.isInInput( "McEventCollection", "GEN_EVENT" ): - dfjetlog.warning('Could not schedule BadBatmanAugmentation (fine if running on EVNT)') - ################################################################## # Definitions of helper functions ################################################################## @@ -58,6 +30,8 @@ def defineEDAlg(R=0.4, inputtype="LCTopo"): from EventShapeTools.EventDensityConfig import configEventDensityTool, EventDensityAthAlg from AthenaCommon.AppMgr import ToolSvc from JetRec.JetRecStandard import jtm + from AthenaCommon.AlgSequence import AlgSequence + topSequence = AlgSequence() # map a getter to the input argument inputgetter = { "LCTopo" : jtm.lcget, @@ -65,9 +39,14 @@ def defineEDAlg(R=0.4, inputtype="LCTopo"): "LCTopoOrigin" : jtm.lcoriginget, "EMTopoOrigin" : jtm.emoriginget, "EMPFlow": jtm.empflowget, + "EMPFlowPUSB": jtm.empflowpusbget, + "EMPFlowNeut": jtm.empflowneutget, "PFlowCustomVtx": jtm.pflowcustomvtxget }[inputtype] + if not hasattr(topSequence, inputgetter.name()): + topSequence += inputgetter + t=configEventDensityTool("EDTool"+str(int(R*10))+inputtype, inputgetter.Label, radius = R) @@ -104,7 +83,7 @@ def addGhostAssociation(DerivationFrameworkJob): ################################################################## -def reCreatePseudoJets(jetalg, rsize, inputtype, variableRMassScale=-1.0, variableRMinRadius=-1.0, algseq=None, constmods=[], includeVRGhosts=False): +def reCreatePseudoJets(jetalg, rsize, inputtype, variableRMassScale=-1.0, variableRMinRadius=-1.0, algseq=None, customGetters=None, constmods=[], includeVRGhosts=False): """Return a list of tools (possibly empty) to be run in a jetalg. These tools will make sure PseudoJets will be associated to the container specified by the input arguments. """ @@ -176,7 +155,10 @@ def reCreatePseudoJets(jetalg, rsize, inputtype, variableRMassScale=-1.0, variab PV0Track='pv0track') # create the finder for the temporary collection. - getters = jtm.gettersMap[getterMap[inputtype]] + if customGetters is None: + getters = jtm.gettersMap[getterMap[inputtype]] + else: + getters=customGetters for getter in getters: if not hasattr(algseq, getter.name()): @@ -225,7 +207,8 @@ def reCreatePseudoJets(jetalg, rsize, inputtype, variableRMassScale=-1.0, variab def buildGenericGroomAlg(jetalg, rsize, inputtype, groomedName, jetToolBuilder, includePreTools=False, algseq=None, outputGroup="CustomJets", doVRGhosts = False, - writeUngroomed=False, variableRMassScale=-1.0, variableRMinRadius=-1.0, constmods=[]): + writeUngroomed=False, variableRMassScale=-1.0, variableRMinRadius=-1.0, + customGetters=None,constmods=[]): algname = "jetalg"+groomedName[:-4] from RecExConfig.AutoConfiguration import IsInInputFile @@ -260,7 +243,7 @@ def buildGenericGroomAlg(jetalg, rsize, inputtype, groomedName, jetToolBuilder, else: # 1. make sure we have pseudo-jet in our original container # this returns a list of the needed tools to do so. - jetalgTools = reCreatePseudoJets(jetalg, rsize, inputtype, variableRMassScale, variableRMinRadius, algseq, constmods=constmods, includeVRGhosts=doVRGhosts) + jetalgTools = reCreatePseudoJets(jetalg, rsize, inputtype, variableRMassScale, variableRMinRadius, algseq, customGetters=customGetters, constmods=constmods, includeVRGhosts=doVRGhosts) if includePreTools and jetFlags.useTracks() and "Truth" not in inputtype: # enable track ghost association and JVF @@ -289,7 +272,8 @@ def buildGenericGroomAlg(jetalg, rsize, inputtype, groomedName, jetToolBuilder, ################################################################## def addTrimmedJets(jetalg, rsize, inputtype, rclus=0.3, ptfrac=0.05, mods="groomed", includePreTools=False, algseq=None, outputGroup="Trimmed", includeVRGhosts=False, - writeUngroomed=False, variableRMassScale=-1.0, variableRMinRadius=-1.0, constmods=[]): + writeUngroomed=False, variableRMassScale=-1.0, variableRMinRadius=-1.0, + customGetters=None, constmods=[]): from JetRec.JetRecUtils import buildJetAlgName inputname = inputtype + "".join(constmods) trimmedName = "{0}{1}TrimmedPtFrac{2}SmallR{3}Jets".format(buildJetAlgName(jetalg, rsize, variableRMassScale, variableRMinRadius),inputname,int(ptfrac*100),int(rclus*100)) @@ -305,13 +289,14 @@ def addTrimmedJets(jetalg, rsize, inputtype, rclus=0.3, ptfrac=0.05, mods="groom return buildGenericGroomAlg(jetalg, rsize, inputtype, trimmedName, trimToolBuilder, includePreTools, algseq, outputGroup, writeUngroomed=writeUngroomed, doVRGhosts=includeVRGhosts, - variableRMassScale=variableRMassScale, variableRMinRadius=variableRMinRadius, constmods=constmods) + variableRMassScale=variableRMassScale, variableRMinRadius=variableRMinRadius, + customGetters=customGetters, constmods=constmods) ################################################################## def addPrunedJets(jetalg, rsize, inputtype, rcut=0.50, zcut=0.15, mods="groomed", includePreTools=False, algseq=None, outputGroup="Pruned", - writeUngroomed=False, constmods=[]): + writeUngroomed=False, customGetters=None, constmods=[]): inputname = inputtype + "".join(constmods) prunedName = "{0}{1}{2}PrunedR{3}Z{4}Jets".format(jetalg,str(int(rsize*10)),inputname,int(rcut*100),int(zcut*100)) @@ -325,13 +310,13 @@ def addPrunedJets(jetalg, rsize, inputtype, rcut=0.50, zcut=0.15, mods="groomed" # pass the trimmedName and our specific trimming tool builder to the generic function : return buildGenericGroomAlg(jetalg, rsize, inputtype, prunedName, pruneToolBuilder, includePreTools, algseq, outputGroup, - writeUngroomed=writeUngroomed, constmods=constmods) + writeUngroomed=writeUngroomed, customGetters=customGetters, constmods=constmods) ################################################################## def addFilteredJets(jetalg, rsize, inputtype, mumax=1.0, ymin=0.15, mods="groomed", includePreTools=False, algseq=None, outputGroup="Filtered", - writeUngroomed=False, constmods=[]): + writeUngroomed=False, customGetters=None, constmods=[]): inputname = inputtype + "".join(constmods) filteredName = "{0}{1}{2}BDRSFilteredMU{3}Y{4}Jets".format(jetalg,int(rsize*10),inputname,int(mumax*100),int(ymin*100)) @@ -345,14 +330,14 @@ def addFilteredJets(jetalg, rsize, inputtype, mumax=1.0, ymin=0.15, mods="groome # pass the trimmedName and our specific trimming tool builder to the generic function : return buildGenericGroomAlg(jetalg, rsize, inputtype, filteredName, filterToolBuilder, includePreTools, algseq, outputGroup, - writeUngroomed=writeUngroomed, constmods=constmods) + writeUngroomed=writeUngroomed, customGetters=customGetters, constmods=constmods) ################################################################## def addSoftDropJets(jetalg, rsize, inputtype, beta=0, zcut=0.1, mods="groomed", - includePreTools=False, algseq=None, outputGroup="SoftDrop", - writeUngroomed=False, constmods=[]): + includePreTools=False, algseq=None, outputGroup="SoftDrop", includeVRGhosts=False, + writeUngroomed=False, customGetters=None, constmods=[]): inputname = inputtype + "".join(constmods) softDropName = "{0}{1}{2}SoftDropBeta{3}Zcut{4}Jets".format(jetalg,int(rsize*10),inputname,int(beta*100),int(zcut*100)) @@ -366,14 +351,14 @@ def addSoftDropJets(jetalg, rsize, inputtype, beta=0, zcut=0.1, mods="groomed", dfjetlog.info( "Configuring soft drop jets : "+softDropName ) #pass the softDropName and our specific soft drop tool to the generic function: return buildGenericGroomAlg(jetalg, rsize, inputtype, softDropName, softDropToolBuilder, - includePreTools, algseq, outputGroup, - writeUngroomed=writeUngroomed, constmods=constmods) + includePreTools, algseq, outputGroup, doVRGhosts=includeVRGhosts, + writeUngroomed=writeUngroomed, customGetters=customGetters, constmods=constmods) ################################################################## def addRecursiveSoftDropJets(jetalg, rsize, inputtype, beta=0, zcut=0.1, N=-1, mods="groomed", includePreTools=False, algseq=None, outputGroup="SoftDrop", - writeUngroomed=False, constmods=[]): + writeUngroomed=False, customGetters=None, constmods=[]): inputname = inputtype + "".join(constmods) if N >= 0: softDropName = "{0}{1}{2}RecursiveSoftDropBeta{3}Zcut{4}N{5}Jets".format(jetalg,int(rsize*10),inputname,int(beta*100),int(zcut*100), int(N)) @@ -391,13 +376,13 @@ def addRecursiveSoftDropJets(jetalg, rsize, inputtype, beta=0, zcut=0.1, N=-1, m #pass the softDropName and our specific soft drop tool to the generic function: return buildGenericGroomAlg(jetalg, rsize, inputtype, softDropName, recursiveSoftDropToolBuilder, includePreTools, algseq, outputGroup, - writeUngroomed=writeUngroomed, constmods=constmods) + writeUngroomed=writeUngroomed, customGetters=customGetters, constmods=constmods) ################################################################## def addBottomUpSoftDropJets(jetalg, rsize, inputtype, beta=0, zcut=0.1, mods="groomed", includePreTools=False, algseq=None, outputGroup="SoftDrop", - writeUngroomed=False, constmods=[]): + writeUngroomed=False, customGetters=None, constmods=[]): inputname = inputtype + "".join(constmods) softDropName = "{0}{1}{2}BottomUpSoftDropBeta{3}Zcut{4}Jets".format(jetalg,int(rsize*10),inputname,int(beta*100),int(zcut*100)) @@ -411,7 +396,7 @@ def addBottomUpSoftDropJets(jetalg, rsize, inputtype, beta=0, zcut=0.1, mods="gr #pass the softDropName and our specific soft drop tool to the generic function: return buildGenericGroomAlg(jetalg, rsize, inputtype, softDropName, bottomUpSoftDropToolBuilder, includePreTools, algseq, outputGroup, - writeUngroomed=writeUngroomed, constmods=constmods) + writeUngroomed=writeUngroomed, customGetters=customGetters, constmods=constmods) ################################################################## @@ -426,7 +411,6 @@ def addStandardJets(jetalg, rsize, inputtype, ptmin=0., ptminFilter=0., algname = "jetalg"+jetnamebase OutputJets.setdefault(outputGroup , [] ).append(jetname) - if algseq is None: dfjetlog.warning( "No algsequence passed! Will not schedule "+algname ) return @@ -571,6 +555,39 @@ def addStandardVRTrackJets(jetalg, vrMassScale, maxR, minR, inputtype, ptmin=0., algseq += alg DFJetAlgs[algname] = alg +################################################################## +# Schedule the augmentation of a flag to label events with large +# EMEC-IW Noise based on the presence of many bad quality clusters +################################################################## + +def addBadBatmanFlag(sequence=DerivationFrameworkJob): + + from RecExConfig.ObjKeyStore import objKeyStore + + if not objKeyStore.isInInput( "McEventCollection", "GEN_EVENT" ): + if hasattr(sequence,"BadBatmanAugmentation"): + dfjetlog.warning( "BadBatmanAugmentation: BadBatmanAugmentation already scheduled on sequence "+sequence.name ) + else: + # Check if we have clusters. If we don't then this cannot run + if objKeyStore.isInInput( "xAOD::CaloClusterContainer", "CaloCalTopoClusters" ): + # schedule it + batmanaug = CfgMgr.DerivationFramework__CommonAugmentation("BadBatmanAugmentation") + sequence += batmanaug + batmanaugtool = None + from AthenaCommon.AppMgr import ToolSvc + # create and add the tool to the alg if needed + if hasattr(ToolSvc,"BadBatmanAugmentationTool"): + batmanaugtool = getattr(ToolSvc,"BadBatmanAugmentationTool") + else: + batmanaugtool = CfgMgr.DerivationFramework__BadBatmanAugmentationTool("BadBatmanAugmentationTool") + ToolSvc += batmanaugtool + if batmanaugtool not in batmanaug.AugmentationTools: + batmanaug.AugmentationTools.append(batmanaugtool) + else: + dfjetlog.warning('Could not schedule BadBatmanAugmentation!!!') + else: + dfjetlog.warning('Running over EVNT filess, BadBatmanAugmentation will not be scheduled') + ################################################################## # Schedule the adding of BCID info ################################################################## @@ -590,6 +607,7 @@ def addDistanceInTrain(sequence=DerivationFrameworkJob): distanceintrainaugtool = getattr(ToolSvc,"DistanceInTrainAugmentationTool") else: distanceintrainaugtool = CfgMgr.DerivationFramework__DistanceInTrainAugmentationTool("DistanceInTrainAugmentationTool") + ToolSvc += distanceintrainaugtool from LumiBlockComps.BunchCrossingCondAlgDefault import BunchCrossingCondAlgDefault BunchCrossingCondAlgDefault() diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/METCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/METCommon.py index 7cf6f2ef6b239313e87b01b827aec0c89ffd03e5..7d3468c7a39620b9e6fbf25e908299496844b763 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/METCommon.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/python/METCommon.py @@ -125,7 +125,7 @@ def scheduleCustomVtxMETContent(vxColl, jetColl, constituentColl="", sequence=De 'AntiKt4LCTopo':'LCJet', 'AntiKt4EMPFlow':'PFlowJet', 'AntiKt4PFlowCustomVtx':'PFlowJet'} - associators = [AssocConfig(jettype[jetColl]), + associators = [AssocConfig(jettype[jetColl],jetColl+'Jets'), AssocConfig('Muon'), AssocConfig('Ele'), AssocConfig('Gamma'), diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM1.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM1.py index bce4f64e4c828cd4b2cd2d86f190f3e90abf1394..531759acead657b97e82f0f8a73bde4e5dba5f5b 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM1.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM1.py @@ -1,17 +1,15 @@ + #==================================================================== # JETM1.py # reductionConf flag JETM1 in Reco_tf.py #==================================================================== -from DerivationFrameworkCore.DerivationFrameworkMaster import * -from DerivationFrameworkJetEtMiss.JetCommon import * -from DerivationFrameworkJetEtMiss.ExtendedJetCommon import * -from DerivationFrameworkInDet.InDetCommon import * +from DerivationFrameworkCore.DerivationFrameworkMaster import DerivationFrameworkIsMonteCarlo, DerivationFrameworkJob, buildFileName -# Include TRUTH3 containers -if DerivationFrameworkIsMonteCarlo: - from DerivationFrameworkMCTruth.MCTruthCommon import addStandardTruthContents - addStandardTruthContents() +from DerivationFrameworkPhys import PhysCommon + +from DerivationFrameworkJetEtMiss.JetCommon import addJetOutputs +from DerivationFrameworkJetEtMiss.ExtendedJetCommon import addDAODJets, addJetPtAssociation, addAntiKt4NoPtCutJets #==================================================================== # SKIMMING TOOL @@ -19,24 +17,24 @@ if DerivationFrameworkIsMonteCarlo: from DerivationFrameworkJetEtMiss import TriggerLists triggers = TriggerLists.jetTrig() -# NOTE: need to be able to OR isSimulated as an OR with the trigger -expression = ' (EventInfo.eventTypeBitmask==1) || HLT_xe120_pufit_L1XE50' +#This expression is currently not working because of EventInfo.eventTypeBitmask (to be fixed) +expression = '(EventInfo.eventTypeBitmask==1) || HLT_xe120_pufit_L1XE50' from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__TriggerSkimmingTool -JETM1TrigSkimmingTool = DerivationFramework__TriggerSkimmingTool( name = "JETM1TrigSkimmingTool1", - TriggerListOR = triggers ) +JETM1TrigSkimmingTool = DerivationFramework__TriggerSkimmingTool( name = "JETM1TrigSkimmingTool1", + TriggerListOR = triggers ) ToolSvc += JETM1TrigSkimmingTool - -from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool -JETM1OfflineSkimmingTool = DerivationFramework__xAODStringSkimmingTool(name = "JETM1OfflineSkimmingTool1", - expression = expression) -ToolSvc += JETM1OfflineSkimmingTool +# Will be uncommented once issue with eventTypeBitmask is resolved +#from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool +#JETM1OfflineSkimmingTool = DerivationFramework__xAODStringSkimmingTool(name = "JETM1OfflineSkimmingTool1", +# expression = expression) +#ToolSvc += JETM1OfflineSkimmingTool # OR of the above two selections -from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__FilterCombinationOR -JETM1ORTool = DerivationFramework__FilterCombinationOR(name="JETM1ORTool", FilterList=[JETM1TrigSkimmingTool,JETM1OfflineSkimmingTool] ) -ToolSvc+=JETM1ORTool +#from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__FilterCombinationOR +#JETM1ORTool = DerivationFramework__FilterCombinationOR(name="JETM1ORTool", FilterList=[JETM1TrigSkimmingTool,JETM1OfflineSkimmingTool] ) +#ToolSvc+=JETM1ORTool #======================================= # CREATE PRIVATE SEQUENCE @@ -53,14 +51,6 @@ fileName = buildFileName( derivationFlags.WriteDAOD_JETM1Stream ) JETM1Stream = MSMgr.NewPoolRootStream( streamName, fileName ) JETM1Stream.AcceptAlgs(["JETM1Kernel"]) - -#======================================= -# ESTABLISH THE THINNING HELPER -#======================================= -from DerivationFrameworkCore.ThinningHelper import ThinningHelper -JETM1ThinningHelper = ThinningHelper( "JETM1ThinningHelper" ) -JETM1ThinningHelper.AppendToStream( JETM1Stream ) - #==================================================================== # THINNING TOOLS #==================================================================== @@ -69,7 +59,7 @@ thinningTools = [] # TrackParticles associated with Muons from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__MuonTrackParticleThinning JETM1MuonTPThinningTool = DerivationFramework__MuonTrackParticleThinning(name = "JETM1MuonTPThinningTool", - StreamName = streamName, + StreamName = JETM1Stream.Name, MuonKey = "Muons", InDetTrackParticlesKey = "InDetTrackParticles") ToolSvc += JETM1MuonTPThinningTool @@ -78,20 +68,22 @@ thinningTools.append(JETM1MuonTPThinningTool) # TrackParticles associated with electrons from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__EgammaTrackParticleThinning JETM1ElectronTPThinningTool = DerivationFramework__EgammaTrackParticleThinning(name = "JETM1ElectronTPThinningTool", - StreamName = streamName, + StreamName = JETM1Stream.Name, SGKey = "Electrons", InDetTrackParticlesKey = "InDetTrackParticles") ToolSvc += JETM1ElectronTPThinningTool thinningTools.append(JETM1ElectronTPThinningTool) +thinning_expression = "InDetTrackParticles.JETM1DFLoose && ( abs(InDetTrackParticles.d0) < 3.0 ) && ( abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 4.0 )" + # TrackParticles associated with small-R jets from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__JetTrackParticleThinning JETM1Akt4JetTPThinningTool = DerivationFramework__JetTrackParticleThinning( name = "JETM1Akt4JetTPThinningTool", StreamName = streamName, JetKey = "AntiKt4EMTopoJets", SelectionString = "AntiKt4EMTopoJets.pt > 18*GeV", - InDetTrackParticlesKey = "InDetTrackParticles", - ApplyAnd = False) + TrackSelectionString = thinning_expression, + InDetTrackParticlesKey = "InDetTrackParticles") ToolSvc += JETM1Akt4JetTPThinningTool thinningTools.append(JETM1Akt4JetTPThinningTool) @@ -99,21 +91,11 @@ JETM1Akt4PFlowJetTPThinningTool = DerivationFramework__JetTrackParticleThinning( StreamName = streamName, JetKey = "AntiKt4EMPFlowJets", SelectionString = "AntiKt4EMPFlowJets.pt > 18*GeV", - InDetTrackParticlesKey = "InDetTrackParticles", - ApplyAnd = False) + TrackSelectionString = thinning_expression, + InDetTrackParticlesKey = "InDetTrackParticles") ToolSvc += JETM1Akt4PFlowJetTPThinningTool thinningTools.append(JETM1Akt4PFlowJetTPThinningTool) -thinning_expression = "InDetTrackParticles.JETM1DFLoose && ( abs(InDetTrackParticles.d0) < 3.0 ) && ( abs(DFCommonInDetTrackZ0AtPV*sin(InDetTrackParticles.theta)) < 4.0 )" -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__TrackParticleThinning -JETM1TPThinningTool = DerivationFramework__TrackParticleThinning( name = "JETM1TPThinningTool", - StreamName = streamName, - SelectionString = thinning_expression, - InDetTrackParticlesKey = "InDetTrackParticles", - ApplyAnd = True) -ToolSvc += JETM1TPThinningTool -thinningTools.append(JETM1TPThinningTool) - #======================================= # Augmentation tools #======================================= @@ -129,7 +111,6 @@ JETM1TrackSelectionTool.TrackSelectionTool.CutLevel = "Loose" ToolSvc += JETM1TrackSelectionTool augmentationTools.append(JETM1TrackSelectionTool) - #======================================= # CREATE THE DERIVATION KERNEL ALGORITHM #======================================= @@ -137,180 +118,83 @@ augmentationTools.append(JETM1TrackSelectionTool) from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__DerivationKernel jetm1Seq += CfgMgr.DerivationFramework__DerivationKernel("JETM1Kernel" , AugmentationTools = augmentationTools, - SkimmingTools = [JETM1ORTool], + #SkimmingTools = [JETM1ORTool], #to be fixed (bitmask issue) ThinningTools = thinningTools) -#==================================================================== -# Special jets -#==================================================================== - -from TrackCaloClusterRecTools.TrackCaloClusterConfig import runUFOReconstruction -emufoAlg = runUFOReconstruction(jetm1Seq,ToolSvc, PFOPrefix="CHS") -emcsskufoAlg = runUFOReconstruction(jetm1Seq,ToolSvc, PFOPrefix="CSSK") - -from JetRec.JetRecConf import PseudoJetGetter - -csskufopjgetter = PseudoJetGetter("csskufoPJGetter", InputContainer="CSSKUFO", OutputContainer="CSSKUFOPJ", Label="UFO", SkipNegativeEnergy=True) -jtm+=csskufopjgetter - -ufopjgetter = PseudoJetGetter("ufoPJGetter", InputContainer="CHSUFO", OutputContainer="CHSUFOPJ", Label="UFO", SkipNegativeEnergy=True) -jtm+=ufopjgetter - -# Augment AntiKt4 jets with QG tagging variables -from DerivationFrameworkJetEtMiss.ExtendedJetCommon import addQGTaggerTool -addQGTaggerTool(jetalg="AntiKt4EMTopo",sequence=jetm1Seq,algname="QGTaggerToolAlg") -addQGTaggerTool(jetalg="AntiKt4EMPFlow",sequence=jetm1Seq,algname="QGTaggerToolPFAlg") - -# Add alternative rho definitions -from DerivationFrameworkJetEtMiss.ExtendedJetCommon import addCHSPFlowObjects -addCHSPFlowObjects() -from DerivationFrameworkJetEtMiss.JetCommon import defineEDAlg -jetm1Seq += defineEDAlg(R=0.4, inputtype="EMPFlowPUSB") -jetm1Seq += defineEDAlg(R=0.4, inputtype="EMPFlowNeut") - -#SCHEDULE BTAGGING FOR PFLOW JETS -from DerivationFrameworkFlavourTag.FlavourTagCommon import FlavorTagInit -FlavorTagInit(JetCollections=['AntiKt4EMPFlowJets'], Sequencer=jetm1Seq) - -OutputJets["JETM1"] = [] #======================================= -# RESTORE AOD-REDUCED JET COLLECTIONS +# Add. small-R jet stuff in derivations #======================================= -reducedJetList = ["AntiKt2PV0TrackJets", - "AntiKt4PV0TrackJets", - "AntiKt4TruthJets"] -replaceAODReducedJets(reducedJetList,jetm1Seq,"JETM1") - - -############################################################################################################################################# -addCHSPFlowObjects() -addConstModJets("AntiKt", 1.0, "EMPFlow", ["CS", "SK"], jetm1Seq, "JETM1", ptmin=40000, ptminFilter=50000) -csskufogetters = [csskufopjgetter]+list(jtm.gettersMap["tcc"])[1:] -chsufogetters = [ufopjgetter]+list(jtm.gettersMap["tcc"])[1:] -addStandardJets("AntiKt", 1.0, "UFOCSSK", ptmin=40000, ptminFilter=50000, algseq=jetm1Seq, outputGroup="JETM1", customGetters = csskufogetters, constmods=["CSSK"]) -addStandardJets("AntiKt", 1.0, "UFOCHS", ptmin=40000, ptminFilter=50000, algseq=jetm1Seq, outputGroup="JETM1", customGetters = chsufogetters, constmods=["CHS"]) - -# AntiKt10*PtFrac5Rclus20 -addDefaultTrimmedJets(jetm1Seq,"JETM1") -addTrimmedJets("AntiKt", 1.0, "EMPFlow", rclus=0.2, ptfrac=0.05, algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=False, mods="pflow_groomed") -addTrimmedJets("AntiKt", 1.0, "UFOCHS", rclus=0.2, ptfrac=0.05, algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=False, mods="tcc_groomed") -addTrimmedJets("AntiKt", 1.0, "UFOCSSK", rclus=0.2, ptfrac=0.05, algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=False, mods="tcc_groomed") -if DerivationFrameworkIsMonteCarlo: - addSoftDropJets('AntiKt', 1.0, 'Truth', beta=1.0, zcut=0.1, mods="truth_groomed", algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=True) - addRecursiveSoftDropJets('AntiKt', 1.0, 'Truth', beta=1.0, zcut=0.05, N=-1, mods="truth_groomed", algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=True) - addBottomUpSoftDropJets('AntiKt', 1.0, 'Truth', beta=1.0, zcut=0.05, mods="truth_groomed", algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=True) +#Needed for small-R JMS Rtrk uncertainties +jetList = ["AntiKt4PV0TrackJets"] +addDAODJets(jetList,DerivationFrameworkJob,"JETM1") +#Truth jet association +if DerivationFrameworkIsMonteCarlo: + addJetPtAssociation(jetalg="AntiKt4EMTopo", truthjetalg="AntiKt4TruthJets", sequence=DerivationFrameworkJob) + addJetPtAssociation(jetalg="AntiKt4EMPFlow", truthjetalg="AntiKt4TruthJets", sequence=DerivationFrameworkJob) -addSoftDropJets("AntiKt", 1.0, "UFOCHS", beta=1.0, zcut=0.1, algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=False, mods="tcc_groomed") -addSoftDropJets("AntiKt", 1.0, "UFOCSSK", beta=1.0, zcut=0.1, algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=False, mods="tcc_groomed") -addRecursiveSoftDropJets('AntiKt', 1.0, 'UFOCSSK', beta=1.0, zcut=0.05, N=-1, mods="tcc_groomed", algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=False) -addBottomUpSoftDropJets('AntiKt', 1.0, 'UFOCSSK', beta=1.0, zcut=0.05, mods="tcc_groomed", algseq=jetm1Seq, outputGroup="JETM1", writeUngroomed=False) - - -############################################################################################################################################# +#======================================= +# Special small-R jet collections +#======================================= +# This functionality still has to be migrated to new jet config # Add jets with constituent-level pileup suppression -addConstModJets("AntiKt",0.4,"EMTopo",["CS","SK"],jetm1Seq,"JETM1", - ptmin=2000,ptminFilter=2000) -addConstModJets("AntiKt",0.4,"EMPFlow",["CS","SK"],jetm1Seq,"JETM1", - ptmin=2000,ptminFilter=2000) - -# Add the BCID info -addDistanceInTrain(jetm1Seq) +#addConstModJets("AntiKt",0.4,"EMTopo",["CS","SK"],jetm1Seq,"JETM1",ptmin=2000,ptminFilter=2000) +#addConstModJets("AntiKt",0.4,"EMPFlow",["CS","SK"],jetm1Seq,"JETM1",ptmin=2000,ptminFilter=2000) -#add pFlow fJVT and MVfJVT for EMTopo -applyMVfJvtAugmentation(jetalg='AntiKt4EMTopo',sequence=jetm1Seq, algname='JetForwardJvtToolBDTAlg') -getPFlowfJVT(jetalg='AntiKt4EMPFlow',sequence=jetm1Seq, algname='JetForwardPFlowJvtToolAlg') +#if DerivationFrameworkIsMonteCarlo: +# addJetPtAssociation(jetalg="AntiKt4EMTopoCSSK", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlgCSSK") +# addJetPtAssociation(jetalg="AntiKt4EMPFlowCSSK", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlgCSSK") #======================================= # SCHEDULE SMALL-R JETS WITH LOW PT CUT #======================================= if DerivationFrameworkIsMonteCarlo: - addAntiKt4NoPtCutJets(jetm1Seq,"JETM1") - ## Add GhostTruthAssociation information ## - addJetPtAssociation(jetalg="AntiKt4EMTopo", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlg") - addJetPtAssociation(jetalg="AntiKt4LCTopo", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlg") - addJetPtAssociation(jetalg="AntiKt4EMPFlow", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlg") - addJetPtAssociation(jetalg="AntiKt4EMTopoNoPtCut", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlgNoPtCut") - #Commenting for now as if disabled the building of this jet container in addAntiKt4NoPtCutJets, working on the reoptimisation of LCW at the moment - #addJetPtAssociation(jetalg="AntiKt4LCTopoNoPtCut", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlgNoPtCut") - addJetPtAssociation(jetalg="AntiKt4EMPFlowNoPtCut", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlgNoPtCut") - addJetPtAssociation(jetalg="AntiKt4EMTopoCSSK", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlgCSSK") - addJetPtAssociation(jetalg="AntiKt4EMPFlowCSSK", truthjetalg="AntiKt4TruthJets", sequence=jetm1Seq, algname="JetPtAssociationAlgCSSK") + jetList_noCut = ["AntiKt4EMTopoJets", + "AntiKt4EMPFlowJets"] + addAntiKt4NoPtCutJets(jetList_noCut, DerivationFrameworkJob,"JETM1") + addJetPtAssociation(jetalg="AntiKt4EMTopoNoPtCut", truthjetalg="AntiKt4TruthJets", sequence=DerivationFrameworkJob) + addJetPtAssociation(jetalg="AntiKt4EMPFlowNoPtCut", truthjetalg="AntiKt4TruthJets", sequence=DerivationFrameworkJob) #==================================================================== # Add the containers to the output stream - slimming done here #==================================================================== from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper JETM1SlimmingHelper = SlimmingHelper("JETM1SlimmingHelper") -JETM1SlimmingHelper.AppendToDictionary = { - "Kt4EMPFlowPUSBEventShape": "xAOD::EventShape" , - "Kt4EMPFlowPUSBEventShapeAux": "xAOD::AuxInfoBase" , - "Kt4EMPFlowNeutEventShape": "xAOD::EventShape" , - "Kt4EMPFlowNeutEventShapeAux": "xAOD::AuxInfoBase" , - -} JETM1SlimmingHelper.SmartCollections = ["Electrons", "Photons", "Muons", "PrimaryVertices", - "AntiKt4EMTopoJets","AntiKt4LCTopoJets","AntiKt4EMPFlowJets", + "AntiKt4EMTopoJets","AntiKt4EMPFlowJets", "AntiKt10UFOCSSKJets", - "AntiKt10UFOCHSJets", "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets", - "AntiKt10EMPFlowTrimmedPtFrac5SmallR20Jets", - "AntiKt10UFOCHSTrimmedPtFrac5SmallR20Jets", - "AntiKt10UFOCSSKTrimmedPtFrac5SmallR20Jets", - "AntiKt10UFOCHSSoftDropBeta100Zcut10Jets", "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets", - "AntiKt10UFOCSSKBottomUpSoftDropBeta100Zcut5Jets", - "AntiKt10UFOCSSKRecursiveSoftDropBeta100Zcut5NinfJets", - "AntiKt4EMPFlowJets_BTagging201810", - "AntiKt4EMPFlowJets_BTagging201903", - "AntiKt4EMTopoJets_BTagging201810", - "BTagging_AntiKt4EMPFlow_201810", - "BTagging_AntiKt4EMPFlow_201903", - "BTagging_AntiKt4EMTopo_201810", + "BTagging_AntiKt4EMPFlow", + "BTagging_AntiKt4EMTopo", ] # Add QG tagger variables -JETM1SlimmingHelper.ExtraVariables += ["AntiKt4EMTopoJets.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1", - "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1"] -JETM1SlimmingHelper.ExtraVariables += ["InDetTrackParticles.truthMatchProbability"] - -JETM1SlimmingHelper.ExtraVariables += ["AntiKt10UFOCSSKTrimmedPtFrac5SmallR20Jets.zg.rg.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack", - "AntiKt10UFOCSSKRecursiveSoftDropBeta100Zcut5NinfJets.zg.rg.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack", - "AntiKt10UFOCHSTrimmedPtFrac5SmallR20Jets.zg.rg", - "AntiKt10EMPFlowTrimmedPtFrac5SmallR20Jets.zg.rg", - "AntiKt10UFOCHSSoftDropBeta100Zcut10Jets.zg.rg", +JETM1SlimmingHelper.ExtraVariables = ["AntiKt4EMTopoJets.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1", + "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1", + "InDetTrackParticles.truthMatchProbability", "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets.zg.rg.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack", - "AntiKt10UFOCSSKBottomUpSoftDropBeta100Zcut5Jets.zg.rg.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack", "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets.zg.rg", "AntiKt10UFOCSSKJets.NumTrkPt1000.TrackWidthPt1000.GhostMuonSegmentCount.EnergyPerSampling.GhostTrack"] -JETM1SlimmingHelper.AllVariables = [ "MuonSegments", "TruthVertices", - "Kt4EMTopoOriginEventShape","Kt4LCTopoOriginEventShape","Kt4EMPFlowEventShape","Kt4EMPFlowPUSBEventShape","Kt4EMPFlowNeutEventShape"] +JETM1SlimmingHelper.AllVariables = [ "MuonSegments", "EventInfo", "TruthVertices", "TruthParticles" + "Kt4EMTopoOriginEventShape","Kt4EMPFlowEventShape","Kt4EMPFlowPUSBEventShape"] # Trigger content JETM1SlimmingHelper.IncludeJetTriggerContent = True # Add the jet containers to the stream -addJetOutputs(JETM1SlimmingHelper,["SmallR","JETM1"],["AntiKt10UFOCSSKJets", - "AntiKt10UFOCHSJets", - "AntiKt10EMPFlowTrimmedPtFrac5SmallR20Jets", - "AntiKt10UFOCHSTrimmedPtFrac5SmallR20Jets", - "AntiKt10UFOCSSKTrimmedPtFrac5SmallR20Jets", - "AntiKt10UFOCHSSoftDropBeta100Zcut10Jets", - "AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets", - "AntiKt10UFOCSSKBottomUpSoftDropBeta100Zcut5Jets", - "AntiKt10UFOCSSKRecursiveSoftDropBeta100Zcut5NinfJets", - ], # smart list - [ - "AntiKt4TruthWZJets", "AntiKt10EMPFlowJets", "AntiKt10EMPFlowCSSKJets" - ]# veto list, - ) +addJetOutputs(JETM1SlimmingHelper, + ["JETM1"], + JETM1SlimmingHelper.SmartCollections, + ["AntiKt4TruthWZJets", "AntiKt10EMPFlowJets", "AntiKt10EMPFlowCSSKJets"]# veto list +) if DerivationFrameworkIsMonteCarlo: JETM1SlimmingHelper.AllVariables += ["TruthMuons", "TruthElectrons", "TruthPhotons"] diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM2.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM2.py deleted file mode 100644 index 7c48fa50439b426ab5bdeea5719708f5d86415c9..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM2.py +++ /dev/null @@ -1,226 +0,0 @@ -#==================================================================== -# JETM2.py -# reductionConf flag JETM2 in Reco_tf.py -#==================================================================== - -from DerivationFrameworkCore.DerivationFrameworkMaster import * -from DerivationFrameworkInDet.InDetCommon import * -from DerivationFrameworkJetEtMiss.JetCommon import * -from DerivationFrameworkJetEtMiss.ExtendedJetCommon import * -from DerivationFrameworkEGamma.EGammaCommon import * -from DerivationFrameworkMuons.MuonsCommon import * -# -from DerivationFrameworkJetEtMiss.METCommon import * -# -if DerivationFrameworkIsMonteCarlo: - from DerivationFrameworkMCTruth.MCTruthCommon import addStandardTruthContents - addStandardTruthContents() - -#==================================================================== -# SKIMMING TOOL -#==================================================================== - -from DerivationFrameworkJetEtMiss import TriggerLists -electronTriggers = TriggerLists.single_el_Trig() -muonTriggers = TriggerLists.single_mu_Trig() - -orstr = ' || ' -andstr = ' && ' -eltrigsel = '(EventInfo.eventTypeBitmask==1) || '+orstr.join(electronTriggers) -elofflinesel = andstr.join(['count((Electrons.pt > 25*GeV) && (Electrons.DFCommonElectronsLHMedium)) >= 1']) -electronSelection = '( (' + eltrigsel + ') && (' + elofflinesel + ') )' - -mutrigsel = '(EventInfo.eventTypeBitmask==1) || '+orstr.join(muonTriggers) -muofflinesel = andstr.join(['count((Muons.pt > 25*GeV) && (Muons.DFCommonMuonsPreselection)) >= 1']) -muonSelection = '( (' + mutrigsel + ') && (' + muofflinesel + ') )' - -expression = '( ' + electronSelection + ' || ' + muonSelection + ' )' - -from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool -JETM2SkimmingTool = DerivationFramework__xAODStringSkimmingTool( name = "JETM2SkimmingTool1", - expression = expression) -ToolSvc += JETM2SkimmingTool - -#Trigger matching decorations -from DerivationFrameworkCore.TriggerMatchingAugmentation import applyTriggerMatching -TrigMatchAug, NewTrigVars = applyTriggerMatching(ToolNamePrefix="JETM2", - ElectronTriggers=electronTriggers,MuonTriggers=muonTriggers) - -#==================================================================== -# SET UP STREAM -#==================================================================== -streamName = derivationFlags.WriteDAOD_JETM2Stream.StreamName -fileName = buildFileName( derivationFlags.WriteDAOD_JETM2Stream ) -JETM2Stream = MSMgr.NewPoolRootStream( streamName, fileName ) -JETM2Stream.AcceptAlgs(["JETM2Kernel"]) - -#======================================= -# ESTABLISH THE THINNING HELPER -#======================================= - -from DerivationFrameworkCore.ThinningHelper import ThinningHelper -JETM2ThinningHelper = ThinningHelper( "JETM2ThinningHelper" ) -#JETM2ThinningHelper.TriggerChains = orstr.join(electronTriggers+muonTriggers) -JETM2ThinningHelper.AppendToStream( JETM2Stream ) - -#==================================================================== -# THINNING TOOLS -#==================================================================== -thinningTools = [] - -# TrackParticles associated with Muons -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__MuonTrackParticleThinning -JETM2MuonTPThinningTool = DerivationFramework__MuonTrackParticleThinning(name = "JETM2MuonTPThinningTool", - StreamName = streamName, - MuonKey = "Muons", - InDetTrackParticlesKey = "InDetTrackParticles") -ToolSvc += JETM2MuonTPThinningTool -thinningTools.append(JETM2MuonTPThinningTool) - -# TrackParticles associated with electrons -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__EgammaTrackParticleThinning -JETM2ElectronTPThinningTool = DerivationFramework__EgammaTrackParticleThinning(name = "JETM2ElectronTPThinningTool", - StreamName = streamName, - SGKey = "Electrons", - InDetTrackParticlesKey = "InDetTrackParticles") -ToolSvc += JETM2ElectronTPThinningTool -thinningTools.append(JETM2ElectronTPThinningTool) - -# TrackParticles associated with photons -JETM2PhotonTPThinningTool = DerivationFramework__EgammaTrackParticleThinning(name = "JETM2PhotonTPThinningTool", - StreamName = streamName, - SGKey = "Photons", - InDetTrackParticlesKey = "InDetTrackParticles") -ToolSvc += JETM2PhotonTPThinningTool -thinningTools.append(JETM2PhotonTPThinningTool) - -# TrackParticles associated with taus -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__TauTrackParticleThinning -JETM2TauTPThinningTool = DerivationFramework__TauTrackParticleThinning( name = "JETM2TauTPThinningTool", - StreamName = streamName, - TauKey = "TauJets", - InDetTrackParticlesKey = "InDetTrackParticles") -ToolSvc += JETM2TauTPThinningTool -thinningTools.append(JETM2TauTPThinningTool) - -# Truth particle thinning -doTruthThinning = True -preserveAllDescendants = False -from AthenaCommon.GlobalFlags import globalflags -if doTruthThinning and DerivationFrameworkIsMonteCarlo: - truth_cond_WZH = "((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))" # W, Z and Higgs - truth_cond_Lepton = "((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16) && (TruthParticles.barcode < 200000))" # Leptons - truth_cond_Quark = "((abs(TruthParticles.pdgId) <= 5 && (TruthParticles.pt > 10000.)) || (abs(TruthParticles.pdgId) == 6))" # Quarks - truth_cond_Gluon = "((abs(TruthParticles.pdgId) == 21) && (TruthParticles.pt > 10000.))" # Gluons - truth_cond_Photon = "((abs(TruthParticles.pdgId) == 22) && (TruthParticles.pt > 10000.) && (TruthParticles.barcode < 200000))" # Photon - - truth_expression = '('+truth_cond_WZH+' || '+truth_cond_Lepton +' || '+truth_cond_Quark+'||'+truth_cond_Gluon+' || '+truth_cond_Photon+')' - - from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__GenericTruthThinning - JETM2TruthThinningTool = DerivationFramework__GenericTruthThinning( name = "JETM2TruthThinningTool", - StreamName = streamName, - ParticleSelectionString = truth_expression, - PreserveDescendants = preserveAllDescendants, - PreserveGeneratorDescendants = not preserveAllDescendants, - PreserveAncestors = True) - - ToolSvc += JETM2TruthThinningTool - thinningTools.append(JETM2TruthThinningTool) - #thinningTools.append(ToolSvc.DFCommonTruthPhotonThinning) - -#======================================= -# CREATE PRIVATE SEQUENCE -#======================================= - -jetm2Seq = CfgMgr.AthSequencer("JETM2Sequence") -DerivationFrameworkJob += jetm2Seq - -#======================================= -# CREATE THE DERIVATION KERNEL ALGORITHM -#======================================= - -from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__DerivationKernel -jetm2Seq += CfgMgr.DerivationFramework__DerivationKernel("JETM2Kernel", - SkimmingTools = [JETM2SkimmingTool], - ThinningTools = thinningTools, - AugmentationTools = [TrigMatchAug]) - -#======================================= -# SCHEDULE SMALL-R JETS WITH LOW PT CUT -#======================================= - -OutputJets["JETM2"] = [] - -#======================================= -# RESTORE AOD-REDUCED JET COLLECTIONS -#======================================= -reducedJetList = ["AntiKt2PV0TrackJets", - "AntiKt4PV0TrackJets", - "AntiKt4TruthJets"] -replaceAODReducedJets(reducedJetList,jetm2Seq,"JETM2") - - -#======================================= -# SCHEDUKE BTAGGING FOR PFLOW JETS -#======================================= -from DerivationFrameworkFlavourTag.FlavourTagCommon import FlavorTagInit -FlavorTagInit(JetCollections=['AntiKt4EMPFlowJets'], Sequencer=jetm2Seq) - -#======================================= -# SCHEDULE CUSTOM MET RECONSTRUCTION -#======================================= - -if DerivationFrameworkIsMonteCarlo: - addMETTruthMap('AntiKt4EMTopo',"JETMX") - addMETTruthMap('AntiKt4LCTopo',"JETMX") - addMETTruthMap('AntiKt4EMPFlow',"JETMX") - scheduleMETAssocAlg(jetm2Seq,"JETMX") - - -#==================================================================== -# Add the containers to the output stream - slimming done here -#==================================================================== -from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper -JETM2SlimmingHelper = SlimmingHelper("JETM2SlimmingHelper") -JETM2SlimmingHelper.SmartCollections = ["Electrons", "Photons", "Muons", "TauJets", - "InDetTrackParticles", "PrimaryVertices", - "MET_Reference_AntiKt4EMTopo", - "MET_Reference_AntiKt4LCTopo", - "MET_Reference_AntiKt4EMPFlow", - "AntiKt4EMTopoJets","AntiKt4LCTopoJets","AntiKt4EMPFlowJets", - "AntiKt4EMPFlowJets_BTagging201810", - "AntiKt4EMPFlowJets_BTagging201903", - "AntiKt4EMTopoJets_BTagging201810", - "BTagging_AntiKt4EMPFlow_201810", - "BTagging_AntiKt4EMPFlow_201903", - "BTagging_AntiKt4EMTopo_201810", - ] -JETM2SlimmingHelper.AllVariables = ["MuonTruthParticles", "egammaTruthParticles", - "TruthParticles", "TruthEvents", "TruthVertices", - "MuonSegments", - "Kt4EMTopoOriginEventShape","Kt4LCTopoOriginEventShape","Kt4EMPFlowEventShape", - ] -JETM2SlimmingHelper.ExtraVariables = ["Electrons."+NewTrigVars["Electrons"], - "Muons.energyLossType.EnergyLoss.ParamEnergyLoss.MeasEnergyLoss.EnergyLossSigma.MeasEnergyLossSigma.ParamEnergyLossSigmaPlus.ParamEnergyLossSigmaMinus."+NewTrigVars["Muons"], - "TauJets.IsTruthMatched.truthParticleLink.truthJetLink"] - -for truthc in [ - "TruthMuons", - "TruthElectrons", - "TruthPhotons", - "TruthTaus", -# "TruthNeutrinos" - ]: - JETM2SlimmingHelper.StaticContent.append("xAOD::TruthParticleContainer#"+truthc) - JETM2SlimmingHelper.StaticContent.append("xAOD::TruthParticleAuxContainer#"+truthc+"Aux.") - -# Trigger content -JETM2SlimmingHelper.IncludeMuonTriggerContent = True -JETM2SlimmingHelper.IncludeEGammaTriggerContent = True - -# Add the jet containers to the stream -addJetOutputs(JETM2SlimmingHelper,["SmallR"]) -# Add the MET containers to the stream -addMETOutputs(JETM2SlimmingHelper,["Diagnostic","Assocs","TruthAssocs","Track"]) - -JETM2SlimmingHelper.AppendContentToStream(JETM2Stream) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM7.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM7.py deleted file mode 100644 index f37bd78e6e14a02fd383566c6a7688464b0b2d22..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkJetEtMiss/share/JETM7.py +++ /dev/null @@ -1,251 +0,0 @@ -#==================================================================== -# JETM7.py -# reductionConf flag JETM7 in Reco_tf.py -#==================================================================== - -from DerivationFrameworkCore.DerivationFrameworkMaster import * -from DerivationFrameworkInDet.InDetCommon import * -from DerivationFrameworkJetEtMiss.JetCommon import * -from DerivationFrameworkJetEtMiss.ExtendedJetCommon import * -from DerivationFrameworkEGamma.EGammaCommon import * -from DerivationFrameworkMuons.MuonsCommon import * -from DerivationFrameworkJetEtMiss.METCommon import * -# - -# -if DerivationFrameworkIsMonteCarlo: - from DerivationFrameworkMCTruth.MCTruthCommon import addStandardTruthContents - addStandardTruthContents() - -#==================================================================== -# SKIMMING TOOL -#==================================================================== - -from DerivationFrameworkJetEtMiss import TriggerLists -electronTriggers = TriggerLists.single_el_Trig() -muonTriggers = TriggerLists.single_mu_Trig() - -orstr = ' || ' -andstr = ' && ' -eltrigsel = '(EventInfo.eventTypeBitmask==1) || '+orstr.join(electronTriggers) -elofflinesel = andstr.join(['count((Electrons.pt > 25*GeV) && (Electrons.DFCommonElectronsLHMedium)) >= 1', - 'count(AntiKt4EMTopoJets.DFCommonJets_Calib_pt>20*GeV && AntiKt4EMTopoJets_BTagging201810.DFCommonJets_FixedCutBEff_77_MV2c10) >= 1' - ]) -electronSelection = '( (' + eltrigsel + ') && (' + elofflinesel + ') )' - -mutrigsel = '(EventInfo.eventTypeBitmask==1) || '+orstr.join(muonTriggers) -muofflinesel = andstr.join(['count((Muons.pt > 25*GeV) && (Muons.DFCommonMuonsPreselection)) >= 1', - 'count(AntiKt4EMTopoJets.DFCommonJets_Calib_pt>20*GeV && AntiKt4EMTopoJets_BTagging201810.DFCommonJets_FixedCutBEff_77_MV2c10) >= 1' - ]) -muonSelection = ' ( (' + mutrigsel + ') && (' + muofflinesel + ') )' -expression = '( ' + electronSelection + ' || ' + muonSelection + ' )' -for i in expression: - print "ISHAN " + i -from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool -JETM7SkimmingTool = DerivationFramework__xAODStringSkimmingTool( name = "JETM7SkimmingTool1", - expression = expression) -ToolSvc += JETM7SkimmingTool - -#Trigger matching decorations -from DerivationFrameworkCore.TriggerMatchingAugmentation import applyTriggerMatching -TrigMatchAug, NewTrigVars = applyTriggerMatching(ToolNamePrefix="JETM7", - ElectronTriggers=electronTriggers,MuonTriggers=muonTriggers) - -#==================================================================== -# SET UP STREAM -#==================================================================== -streamName = derivationFlags.WriteDAOD_JETM7Stream.StreamName -fileName = buildFileName( derivationFlags.WriteDAOD_JETM7Stream ) -JETM7Stream = MSMgr.NewPoolRootStream( streamName, fileName ) -JETM7Stream.AcceptAlgs(["JETM7Kernel"]) - -#==================================================================== -# AUGMENTATION -#==================================================================== - -applyJetCalibration_xAODColl("AntiKt4EMTopo") # adds this to DerivationFrameworkJob by default -updateJVT_xAODColl("AntiKt4EMTopo") # adds this to DerivationFrameworkJob by default - -from DerivationFrameworkFlavourTag.FlavourTagCommon import applyBTagging_xAODColl -applyJetCalibration_xAODColl("AntiKt4EMTopo_BTagging201810") -updateJVT_xAODColl('AntiKt4EMTopo_BTagging201810') -applyBTagging_xAODColl('AntiKt4EMTopo_BTagging201810') - -#======================================= -# ESTABLISH THE THINNING HELPER -#======================================= - -from DerivationFrameworkCore.ThinningHelper import ThinningHelper -JETM7ThinningHelper = ThinningHelper( "JETM7ThinningHelper" ) -# JETM7ThinningHelper.TriggerChains = orstr.join(electronTriggers+muonTriggers) -JETM7ThinningHelper.AppendToStream( JETM7Stream ) - -#==================================================================== -# THINNING TOOLS -#==================================================================== -thinningTools = [] - -# TrackParticles associated with Muons -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__MuonTrackParticleThinning -JETM7MuonTPThinningTool = DerivationFramework__MuonTrackParticleThinning(name = "JETM7MuonTPThinningTool", - StreamName = streamName, - MuonKey = "Muons", - InDetTrackParticlesKey = "InDetTrackParticles") -ToolSvc += JETM7MuonTPThinningTool -thinningTools.append(JETM7MuonTPThinningTool) - -# TrackParticles associated with electrons -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__EgammaTrackParticleThinning -JETM7ElectronTPThinningTool = DerivationFramework__EgammaTrackParticleThinning(name = "JETM7ElectronTPThinningTool", - StreamName = streamName, - SGKey = "Electrons", - InDetTrackParticlesKey = "InDetTrackParticles") -ToolSvc += JETM7ElectronTPThinningTool -thinningTools.append(JETM7ElectronTPThinningTool) - -# TrackParticles associated with electrons -JETM7PhotonTPThinningTool = DerivationFramework__EgammaTrackParticleThinning(name = "JETM7PhotonTPThinningTool", - StreamName = streamName, - SGKey = "Photons", - InDetTrackParticlesKey = "InDetTrackParticles") -ToolSvc += JETM7PhotonTPThinningTool -thinningTools.append(JETM7PhotonTPThinningTool) - -# TrackParticles associated with taus -from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__TauTrackParticleThinning -JETM7TauTPThinningTool = DerivationFramework__TauTrackParticleThinning( name = "JETM7TauTPThinningTool", - StreamName = streamName, - TauKey = "TauJets", - InDetTrackParticlesKey = "InDetTrackParticles") -ToolSvc += JETM7TauTPThinningTool -thinningTools.append(JETM7TauTPThinningTool) - -# Truth particle thinning -doTruthThinning = True -preserveAllDescendants = False -from AthenaCommon.GlobalFlags import globalflags -if doTruthThinning and DerivationFrameworkIsMonteCarlo: - truth_cond_WZH = "((abs(TruthParticles.pdgId) >= 23) && (abs(TruthParticles.pdgId) <= 25))" # W, Z and Higgs - truth_cond_Lepton = "((abs(TruthParticles.pdgId) >= 11) && (abs(TruthParticles.pdgId) <= 16))" # Leptons - truth_cond_Quark = "((abs(TruthParticles.pdgId) <= 5 && (TruthParticles.pt > 10000.)) || (abs(TruthParticles.pdgId) == 6))" # Quarks - truth_cond_Gluon = "((abs(TruthParticles.pdgId) == 21) && (TruthParticles.pt > 10000.))" # Gluons - truth_cond_Photon = "((abs(TruthParticles.pdgId) == 22) && (TruthParticles.pt > 10000.) && (TruthParticles.barcode < 200000))" # Photon - - truth_expression = '('+truth_cond_WZH+' || '+truth_cond_Lepton +' || '+truth_cond_Quark+'||'+truth_cond_Gluon+' || '+truth_cond_Photon+')' - - from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__GenericTruthThinning - JETM7TruthThinningTool = DerivationFramework__GenericTruthThinning( name = "JETM7TruthThinningTool", - StreamName = streamName, - ParticleSelectionString = truth_expression, - PreserveDescendants = preserveAllDescendants, - PreserveGeneratorDescendants = not preserveAllDescendants, - PreserveAncestors = True) - - ToolSvc += JETM7TruthThinningTool - thinningTools.append(JETM7TruthThinningTool) - -#======================================= -# CREATE PRIVATE SEQUENCE -#======================================= - -jetm7Seq = CfgMgr.AthSequencer("JETM7Sequence") -DerivationFrameworkJob += jetm7Seq - -#======================================= -# CREATE THE DERIVATION KERNEL ALGORITHM -#======================================= - -from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__DerivationKernel -jetm7Seq += CfgMgr.DerivationFramework__DerivationKernel( name = "JETM7Kernel_Skim", - SkimmingTools = [JETM7SkimmingTool], - ThinningTools = [], - AugmentationTools = []) - -#==================================================================== -# CUSTOM JET RECONSTRUCTION -#==================================================================== - -#======================================= -# RESTORE AOD-REDUCED JET COLLECTIONS -#======================================= -reducedJetList = ["AntiKt2PV0TrackJets", - "AntiKt4PV0TrackJets", - "AntiKt4TruthJets", - "AntiKt4TruthWZJets"] -replaceAODReducedJets(reducedJetList,jetm7Seq,"JETM7") - -#======================================= -# BTAGGING INFO FOR PFLOW JET -#======================================= -from DerivationFrameworkFlavourTag.FlavourTagCommon import FlavorTagInit -FlavorTagInit(JetCollections = ['AntiKt4EMPFlowJets'],Sequencer = jetm7Seq) - -#============================================================================== -# background generator filters -#============================================================================== -augmentationTools = [TrigMatchAug] -if globalflags.DataSource() == 'geant4': - from DerivationFrameworkMCTruth.GenFilterToolSetup import * - augmentationTools.append(ToolSvc.DFCommonTruthGenFilt) - -from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__DerivationKernel -jetm7Seq += CfgMgr.DerivationFramework__DerivationKernel( name = "JETM7Kernel", - SkimmingTools = [], - ThinningTools = thinningTools, - AugmentationTools = augmentationTools) - -#======================================= -# SCHEDULE CUSTOM MET RECONSTRUCTION -#======================================= - -if DerivationFrameworkIsMonteCarlo: - addMETTruthMap('AntiKt4EMTopo',"JETMX") - addMETTruthMap('AntiKt4LCTopo',"JETMX") - addMETTruthMap('AntiKt4EMPFlow',"JETMX") - scheduleMETAssocAlg(jetm7Seq,"JETMX") - -#==================================================================== -# Add the containers to the output stream - slimming done here -#==================================================================== -from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper -JETM7SlimmingHelper = SlimmingHelper("JETM7SlimmingHelper") -JETM7SlimmingHelper.SmartCollections = ["Electrons", "Photons", "Muons", "TauJets", - "InDetTrackParticles", "PrimaryVertices", - "MET_Reference_AntiKt4EMTopo", - "MET_Reference_AntiKt4LCTopo", - "MET_Reference_AntiKt4EMPFlow", - "AntiKt4EMTopoJets","AntiKt4LCTopoJets","AntiKt4EMPFlowJets", - "AntiKt4EMPFlowJets_BTagging201810", - "AntiKt4EMPFlowJets_BTagging201903", - "AntiKt4EMTopoJets_BTagging201810", - "BTagging_AntiKt4EMPFlow_201810", - "BTagging_AntiKt4EMPFlow_201903", - "BTagging_AntiKt4EMTopo_201810"] -JETM7SlimmingHelper.AllVariables = [# "CaloCalTopoClusters", - "MuonTruthParticles", "egammaTruthParticles", - "TruthParticles", "TruthEvents", "TruthVertices", - "MuonSegments", - "Kt4EMTopoOriginEventShape","Kt4LCTopoOriginEventShape","Kt4EMPFlowEventShape", - ] -JETM7SlimmingHelper.ExtraVariables = ["Electrons."+NewTrigVars["Electrons"], - "Muons.energyLossType.EnergyLoss.ParamEnergyLoss.MeasEnergyLoss.EnergyLossSigma.MeasEnergyLossSigma.ParamEnergyLossSigmaPlus.ParamEnergyLossSigmaMinus."+NewTrigVars["Muons"]] -for truthc in [ - "TruthMuons", - "TruthElectrons", - "TruthPhotons", - "TruthTaus", -# "TruthNeutrinos" - ]: - JETM7SlimmingHelper.StaticContent.append("xAOD::TruthParticleContainer#"+truthc) - JETM7SlimmingHelper.StaticContent.append("xAOD::TruthParticleAuxContainer#"+truthc+"Aux.") - -# Trigger content -JETM7SlimmingHelper.IncludeMuonTriggerContent = True -JETM7SlimmingHelper.IncludeEGammaTriggerContent = True - -# Add the jet containers to the stream -addJetOutputs(JETM7SlimmingHelper,["SmallR"]) -# Add the MET containers to the stream -addMETOutputs(JETM7SlimmingHelper,["Diagnostic","Assocs","TruthAssocs","Track","JETMX"]) - -JETM7SlimmingHelper.AppendContentToStream(JETM7Stream) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/src/CompactHardTruth.cxx b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/src/CompactHardTruth.cxx index f6db25087aacb9f34e3eb8177ceded482ef3f111..4490df05531df6f73fce5ce86870c7a0f445f6f7 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/src/CompactHardTruth.cxx +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/src/CompactHardTruth.cxx @@ -1409,7 +1409,7 @@ bool CompactHardTruth::isParton(HepMC::ConstGenParticlePtr p) { // It should have been detached from hadronization vertex. bool CompactHardTruth::isFinalParton(HepMC::ConstGenParticlePtr p) { if (!isParton(p)) return false; - auto *endp = p->end_vertex(); + auto endp = p->end_vertex(); return endp == nullptr; } diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PhysCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PhysCommon.py index 5286dd31b9d5f1f40a65c1edc7801b3bcf8250ba..ee1b89b95ff4ff7fc42d3fbbccd45764cd58483b 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PhysCommon.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PhysCommon.py @@ -17,7 +17,7 @@ from DerivationFrameworkMuons import MuonsCommon InDetCommon.makeInDetDFCommon() EGammaCommon.makeEGammaDFCommon() MuonsCommon.makeMuonsDFCommon() -from DerivationFrameworkJetEtMiss.JetCommon import OutputJets +from DerivationFrameworkJetEtMiss.JetCommon import OutputJets, addBadBatmanFlag, addDistanceInTrain from DerivationFrameworkJetEtMiss.ExtendedJetCommon import addDAODJets, addDefaultTrimmedJets, addJetTruthLabel, addQGTaggerTool, getPFlowfJVT, addEventCleanFlags from DerivationFrameworkJetEtMiss.METCommon import scheduleStandardMETContent @@ -67,8 +67,6 @@ largeRJetCollections = [ OutputJets["PhysCommon"] = largeRJetCollections jetList = ["AntiKt4EMTopoJets", "AntiKt4EMPFlowJets", - "AntiKt2PV0TrackJets", - "AntiKt4PV0TrackJets", "AntiKtVR30Rmax4Rmin02PV0TrackJets"] if (DerivationFrameworkIsMonteCarlo): @@ -90,6 +88,10 @@ getPFlowfJVT(jetalg='AntiKt4EMPFlow',sequence=DerivationFrameworkJob) # Event cleaning flags addEventCleanFlags(sequence=DerivationFrameworkJob) +# Bad batman flag for events with large EMEC-IW Noise +addBadBatmanFlag(sequence=DerivationFrameworkJob) +# Distance in train +addDistanceInTrain(sequence=DerivationFrameworkJob) scheduleStandardMETContent(sequence=DerivationFrameworkJob, algname="METAssociationAlg") diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/share/PHYS.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/share/PHYS.py index b1e611a6cdd3df9f26a146481f36ebd10925fb78..f5d86b3d93e3de28a0fe9f2a68d273bd12780def 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/share/PHYS.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/share/PHYS.py @@ -216,8 +216,9 @@ PHYSSlimmingHelper.ExtraVariables += ["AntiKt10TruthTrimmedPtFrac5SmallR20Jets.T "AntiKtVR30Rmax4Rmin02TrackJets_BTagging201903.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.GhostTausFinal.GhostTausFinalCount", "AntiKtVR30Rmax4Rmin02TrackJets_BTagging201810.GhostBHadronsFinal.GhostCHadronsFinal.GhostBHadronsFinalCount.GhostBHadronsFinalPt.GhostCHadronsFinalCount.GhostCHadronsFinalPt.GhostTausFinal.GhostTausFinalCount", "TruthPrimaryVertices.t.x.y.z", - "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights", - "EventInfo.hardScatterVertexLink.timeStampNSOffset"] + "InDetTrackParticles.TTVA_AMVFVertices.TTVA_AMVFWeights.eProbabilityHT", + "EventInfo.hardScatterVertexLink.timeStampNSOffset", + "TauJets.chargedPFOLinks.neutralPFOLinks.pi0PFOLinks.dRmax.etOverPtLeadTrk"] # Add trigger matching PhysCommonTrigger.trigmatching_helper_notau.add_to_slimming(PHYSSlimmingHelper) diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkTau/python/TauCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkTau/python/TauCommon.py index 3d148d146b63092249e07ddd0d72bb76b09ed00f..b7a397e1b8f924a6374fea25a32bfe6ed42ae087 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkTau/python/TauCommon.py +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkTau/python/TauCommon.py @@ -165,7 +165,8 @@ def addDiTauLowPt(Seq=None): addCHSPFlowObjects() from DerivationFrameworkJetEtMiss.JetCommon import addStandardJets - addStandardJets("AntiKt", 1.0, "EMPFlow", ptmin=40000, ptminFilter=50000, mods="pflow_ungroomed", calibOpt="none", algseq=Seq, outputGroup="TauCommon") + from JetRec.JetRecStandard import jtm + addStandardJets("AntiKt", 1.0, "EMPFlow", ptmin=40000, ptminFilter=50000, mods="pflow_ungroomed", calibOpt="none", algseq=Seq, outputGroup="TauCommon", customGetters=jtm.gettersMap["empflow_reduced"]) import DiTauRec.DiTauAlgorithmsHolder as DiTauAlgs from DiTauRec.DiTauRecConf import DiTauBuilder diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/AsgElectronLikelihoodTool.h b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/AsgElectronLikelihoodTool.h index 1db84223ab6fe15f7f62f2369cbb12a8f76a3647..5c238acfcb9b9c627c1766d43b5346bcb645beda 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/AsgElectronLikelihoodTool.h +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/ElectronPhotonSelectorTools/AsgElectronLikelihoodTool.h @@ -156,7 +156,7 @@ private: std::string m_pdfFileName; /// Flag for calo only LH - bool m_caloOnly; + bool m_caloOnly = false; /// Flag for skip the use of deltaPoverP in LH computation (like at HLT) bool m_skipDeltaPoverP; diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/AsgElectronLikelihoodTool.cxx b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/AsgElectronLikelihoodTool.cxx index da0c040da46deb5dbdd25204f4032c48063f18a8..8facfa5165af724cd86b0847e1f2de21633561ad 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/AsgElectronLikelihoodTool.cxx +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/Root/AsgElectronLikelihoodTool.cxx @@ -50,7 +50,8 @@ AsgElectronLikelihoodTool::AsgElectronLikelihoodTool(const std::string& myname) declareProperty("inputPDFFileName", m_pdfFileName = "", "The input ROOT file name that holds the PDFs"); - + + //Addtional properties that are not part of the config files declareProperty( "usePVContainer", m_usePVCont = true, "Whether to use the PV container"); @@ -64,10 +65,6 @@ AsgElectronLikelihoodTool::AsgElectronLikelihoodTool(const std::string& myname) declareProperty("skipDeltaPoverP", m_skipDeltaPoverP = false, "If true, it wil skip the check of deltaPoverP"); - // Flag to tell the tool if it is a calo-only LH - declareProperty("caloOnly", - m_caloOnly = false, - "Flag to tell the tool if it is a calo-only LH"); } AsgElectronLikelihoodTool::~AsgElectronLikelihoodTool() @@ -346,7 +343,7 @@ AsgElectronLikelihoodTool::accept(const EventContext& ctx, ElectronSelectorHelpers::numberOfPixelHitsAndDeadSensors(t); passBLayerRequirement = ElectronSelectorHelpers::passBLayerRequirement(t); d0 = t->d0(); - EoverP = fabs(t->qOverP()) * energy; + EoverP = std::abs(t->qOverP()) * energy; } else { ATH_MSG_ERROR("Failed, no track particle. et= " << et << "eta= " << eta); return m_rootTool->accept(); @@ -1058,7 +1055,7 @@ AsgElectronLikelihoodTool::isForwardElectron(const xAOD::Egamma* eg, } } else { // Check for fwd via eta range the old logic - if (fabs(eta) > 2.5) { + if (std::abs(eta) > 2.5) { ATH_MSG_WARNING("Failed, cluster->etaBE(2) range due to " << eta << " seems like a fwd electron"); return true; diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMLooseSelectorCutDefs.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMLooseSelectorCutDefs.py index 63ad9cf445f8e115783acc79f7010c10d2f8e29b..8307a089f75bbe6b41b05e49d009acf11f426387 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMLooseSelectorCutDefs.py +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMLooseSelectorCutDefs.py @@ -19,220 +19,3 @@ def ElectronIsEMLooseSelectorConfigDC14(theTool) : theTool.ConfigFile = "ElectronPhotonSelectorTools/offline/mc15_20150329/ElectronIsEMLooseSelectorCutDefs.conf" - -def ElectronIsEMLooseSelectorConfig2012(theTool) : - ''' - This is for the Loose++ isEM definitions. - ''' - - theTool = GetTool(theTool) - - # range of eta bins for e-ID - theTool.CutBinEta += [0.1, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] - - # range of ET bins for e-ID - theTool.CutBinET += [5.0*GeV, 10.0*GeV, 15.0*GeV, 20.0*GeV, 30.0*GeV, 40.0*GeV, 50.0*GeV, 60.0*GeV, 70.0*GeV, 80.0*GeV] - # cut on fraction of energy deposited in 1st sampling - theTool.CutF1 += [0.005] - # cut on hadronic energy - - #CM 16-March-2011: update - theTool.CutHadLeakage += [0.12800, 0.15600, 0.15200, 0.11600, 0.15600, 0.04275, 0.13200, 0.15200, 0.15600, 0.14000,# < 5 - 0.12800, 0.15600, 0.15200, 0.11600, 0.15600, 0.04275, 0.13200, 0.15200, 0.15600, 0.14000, # 5-10 - 0.03225, 0.03225, 0.03075, 0.03575, 0.02575, 0.04275, 0.04325, 0.04525, 0.04325, 0.03675, # 10-15 - 0.02925, 0.02925, 0.02775, 0.03175, 0.02375, 0.03875, 0.04025, 0.03425, 0.03825, 0.02975, # 15-20 - 0.02425, 0.02425, 0.02275, 0.02575, 0.01975, 0.01975, 0.02725, 0.02725, 0.02725, 0.01975, # 20-30 - 0.02275, 0.02275, 0.02125, 0.01975, 0.01825, 0.01825, 0.02425, 0.02575, 0.02425, 0.01675, # 30-40 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 40-50 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 50-60 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 60-70 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 70-80 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675 # >80 - ] - - - # cut on ratio e237/e277 - theTool.CutReta37 += [0.6800, 0.5600, 0.6000, 0.6800, 0.7200, 0.440, 0.7600, 0.7200, 0.7600, 0.7475, # < 5 - 0.6800, 0.5600, 0.6000, 0.6800, 0.7200, 0.440, 0.7600, 0.7200, 0.7600, 0.7475, # 5-10 - 0.8475, 0.8475, 0.8425, 0.8175, 0.8475, 0.740, 0.8275, 0.8675, 0.8675, 0.7475, # 10-15 - 0.8675, 0.8675, 0.8675, 0.8475, 0.8725, 0.740, 0.8525, 0.8775, 0.8775, 0.7575, # 15-20 - 0.8825, 0.8825, 0.8825, 0.8575, 0.8875, 0.750, 0.8725, 0.9025, 0.8875, 0.7575, # 20-30 - 0.9075, 0.9075, 0.8975, 0.8875, 0.8875, 0.790, 0.8925, 0.9075, 0.8975, 0.8075, # 30-40 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 40-50 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 50-60 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 60-70 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 70-80 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625 # >80 - ] - - - # cut on shower width in 2nd sampling - theTool.CutWeta2c += [ 0.017, 0.016, 0.018, 0.016, 0.019, 0.031, 0.017, 0.016, 0.0155, 0.0155, # < 5 - 0.017, 0.016, 0.018, 0.016, 0.019, 0.031, 0.017, 0.016, 0.0155, 0.0155, # 5-10 - 0.014 ,0.014 ,0.015 ,0.016 ,0.017 ,0.025 ,0.017 ,0.015 ,0.015 ,0.0145, # 10-15 - 0.0135 ,0.0135 ,0.0145 ,0.016 ,0.017 ,0.025 ,0.017 ,0.015 ,0.015 ,0.0145,# 15-20 - 0.013 ,0.013 ,0.014 ,0.015 ,0.015 ,0.025 ,0.016 ,0.015 ,0.015 ,0.014 , # 20-30 - 0.012 ,0.012 ,0.013 ,0.013 ,0.013 ,0.025 ,0.015 ,0.014 ,0.014 ,0.0135, # 30-40 - 0.011 ,0.011 ,0.012 ,0.013 ,0.013 ,0.025 ,0.015 ,0.014 ,0.014 ,0.0135, # 40-50 - 0.011 ,0.011 ,0.012 ,0.013 ,0.013 ,0.025 ,0.015 ,0.014 ,0.014 ,0.0135, # 50-60 - 0.011 ,0.011 ,0.012 ,0.013 ,0.013 ,0.025 ,0.015 ,0.014 ,0.014 ,0.0135, # 60-70 - 0.011 ,0.011 ,0.012 ,0.013 ,0.013 ,0.025 ,0.015 ,0.014 ,0.014 ,0.0135, # 70-80 - 0.011 ,0.011 ,0.012 ,0.013 ,0.013 ,0.025 ,0.015 ,0.014 ,0.014 ,0.0135, # 80 - ] - - - # cut on total width in 1st sampling - theTool.CutWtot += [ 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., # < 5 - 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., # 5-10 - 3.20, 3.20, 3.20, 3.85, 3.85, 9999., 3.80, 3.00, 2.00, 9999., # 10-15 - 3.00, 3.00, 3.00, 3.75, 3.75, 9999., 3.80, 3.00, 2.00, 9999., # 15-20 - 2.90, 2.90, 2.90, 3.50, 3.50, 9999., 3.80, 3.00, 2.00, 9999., # 20-30 - 2.80, 2.80, 2.80, 3.30, 3.40, 9999., 3.70, 3.00, 1.70, 9999., # 30-40 - 2.80, 2.80, 2.80, 3.20, 3.40, 9999., 3.70, 2.90, 1.60, 9999., # 40-50 - 2.80, 2.80, 2.80, 3.20, 3.40, 9999., 3.70, 2.90, 1.60, 9999., # 50-60 - 2.80, 2.80, 2.80, 3.20, 3.40, 9999., 3.70, 2.90, 1.60, 9999., # 60-70 - 2.80, 2.80, 2.80, 3.20, 3.40, 9999., 3.70, 2.90, 1.60, 9999., # 70-80 - 2.80, 2.80, 2.80, 3.20, 3.40, 9999., 3.70, 2.90, 1.60, 9999. # >80 - ] - - # cut on (Emax - Emax2)/(Emax + Emax2) in 1st sampling - theTool.CutDEmaxs1 += [0.640, 0.600, 0.560, 0.36, 0.24, -9999., 0.320, 0.640, 0.760, -9999. , # < 5 - 0.640, 0.600, 0.560, 0.36, 0.24, -9999., 0.320, 0.640, 0.760, -9999. , # 5-10 - 0.790 ,0.790 ,0.750 ,0.590 ,0.530, -9999 ,0.600 ,0.790 ,0.840, -9999., #10-15 - 0.790 ,0.790 ,0.790 ,0.600 ,0.550, -9999 ,0.600 ,0.790 ,0.850, -9999., #15-20 - 0.800 ,0.800 ,0.820 ,0.720 ,0.650, -9999 ,0.780 ,0.790 ,0.850, -9999 , #20-30 - 0.800 ,0.800 ,0.825 ,0.720 ,0.690, -9999 ,0.780 ,0.810 ,0.880, -9999 , #30-40 - 0.800 ,0.800 ,0.825 ,0.730 ,0.690, -9999 ,0.790 ,0.810 ,0.880, -9999 , #40-50 - 0.800 ,0.800 ,0.825 ,0.730 ,0.690 ,-9999. ,0.790 ,0.810 ,0.880 ,-9999., # 50-60 - 0.800 ,0.800 ,0.825 ,0.730 ,0.690 ,-9999. ,0.790 ,0.810 ,0.880 ,-9999., # 60-70 - 0.800 ,0.800 ,0.825 ,0.730 ,0.690 ,-9999. ,0.790 ,0.810 ,0.880 ,-9999., # 70-80 - 0.800 ,0.800 ,0.825 ,0.730 ,0.690 ,-9999. ,0.790 ,0.810 ,0.880 ,-9999. # 80< - ] - - - # cut on Delta Emax2 in 1st sampling - theTool.CutDeltaEmax2 += [] - - # cut on Emax2 - Emin in 1st sampling - theTool.CutDeltaE += [] - - # cut on width in 1st sampling - theTool.CutWeta1c += [] - - # cut on Fside in 1st sampling - theTool.CutFracm += [] - - # cut on Track quality cut - - # cut on pixel-layer hits - theTool.CutPi += [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - - # cut on precision hits - theTool.CutSi += [7, 7, 7, 7, 7, 7, 7, 7, 7, 7] - - # cut on transverse impact parameter - theTool.CutA0 += [5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0] - - # cut on transverse impact parameter for tight selection - theTool.CutA0Tight += [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - # cut on delta eta - theTool.CutDeltaEta += [0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015 - ] - # cut on delta eta for tight selection - theTool.CutDeltaEtaTight += [0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005 - ] - theTool.useTRTOutliers = True - theTool.useBLOutliers = True - theTool.usePIXOutliers = True - theTool.useSCTOutliers = True - - # cut on b-layer hits - theTool.CutBL += [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - - # cut on min delta phi - theTool.CutmaxDeltaPhi += [ 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015 - ] - - # cut min on deltaphi - theTool.CutminDeltaPhi += [ -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04 - ] - - - # cut min on E/P - theTool.CutminEp += [0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, - 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, - 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, - 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, - 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 - ] - # cut max on E/P - theTool.CutmaxEp += [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.0, 3.0, 3.0, - 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.0, 3.0, 3.0, - 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.5, 3.5, 4.0, 4.0, - 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.5, 3.5, 4.0, 4.0, - 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.5, 3.5, 4.5, 4.5, - 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 3.5, 4.0, 4.5, 4.5, - 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 4.0, 5.0, 5.0, 5.0, - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, - 10., 10., 10., 10., 10., 10., 10., 10., 10., 10. - ] - - # cuts on TRT - # range of eta bins for e-ID for TRT - theTool.CutBinEta_TRT += [0.1, 0.625, 1.07, 1.304, 1.752, 2.0] - # cuts on Number of TRT hits with Outliers - theTool.CutNumTRT += [-15.,-15., -15., -15., -15., -15.] - # cuts on TRT ratio with Outliers - theTool.CutTRTRatio += [0.04, 0.04, 0.04, 0.05, 0.07, 0.07] - # cuts on TRT ratio with Outliers for 90% efficiency - theTool.CutTRTRatio90 += [0.10, 0.10, 0.125, 0.13, 0.13, 0.13] - diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMMediumSelectorCutDefs.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMMediumSelectorCutDefs.py index 6827cdcc409804c9c37e82a79d8e3de621b43007..9107bfb2ca061dcb227e402e0baeb49573dfeea4 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMMediumSelectorCutDefs.py +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMMediumSelectorCutDefs.py @@ -19,235 +19,4 @@ def ElectronIsEMMediumSelectorConfigDC14(theTool) : theTool.ConfigFile = "ElectronPhotonSelectorTools/offline/mc15_20150329/ElectronIsEMMediumSelectorCutDefs.conf" -def ElectronIsEMMediumSelectorConfig2012(theTool) : - ''' - This is for the Medium++ isEM definitions. - ''' - - theTool = GetTool(theTool) - - theTool.CutBinEta += [0.1, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] - - # range of ET bins for e-ID - theTool.CutBinET += [5.0*GeV, 10.0*GeV, 15.0*GeV, 20.0*GeV, 30.0*GeV, 40.0*GeV, 50.0*GeV, 60.0*GeV, 70.0*GeV, 80.0*GeV] - # cut on fraction of energy deposited in 1st sampling - theTool.CutF1 += [0.005] - # cut on hadronic energy - - - theTool.CutHadLeakage += [0.12800, 0.15600, 0.15200, 0.11600, 0.15600, 0.04275, 0.13200, 0.15200, 0.15600, 0.14000,# < 5 - 0.12800, 0.15600, 0.15200, 0.11600, 0.15600, 0.04275, 0.13200, 0.15200, 0.15600, 0.14000, # 5-10 - 0.03225, 0.03225, 0.03075, 0.03575, 0.02575, 0.04275, 0.04325, 0.04525, 0.04325, 0.03675, # 10-15 - 0.02925, 0.02925, 0.02775, 0.03175, 0.02375, 0.03875, 0.04025, 0.03425, 0.03825, 0.02975, # 15-20 - 0.02425, 0.02425, 0.02275, 0.02575, 0.01975, 0.01975, 0.02725, 0.02725, 0.02725, 0.01975, # 20-30 - 0.02275, 0.02275, 0.02125, 0.01975, 0.01825, 0.01825, 0.02425, 0.02575, 0.02425, 0.01675, # 30-40 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 40-50 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 50-60 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 60-70 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 70-80 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675 # >80 - ] - - - # cut on ratio e237/e277 - theTool.CutReta37 += [0.6800, 0.5600, 0.6000, 0.6800, 0.7200, 0.440, 0.7600, 0.7200, 0.7600, 0.7475, # < 5 - 0.6800, 0.5600, 0.6000, 0.6800, 0.7200, 0.440, 0.7600, 0.7200, 0.7600, 0.7475, # 5-10 - 0.8475, 0.8475, 0.8425, 0.8175, 0.8475, 0.740, 0.8275, 0.8675, 0.8675, 0.7475, # 10-15 - 0.8675, 0.8675, 0.8675, 0.8475, 0.8725, 0.740, 0.8525, 0.8775, 0.8775, 0.7575, # 15-20 - 0.8825, 0.8825, 0.8825, 0.8575, 0.8875, 0.750, 0.8725, 0.9025, 0.8875, 0.7575, # 20-30 - 0.9075, 0.9075, 0.8975, 0.8875, 0.8875, 0.790, 0.8925, 0.9075, 0.8975, 0.8075, # 30-40 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 40-50 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 50-60 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 60-70 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 70-80 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625 # >80 - ] - - - - # cut on shower width in 2nd sampling - theTool.CutWeta2c += [0.017, 0.016, 0.018, 0.016, 0.019, 0.031, 0.017, 0.016, 0.0155, 0.0155, # < 5 - 0.017, 0.016, 0.018, 0.016, 0.019, 0.031, 0.017, 0.016, 0.0155, 0.0155, # 5-10 - 0.013, 0.013, 0.013, 0.013, 0.013, 0.025, 0.014, 0.014, 0.0135, 0.014, #10-15 - 0.012, 0.012, 0.013, 0.013, 0.013, 0.025, 0.014, 0.014, 0.0135, 0.014, #15-20 - 0.011, 0.011, 0.012, 0.012, 0.013, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 20-30 - 0.011, 0.011, 0.012, 0.012, 0.013, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 30-40 - 0.011, 0.011, 0.012, 0.012, 0.013, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 40-50 - 0.011, 0.011, 0.012, 0.012, 0.013, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 50-60 - 0.011, 0.011, 0.012, 0.012, 0.013, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 60-70 - 0.011, 0.011, 0.012, 0.012, 0.013, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 70-80 - 0.011, 0.011, 0.012, 0.012, 0.013, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 80< - ] - - - # cut on total width in 1st sampling - theTool.CutWtot += [ 3.48, 3.48, 3.78, 3.96, 4.20, 9999., 4.02, 2.70, 1.86, 9999., # < 5 GeV - 3.18, 3.18, 3.54, 3.90, 4.02, 9999., 3.96, 2.70, 1.80, 9999., # 5-10 - 2.85, 2.85, 3.20, 3.40, 3.60, 9999., 3.70, 2.40, 1.72, 9999., # 10-15 - 2.76, 2.76, 2.92, 3.30, 3.45, 9999., 3.67, 2.40, 1.72, 9999., # 15-20 - 2.50, 2.50, 2.65, 3.00, 3.20, 9999., 3.30, 2.15, 1.49, 9999., # 20-30 - 2.50, 2.50, 2.65, 3.00, 3.20, 9999., 3.30, 2.15, 1.49, 9999., # 30-40 - 2.50, 2.50, 2.65, 3.00, 3.20, 9999., 3.30, 2.15, 1.49, 9999., # 40-50 - 2.50, 2.50, 2.65, 3.00, 3.20, 9999., 3.30, 2.15, 1.49, 9999., # 50-60 - 2.50, 2.50, 2.65, 3.00, 3.20, 9999., 3.30, 2.15, 1.49, 9999., # 60-70 - 2.50, 2.50, 2.65, 3.00, 3.20, 9999., 3.30, 2.15, 1.49, 9999., # 70-80 - 2.50, 2.50, 2.65, 3.00, 3.20, 9999., 3.30, 2.15, 1.49, 9999. # >80 - ] - - # cut on (Emax - Emax2)/(Emax + Emax2) in 1st sampling - theTool.CutDEmaxs1 += [0.640, 0.600, 0.560, 0.36, 0.24, -9999., 0.320, 0.640, 0.760, -9999., # < 5 - 0.640, 0.600, 0.560, 0.36, 0.24, -9999., 0.320, 0.640, 0.760, -9999., # 5-10 - 0.8, 0.8, 0.79, 0.61, 0.6, -9999.0, 0.65, 0.86, 0.85, -9999.0, #10-15 - 0.83, 0.83, 0.825, 0.7, 0.65, -9999.0, 0.75, 0.9, 0.89, -9999.0, #15-20 - 0.835, 0.835, 0.835, 0.8, 0.8, -9999.0, 0.8, 0.9, 0.91, -9999.0, # 20-30 - 0.835, 0.835, 0.835, 0.8, 0.8, -9999.0, 0.8, 0.9, 0.91, -9999.0, # 30-40 - 0.835, 0.835, 0.835, 0.8, 0.8, -9999.0, 0.8, 0.9, 0.91, -9999.0, # 40-50 - 0.835, 0.835, 0.835, 0.8, 0.8, -9999.0, 0.8, 0.9, 0.91, -9999.0, # 50-60 - 0.835, 0.835, 0.835, 0.8, 0.8, -9999.0, 0.8, 0.9, 0.91, -9999.0, # 60-70 - 0.835, 0.835, 0.835, 0.8, 0.8, -9999.0, 0.8, 0.9, 0.91, -9999.0, # 70-80 - 0.835, 0.835, 0.835, 0.8, 0.8, -9999.0, 0.8, 0.9, 0.91, -9999.0 # 80< - ] - - ### cutf3### - #Cut on fraction of energy to use 3rd sampling - - theTool.CutF3 += [ 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # < 5 - 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # 5-10 - 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # 10-15 - 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # 15-20 - 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # 20-30 - 0.0255, 0.0255, 0.0195, 0.0215, 0.0245, 9999., 0.0205, 0.0285, 0.0268, 0.0383, # 30-40 - 0.0265, 0.0265, 0.0195, 0.0215, 0.0245, 9999., 0.0255, 0.0285, 0.0293, 0.0383, # 40-50 - 0.0265, 0.0265, 0.0195, 0.0215, 0.0245, 9999., 0.0255, 0.0285, 0.0293, 0.0383, # 50-60 - 0.0265, 0.0265, 0.0195, 0.0215, 0.0245, 9999., 0.0255, 0.0285, 0.0293, 0.0383, # 60-70 - 0.0265, 0.0265, 0.0195, 0.0215, 0.0245, 9999., 0.0255, 0.0285, 0.0293, 0.0383, # 70-80 - 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999.] # >80 - - - # cut on Delta Emax2 in 1st sampling - theTool.CutDeltaEmax2 += [] - - # cut on Emax2 - Emin in 1st sampling - theTool.CutDeltaE += [] - - # cut on width in 1st sampling - theTool.CutWeta1c += [] - - # cut on Fside in 1st sampling - theTool.CutFracm += [] - - # cut on Track quality cut - - # cut on pixel-layer hits - theTool.CutPi += [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - - # cut on precision hits - theTool.CutSi += [7, 7, 7, 7, 7, 7, 7, 7, 7, 7] - - # cut on transverse impact parameter - theTool.CutA0 += [5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0] - - # cut on transverse impact parameter for tight selection - theTool.CutA0Tight += [5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0] - - - # cut on delta eta - theTool.CutDeltaEta += [0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005 - ] - # cut on delta eta for tight selection - theTool.CutDeltaEtaTight += [0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005 - ] - - theTool.useTRTOutliers = True - theTool.useBLOutliers = True - theTool.usePIXOutliers = True - theTool.useSCTOutliers = True - - # cut on b-layer hits - theTool.CutBL += [1, 1, 1, 1, 1, 1, 1, 1, 1, 0] - - # cut max on delta phi - theTool.CutmaxDeltaPhi += [ 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015 - ] - - # cut min on deltaphi - theTool.CutminDeltaPhi += [ -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04 - ] - - # cut min on E/P - theTool.CutminEp += [0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, - 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, - 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, - 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, 0.90, - 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, 0.70, - 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 - ] - # cut max on E/P - theTool.CutmaxEp += [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.0, 3.0, 3.0, - 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.0, 3.0, 3.0, - 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.5, 3.5, 4.0, 4.0, - 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.5, 3.5, 4.0, 4.0, - 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.5, 3.5, 4.5, 4.5, - 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 3.5, 4.0, 4.5, 4.5, - 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 4.0, 5.0, 5.0, 5.0, - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, - 10., 10., 10., 10., 10., 10., 10., 10., 10., 10. - ] - - # cuts on TRT - # range of eta bins for e-ID for TRT - theTool.CutBinEta_TRT += [0.1, 0.625, 1.07, 1.304, 1.752, 2.0] - # cuts on Number of TRT hits with Outliers - theTool.CutNumTRT += [-15.,-15., -15., -15., -15., -15.] - # cuts on TRT ratio with Outliers - theTool.CutTRTRatio += [0.05, 0.08, 0.075, 0.09, 0.105, 0.110] - # cuts on TRT ratio with Outliers for 90% efficiency - theTool.CutTRTRatio90 += [0.10, 0.10, 0.125, 0.13, 0.13, 0.13] diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMSelectorMapping.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMSelectorMapping.py index d36e60e45d044e611cb9c8e61537fa7d5f69dc1e..041b6e80c8a306b9489c0abe5eca88ba1750524d 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMSelectorMapping.py +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMSelectorMapping.py @@ -26,29 +26,12 @@ from ElectronPhotonSelectorTools.EgammaPIDdefs import egammaPID class electronPIDmenu: - menu2012 = 0 - menuTrig2012 = 1 - menuTrigDC14 = 2 - menuDC14 = 3 + menuTrig2012 = 0 + menuTrigDC14 = 1 + menuDC14 = 2 # format - key: (mask, function) -ElectronIsEMMap2012 = { - egammaPID.ElectronIDLoosePP: ( - egammaPID.ElectronLoosePP, - ElectronIsEMLooseSelectorCutDefs.ElectronIsEMLooseSelectorConfig2012), - egammaPID.ElectronIDMediumPP: ( - egammaPID.ElectronMediumPP, - ElectronIsEMMediumSelectorCutDefs.ElectronIsEMMediumSelectorConfig2012), - egammaPID.ElectronIDTightPP: ( - egammaPID.ElectronTightPP, - ElectronIsEMTightSelectorCutDefs.ElectronIsEMTightSelectorConfig2012), - egammaPID.NoIDCut: ( - 0, - ElectronIsEMLooseSelectorCutDefs.ElectronIsEMLooseSelectorConfig2012) -} - - ElectronIsEMMapDC14 = { egammaPID.ElectronIDLoosePP: ( egammaPID.ElectronLoosePP, @@ -96,9 +79,7 @@ TrigElectronIsEMMapDC14 = { def ElectronIsEMMap(quality, menu): - if menu == electronPIDmenu.menu2012: - return ElectronIsEMMap2012[quality] - elif menu == electronPIDmenu.menuDC14: + if menu == electronPIDmenu.menuDC14: return ElectronIsEMMapDC14[quality] elif menu == electronPIDmenu.menuTrig2012: return TrigElectronIsEMMap2012[quality] diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMTightSelectorCutDefs.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMTightSelectorCutDefs.py index 05625b7333ce511f8c2ea8c1a965fd1fc07286b1..ba474399351c6c226103c130b02b8179d51c7358 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMTightSelectorCutDefs.py +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/ElectronIsEMTightSelectorCutDefs.py @@ -20,229 +20,3 @@ def ElectronIsEMTightSelectorConfigDC14(theTool) : theTool.ConfigFile = "ElectronPhotonSelectorTools/offline/mc15_20150329/ElectronIsEMTightSelectorCutDefs.conf" -def ElectronIsEMTightSelectorConfig2012(theTool) : - ''' - This is for the tight++ isEM definitions. - ''' - - theTool = GetTool(theTool) - - # range of eta bins for e-ID - theTool.CutBinEta += [0.1, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] - - # range of ET bins for e-ID - theTool.CutBinET += [5.0*GeV, 10.0*GeV, 15.0*GeV, 20.0*GeV, 30.0*GeV, 40.0*GeV, 50.0*GeV, 60.0*GeV, 70.0*GeV, 80.0*GeV] - # cut on fraction of energy deposited in 1st sampling - theTool.CutF1 += [0.005] - # cut on hadronic energy - theTool.CutHadLeakage += [0.12800, 0.15600, 0.15200, 0.11600, 0.15600, 0.04275, 0.13200, 0.15200, 0.15600, 0.14000, # < 5 - 0.12800, 0.15600, 0.15200, 0.11600, 0.15600, 0.04275, 0.13200, 0.15200, 0.15600, 0.14000, # 5-10 - 0.03225, 0.03225, 0.03075, 0.03575, 0.02575, 0.04275, 0.04325, 0.04525, 0.04325, 0.03675, # 10-15 - 0.02925, 0.02925, 0.02775, 0.03175, 0.02375, 0.03875, 0.04025, 0.03425, 0.03825, 0.02975, # 15-20 - 0.02425, 0.02425, 0.02275, 0.02575, 0.01975, 0.01975, 0.02725, 0.02725, 0.02725, 0.01975, # 20-30 - 0.02275, 0.02275, 0.02125, 0.01975, 0.01825, 0.01825, 0.02425, 0.02575, 0.02425, 0.01675, # 30-40 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 40-50 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 50-60 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 60-70 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675, # 70-80 - 0.01825, 0.01825, 0.01975, 0.01525, 0.01675, 0.01675, 0.02125, 0.02275, 0.01975, 0.01675 # >80 - ] - - - # cut on ratio e237/e277 - theTool.CutReta37 += [0.6800, 0.5600, 0.6000, 0.6800, 0.7200, 0.440, 0.7600, 0.7200, 0.7600, 0.7475, # < 5 - 0.6800, 0.5600, 0.6000, 0.6800, 0.7200, 0.440, 0.7600, 0.7200, 0.7600, 0.7475, # 5-10 - 0.8475, 0.8475, 0.8425, 0.8175, 0.8475, 0.740, 0.8275, 0.8675, 0.8675, 0.7475, # 10-15 - 0.8675, 0.8675, 0.8675, 0.8475, 0.8725, 0.740, 0.8525, 0.8775, 0.8775, 0.7575, # 15-20 - 0.8825, 0.8825, 0.8825, 0.8575, 0.8875, 0.750, 0.8725, 0.9025, 0.8875, 0.7575, # 20-30 - 0.9075, 0.9075, 0.8975, 0.8875, 0.8875, 0.790, 0.8925, 0.9075, 0.8975, 0.8075, # 30-40 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 40-50 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 50-60 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 60-70 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625, # 70-80 - 0.9175, 0.9175, 0.9125, 0.9075, 0.9025, 0.790, 0.8975, 0.9125, 0.9025, 0.8625 # >80 - ] - - # cut on shower width in 2nd sampling - theTool.CutWeta2c += [0.017, 0.016, 0.018, 0.016, 0.019, 0.031, 0.017, 0.016, 0.0155, 0.0155, # < 5 - 0.017, 0.016, 0.018, 0.016, 0.019, 0.031, 0.017, 0.016, 0.0155, 0.0155, # 5-10 - 0.013, 0.013, 0.013, 0.013, 0.013, 0.025, 0.014, 0.014, 0.0135, 0.014, # 10-15 - 0.012, 0.012, 0.013, 0.013, 0.013, 0.025, 0.014, 0.014, 0.0135, 0.014, # 15-20 - 0.011, 0.011, 0.012, 0.012, 0.013, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 20-30 - 0.011, 0.011, 0.012, 0.012, 0.012, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 30-40 - 0.011, 0.011, 0.012, 0.012, 0.012, 0.025, 0.013, 0.0125, 0.013, 0.0135, # 40-50 - 0.011, 0.011, 0.012, 0.012, 0.012, 0.025, 0.013, 0.012, 0.013, 0.0135, # 50-60 - 0.011, 0.011, 0.012, 0.012, 0.012, 0.025, 0.013, 0.012, 0.013, 0.0135, # 60-70 - 0.011, 0.011, 0.012, 0.012, 0.012, 0.025, 0.013, 0.012, 0.013, 0.0135, # 70-80 - 0.011, 0.011, 0.012, 0.012, 0.012, 0.025, 0.013, 0.012, 0.013, 0.0135, # 80< - ] - - # cut on total width in 1st sampling - theTool.CutWtot += [3.48, 3.48, 3.78, 3.96, 4.20, 9999., 4.02, 2.70, 1.86, 9999., # < 5 GeV - 3.18, 3.18, 3.54, 3.90, 4.02, 9999., 3.96, 2.70, 1.80, 9999., # 5-10 - 2.80, 2.80, 3.10, 3.30, 3.50, 9999., 3.70, 2.40, 1.70, 9999., # 10-15 - 2.70, 2.70, 2.92, 3.24, 3.40, 9999., 3.60, 2.40, 1.70, 9999., # 15-20 - 2.50, 2.50, 2.65, 3.00, 3.20, 9999., 3.30, 2.15, 1.49, 9999., # 20-30 - 2.45, 2.45, 2.65, 2.98, 3.17, 9999., 3.30, 2.15, 1.49, 9999., # 30-40 - 2.27, 2.27, 2.61, 2.90, 3.17, 9999., 3.30, 2.15, 1.49, 9999., # 40-50 - 2.27, 2.27, 2.61, 2.90, 3.17, 9999., 3.30, 2.15, 1.49, 9999., # 50-60 - 2.27, 2.27, 2.61, 2.90, 3.17, 9999., 3.30, 2.15, 1.49, 9999., # 60-70 - 2.27, 2.27, 2.61, 2.90, 3.17, 9999., 3.30, 2.15, 1.49, 9999., # 70-80 - 2.27, 2.27, 2.61, 2.90, 3.17, 9999., 3.30, 2.15, 1.49, 9999. # 80< - ] - - # cut on (Emax - Emax2)/(Emax + Emax2) in 1st sampling - theTool.CutDEmaxs1 += [0.640, 0.600, 0.560, 0.36, 0.24, -9999., 0.320, 0.640, 0.760, -9999., # < 5 - 0.640, 0.600, 0.560, 0.36, 0.24, -9999., 0.320, 0.640, 0.760, -9999., # 5-10 - 0.810, 0.810, 0.810, 0.66, 0.68, -9999., 0.700, 0.880, 0.900, -9999., #10-15 - 0.835, 0.835, 0.835, 0.73 , 0.70, -9999., 0.750, 0.900, 0.900, -9999., #15-20 - 0.835, 0.835, 0.835, 0.80, 0.80, -9999., 0.8, 0.9 , 0.91, -9999., # 20-30 - 0.835, 0.835, 0.835, 0.80, 0.80, -9999., 0.8, 0.9 , 0.91, -9999., # 30-40 - 0.835, 0.835, 0.835, 0.80, 0.80, -9999., 0.8, 0.9 , 0.91, -9999., # 40-50 - 0.835, 0.835, 0.835, 0.80, 0.80, -9999., 0.8, 0.9 , 0.91, -9999., # 50-60 - 0.835, 0.835, 0.835, 0.80, 0.80, -9999., 0.8, 0.9 , 0.91, -9999., # 60-70 - 0.835, 0.835, 0.835, 0.80, 0.80, -9999., 0.8, 0.9 , 0.91, -9999., # 70-80 - 0.835, 0.835, 0.835, 0.80, 0.80, -9999., 0.8, 0.9 , 0.91, -9999. # 80< - ] - - ### cutf3### - #Cut on fraction of energy to use 3rd sampling - theTool.CutF3 += [ 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # < 5 - 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # 5-10 - 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # 10-15 - 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # 15-20 - 0.0215, 0.0215, 0.0175, 0.0175, 0.0235, 9999., 0.0175, 0.0285, 0.0268, 0.0383, # 20-30 - 0.0255, 0.0255, 0.0195, 0.0215, 0.0245, 9999., 0.0205, 0.0285, 0.0268, 0.0383, # 30-40 - 0.0265, 0.0265, 0.0195, 0.0215, 0.0245, 9999., 0.0255, 0.0285, 0.0293, 0.0383, # 40-50 - 0.0265, 0.0265, 0.0195, 0.0215, 0.0245, 9999., 0.0255, 0.0285, 0.0293, 0.0383, # 50-60 - 0.0265, 0.0265, 0.0195, 0.0215, 0.0245, 9999., 0.0255, 0.0285, 0.0293, 0.0383, # 60-70 - 0.0265, 0.0265, 0.0195, 0.0215, 0.0245, 9999., 0.0255, 0.0285, 0.0293, 0.0383, # 70-80 - 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999., 9999.] # >80 - - # cut on Delta Emax2 in 1st sampling - theTool.CutDeltaEmax2 += [] - - # cut on Emax2 - Emin in 1st sampling - theTool.CutDeltaE += [] - - # cut on width in 1st sampling - theTool.CutWeta1c += [] - - # cut on Fside in 1st sampling - theTool.CutFracm += [] - - # cut on Track quality cut - - # cut on pixel-layer hits - theTool.CutPi += [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - - # cut on precision hits - theTool.CutSi += [7, 7, 7, 7, 7, 7, 7, 7, 7, 7] - - # cut on transverse impact parameter - theTool.CutA0 += [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - # cut on transverse impact parameter for tight selection - theTool.CutA0Tight += [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] - - # cut on delta eta - theTool.CutDeltaEta += [0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005 - ] - # cut on delta eta for tight selection - theTool.CutDeltaEtaTight += [0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, - 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005, 0.005 - ] - - theTool.useTRTOutliers = True - theTool.useBLOutliers = True - theTool.usePIXOutliers = True - theTool.useSCTOutliers = True - - # cut on b-layer hits - theTool.CutBL += [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] - - # cut max on delta phi - theTool.CutmaxDeltaPhi+= [0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, # < 5 GeV - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, # 5-10 - 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, 0.015, # 10-15 - 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, 0.0125, # 15-20 - 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, # 20-30 - 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, # 30-40 - 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, # 40-50 - 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, # 50-60 - 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, # 60-70 - 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, # 70-80 - 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, 0.010, # > 80 - ] - - # cut min on deltaphi - theTool.CutminDeltaPhi += [-0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # < 5 GeV - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 5-10 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 10-15 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 15-20 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 20-30 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 30-40 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 40-50 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 50-60 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 60-70 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # 70-80 - -0.03, -0.03, -0.03, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, # > 80 - ] - - # cut min on E/P - theTool.CutminEp += [0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.80, 0.60, 0.60, # < 5 GeV - 0.800, 0.800, 0.800, 0.800, 0.800, 0.800, 0.700, 0.700, 0.600, 0.600, # 5-10 - 0.800, 0.800, 0.800, 0.775, 0.775, 0.775, 0.525, 0.625, 0.575, 0.525, # 10-15 - 0.775, 0.775, 0.775, 0.775, 0.700, 0.700, 0.525, 0.575, 0.575, 0.525, # 15-20 - 0.700, 0.700, 0.700, 0.700, 0.675, 0.675, 0.500, 0.500, 0.450, 0.450, # 20-30 - 0.700, 0.700, 0.700, 0.700, 0.625, 0.675, 0.500, 0.500, 0.450, 0.450, # 30-40 - 0.700, 0.700, 0.700, 0.700, 0.625, 0.675, 0.500, 0.500, 0.450, 0.450, # 40-50 - 0.700, 0.700, 0.700, 0.700, 0.625, 0.675, 0.500, 0.500, 0.450, 0.450, # 50-60 - 0.700, 0.700, 0.700, 0.700, 0.625, 0.675, 0.500, 0.500, 0.450, 0.450, # 60-70 - 0.700, 0.700, 0.700, 0.700, 0.625, 0.675, 0.500, 0.500, 0.450, 0.450, # 70-80 - 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, # > 80 - ] - - # cut max on E/P - - theTool.CutmaxEp += [2.3, 2.3, 2.3, 2.3, 2.3, 2.5, 2.5, 2.5, 3.0, 3.0, # < 5 GeV - 2.3, 2.3, 2.3, 2.3, 2.3, 2.5, 2.5, 2.5, 3.0, 3.0, # 5-10 - 2.3, 2.3, 2.3, 2.3, 2.3, 3.0, 2.5, 2.5, 3.0, 3.5, # 10-15 - 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.0, 3.0, 3.5, 3.5, # 15-20 - 2.5, 2.5, 2.5, 2.5, 2.5, 3.0, 3.0, 3.0, 4.0, 4.0, # 20-30 - 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 3.5, 3.5, 4.0, 4.0, # 30-40 - 3.0, 3.0, 3.0, 3.0, 3.0, 3.5, 3.5, 4.0, 4.5, 4.5, # 40-50 - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 4.0, 5.0, 5.0, 5.0, # 50-60 - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, # 60-70 - 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, # 70-80 - 10., 10., 10., 10., 10., 10., 10., 10., 10., 10., # > 80 - ] - - # cuts on TRT - # range of eta bins for e-ID for TRT - theTool.CutBinEta_TRT += [0.1, 0.625, 1.07, 1.304, 1.752, 2.0] - # cuts on Number of TRT hits with Outliers - theTool.CutNumTRT += [-15.,-15., -15., -15., -15., -15.] - # cuts on TRT ratio with Outliers - theTool.CutTRTRatio += [0.09, 0.105, 0.11, 0.125, 0.145, 0.16] - # cuts on TRT ratio with Outliers for 90% efficiency - theTool.CutTRTRatio90 += [0.10, 0.10, 0.125, 0.13, 0.13, 0.13] diff --git a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/PhotonIsEMMediumSelectorCutDefs.py b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/PhotonIsEMMediumSelectorCutDefs.py index b318ebf20a7869d37483a1da34d2e97431b0c9a4..13c5651233c50321b04b85e483b18016ddda3944 100644 --- a/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/PhotonIsEMMediumSelectorCutDefs.py +++ b/PhysicsAnalysis/ElectronPhotonID/ElectronPhotonSelectorTools/python/PhotonIsEMMediumSelectorCutDefs.py @@ -21,75 +21,3 @@ def PhotonIsEMMediumSelectorConfig(theTool) : theTool.ConfigFile = "ElectronPhotonSelectorTools/offline/mc15_20150712/PhotonIsEMMediumSelectorCutDefs.conf" -def PhotonIsEMMediumSelectorConfig2012(theTool) : - ''' - These are the photon isEM definitions - ''' - - theTool = GetTool(theTool) - - # MEDIUM (25/3/2012 -- Jovan.Mitrevski@cern.ch) - # Coming from the trigger - # - - # range of eta and ET for Loose selection - theTool.CutBinEta_photonsLoose += [0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] - theTool.CutBinEnergy_photonsLoose += [] - - # cut on hadronic energy - theTool.CutHadLeakage_photonsLoose += [ 0.02425, 0.02275, 0.02575, 0.01975, 0.01975, 0.02725, 0.02725, 0.02725, 0.01975 ] - - # WARNING: format is: first full eta (number of bins taken from size of empid.CutHadLeakage_photons, then energy - theTool.e277_photonsLoose += [ 0.1 ] - # Reta37 for loose photons - theTool.Reta37_photonsLoose += [ 0.8825, 0.8825, 0.8575, 0.8875, 0.750, 0.8725, 0.9025, 0.8875, 0.7575 ] - # width in 2nd sampling for loose photons - theTool.weta2_photonsLoose += [ 0.011, 0.012, 0.012, 0.0125, 0.025, 0.013, 0.012, 0.0128, 0.0128 ] - - # TIGHT UNCONVERTED - - # range of eta and ET for Tight selection for non converted photons - theTool.CutBinEta_photonsNonConverted += [0.6, 0.8,1.15, 1.37,1.52, 1.81, 2.01, 2.37,2.47] - theTool.CutBinEnergy_photonsNonConverted += [] - - # E277 - theTool.e277_photonsNonConverted += [0.1] - - # eta binning in strips - theTool.CutBinEtaStrips_photonsNonConverted += [0.6, 0.8,1.15, 1.37,1.52, 1.81, 2.01, 2.37, 2.47] - # ET binning in strips - theTool.CutBinEnergyStrips_photonsNonConverted += [] - - # fraction of energy in strips for non converted photons - theTool.f1_photonsNonConverted += [0.005] - - # cut on (Emax - Emax2)/(Emax + Emax2) in 1st sampling - theTool.DEmaxs1_photonsNonConverted += [0.60, 0.76, 0.70, 0.67, 0.68 , 0.65, 0.68 , 0.75, 0.78] - - # - # TIGHT CONVERTED - - - # range of eta and ET for Tight selection for converted photons - theTool.CutBinEta_photonsConverted += [0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] - theTool.CutBinEnergy_photonsConverted += [] - - # E277 - theTool.e277_photonsConverted += [0.1] - - # eta binning in strips - theTool.CutBinEtaStrips_photonsConverted += [0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47] - # ET binning in strips - theTool.CutBinEnergyStrips_photonsConverted += [] - - # cuts for converted photon in strips - theTool.f1_photonsConverted += [0.005] - - # cut on (Emax - Emax2)/(Emax + Emax2) in 1st sampling - theTool.DEmaxs1_photonsConverted += [0.60, 0.76, 0.70, 0.67, 0.68 , 0.65, 0.68 , 0.75, 0.78] - - # end of LowLumi_2012() - # - - - diff --git a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx index 5480a2d57f9ac23e5574582b93d31a460ff77c2f..bfaa448f2be7b85a7eee5c189abf45a28756ff79 100644 --- a/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx +++ b/PhysicsAnalysis/JetMissingEtID/MissingEtDQA/src/PhysValMET.cxx @@ -1027,11 +1027,13 @@ for(const auto& it : corrTrk_names) { } } - (m_MET_dPhi_Ref[type]).at(0)->Fill( -remainder( leadPhi - (*met_Reb)["FinalClus"]->phi(), 2*M_PI ), weight ); - (m_MET_dPhi_Ref[type]).at(1)->Fill( -remainder( subleadPhi - (*met_Reb)["FinalClus"]->phi(), 2*M_PI ), weight ); - (m_MET_dPhi_Ref[type]).at(3)->Fill( -remainder( leadPhi - (*met_Reb)["FinalTrk"]->phi(), 2*M_PI ), weight ); - (m_MET_dPhi_Ref[type]).at(4)->Fill( -remainder( subleadPhi - (*met_Reb)["FinalTrk"]->phi(), 2*M_PI ), weight ); - + if(m_doMETRefPlots){ + (m_MET_dPhi_Ref[type]).at(0)->Fill( -remainder( leadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight ); + (m_MET_dPhi_Ref[type]).at(1)->Fill( -remainder( subleadPhi - (*met_Ref)["FinalClus"]->phi(), 2*M_PI ), weight ); + (m_MET_dPhi_Ref[type]).at(3)->Fill( -remainder( leadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight ); + (m_MET_dPhi_Ref[type]).at(4)->Fill( -remainder( subleadPhi - (*met_Ref)["FinalTrk"]->phi(), 2*M_PI ), weight ); + } + (m_MET_dPhi_Reb[type]).at(0)->Fill( -remainder( leadPhi - (*met_Reb)["FinalClus"]->phi(), 2*M_PI ), weight ); (m_MET_dPhi_Reb[type]).at(1)->Fill( -remainder( subleadPhi - (*met_Reb)["FinalClus"]->phi(), 2*M_PI ), weight ); (m_MET_dPhi_Reb[type]).at(3)->Fill( -remainder( leadPhi - (*met_Reb)["FinalTrk"]->phi(), 2*M_PI ), weight ); diff --git a/PhysicsAnalysis/JpsiUpsilonTools/JpsiUpsilonTools/JpsiFinder.h b/PhysicsAnalysis/JpsiUpsilonTools/JpsiUpsilonTools/JpsiFinder.h index cc7f6257754516a000eecc53d7c60af1ad3e69fa..b2716171d556ab0fa87d3a4de121c09239138525 100644 --- a/PhysicsAnalysis/JpsiUpsilonTools/JpsiUpsilonTools/JpsiFinder.h +++ b/PhysicsAnalysis/JpsiUpsilonTools/JpsiUpsilonTools/JpsiFinder.h @@ -108,6 +108,7 @@ namespace Analysis { ToolHandle < InDet::VertexPointEstimator > m_vertexEstimator; bool m_mcpCuts; bool m_doTagAndProbe; + bool m_forceTagAndProbe; }; } // end of namespace #endif diff --git a/PhysicsAnalysis/JpsiUpsilonTools/src/JpsiFinder.cxx b/PhysicsAnalysis/JpsiUpsilonTools/src/JpsiFinder.cxx index 13452879a268b051cf8306ec5a3a4b8ec21874aa..1b11493d00d350b3042ea4fda337e6df85cb8fb8 100644 --- a/PhysicsAnalysis/JpsiUpsilonTools/src/JpsiFinder.cxx +++ b/PhysicsAnalysis/JpsiUpsilonTools/src/JpsiFinder.cxx @@ -92,8 +92,10 @@ namespace Analysis { illogicalOptions=true; }; if ( (m_sameChOnly && m_doTagAndProbe) || (m_allChCombs && m_doTagAndProbe) ) { - ATH_MSG_WARNING("You are requesting same-sign or all-sign combinations in a tag and probe analysis. This doesn't make sense. JpsiCandidates will be EMPTY!"); - illogicalOptions=true; + if (!m_forceTagAndProbe){ //if m_forceTagAndProbe=TRUE then T&P will work with any charge combinations + ATH_MSG_WARNING("You are requesting same-sign or all-sign combinations in a tag and probe analysis. This doesn't make sense. JpsiCandidates will be EMPTY!"); + illogicalOptions=true; + } } if (illogicalOptions) return StatusCode::FAILURE;; @@ -133,7 +135,8 @@ namespace Analysis { m_trkSelector("InDet::TrackSelectorTool"), m_vertexEstimator("InDet::VertexPointEstimator"), m_mcpCuts(true), - m_doTagAndProbe(false) + m_doTagAndProbe(false), + m_forceTagAndProbe(false) //forcing T&P method for any charge combinations { declareInterface<JpsiFinder>(this); @@ -166,6 +169,7 @@ namespace Analysis { declareProperty("useMCPCuts",m_mcpCuts); declareProperty("doTagAndProbe",m_doTagAndProbe); declareProperty("MuonTrackKeys",m_MuonTrackKeys); + declareProperty("forceTagAndProbe",m_forceTagAndProbe); } JpsiFinder::~JpsiFinder() { } diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/AnalysisTrackingHelper.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/AnalysisTrackingHelper.cxx index 36d1d944df1b029df5f401850fdce1c19344e63f..a3b69c05cfdc1a82f1352d4b9e72aff5cf77dd75 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/AnalysisTrackingHelper.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/AnalysisTrackingHelper.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TopAnalysis/AnalysisTrackingHelper.h" @@ -132,7 +132,6 @@ namespace top { { // Store metadata of inputs: out << json_dump("inputConfig") << ": {\n"; - out << " " << json_dump("amiTag") << ": " << json_dump(m_topConfig->getAmiTag()) << ",\n"; out << " " << json_dump("derivationFormat") << ": " << json_dump(m_topConfig->getDerivationStream()) << ",\n"; out << " " << json_dump("dsid") << ": " << json_dump(m_topConfig->getDSID()) << ",\n"; out << " " << json_dump("isMC") << ": " << json_dump(m_topConfig->isMC()) << ",\n"; diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/ObjectLoaderStandardCuts.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/ObjectLoaderStandardCuts.cxx index b46bc4ab7bd55fed089accd9a97c2d432ab7c160..e65cce077c56f8f7ae05ecb15f69ea663cdbdf4e 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/ObjectLoaderStandardCuts.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/ObjectLoaderStandardCuts.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TopAnalysis/ObjectLoaderStandardCuts.h" @@ -63,8 +63,7 @@ namespace top { } else if (topConfig->electronID().find("LH") != std::string::npos && topConfig->electronIDLoose().find("LH") != std::string::npos) { //user wants likelihood electrons - objectSelection->electronSelection(new top::ElectronLikelihoodMC15(topConfig->isPrimaryxAOD(), - topConfig->electronPtcut(), + objectSelection->electronSelection(new top::ElectronLikelihoodMC15(topConfig->electronPtcut(), topConfig->electronVetoLArCrack(), topConfig->electronID(), topConfig->electronIDLoose(), diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/Tools.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/Tools.cxx index fe03601fd00278e8780d42c8bffd7c8bf753fbd1..cc54b072af444e969f251a561d38179ee6ffb8da 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/Tools.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/Root/Tools.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TopAnalysis/Tools.h" @@ -59,82 +59,6 @@ namespace top { } } - bool isFilePrimaryxAOD(TFile* inputFile) { - TTree* metaData = dynamic_cast<TTree*> (inputFile->Get("MetaData")); - - if (metaData) { - metaData->LoadTree(0); - - TObjArray* ar = metaData->GetListOfBranches(); - for (int i = 0; i < ar->GetEntries(); ++i) { - TBranch* b = (TBranch*) ar->At(i); - std::string name = std::string(b->GetName()); - if (name == "StreamAOD") return true; - } - } else { - throw std::runtime_error("Tools::isFilePrimaryxAOD: MetaData tree missing from input file."); - } - - return false; - } - - bool isFileSimulation(TFile* inputFile, const std::string& eventInfoName) { - xAOD::TEvent xaodEvent(xAOD::TEvent::kClassAccess); - top::check(xaodEvent.readFrom(inputFile), "Tools::isFileSimulation Failed to read file in"); - - xaodEvent.getEntry(0); - const xAOD::EventInfo* eventInfo(0); - top::check(xaodEvent.retrieve(eventInfo, eventInfoName), "Tools::isFileSimulation Failed to get " + eventInfoName); - - return eventInfo->eventType(xAOD::EventInfo::IS_SIMULATION); - } - - size_t MCweightsSize(TFile* inputFile, const std::string& eventInfoName) { - xAOD::TEvent xaodEvent(xAOD::TEvent::kClassAccess); - top::check(xaodEvent.readFrom(inputFile), "Tools::MCweightsSize Failed to read file in"); - - xaodEvent.getEntry(0); - const xAOD::EventInfo* eventInfo(0); - top::check(xaodEvent.retrieve(eventInfo, eventInfoName), "Tools::isFileSimulation Failed to get " + eventInfoName); - - return eventInfo->mcEventWeights().size(); - } - - bool isTruthDxAOD(TFile* inputFile) { - TTree* metaData = dynamic_cast<TTree*> (inputFile->Get("MetaData")); - - if (metaData) { - metaData->LoadTree(0); - - TObjArray* ar = metaData->GetListOfBranches(); - for (int i = 0; i < ar->GetEntries(); ++i) { - TBranch* b = (TBranch*) ar->At(i); - std::string name = std::string(b->GetName()); - if (name.find("DAOD_TRUTH") != std::string::npos) return true; - } - } else { - throw std::runtime_error("isTruthDxAOD says MetaData tree" - " missing from input file.\n Weird"); - } - - return false; - } - - unsigned int getDSID(TFile* inputFile, const std::string& eventInfoName) { - xAOD::TEvent xaodEvent(xAOD::TEvent::kClassAccess); - top::check(xaodEvent.readFrom(inputFile), "Tools::isFileSimulation Failed to read file in"); - - xaodEvent.getEntry(0); - const xAOD::EventInfo* eventInfo(0); - top::check(xaodEvent.retrieve(eventInfo, eventInfoName), "Tools::isFileSimulation Failed to get " + eventInfoName); - - return eventInfo->mcChannelNumber(); - } - - bool isFileFastSim(TFile* /*inputFile*/) { - return false; - } - std::string getDerivationStream(TFile* inputFile) { TTree* metaData = dynamic_cast<TTree*> (inputFile->Get("MetaData")); @@ -154,8 +78,8 @@ namespace top { } } } else { - throw std::runtime_error("getDerivationStream says MetaData tree" - " missing from input file.\n Weird"); + throw std::runtime_error("getDerivationStream: MetaData tree" + " missing from input file."); } // If we don't already return, something unexpected has happened and we need to fix it! @@ -243,67 +167,12 @@ namespace top { } else { ATH_MSG_INFO("WARNING: PMGTruthWeightTool reports no extra MC generator weight variations, " << "but this sample does not have exactly one AllExecutedEvents* bookkeeper!\n" - << "Expect trouble, because this means we can't guarantee that proper CutBookkeeper " + << "This means we can't guarantee that the correct CutBookkeeper " << "is used for the sum of weights!"); } } } - xAOD::TEvent::EAuxMode guessAccessMode(const std::string& filename, const std::string& electronCollectionName) { - //there must be a better way than this - std::unique_ptr<TFile> inputFile(TFile::Open(filename.c_str())); - - xAOD::TEvent xaodEvent(xAOD::TEvent::kBranchAccess); - top::check(xaodEvent.readFrom(inputFile.get()), "Failed to guessAccessMode"); - - //if we're unlucky and none of the events have electrons we can't - //tell which mode we need -> use ClassAccess - bool fallback = true; - xAOD::TEvent::EAuxMode mode = xAOD::TEvent::kBranchAccess; - - if (electronCollectionName != "None") { - //look at the first n events - unsigned int entries = xaodEvent.getEntries(); - - for (unsigned int i = 0; i < entries; ++i) { - xaodEvent.getEntry(i); - - const xAOD::ElectronContainer* electrons(0); - top::check(xaodEvent.retrieve(electrons, electronCollectionName), "Failed to guessAccessMode"); - - try { - //loading the electron pt only works for class access for the first - //round of xAODs made for DC14 8 TeV - //class access doesn't let us make out mini-xAOD super small though - - //branch access is available for the xAOD->xAOD reprocessing, - //derivations and 13 TeV DC14 MC samples - if (!electrons->empty()) { - fallback = false; - electrons->at(0)->pt(); - break; - } - } catch (...) { - mode = xAOD::TEvent::kClassAccess; - break; - } - } - } - - if (fallback) { - ATH_MSG_WARNING("Falling back to kClassAccess"); - mode = xAOD::TEvent::kClassAccess; - } - - //useful message - if (mode == xAOD::TEvent::kClassAccess) - ATH_MSG_INFO("guessAccessMode: Using kClassAccess"); - else if (mode == xAOD::TEvent::kBranchAccess) - ATH_MSG_INFO("guessAccessMode: Using kBranchAccess"); - - return mode; - } - std::vector<std::string> loadCuts(const std::string& filename) { std::vector<std::string> v; @@ -464,12 +333,11 @@ namespace top { top::check(xaodEvent.readFrom(inputFile), "Cannot load inputFile"); xaodEvent.getEntry(0); - bool gotDSID=false; - unsigned int mcChannelNumber = ((unsigned int) -1); - - std::string productionRelease="?", amiTag="?", AODFixVersion="?", AODCalibVersion="?", dataType="?", geometryVersion="?", conditionsTag="?", - beamType="?", simFlavour="?"; - float beamEnergy = 0, mcProcID = -1; + int mcChannelNumber = -1; + std::string dataType="?", simFlavour="?"; + float mcProcID = -1; + bool isDataOverlay = false; + bool isMC = false; // Magical metadata tool to access FileMetaData object asg::AsgMetadataTool ATMetaData("OurNewMetaDataObject"); @@ -482,81 +350,48 @@ namespace top { // Create pointer for FileMetaData which we will load const xAOD::FileMetaData* FMD = 0; - top::check(ATMetaData.inputMetaStore()->retrieve(FMD, - "FileMetaData"), + top::check(ATMetaData.inputMetaStore()->retrieve(FMD, "FileMetaData"), "Failed to retrieve metadata from AsgMetadataTool"); // Let's get all the info we can... // https://gitlab.cern.ch/atlas/athena/blob/21.2/Event/xAOD/xAODMetaData/xAODMetaData/versions/FileMetaData_v1.h#L47 - /// Release that was used to make the file [string] - FMD->value(xAOD::FileMetaData::productionRelease, productionRelease); - /// AMI tag used to process the file the last time [string] - FMD->value(xAOD::FileMetaData::amiTag, amiTag); - /// Version of AODFix that was used on the file last [string] - FMD->value(xAOD::FileMetaData::AODFixVersion, AODFixVersion); - /// Version of AODCalib that was used on the file last [string] - FMD->value(xAOD::FileMetaData::AODCalibVersion, AODCalibVersion); /// Data type that's in the file [string] FMD->value(xAOD::FileMetaData::dataType, dataType); - /// Geometry version [string] - FMD->value(xAOD::FileMetaData::geometryVersion, geometryVersion); - /// Conditions version used for simulation/reconstruction [string] - FMD->value(xAOD::FileMetaData::conditionsTag, conditionsTag); - /// Beam energy [float] - FMD->value(xAOD::FileMetaData::beamEnergy, beamEnergy); - /// Beam type [string] - FMD->value(xAOD::FileMetaData::beamType, beamType); + // If this is data overlay or not + FMD->value(xAOD::FileMetaData::isDataOverlay, isDataOverlay); + config->setIsDataOverlay(isDataOverlay); /// Same as mc_channel_number [float] - gotDSID = FMD->value(xAOD::FileMetaData::mcProcID, mcProcID); + FMD->value(xAOD::FileMetaData::mcProcID, mcProcID); mcChannelNumber = mcProcID; + config->setDSID(mcChannelNumber); + isMC = (mcChannelNumber > 0); + config->setIsMC(isMC); /// Fast or Full sim [string] FMD->value(xAOD::FileMetaData::simFlavour, simFlavour); - /// It is also possible to access any other info in metadata with - /// FMD->value("SomeMetaInfo", someObject); - readFMD=true; - } - if (!readFMD || !gotDSID || mcChannelNumber == ((unsigned int) -1)){ // in case FileMetaData is bugged and does not have DSID properly stored happens for example for files with 0 events in CollectionTree after skimming - - ATH_MSG_INFO("FileMetaData not found or not readable, trying to read TruthMetaData"); - - bool gotTruthMetaData = true; - const xAOD::TruthMetaDataContainer *truthMetadata = nullptr; - if (ATMetaData.inputMetaStore()->contains<xAOD::TruthMetaDataContainer>("TruthMetaData")) { - if (ATMetaData.inputMetaStore()->retrieve(truthMetadata, "TruthMetaData")) { - if (truthMetadata->size() == 1) { - mcChannelNumber = truthMetadata->at(0)->mcChannelNumber(); - } else { - ATH_MSG_WARNING("TruthMetaData does not have exactly one entry. Cannot reliably determine DSID"); - } + if (isMC) { + if (simFlavour == "FullG4") { + config->setIsAFII(false); + } else if (simFlavour == "ATLFASTII") { + config->setIsAFII(true); } else { - gotTruthMetaData = false; + ATH_MSG_ERROR("Unsupported simFlavour detected in xAOD::FileMetaData: " << simFlavour); + throw std::runtime_error("Unsupported simFlavour detected, exiting"); } - } else { - gotTruthMetaData = false; - } - if (!gotTruthMetaData) - { - ATH_MSG_ERROR("We cannot retrieve even TruthMetaData to determine DSID"); - return false; } + readFMD=true; + } + + if (!readFMD) { + ATH_MSG_ERROR("Could not read FileMetaData inside MetaData tree."); + return false; } /// Print out this information as a cross-check - ATH_MSG_INFO("Using AsgMetadataTool to access the following information\n" - << "productionRelease -> " << productionRelease << "\n" - << "amiTag -> " << amiTag << "\n" - << "AODFixVersion -> " << AODFixVersion << "\n" - << "AODCalibVersion -> " << AODCalibVersion << "\n" + ATH_MSG_INFO("Reading the following options from FileMetaData:\n" << "dataType -> " << dataType << "\n" - << "geometryVersion -> " << geometryVersion << "\n" - << "conditionsTag -> " << conditionsTag << "\n" - << "beamEnergy -> " << beamEnergy << "\n" - << "beamType -> " << beamType << "\n" - << "mcProcID -> " << int(mcChannelNumber) << "\n" + << "mcProcID -> " << mcChannelNumber << "\n" + << "isMC -> " << isMC << "\n" << "simFlavour -> " << simFlavour << "\n" - << "Not all of this information is propagated to TopConfig"); - - config->setAmiTag(amiTag); - config->setDSID(mcChannelNumber); + << "isDataOverlay -> " << isDataOverlay); return true; } diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/TopAnalysis/Tools.h b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/TopAnalysis/Tools.h index 6c8977bffe13687878e26c374cb10a29d1a085ad..950a4b6a61d8194558b27d0b6d6b592e7f30cfed 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/TopAnalysis/Tools.h +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/TopAnalysis/Tools.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef TOPTOOLS_H__ @@ -36,57 +36,6 @@ namespace top { */ void xAODInit(bool failOnUnchecked = true); -/** - * @brief Sometimes we need to know if we're running on a primary xAOD or a - * derivation. - * - * To figure this out (while we wait for a proper solution) we can open up - * the MetaData tree. As far as I can tell primary xAODs have a branch called - * StreamAOD and derivations have something a bit like StreamDAOD_TOPQ1. - * So if we see StreamAOD, we know it's a primary xAOD. I hope. - * - * @param inputFile A pointer to the input file - * @return True if this is a primary xAOD - */ - bool isFilePrimaryxAOD(TFile* inputFile); - -/** - * @brief Some of our things need to know if the events are MC or data before - * we're in the event loop. In the future this should be in the file metadata - * but right now we can't access it easily in RootCore. - * - * @param inputFile A pointer to the input file - * @param eventInfoName Name of the EventInfo container in the xAOD - * @return True if MC simulation, false for data - */ - bool isFileSimulation(TFile* inputFile, const std::string& eventInfoName); - -/** - * @brief For fallback cases when metadata is broken in dxAOD, we need to know - * how many MC generator weights are stored in the MC sample. This is needed - * to determine, whether there is an unambiguous choice of nominal weight (e.g. - * only one weight in sample), or if we can't conclusively tell which one it is. - * - * @param inputFile A pointer to the input file - * @param eventInfoName Name of the EventInfo container in the xAOD - * @return Size of vector of MC generator weights - */ - size_t MCweightsSize(TFile* inputFile, const std::string& eventInfoName); - - bool isTruthDxAOD(TFile* inputFile); - - unsigned int getDSID(TFile* inputFile, const std::string& eventInfoName); - -/** - * @brief Some of our things need to know if the events are AFII or FullSim - * for certain systematics. - * - * @param inputFile A pointer to the input file - * @param eventInfoName Name of the EventInfo container in the xAOD - * @return True if fast simulation, false for FullSim - */ - bool isFileFastSim(TFile* inputFile); - /** * @brief Function to determine the derivation type using string manipulation * @@ -94,7 +43,6 @@ namespace top { * * @return string with the derivation stream name */ - std::string getDerivationStream(TFile* inputFile); /** @@ -130,30 +78,6 @@ namespace top { void renameCutBookkeepers(std::vector<std::string>& bookkepeer_names, const std::vector<std::string>& pmg_weight_names); -/** - * @brief xAODs can be accessed in class or branch access mode. Guess 'the best' - * by trying branch access first and falling back to class access if that fails. - * - * Try to guess the 'best' mode to open the files with. The way we do this is - * first try with branch access (this is what is preferred because it'll allow - * us to make our mini xAODs smaller by kicking-out branches). The problem is - * the first xAODs for 8 TeV DC14 can't be read in this mode (actually only the - * egamma objects). This is fixed for 13 TeV, and will be for the 8 TeV - * derivations and the xAOD->xAOD reprocessing. - * - * This function opens the file, loads the first event and attempts to read the - * electron collection. If that works in branch mode it returns branch mode. - * If it fails, it returns class mode. - * - * @param filename A file that you're going to run on, so we can attempt to - * figure out which mode to use. - * - * @param electronCollectionName Name of the electron collection - no really! - * - * @return BranchAccess (preferred) or ClassAccess if the test fails. - */ - xAOD::TEvent::EAuxMode guessAccessMode(const std::string& filename, const std::string& electronCollectionName); - /** * @brief Load the file and make a vector of the cuts to pass on to the * selection tool. diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/share/validation-cuts.txt b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/share/validation-cuts.txt index 4ea1c46a806d77ca085df1828dacd04023bbed30..b5c72415469face3b07d53edd8c566214a4b8d8a 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/share/validation-cuts.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/share/validation-cuts.txt @@ -92,7 +92,6 @@ DoTight Both DoLoose Data # Turn on MetaData to pull IsAFII from metadata -UseAodMetaData True #IsAFII False ### B-tagging configuration diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/util/top-tool-ftag.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/util/top-tool-ftag.cxx index 10657f9b08d7f3ea2349d47d6c23a8995d05a8fb..ababb090ce24365d3d835a15bdd0510d811c6191 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/util/top-tool-ftag.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/util/top-tool-ftag.cxx @@ -13,7 +13,6 @@ #include "xAODRootAccess/TStore.h" #include "xAODRootAccess/TActiveStore.h" -#include "TopConfiguration/AodMetaDataAccess.h" #include "TopConfiguration/ConfigurationSettings.h" #include "TopConfiguration/TopConfig.h" #include "TopConfiguration/SelectionConfigurationData.h" diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/util/top-xaod.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/util/top-xaod.cxx index 4b18624594b955ecb5e4e55d9be015ff304eae92..a09cf828d48da541606d11f62d7c015581da2478 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/util/top-xaod.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopAnalysis/util/top-xaod.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include <iostream> @@ -30,7 +30,6 @@ #include "TopSystematicObjectMaker/ObjectCollectionMaker.h" -#include "TopConfiguration/AodMetaDataAccess.h" #include "TopConfiguration/ConfigurationSettings.h" #include "TopConfiguration/TopConfig.h" #include "TopConfiguration/SelectionConfigurationData.h" @@ -163,24 +162,12 @@ int main(int argc, char** argv) { // This is not the same as a good configuration std::shared_ptr<top::TopConfig> topConfig(new top::TopConfig()); - // load AOD meta-data from all files - bool useAodMetaData = false; - settings->retrieve("UseAodMetaData", useAodMetaData); - if (useAodMetaData) { - ATH_MSG_INFO("Loading meta-data from input files ... "); - topConfig->aodMetaData().loadWithFilesFrom(argv[2]); - ATH_MSG_INFO("OK."); - } - - //picking the first file was a bad idea because in the derivations it often //has no events (no CollectionTree). Be sure to pick a file with events in - //it... - // The isMC flag needs to be taken from the xAOD metadata - // We also need something for AFII + //it -- this is needed to determine the year to setup triggers + //FIXME -- can we have this in MetaData without having to open CollectionTree ? { std::string usethisfile = filenames[0]; - bool atLeastOneFileIsValid(false); for (const auto& filename : filenames) { std::unique_ptr<TFile> checkingYieldFile(TFile::Open(filename.c_str())); @@ -188,74 +175,30 @@ int main(int argc, char** argv) { const TTree* const collectionTree = dynamic_cast<TTree* > (checkingYieldFile->Get("CollectionTree")); if (collectionTree) { usethisfile = filename; - atLeastOneFileIsValid = true; break; } } - // If there are no valid files, let's exit cleanly - if (!(atLeastOneFileIsValid || useAodMetaData)) { - ATH_MSG_ERROR("No input file contains a CollectionTree and no metadata used. Cannot Continue."); - ATH_MSG_ERROR("If you had turned on 'UseAodMetaData' in your configuration, " - "we could overcome this limitation."); - return 1; - } - + // read FileMetaData using AsgMetadataTool std::unique_ptr<TFile> testFile(TFile::Open(usethisfile.c_str())); if (!top::readMetaData(testFile.get(), topConfig)) { - ATH_MSG_ERROR("Unable to access FileMetaData and/or TruthMetaData in this file : " << usethisfile + ATH_MSG_ERROR("Unable to access FileMetaData in this file : " << usethisfile << "\nPlease report this message."); + return 1; } - - const bool isOverlay = useAodMetaData ? topConfig->aodMetaData().IsEventOverlayInputSim() : false; - bool isMC(true); - if (!isOverlay) { - isMC = (useAodMetaData ? - topConfig->aodMetaData().isSimulation() : - top::isFileSimulation(testFile.get(), topConfig->sgKeyEventInfo()) - ); - } - - topConfig->setIsMC(isMC); - topConfig->setIsDataOverlay(isOverlay); - - const bool isPrimaryxAOD = top::isFilePrimaryxAOD(testFile.get()); - topConfig->setIsPrimaryxAOD(isPrimaryxAOD); - + // determine derivation stream + // TODO: can we find a nicer way instead of looping over MetaData TTree branches ? const std::string derivationStream = top::getDerivationStream(testFile.get()); ATH_MSG_INFO("Derivation stream is -> " << derivationStream); topConfig->setDerivationStream(derivationStream); - - // first we need to read some metadata before we read the config - if (isMC) { - // check number of MC generator weights -- we need this before start initializing PMGTruthWeightTool later - if (atLeastOneFileIsValid) topConfig->setMCweightsVectorSize(top::MCweightsSize(testFile.get(), topConfig->sgKeyEventInfo())); - ///-- Are we using a truth derivation (no reco information)? --/// - ///-- Let's find out in the first event, this could be done better --/// - bool isTruthDxAOD = top::isTruthDxAOD(testFile.get()); - topConfig->setIsTruthDxAOD(isTruthDxAOD); - - unsigned int DSID {0}; - if (!useAodMetaData) { - if (atLeastOneFileIsValid) { - DSID = top::getDSID(testFile.get(), topConfig->sgKeyEventInfo()); - topConfig->setDSID(DSID); - } else { - ATH_MSG_ERROR("We could not determine DSID for this sample from either CollectionTree, or FileMetaData, or TruthMetaData. There is something seriously wrong with this sample."); - return 1; - } - } else { - DSID = topConfig->getDSID(); - } - } - - + // TODO: unclear if DAOD_TRUTH derivations exist in R22, and if they are reprocessed ? + topConfig->setIsTruthDxAOD((derivationStream == "TRUTH")); // Pass the settings file to the TopConfig topConfig->setConfigSettings(settings); - if (isMC && !topConfig->isTruthDxAOD()) { + if (topConfig->isMC() && !topConfig->isTruthDxAOD()) { // now need to get and set the parton shower generator from TopDataPrep SampleXsection tdp; // Package/filename - XS file we want to use (can now be configured via cutfile) @@ -285,23 +228,22 @@ int main(int argc, char** argv) { const xAOD::EventInfo* eventInfo(nullptr); top::check(xaodEvent.retrieve(eventInfo, topConfig->sgKeyEventInfo()), "Failed to retrieve EventInfo"); const unsigned int runnumber = eventInfo->runNumber(); - const std::string thisYear = topConfig->getYear(runnumber, isMC); + const std::string thisYear = topConfig->getYear(runnumber, topConfig->isMC()); topConfig->SetYear(thisYear); } else { topConfig->SetYear("UNKNOWN"); } - topConfig->SetTriggersToYear(isMC); + topConfig->SetTriggersToYear(topConfig->isMC()); } } //close and delete the ptr to testFile - //In rel 19 we had a function to guess Class or Branch Access. - //In rel20 just use branch (quicker) - // In rel 20.7, need to go back to class access xAOD::TEvent xaodEvent(xAOD::TEvent::kClassAccess); - // Read metadata + // This first input file needs to be open, because some CP tools expect to be able to + // read stuff during initialization + // At minimum, the PMGTruthWeightTool needs access to metadata std::unique_ptr<TFile> metadataInitFile(TFile::Open(filenames[0].c_str())); top::check(xaodEvent.readFrom(metadataInitFile.get()), "xAOD::TEvent readFrom failed"); @@ -497,16 +439,12 @@ int main(int argc, char** argv) { bool recalculateNominalWeightSum = false; int dsid = topConfig->getDSID(); int isAFII = topConfig->isAFII(); - std::string generators = topConfig->getGenerators(); - std::string AMITag = topConfig->getAMITag(); ULong64_t totalEvents = 0; ULong64_t totalEventsInFiles = 0; std::unordered_map<std::string, std::vector<std::string>> boostedTaggersSFSysNames = topConfig->boostedTaggersSFSysNames(); sumWeights->Branch("dsid", &dsid); sumWeights->Branch("isAFII", &isAFII); - sumWeights->Branch("generators", &generators); - sumWeights->Branch("AMITag", &AMITag); sumWeights->Branch("totalEventsWeighted", &totalEventsWeighted); if (topConfig->doMCGeneratorWeights()) {// the main problem is that we don't have the list of names a priori sumWeights->Branch("totalEventsWeighted_mc_generator_weights", &totalEventsWeighted_LHE3); @@ -586,7 +524,7 @@ int main(int argc, char** argv) { // we continue without names of the MC weights, only indices will be available ToolHandle<PMGTools::IPMGTruthWeightTool> m_pmg_weightTool("PMGTruthWeightTool"); if (!m_pmg_weightTool.retrieve()) { - ATH_MSG_ERROR("Cannot retrieve PMGTruthWeightTool"); + ATH_MSG_ERROR("Cannot retrieve PMGTruthWeightTool for determining CutBookkeeper weight names."); return 1; } @@ -900,7 +838,10 @@ int main(int argc, char** argv) { if (runNumber >= 300000) { if ((!topConfig->isAFII() && topConfig->PileupActualMu_FS().size() == 0) || (topConfig->isAFII() && topConfig->PileupActualMu_AF().size() == 0)) { - ATH_MSG_WARNING("\n***************************************************************************************\nYou are running over mc16d or mc16e sample but you are not using actual mu reweighting!\nYou are strongly adviced to use it.\nCheck https://twiki.cern.ch/twiki/bin/view/AtlasProtected/TopxAODStartGuideR21#PRW_and_Lumicalc_files\n***************************************************************************************\n"); + ATH_MSG_WARNING("\n***************************************************************************************" + "\nYou are running over mc16d or mc16e sample but you are not using actual mu reweighting!" + "\nYou are strongly adviced to use it.\nCheck https://twiki.cern.ch/twiki/bin/view/AtlasProtected/TopxAODStartGuideR21#PRW_and_Lumicalc_files" + "\n***************************************************************************************\n"); } } } @@ -935,7 +876,10 @@ int main(int argc, char** argv) { if (runNumber >= 300000) { if ((!topConfig->isAFII() && topConfig->PileupActualMu_FS().size() == 0) || (topConfig->isAFII() && topConfig->PileupActualMu_AF().size() == 0)) { - ATH_MSG_WARNING("\n***************************************************************************************\nYou are running over mc16d or mc16e sample but you are not using actual mu reweighting!\nYou are strongly adviced to use it.\nCheck https://twiki.cern.ch/twiki/bin/view/AtlasProtected/TopxAODStartGuideR21#PRW_and_Lumicalc_files\n***************************************************************************************\n"); + ATH_MSG_WARNING("\n***************************************************************************************" + "\nYou are running over mc16d or mc16e sample but you are not using actual mu reweighting!" + "\nYou are strongly adviced to use it.\nCheck https://twiki.cern.ch/twiki/bin/view/AtlasProtected/TopxAODStartGuideR21#PRW_and_Lumicalc_files" + "\n***************************************************************************************\n"); } } } diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/CMakeLists.txt b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/CMakeLists.txt index 001d73001cd1caff7256deb28181ff19fc17fe51..252a7e0a6ab744fb38a8ac5508b0f182d057f942 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/CMakeLists.txt +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/CMakeLists.txt @@ -27,7 +27,3 @@ atlas_add_library( TopConfiguration Root/*.cxx Root/*.h Root/*.icc # Install data files from the package: atlas_install_data( share/* ) - -# Install the python modules from the package -atlas_install_scripts( python/AodMetaDataReader.py ) - diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/AodMetaDataAccess.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/AodMetaDataAccess.cxx deleted file mode 100644 index 0797bca977b0d2a63d7a6633bb44906caa9e15a3..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/AodMetaDataAccess.cxx +++ /dev/null @@ -1,158 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - */ - -#include "TopConfiguration/AodMetaDataAccess.h" - -#include <algorithm> -#include <cassert> -#include <cstdlib> -#include <memory> -#include <sys/types.h> -#include <sys/wait.h> -#include <string> -#include <unistd.h> -#include <utility> -#include <vector> -#include <string> -#include <iostream> - -#include <boost/algorithm/string.hpp> -#include <boost/iostreams/device/file_descriptor.hpp> -#include <boost/iostreams/stream.hpp> -#include <boost/scope_exit.hpp> - -#include "PathResolver/PathResolver.h" - -#include "TopConfiguration/MsgCategory.h" -using namespace TopConfiguration; - -namespace top { - AodMetaDataAccess::AodMetaDataAccess() : m_data(nullptr) { } - - - AodMetaDataAccess::~AodMetaDataAccess() { - delete m_data; - } - - void AodMetaDataAccess::loadWithFilesFrom(std::string const& fileListPath) { - // Implementation using PathResolver - std::string filename = "AodMetaDataReader.py"; - // Use the path resolver to find the script which is stored as an executable in bin (no package name) - std::string exePath = PathResolver::find_file(filename, "PATH"); - - if (exePath == "") { - throw std::runtime_error("ERROR::AodMetaDataAccess - could not find file \n" + filename); - } - ATH_MSG_INFO("AodMetaDataAccess::Found " << exePath); - - - int pipefd[2] = { - -1, -1 - }; - if (pipe(pipefd) == -1) throw std::runtime_error("pipe() failed"); - int pid = fork(); - if (pid == -1) { - std::for_each(pipefd, pipefd + 2, close); - throw std::runtime_error("fork() failed"); - } - - if (pid == 0) { - close(pipefd[0]); - if (dup2(pipefd[1], STDOUT_FILENO) != -1) execlp( - exePath.c_str(), "AodMetaDataReader.py", "--format", "plain", "--files-from", fileListPath.c_str(), nullptr); - perror("popen(AodMetaDataReader.py)"); - _exit(1); - } - - BOOST_SCOPE_EXIT(pid) { - int status; - - while (waitpid(pid, &status, 0) == -1 && errno == EINTR) ; - } BOOST_SCOPE_EXIT_END - close(pipefd[1]); - - boost::iostreams::stream<boost::iostreams::file_descriptor_source> stream(pipefd[0], - boost::iostreams::close_handle); - - auto* data = new std::map< std::string, std::map< std::string, std::string > >(); // FIXME memory leak on exception - bool eof = false; - for (std::string line; std::getline(stream, line); ) { - if (eof) throw std::runtime_error("received data from AodMetaDataReader after end-of-stream marker"); - if (line.empty()) { - eof = true; - } else { - std::vector<std::string> tokens; - boost::split(tokens, line, boost::is_any_of("\t")); - if (tokens.size() != 3) throw std::runtime_error("received malformed record from AodMetaDataReader"); - auto& folder = (*data)[tokens[0]]; - bool inserted = folder.insert(std::make_pair(tokens[1], tokens[2])).second; - if (!inserted) throw std::runtime_error("received duplicate entry from AodMetaDataReader"); - } - } - if (!eof) throw std::runtime_error("data stream from AodMetaDataReader not properly terminated"); - m_data = data; - } - - std::string AodMetaDataAccess::get(std::string const& folderName, std::string const& keyName) const { - if (m_data == nullptr) throw std::logic_error("meta-data not loaded"); - auto it1 = m_data->find(folderName); - if (it1 == - m_data->end()) throw std::logic_error("the folderName " + folderName + " does not exist in the metadata"); - auto const& folder = it1->second; - auto it2 = folder.find(keyName); - if (it2 == folder.end()) throw std::logic_error("the keyName " + keyName + " does not exist in the metadata"); - - return m_data->at(folderName).at(keyName); - } - - std::string AodMetaDataAccess::get(std::string const& folderName, std::string const& keyName, - std::string const& defaultValue) const { - if (m_data == nullptr) throw std::logic_error("meta-data not loaded"); - auto it1 = m_data->find(folderName); - if (it1 == m_data->end()) return defaultValue; - - auto const& folder = it1->second; - auto it2 = folder.find(keyName); - if (it2 == folder.end()) return defaultValue; - - return it2->second; - } - - bool AodMetaDataAccess::valid() const { - return(m_data != nullptr); - } - - bool AodMetaDataAccess::isSimulation() const { - auto projectName = get("/TagInfo", "project_name"); - - if (boost::equals(projectName, "IS_SIMULATION")) return true; - - if (boost::starts_with(projectName, "data")) return false; - - throw std::invalid_argument("unrecognized value in meta-data entry for key 'project_name'"); - } - - bool AodMetaDataAccess::IsEventOverlayInputSim() const { - std::string overlay; - try { - overlay = get("/Simulation/Parameters", "IsEventOverlayInputSim"); - } catch (const std::logic_error& e) { - // the key does not exists - is data most likely - return false; - } - - if (boost::iequals(overlay, "TRUE")) return true; - - return false; - } - - bool AodMetaDataAccess::isAFII() const { - if (!isSimulation()) return false; // No need to check if not MC - - auto simulatorName = get("/Simulation/Parameters", "Simulator"); - if (boost::equals(simulatorName, "ATLFASTII")) // AFII will have this simulator - return true; - else return false; // Otherwise must be FullSim - } -} diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx index c1d8c1387fb78de9b813727afe5d81e7a5e827e4..20d541371a61ae1fb0aaf0bad8d63e632d372c04 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TopConfiguration/ConfigurationSettings.h" @@ -236,7 +236,7 @@ namespace top { "CategoryJES_FullJER_FullJMS"); registerParameter("LargeRJetUncertainties_JMR_NPModel", "FullJMR_COMB_newBinning (10 NP; aimed at the most precise jet-dependent measurements), SimpleJMR_COMB_newBinning (1 NP; flat 20 percent uncertainty, as it was recommended in the past) - for LCTopo large-R jet mass resolution uncertainties", - "FullJMR_COMB_newBinning", {"FullJMR_COMB_newBinning", "SimpleJMR_COMB_newBinning"}); + "FullJMR_COMB_newBinning", {"FullJMR_COMB","FullJMR_COMB_newBinning", "SimpleJMR_COMB_newBinning"}); registerParameter("AdvancedUsage_LargeRJetUncertaintiesConfigDir", "Path to directory containing large-R jet uncertainties config", "rel21/Winter2021"); @@ -349,7 +349,6 @@ namespace top { registerParameter("Systematics", "What to run? Nominal (just the nominal), All(do all systematics) ", "Nominal"); registerParameter("LibraryNames", "Names of any libraries that need loading"); - registerParameter("UseAodMetaData", "Whether to read xAOD meta-data from input files (default: True)", "True"); registerParameter("WriteTrackingData", "Whether to generate and store analysis-tracking data (default: True)", "True"); registerParameter("ObjectSelectionName", "Code used to define objects, e.g. ObjectLoaderStandardCuts"); diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx index bb756578ca1b9a5fbe4c13ac64ab6874a5a645e5..bacc7168598caa6b9708121e609f68b49e42c39c 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx @@ -3,7 +3,6 @@ */ #include "TopConfiguration/TopConfig.h" -#include "TopConfiguration/AodMetaDataAccess.h" #include "TopConfiguration/ConfigurationSettings.h" #include <algorithm> #include <cassert> @@ -72,12 +71,6 @@ namespace top { m_isAFII(false), // Is Data Overlay m_isDataOverlay(false), - // Generators - m_generators("SetMe"), - // AMITag - m_AMITag("SetMe"), - // Is Primary xAOD - m_isPrimaryxAOD(false), // Is Truth xAOD m_isTruthDxAOD(false), // Derivation name @@ -122,7 +115,6 @@ namespace top { m_nominalWeightNames(), m_nominalWeightName("SetMe"), m_nominalWeightIndex(-1), - m_MCweightsSize(-1), m_forceWeightIndex(false), // Top Parton History m_doTopPartonHistory(false), @@ -368,8 +360,6 @@ namespace top { // Number of events to skip (only for testing) m_numberOfEventsToSkip(0), - m_aodMetaData(new AodMetaDataAccess()), - // Systematics m_nominalHashValue(0), @@ -895,35 +885,6 @@ namespace top { this->setParticleLevelOverlapRemovalWithRapidity(false); } - // check if you are running over AFII samples - // only check the configuration file if the AodMetaData is not instatiated - if (m_aodMetaData->valid()) { - try{ - auto simulatorName = m_aodMetaData->get("/Simulation/Parameters", "Simulator"); - bool aodMetaDataIsAFII = m_aodMetaData->isAFII(); - ATH_MSG_INFO("AodMetaData :: Simulation Type " << simulatorName << " -> " << "Setting IsAFII to " << - aodMetaDataIsAFII); - this->setIsAFII(aodMetaDataIsAFII); - auto AMITagName = m_aodMetaData->get("/TagInfo", "AMITag"); - auto generatorsName = m_aodMetaData->get("/TagInfo", "generators"); - ATH_MSG_INFO("AodMetaData :: Generators Type " << generatorsName); - this->setGenerators(generatorsName); - ATH_MSG_INFO("AodMetaData :: AMITag " << AMITagName); - this->setAMITag(AMITagName); - } - catch (const std::logic_error& aodMetaDataError) { - ATH_MSG_WARNING("An error was encountered handling AodMetaData : " << aodMetaDataError.what()); - ATH_MSG_WARNING("We will attempt to read the IsAFII flag from your config."); - this->ReadIsAFII(settings); - ATH_MSG_WARNING("We will attempt to read the IsDataOverlay flag from your config."); - this->ReadIsDataOverlay(settings); - ATH_MSG_WARNING("Unfortunately, we can not read MC generators and AMITag without valid MetaData."); - this->setGenerators("unknown"); - this->setAMITag("unknown"); - } - } else { - this->ReadIsAFII(settings); - } } // Get list of branches to be filtered @@ -3792,10 +3753,6 @@ namespace top { fixConfiguration(); } - AodMetaDataAccess& TopConfig::aodMetaData() { - return *m_aodMetaData; - } - // Place into a private function to allow use without replication of code void TopConfig::ReadIsAFII(top::ConfigurationSettings* const& settings) { if (settings->value("IsAFII") == "True") this->setIsAFII(true); @@ -3837,22 +3794,6 @@ namespace top { return; } - void TopConfig::setAmiTag(std::string const& amiTag) { - assert(!m_configFixed); - if (m_amiTagSet == 0) { - m_amiTag = amiTag; - m_amiTagSet = 1; - } else if (m_amiTagSet > 0 && m_amiTag != amiTag) { - m_amiTag.clear(); - m_amiTagSet = -1; - } - } - - std::string const& TopConfig::getAmiTag() const { - assert(m_configFixed); - return m_amiTag; - } - // Function to return the year of data taking based on either run number (data) or random run number (MC) std::string TopConfig::getYear(unsigned int runnumber, const bool isMC) { diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/AodMetaDataAccess.h b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/AodMetaDataAccess.h deleted file mode 100644 index ac3e4a52ba93811bd4266a61b6a6dd7b9d193380..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/AodMetaDataAccess.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - */ - -#ifndef TOPCONFIGURATION_AODMETADATAACCESS_H -#define TOPCONFIGURATION_AODMETADATAACCESS_H - -#include <map> -#include <string> - -namespace top { - class AodMetaDataAccess { - public: - AodMetaDataAccess(); - virtual ~AodMetaDataAccess(); - virtual void loadWithFilesFrom(std::string const& fileListPath); - - /** - * @brief retrieve an AOD meta-data value - * - * @param folderName the folder name, e.g. "/TagInfo" - * @param keyName the key name, e.g. "project_name" - * - * @return the meta-data value as a string - */ - std::string get(std::string const& folderName, std::string const& keyName) const; - - /** - * @brief retrieve an AOD meta-data value - * - * @param folderName the folder name, e.g. "/TagInfo" - * @param keyName the key name, e.g. "project_name" - * - * @return the meta-data value as a string, or @p defaultValue if the meta-data entry does not exist - */ - std::string get(std::string const& folderName, std::string const& keyName, std::string const& defaultValue) const; - - /** - * @brief check whether AOD meta-data has been loaded - * - * @return whether the AOD meta-data has been loaded - */ - bool valid() const; - - /** - * @brief check whether the data are simulated or real - * - * @return true for MC, false for real data - */ - bool isSimulation() const; - - /** - * @brief check whether the sample is MCoverlay or not - * - * @return true if it is overlay - */ - bool IsEventOverlayInputSim() const; - - /** - * @brief check whether this sample is simulation, and then check if it was simulated with ATLFASTII - * - * @return true for AFII, false otherwise (FS or Data) - */ - bool isAFII() const; - private: - std::map<std::string, std::map< std::string, std::string > >* m_data; - }; -} - -#endif diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h index eb141df589c13620366217cd3c1d97499c9c1666..ad12e5deb18a81041e22a2fa860a2fe9dbfcc53b 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef ANALYSISTOP_TOPCONFIGURATION_TOPCONFIG_H @@ -35,7 +35,6 @@ #include "TopDataPreparation/SampleXsection.h" namespace top { - class AodMetaDataAccess; class ConfigurationSettings; class TopConfig final { @@ -170,30 +169,6 @@ namespace top { } } - // Generators name - inline std::string getGenerators() const {return m_generators;} - inline void setGenerators(const std::string value) { - if (!m_configFixed) { - m_generators = value; - } - } - - // AMITag - inline std::string getAMITag() const {return m_AMITag;} - inline void setAMITag(const std::string& value) { - if (!m_configFixed) { - m_AMITag = value; - } - } - - // Is this a Primary xAOD? - inline bool isPrimaryxAOD() const {return m_isPrimaryxAOD;} - inline void setIsPrimaryxAOD(const bool value) { - if (!m_configFixed) { - m_isPrimaryxAOD = value; - } - } - // Is this a Truth DxAOD? inline bool isTruthDxAOD() const {return m_isTruthDxAOD;} inline void setIsTruthDxAOD(const bool value) { @@ -210,10 +185,6 @@ namespace top { } } - // AMI tag from metadata - std::string const& getAmiTag() const; - void setAmiTag(std::string const& amiTag); - inline unsigned int getDSID() const {return m_DSID;} inline void setDSID(unsigned int value) { // Check here if this is a sherpa 2.2 V+jets sample @@ -382,12 +353,6 @@ namespace top { inline size_t nominalWeightIndex() const {return m_nominalWeightIndex;} inline bool forceNominalWeightFallbackIndex() const {return m_forceWeightIndex;} - inline void setMCweightsVectorSize(size_t weights_size) { - m_MCweightsSize = weights_size; - } - - inline size_t MCweightsVectorSize() const {return m_MCweightsSize;} - // Top Parton History inline bool doTopPartonHistory() const {return m_doTopPartonHistory;} inline void setTopPartonHistory() { @@ -2008,9 +1973,6 @@ namespace top { unsigned int ttreeIndex(const std::size_t hash) const; unsigned int ttreeIndexLoose(const std::size_t hash) const; - AodMetaDataAccess& aodMetaData(); - AodMetaDataAccess const& aodMetaData() const {return *m_aodMetaData;} - // Function to handle release series such that it can be cleaner to update in the future void setReleaseSeries(); inline int getReleaseSeries() const {return m_release_series;} @@ -2065,6 +2027,10 @@ namespace top { inline const TreeFilter* getTreeFilter() const { return m_treeFilter.get();} inline const std::unordered_map<std::string, std::string>& GetMCMCTranslator() const {return m_showerMCMCtranslator;} + + // Private function only to simplify the setting of AFII values + void ReadIsAFII(top::ConfigurationSettings* const& settings); + private: // Prevent any more configuration @@ -2143,12 +2109,8 @@ namespace top { bool m_isDataOverlay; std::vector<std::string> m_filterBranches, m_filterPartonLevelBranches, m_filterParticleLevelBranches, m_filterNominalLooseBranches, m_filterNominalBranches; std::string m_generators; - std::string m_AMITag; - bool m_isPrimaryxAOD; bool m_isTruthDxAOD = false; std::string m_derivationStream; - std::string m_amiTag; - int m_amiTagSet = 0; // Do fakes MM weights calculation? - only for data loose bool m_doFakesMMWeightsIFF; @@ -2217,7 +2179,6 @@ namespace top { std::vector<std::string> m_nominalWeightNames; std::string m_nominalWeightName; size_t m_nominalWeightIndex; - size_t m_MCweightsSize; bool m_forceWeightIndex; // to force useage of index instead of metadata // Top Parton History @@ -2712,9 +2673,6 @@ namespace top { // Number of events to skip (for testing) unsigned int m_numberOfEventsToSkip; - // AOD meta-data access service - AodMetaDataAccess* m_aodMetaData; - // Systematics std::size_t m_nominalHashValue; @@ -2834,9 +2792,6 @@ namespace top { std::shared_ptr<std::unordered_map<std::size_t, unsigned int> > m_systAllTTreeIndex; std::shared_ptr<std::unordered_map<std::size_t, unsigned int> > m_systAllTTreeLooseIndex; - // Private function only to simplify the setting of AFII values - void ReadIsAFII(top::ConfigurationSettings* const& settings); - // Private function only to simplify the setting of DataOverlay values void ReadIsDataOverlay(top::ConfigurationSettings* const& settings); diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/python/AodMetaDataReader.py b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/python/AodMetaDataReader.py deleted file mode 100755 index 6e692a5af0e0211b2cd0fd60a6029d20999fc817..0000000000000000000000000000000000000000 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/python/AodMetaDataReader.py +++ /dev/null @@ -1,281 +0,0 @@ -#!/usr/bin/env python - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -# -# Extract meta-data from xAODs -- without the help of Athena. -# - -import argparse -import array -import ast -import json -import numbers -import os -import pickle -import re -import shutil -import sys -import tempfile - - -if not __name__ == '__main__': - # We can't risk loading our dictionaries into your PyROOT process. So please, use the subprocess - # module and the pickle interface. (If someone asks, we might implement a helper function.) - raise ImportError('AodMetaDataReader cannot be loaded as a module') - - -# supported types of meta-data values (storage type, member name in IOVPayloadContainer, display type) -payloadItemDescs = [ - ('bool', 'm_bool', bool), - ('char', 'm_char', int), - ('unsigned char', 'm_unsignedChar', int), - ('short', 'm_short', int), - ('unsigned short', 'm_unsignedShort', int), - ('int', 'm_int', int), - ('unsigned int', 'm_unsignedInt', int), - ('long', 'm_long', int), - ('unsigned long', 'm_unsignedLong', int), - ('Long64_t', 'm_longLong', int), - ('ULong64_t', 'm_unsignedLongLong', int), - ('float', 'm_float', float), - ('double', 'm_double', float), - # long double not actually part of the IOVPayloadContainer, but the enum AttrListTypes contains it -- so we must add it here - ('long double', 'm_longDouble', float), - ('std::string', 'm_string', str), - ('ULong64_t', 'm_date', int), - ('ULong64_t', 'm_timeStamp', int), -] -# whether the dictionary has been loaded -loadedDictionary = False - - -# create minimal header for reading persistent objects representing xAOD meta-data -def writeDictionaryHeader(f): - f.write(''' -#include <string> -#include <vector> -#include <Rtypes.h> -''') - f.write(''' -class AttrListIndexes { -public: - int getTypeIndex() const { return (m_typeIndex & 0x3f); } - int getNameIndex() const { return (m_typeIndex >> 6); } - int getObjIndex() const { return m_objIndex; } -private: - unsigned short m_typeIndex; - unsigned short m_objIndex; -}; -''') - f.write('struct IOVPayloadContainer_p1 {\n') - f.write(' std::vector<AttrListIndexes> m_attrIndexes;') - for payloadItemDesc in payloadItemDescs: - if not payloadItemDesc: - continue - f.write(' std::vector<%s> %s;\n' % (payloadItemDesc[:2])) - f.write(' std::vector<std::string> m_attrName;') - f.write('};\n') - f.write(''' -struct IOVMetaDataContainer_p1 { - std::string m_folderName; - std::string m_folderDescription; - IOVPayloadContainer_p1 m_payload; -}; -''') - - -# load classes for reading persistent objects representing xAOD meta-data -def loadDictionary(): - global loadedDictionary - if loadedDictionary: - return - loadedDictionary = True - tempPath = tempfile.mkdtemp() - try: - headerPath = os.path.join(tempPath, 'AodMetaData.h') - with open(headerPath, 'w') as f: - writeDictionaryHeader(f) - ROOT.gROOT.LoadMacro('%s+' % headerPath) - finally: - shutil.rmtree(tempPath, ignore_errors=True) - - -def extractMetaData(path): - folderNames = '/Generation/Parameters', '/Simulation/Parameters', '/Digitization/Parameters', '/TagInfo' - loadDictionary() - f = ROOT.TFile.Open(path) - if not f: - raise RuntimeError('Failed to open file: %s' % repr(path)) - metaData = {} - try: - metaDataTree = f.MetaData - metaDataTree.SetBranchStatus('*', False) - folderNamesFound = [] - for folderName in folderNames: - found = array.array('I', [0]) - metaDataTree.SetBranchStatus(folderName.replace('/', '_'), True, found) - if found[0]: - folderNamesFound.append(folderName) - else: - metaData[folderName] = None - for metaDataRecord in metaDataTree: - for folderName in folderNamesFound: - payload = getattr(metaDataRecord, folderName.replace('/', '_')).m_payload - folderData = {} - for attrIndex in payload.m_attrIndexes: - typeIndex, nameIndex, objIndex = attrIndex.getTypeIndex(), attrIndex.getNameIndex(), attrIndex.getObjIndex() - payloadItemDesc = ( payloadItemDescs[typeIndex] if typeIndex < len(payloadItemDescs) else None ) - key = payload.m_attrName.at(nameIndex) - value = ( payloadItemDesc[2](getattr(payload, payloadItemDesc[1]).at(objIndex)) if payloadItemDesc else TypeError ) - if not key in folderData: - folderData[key] = value - elif not folderData[key] == value: - folderData[key] = ValueError - metaData[folderName] = folderData - finally: - f.Close() - return metaData - - -# merge two meta-data dictionaries -# Conflicting values are set to ValueError. -# Folders/values that exist in one but not another are set to None. -def mergeMetaData(md1, md2): - assert len(md1) == len(md2) - md = {} - for folderName, folderData1 in md1.items(): - folderData2 = md2[folderName] - if folderData1 is None or folderData2 is None: - folderData = None - else: - folderData = dict( (key, None) for key in folderData1 ) - folderData.update( (key, None) for key in folderData2 ) - for key in folderData: - if key in folderData1 and key in folderData2: - if folderData1[key] == folderData2[key]: - folderData[key] = folderData1[key] - else: - folderData[key] = ValueError - md[folderName] = folderData - return md - - -# add derived meta-data for convenience -def augmentMetaData(metaData): - derived = {} - try: - value = metaData['/Generation/Parameters']['HepMCWeightNames'] - mcWeightIndexByName = ast.literal_eval(value) - mcWeightNames = [] - for name, index in mcWeightIndexByName.items(): - if index >= len(mcWeightNames): - mcWeightNames += ( None for _ in xrange(len(mcWeightNames), index + 1) ) - elif not mcWeightNames[index] is None: - raise KeyError('multiple names for HepMCWeight index %d' % index) - mcWeightNames[index] = name - derived['HepMCWeightNames'] = ','.join(mcWeightNames) - except Exception: - # TODO proper error handling - pass - metaData['_derived'] = derived - - -# file-object wrapper around os.dup -def fdup(fileObject): - fd2 = os.dup(fileObject.fileno()) - fileObject2 = None - try: - fileObject2 = os.fdopen(fd2, fileObject.mode, -1) - finally: - if fileObject2 is None: - os.close(fd2) - return fileObject2 - - -# file-object wrapper around os.dup2 -def fdup2(fileObject, fileObject2): - os.dup2(fileObject.fileno(), fileObject2.fileno()) - - -# write out meta-data as tab-separated plain text -def dumpPlain(metaData, out): - for folderName in sorted(metaData): - folderData = metaData[folderName] - if folderData is None: - continue - for key in sorted(folderData): - value = folderData[key] - if isinstance(value, str): - pass - elif isinstance(value, numbers.Number): - value = repr(value) - else: - # keys with conflicting/unrecognized values are completely ignored - continue - value = re.sub(r'[^\x21-\x7e]+', ' ', value).strip() - out.write('%s\t%s\t%s\n' % (folderName, key, value)) - out.write('\n') - - -# supported meta-data dumpers -_dumpers = { - 'plain': dumpPlain, - 'pickle': pickle.dump, - 'json': json.dump, - } - - -def main(argv, out): - parser = argparse.ArgumentParser() - parser.add_argument('--format', dest='dumper', action='store', choices=_dumpers.keys()) - parser.add_argument('--pickle', dest='dumper', action='store_const', const='pickle') - parser.add_argument('--files-from', '-T', dest='filesFrom', action='store') - parser.add_argument('--output', dest='outputFile', action='store') - parser.add_argument('files', action='store', nargs='*') - parser.set_defaults(dumper='plain') - options = parser.parse_args(argv[1:]) - - paths = [] - if options.filesFrom: - with open(options.filesFrom, 'r') as f: - for line in f: - paths.extend(filter(None, line.rstrip('\n\r').split(','))) - if options.files: - paths += options.files - dumper = _dumpers[options.dumper] - - path = paths[0] - metaData = extractMetaData(path) - for path in paths[1:]: - metaData = mergeMetaData(metaData, extractMetaData(path)) - - augmentMetaData(metaData) - if options.outputFile: - with tempfile.NamedTemporaryFile(dir=os.path.dirname(options.outputFile), delete=True) as f: - dumper(metaData, f) - f.flush() - os.link(f.name, options.outputFile) - else: - dumper(metaData, out) - out.flush() - - -# load ROOT in batch mode, skip loading of any (possibly conflicting) ROOT dictionaries through rootlogon -def loadROOT(): - args = sys.argv[1:] - try: - sys.argv[1:] = '-b', '-l', '-n' - import ROOT - ROOT.gErrorIgnoreLevel = ROOT.kError - globals()['ROOT'] = ROOT - finally: - sys.argv[1:] = args - - -# acquire copy of stdout, then redirect /dev/null -# (so stray prints by ROOT don't mess up our dumps) -with fdup(sys.stdout) as out: - with open(os.devnull, 'w') as nulout: - fdup2(nulout, sys.stdout) - loadROOT() - main(sys.argv, out) diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/Root/ScaleFactorCalculator.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/Root/ScaleFactorCalculator.cxx index 315b8013e317b2f6383dedcad65eb846b4904835..c04cf2ee1deee848e47ff704a8dfe62e60e997c9 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/Root/ScaleFactorCalculator.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/Root/ScaleFactorCalculator.cxx @@ -29,7 +29,6 @@ namespace top { m_sherpa_22_reweight_tool("PMGSherpa22VJetsWeightTool"), m_globalLeptonTriggerSF(nullptr), m_pmg_truth_weight_tool("PMGTruthWeightTool"), - m_sample_multiple_MCweights(false), m_nominal_weight_name("") { declareProperty("config", m_config); } @@ -113,56 +112,30 @@ namespace top { } ///-- Start using the PMG tool to get the nominal event weights --/// // in case PMGTruthWeightTool init fails, e.g. due to broken metadata + // leave the possibility to force nominal weight above if (!m_pmg_truth_weight_tool.retrieve()) { - // we don't know how many MC weights there are and user didn't specify nominal index - if (m_config->MCweightsVectorSize() == size_t(-1) - && m_config->nominalWeightIndex() == size_t(-1)) { - ATH_MSG_ERROR("\nPMGTruthWeightTool instance could not be retrieved." - << "We could not determine the number of MC generator weights in this sample.\n" - << "We cannot determine the nominal MC weight. Please specify the index of " - << "nominal MC weight via config option NominalWeightFallbackIndex."); - return StatusCode::FAILURE; - } - // we know there are multiple MC weights and user didn't specify nominal index - if (m_config->MCweightsVectorSize() > 1 - && m_config->nominalWeightIndex() == size_t(-1)) { - ATH_MSG_ERROR("\nPMGTruthWeightTool instance could not be retrieved." - << "We detect multiple MC generator weights in the sample.\n " - << "We cannot determine which one is nominal. Please specify the index of " - << "nominal MC weight via config option NominalWeightFallbackIndex."); - return StatusCode::FAILURE; - } - // only one MC weight in the sample, this is sovable unambiguously - if (m_config->MCweightsVectorSize() == 1) { - m_config->setNominalWeightIndex(0); - ATH_MSG_WARNING("PMGTruthWeightTool instance could not be retrieved." - << "This sample has only one MC weight, will use that one."); - return StatusCode::SUCCESS; - } - // possibly multiple weights, but the user already gave us fallback option - ATH_MSG_WARNING("PMGTruthWeightTool instance could not be retrieved." - << "Falling back to specified NominalWeightFallbackIndex " - << m_config->nominalWeightIndex()); - return StatusCode::SUCCESS; + ATH_MSG_ERROR("\nPMGTruthWeightTool instance could not be retrieved." + << "\nWe cannot determine if this sample has multiple weights, " + << "nor which one is nominal. Please specify the index of " + << "nominal MC weight via config option NominalWeightFallbackIndex, " + << " and set ForceNominalWeightFallbackIndex to true."); + return StatusCode::FAILURE; } + // PMGTruthWeightTool was initialized succesfully, let's see if we have weights const std::vector<std::string>& pmg_weight_names = m_pmg_truth_weight_tool->getWeightNames(); - m_sample_multiple_MCweights = (pmg_weight_names.size() > 1); - if (!m_sample_multiple_MCweights) { - ATH_MSG_WARNING("PMGTruthWeightTool did not find multiple MC generator weights in metadata for this sample." - << "\nThis most likely means that the sample has only one weight." - << "\nCheck the top-xaod output for PMGTruthWeightTool-related errors just to be sure."); - if (m_config->nominalWeightIndex() != size_t(-1)) { - ATH_MSG_WARNING("Using MC weight index " << m_config->nominalWeightIndex() - << " as specified in config."); - } else { - ATH_MSG_WARNING("Will use 0th weight index. " - << "If you want a different weight, specify it via config option NominalWeightFallbackIndex"); + + // scenario 1 -- sample has only one weight + if (pmg_weight_names.size() == 1) { + ATH_MSG_INFO("PMGTruthWeightTool reports single weight in sample, assuming nominal weight index = 0"); m_config->setNominalWeightIndex(0); - } return StatusCode::SUCCESS; } - // here we try to find the first weight name from the NominalWeightNames config option, that matches any MC weight in the sample + + // scenario 2 -- sample has multiple weights, try to find the nominal one + // one should not blindly assume that 0th weight is nominal + // here we try to find the first weight name from the NominalWeightNames config option, + // which that matches any MC weight in the sample const std::vector<std::string> &nominal_weight_names = m_config->nominalWeightNames(); bool found_match = false; std::vector<std::string> multiple_matches; diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/TopCorrections/ScaleFactorCalculator.h b/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/TopCorrections/ScaleFactorCalculator.h index 37a71aca316a546920ed28e3da05bbee5c316b3b..b594047928b59792812f1efc0b570b0e1a5a8f48 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/TopCorrections/ScaleFactorCalculator.h +++ b/PhysicsAnalysis/TopPhys/xAOD/TopCorrections/TopCorrections/ScaleFactorCalculator.h @@ -72,7 +72,6 @@ namespace top { std::unique_ptr<top::GlobalLeptonTriggerCalculator> m_globalLeptonTriggerSF; ToolHandle<PMGTools::IPMGTruthWeightTool> m_pmg_truth_weight_tool; - bool m_sample_multiple_MCweights; std::string m_nominal_weight_name; }; } // namespace top diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/Root/ElectronLikelihoodMC15.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/Root/ElectronLikelihoodMC15.cxx index eaea26e33f74cac0d7c35cf1a8f26da87bafa749..7cc4aff94c90b18d43111d2c5905957120084ab2 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/Root/ElectronLikelihoodMC15.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/Root/ElectronLikelihoodMC15.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TopObjectSelectionTools/ElectronLikelihoodMC15.h" @@ -74,14 +74,6 @@ namespace top { top::check(m_deadHVTool.retrieve(), "Failed to setup Egamma DeadHVCellRemovalTool"); } - ElectronLikelihoodMC15::ElectronLikelihoodMC15(const bool, - const double ptcut, const bool vetoCrack, - const std::string& operatingPoint, - const std::string& operatingPointLoose, StandardIsolation* isolation, - const bool applyTTVACut, const bool applyChargeIDCut) : - ElectronLikelihoodMC15::ElectronLikelihoodMC15(ptcut, vetoCrack, operatingPoint, - operatingPointLoose, isolation, applyTTVACut, applyChargeIDCut) {} - bool ElectronLikelihoodMC15::passSelection(const xAOD::Electron& el) const { if (!passSelectionNoIsolation(el, m_operatingPoint_DF, m_operatingPoint)) return false; diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/TopObjectSelectionTools/ElectronLikelihoodMC15.h b/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/TopObjectSelectionTools/ElectronLikelihoodMC15.h index 75dbc4c6174f6f12c454c7247950518d6d631d52..c9863fbda1f55d20d6df42b93eb52726d9331b86 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/TopObjectSelectionTools/ElectronLikelihoodMC15.h +++ b/PhysicsAnalysis/TopPhys/xAOD/TopObjectSelectionTools/TopObjectSelectionTools/ElectronLikelihoodMC15.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef ELECTRONLIKELIHOODMC15_H_ @@ -33,10 +33,7 @@ namespace top { const std::string& operatingPointLoose, StandardIsolation* isolation, const bool applyTTVACut = true, const bool applyChargeIDCut = false); // this constructor is kept for backward compatibility - isPrimaryxAOD is not needed anymore - ElectronLikelihoodMC15(const bool, - const double ptcut, const bool vetoCrack, const std::string& operatingPoint, - const std::string& operatingPointLoose, StandardIsolation* isolation, - const bool applyTTVACut = true, const bool applyChargeIDCut = false); + virtual ~ElectronLikelihoodMC15() {} /** * @brief Selection for the main analysis (i.e. tight object definitions). diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/ATLAS_CHECK_THREAD_SAFETY b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 0000000000000000000000000000000000000000..43fe75649c6dc0f8b2b0c4bdbde8aae7cbef02f5 --- /dev/null +++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +PhysicsAnalysis/TruthParticleID/McParticleEvent diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthEtIsolations.h b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthEtIsolations.h index dfd6c00c4d9f24e3332b2b34e212419fe0994037..2afec5280e4b85b4a853261bd1fed116c8ac8f52 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthEtIsolations.h +++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthEtIsolations.h @@ -1,7 +1,7 @@ ///////////////////////// -*- C++ -*- ///////////////////////////// /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // TruthEtIsolations.h @@ -210,7 +210,7 @@ class TruthEtIsolations /// The default Et isolation energy which is being returned when /// I don't know what to return. /// That's ugly but for backward compatibility's sake... Next EDM :P - static EtIsol_t m_dfltEtIsols; + static const EtIsol_t m_dfltEtIsols; }; /////////////////////////////////////////////////////////////////// diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleParamDefs.h b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleParamDefs.h index 7d07ac4884fd2087bff73e4e3ae5fcc206d6b48d..9d01b0f0d7ac003c9107754ddc3be04c80f86bb5 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleParamDefs.h +++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleParamDefs.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -36,7 +36,7 @@ namespace TruthParticleParameters { /// The actual definition of delta R cuts for each cone inline double coneCut( const TruthParticleParameters::ConeSize idx ) { - static ConeCuts_t coneCuts = { + static const ConeCuts_t coneCuts = { { 0.10, // TruthParticleParameters::etcone10 0.20, // TruthParticleParameters::etcone20 diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthEtIsolations.cxx b/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthEtIsolations.cxx index a6d1a6471d0ba69f59174d1fdff356a3e943ade5..16bf2cca0059ac015f610ebd68d361f2506d242f 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthEtIsolations.cxx +++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthEtIsolations.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -28,7 +28,7 @@ typedef TruthEtIsolations::GenEventLink_t GenEventLink_t; typedef TruthEtIsolations::EtIsol_t EtIsol_t; -EtIsol_t TruthEtIsolations::m_dfltEtIsols = { +const EtIsol_t TruthEtIsolations::m_dfltEtIsols = { { -999.*CLHEP::GeV, -999.*CLHEP::GeV, -999.*CLHEP::GeV, -999.*CLHEP::GeV, -999.*CLHEP::GeV, -999.*CLHEP::GeV, -999.*CLHEP::GeV, -999.*CLHEP::GeV diff --git a/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthParticleBase.cxx b/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthParticleBase.cxx index 9c0a24f46a754c79faf7aede4bbd3bfc2d1e988d..c3cacf281ccdf4b76cdbe8a7a1fd7c14579cc72c 100644 --- a/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthParticleBase.cxx +++ b/PhysicsAnalysis/TruthParticleID/McParticleEvent/src/TruthParticleBase.cxx @@ -1,7 +1,7 @@ ///////////////////////// -*- C++ -*- ///////////////////////////// /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // TruthParticleBase.cxx @@ -75,7 +75,7 @@ TruthParticleBase::origin() const const ElementLink<VxContainer>& TruthParticleBase::originLink() const { - static ElementLink<VxContainer> origin; + static const ElementLink<VxContainer> origin; return origin; } diff --git a/PhysicsAnalysis/UpgradePhys/SmearingFunctions/UpgradePerformanceFunctions/Root/TrackingPerformanceFunctions.cxx b/PhysicsAnalysis/UpgradePhys/SmearingFunctions/UpgradePerformanceFunctions/Root/TrackingPerformanceFunctions.cxx index 4bf9d8b8a2531e37fc2fe5c1eee7baa6eabd42c0..45f161cb78e353515adbcdf1e1ec59b61b89351a 100644 --- a/PhysicsAnalysis/UpgradePhys/SmearingFunctions/UpgradePerformanceFunctions/Root/TrackingPerformanceFunctions.cxx +++ b/PhysicsAnalysis/UpgradePhys/SmearingFunctions/UpgradePerformanceFunctions/Root/TrackingPerformanceFunctions.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef TRACKINGPERFORMANCEFUNCTIONS_CXX @@ -10,20264 +10,49 @@ namespace UpgradePerformance { // Forward declarations of these very long lookup tables - double ITKPercentageresol_LoIfix(double ptMeV, double eta); - double ITKPercentageresol_LoIVFfix(double ptMeV, double eta); - double ITKPercentageresol_LoIfixBronze(double ptMeV, double eta); - double ITKPercentageresol_ExtBrl(double ptMeV, double eta); - double ITKPercentageresol_InclBrl(double ptMeV, double eta); + // double ITKPercentageresol_YourFavoriteLayout(double ptMeV, double eta); } -float UpgradePerformanceFunctions::getTrackPtResolution(float ptMeV, float eta) { + +float UpgradePerformanceFunctions::getTrackPtResolution(float /*ptMeV*/, float /*eta*/) { using namespace UpgradePerformance; switch (m_layout ) { - case ExtBrl : - return ptMeV * ITKPercentageresol_ExtBrl(ptMeV, fabs(eta)); - break; - case InclBrl : - return ptMeV * ITKPercentageresol_InclBrl(ptMeV, fabs(eta)); - break; - case LoI : - return ptMeV * ITKPercentageresol_LoIfix(ptMeV, fabs(eta)); - break; - case bronze : - return ptMeV * ITKPercentageresol_LoIfixBronze(ptMeV, fabs(eta)); - break; - case gold : - case silver : - case LoIVF : - return ptMeV * ITKPercentageresol_LoIVFfix(ptMeV, fabs(eta)); - break; + //case yourFavoriteLayout : + //return ptMeV * ITKPercentageresol_YourFavoriteLayout(ptMeV, std::abs(eta)); + //break; default : - std::cout << "getTrackPtResolution: Invalid layout." << std::endl; + std::cout << "ERROR getTrackPtResolution: No recent ITk layout supported yet. Please get in touch with Upgrade Tracking group to get updated numbers (atlas-cp-tracking-upgrade@cern.ch)" << std::endl; break; } return 0.; } -float UpgradePerformanceFunctions::getTrackInvPtResolution(float invptMeV, float eta) { +float UpgradePerformanceFunctions::getTrackInvPtResolution(float /*invptMeV*/, float /*eta*/) { using namespace UpgradePerformance; switch (m_layout ) { - case ExtBrl : - return invptMeV * ITKPercentageresol_ExtBrl(1./invptMeV, fabs(eta)); - break; - case InclBrl : - return invptMeV * ITKPercentageresol_InclBrl(1./invptMeV, fabs(eta)); - break; - case LoI : - return invptMeV * ITKPercentageresol_LoIfix(1./invptMeV, fabs(eta)); - break; - case bronze : - return invptMeV * ITKPercentageresol_LoIfixBronze(1./invptMeV, fabs(eta)); - break; - case gold : - case silver : - case LoIVF : - return invptMeV * ITKPercentageresol_LoIVFfix(1./invptMeV, fabs(eta)); - break; + //case yourFavoriteLayout : + //return invptMeV * ITKPercentageresol_YourFavoriteLayout(1./invptMeV, std::abs(eta)); + //break; default : - std::cout << "getTrackPtResolution: Invalid layout." << std::endl; + std::cout << "ERROR getTrackInvPtResolution: No recent ITk layout supported yet. Please get in touch with Upgrade Tracking group to get updated numbers (atlas-cp-tracking-upgrade@cern.ch)" << std::endl; break; } return 0.; } -float UpgradePerformanceFunctions::getTrackPtRelativeResolution(float ptMeV, float eta) { +float UpgradePerformanceFunctions::getTrackPtRelativeResolution(float /*ptMeV*/, float /*eta*/) { using namespace UpgradePerformance; switch (m_layout ) { - case ExtBrl : - return ITKPercentageresol_ExtBrl(ptMeV, fabs(eta)); - break; - case InclBrl : - return ITKPercentageresol_InclBrl(ptMeV, fabs(eta)); - break; - case LoI : - return ITKPercentageresol_LoIfix(ptMeV, fabs(eta)); - break; - case bronze : - return ITKPercentageresol_LoIfixBronze(ptMeV, fabs(eta)); - break; - case gold : - case silver : - case LoIVF : - return ITKPercentageresol_LoIVFfix(ptMeV, fabs(eta)); - break; + //case yourFavoriteLayout : + //return ITKPercentageresol_YourFavoriteLayout(ptMeV, std::abs(eta)); + //break; default : - std::cout << "getTrackPtResolution: Invalid layout." << std::endl; + std::cout << "ERROR getTrackPtRelativeResolution: No recent ITk layout supported yet. Please get in touch with Upgrade Tracking group to get updated numbers (atlas-cp-tracking-upgrade@cern.ch)" << std::endl; break; } return 0.; } -// Fractional resolution in % -double UpgradePerformance::ITKPercentageresol_LoIVFfix(double ptMeV, double eta){ - double ptGeV = ptMeV/1000.; - static TH2D *ssigpTa; - static bool init = false; - - if (fabs(eta)>4.04) return 0.; - - if(!init){ - Double_t xAxis1[402] = {0, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.075, 0.085, 0.095, 0.105, 0.115, 0.125, 0.135, 0.145, 0.155, 0.165, 0.175, 0.185, 0.195, 0.205, 0.215, 0.225, 0.235, 0.245, 0.255, 0.265, 0.275, 0.285, 0.295, 0.305, 0.315, 0.325, 0.335, 0.345, 0.355, 0.365, 0.375, 0.385, 0.395, 0.405, 0.415, 0.425, 0.435, 0.445, 0.455, 0.465, 0.475, 0.485, 0.495, 0.505, 0.515, 0.525, 0.535, 0.545, 0.555, 0.565, 0.575, 0.585, 0.595, 0.605, 0.615, 0.625, 0.635, 0.645, 0.655, 0.665, 0.675, 0.685, 0.695, 0.705, 0.715, 0.725, 0.735, 0.745, 0.755, 0.765, 0.775, 0.785, 0.795, 0.805, 0.815, 0.825, 0.835, 0.845, 0.855, 0.865, 0.875, 0.885, 0.895, 0.905, 0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005, 1.015, 1.025, 1.035, 1.045, 1.055, 1.065, 1.075, 1.085, 1.095, 1.105, 1.115, 1.125, 1.135, 1.145, 1.155, 1.165, 1.175, 1.185, 1.195, 1.205, 1.215, 1.225, 1.235, 1.245, 1.255, 1.265, 1.275, 1.285, 1.295, 1.305, 1.315, 1.325, 1.335, 1.345, 1.355, 1.365, 1.375, 1.385, 1.395, 1.405, 1.415, 1.425, 1.435, 1.445, 1.455, 1.465, 1.475, 1.485, 1.495, 1.505, 1.515, 1.525, 1.535, 1.545, 1.555, 1.565, 1.575, 1.585, 1.595, 1.605, 1.615, 1.625, 1.635, 1.645, 1.655, 1.665, 1.675, 1.685, 1.695, 1.705, 1.715, 1.725, 1.735, 1.745, 1.755, 1.765, 1.775, 1.785, 1.795, 1.805, 1.815, 1.825, 1.835, 1.845, 1.855, 1.865, 1.875, 1.885, 1.895, 1.905, 1.915, 1.925, 1.935, 1.945, 1.955, 1.965, 1.975, 1.985, 1.995, 2.005, 2.015, 2.025, 2.035, 2.045, 2.055, 2.065, 2.075, 2.085, 2.095, 2.105, 2.115, 2.125, 2.135, 2.145, 2.155, 2.165, 2.175, 2.185, 2.195, 2.205, 2.215, 2.225, 2.235, 2.245, 2.255, 2.265, 2.275, 2.285, 2.295, 2.305, 2.315, 2.325, 2.335, 2.345, 2.355, 2.365, 2.375, 2.385, 2.395, 2.405, 2.415, 2.425, 2.435, 2.445, 2.455, 2.465, 2.475, 2.485, 2.495, 2.505, 2.515, 2.525, 2.535, 2.545, 2.555, 2.565, 2.575, 2.585, 2.595, 2.605, 2.615, 2.625, 2.635, 2.645, 2.655, 2.665, 2.675, 2.685, 2.695, 2.705, 2.715, 2.725, 2.735, 2.745, 2.755, 2.765, 2.775, 2.785, 2.795, 2.805, 2.815, 2.825, 2.835, 2.845, 2.855, 2.865, 2.875, 2.885, 2.895, 2.905, 2.915, 2.925, 2.935, 2.945, 2.955, 2.965, 2.975, 2.985, 2.995, 3.005, 3.015, 3.025, 3.035, 3.045, 3.055, 3.065, 3.075, 3.085, 3.095, 3.105, 3.115, 3.125, 3.135, 3.145, 3.155, 3.165, 3.175, 3.185, 3.195, 3.205, 3.215, 3.225, 3.235, 3.245, 3.255, 3.265, 3.275, 3.285, 3.295, 3.305, 3.315, 3.325, 3.335, 3.345, 3.355, 3.365, 3.375, 3.385, 3.395, 3.405, 3.415, 3.425, 3.435, 3.445, 3.455, 3.465, 3.475, 3.485, 3.495, 3.505, 3.515, 3.525, 3.535, 3.545, 3.555, 3.565, 3.575, 3.585, 3.595, 3.605, 3.615, 3.625, 3.635, 3.645, 3.655, 3.665, 3.675, 3.685, 3.695, 3.705, 3.715, 3.725, 3.735, 3.745, 3.755, 3.765, 3.775, 3.785, 3.795, 3.805, 3.815, 3.825, 3.835, 3.845, 3.855, 3.865, 3.875, 3.885, 3.895, 3.905, 3.915, 3.925, 3.935, 3.945, 3.955, 3.965, 3.975, 3.985, 3.995, 4.04}; - Double_t yAxis1[21] = {0, 0.1, 0.35, 0.75, 1.5, 3.5, 7.5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 150, 350, 750, 4000, 7070}; - - ssigpTa = new TH2D("ssigpTa","ssigpTa",401, xAxis1,20, yAxis1); - ssigpTa->SetDirectory(0); - ssigpTa->SetBinContent(404,0.00376935); - ssigpTa->SetBinContent(405,0.00403546); - ssigpTa->SetBinContent(406,0.00381162); - ssigpTa->SetBinContent(407,0.00381217); - ssigpTa->SetBinContent(408,0.00381294); - ssigpTa->SetBinContent(409,0.00381393); - ssigpTa->SetBinContent(410,0.00381514); - ssigpTa->SetBinContent(411,0.00381656); - ssigpTa->SetBinContent(412,0.00381818); - ssigpTa->SetBinContent(413,0.00382003); - ssigpTa->SetBinContent(414,0.00382212); - ssigpTa->SetBinContent(415,0.0038244); - ssigpTa->SetBinContent(416,0.00382692); - ssigpTa->SetBinContent(417,0.00382964); - ssigpTa->SetBinContent(418,0.00383262); - ssigpTa->SetBinContent(419,0.00383577); - ssigpTa->SetBinContent(420,0.00383916); - ssigpTa->SetBinContent(421,0.00384277); - ssigpTa->SetBinContent(422,0.00384662); - ssigpTa->SetBinContent(423,0.00385064); - ssigpTa->SetBinContent(424,0.00385492); - ssigpTa->SetBinContent(425,0.0038594); - ssigpTa->SetBinContent(426,0.00386414); - ssigpTa->SetBinContent(427,0.00386906); - ssigpTa->SetBinContent(428,0.00387425); - ssigpTa->SetBinContent(429,0.00387962); - ssigpTa->SetBinContent(430,0.00388525); - ssigpTa->SetBinContent(431,0.00389108); - ssigpTa->SetBinContent(432,0.00389714); - ssigpTa->SetBinContent(433,0.00390344); - ssigpTa->SetBinContent(434,0.00390993); - ssigpTa->SetBinContent(435,0.00391666); - ssigpTa->SetBinContent(436,0.00392361); - ssigpTa->SetBinContent(437,0.00393079); - ssigpTa->SetBinContent(438,0.00393821); - ssigpTa->SetBinContent(439,0.00394585); - ssigpTa->SetBinContent(440,0.00395369); - ssigpTa->SetBinContent(441,0.00396177); - ssigpTa->SetBinContent(442,0.00397009); - ssigpTa->SetBinContent(443,0.00397863); - ssigpTa->SetBinContent(444,0.00398739); - ssigpTa->SetBinContent(445,0.00399641); - ssigpTa->SetBinContent(446,0.00400562); - ssigpTa->SetBinContent(447,0.00401509); - ssigpTa->SetBinContent(448,0.00402474); - ssigpTa->SetBinContent(449,0.00403467); - ssigpTa->SetBinContent(450,0.00404481); - ssigpTa->SetBinContent(451,0.00405522); - ssigpTa->SetBinContent(452,0.00406581); - ssigpTa->SetBinContent(453,0.00407667); - ssigpTa->SetBinContent(454,0.00408774); - ssigpTa->SetBinContent(455,0.00409907); - ssigpTa->SetBinContent(456,0.00411062); - ssigpTa->SetBinContent(457,0.0041224); - ssigpTa->SetBinContent(458,0.00413443); - ssigpTa->SetBinContent(459,0.00414672); - ssigpTa->SetBinContent(460,0.00415923); - ssigpTa->SetBinContent(461,0.00417199); - ssigpTa->SetBinContent(462,0.00418499); - ssigpTa->SetBinContent(463,0.00419821); - ssigpTa->SetBinContent(464,0.00421168); - ssigpTa->SetBinContent(465,0.00422538); - ssigpTa->SetBinContent(466,0.00423936); - ssigpTa->SetBinContent(467,0.00425357); - ssigpTa->SetBinContent(468,0.00426805); - ssigpTa->SetBinContent(469,0.00428276); - ssigpTa->SetBinContent(470,0.00429774); - ssigpTa->SetBinContent(471,0.00431297); - ssigpTa->SetBinContent(472,0.00432846); - ssigpTa->SetBinContent(473,0.0043442); - ssigpTa->SetBinContent(474,0.00436019); - ssigpTa->SetBinContent(475,0.00437648); - ssigpTa->SetBinContent(476,0.00439297); - ssigpTa->SetBinContent(477,0.00440978); - ssigpTa->SetBinContent(478,0.00442682); - ssigpTa->SetBinContent(479,0.00444416); - ssigpTa->SetBinContent(480,0.00446178); - ssigpTa->SetBinContent(481,0.00447964); - ssigpTa->SetBinContent(482,0.00449781); - ssigpTa->SetBinContent(483,0.00451624); - ssigpTa->SetBinContent(484,0.00453498); - ssigpTa->SetBinContent(485,0.00455396); - ssigpTa->SetBinContent(486,0.00457327); - ssigpTa->SetBinContent(487,0.00459285); - ssigpTa->SetBinContent(488,0.00461273); - ssigpTa->SetBinContent(489,0.00463291); - ssigpTa->SetBinContent(490,0.0046534); - ssigpTa->SetBinContent(491,0.00467419); - ssigpTa->SetBinContent(492,0.00469528); - ssigpTa->SetBinContent(493,0.00471669); - ssigpTa->SetBinContent(494,0.00473843); - ssigpTa->SetBinContent(495,0.00476048); - ssigpTa->SetBinContent(496,0.00478285); - ssigpTa->SetBinContent(497,0.00480556); - ssigpTa->SetBinContent(498,0.00482862); - ssigpTa->SetBinContent(499,0.00485199); - ssigpTa->SetBinContent(500,0.00487574); - ssigpTa->SetBinContent(501,0.00489983); - ssigpTa->SetBinContent(502,0.00492428); - ssigpTa->SetBinContent(503,0.0049491); - ssigpTa->SetBinContent(504,0.00497428); - ssigpTa->SetBinContent(505,0.00499983); - ssigpTa->SetBinContent(506,0.00502577); - ssigpTa->SetBinContent(507,0.0050521); - ssigpTa->SetBinContent(508,0.00512786); - ssigpTa->SetBinContent(509,0.00522874); - ssigpTa->SetBinContent(510,0.00542079); - ssigpTa->SetBinContent(511,0.00562221); - ssigpTa->SetBinContent(512,0.00576652); - ssigpTa->SetBinContent(513,0.00579631); - ssigpTa->SetBinContent(514,0.00582647); - ssigpTa->SetBinContent(515,0.00585708); - ssigpTa->SetBinContent(516,0.0058881); - ssigpTa->SetBinContent(517,0.00591953); - ssigpTa->SetBinContent(518,0.00595139); - ssigpTa->SetBinContent(519,0.00598369); - ssigpTa->SetBinContent(520,0.00601647); - ssigpTa->SetBinContent(521,0.00596671); - ssigpTa->SetBinContent(522,0.0058563); - ssigpTa->SetBinContent(523,0.00579236); - ssigpTa->SetBinContent(524,0.00584228); - ssigpTa->SetBinContent(525,0.00592532); - ssigpTa->SetBinContent(526,0.00600789); - ssigpTa->SetBinContent(527,0.00608967); - ssigpTa->SetBinContent(528,0.00617063); - ssigpTa->SetBinContent(529,0.00625074); - ssigpTa->SetBinContent(530,0.00619557); - ssigpTa->SetBinContent(531,0.00608133); - ssigpTa->SetBinContent(532,0.00586874); - ssigpTa->SetBinContent(533,0.00571002); - ssigpTa->SetBinContent(534,0.00564251); - ssigpTa->SetBinContent(535,0.0057559); - ssigpTa->SetBinContent(536,0.00587054); - ssigpTa->SetBinContent(537,0.00598661); - ssigpTa->SetBinContent(538,0.00610439); - ssigpTa->SetBinContent(539,0.00622345); - ssigpTa->SetBinContent(540,0.00634355); - ssigpTa->SetBinContent(541,0.00633138); - ssigpTa->SetBinContent(542,0.00624783); - ssigpTa->SetBinContent(543,0.00622637); - ssigpTa->SetBinContent(544,0.00633454); - ssigpTa->SetBinContent(545,0.00644296); - ssigpTa->SetBinContent(546,0.00655136); - ssigpTa->SetBinContent(547,0.00665977); - ssigpTa->SetBinContent(548,0.00676815); - ssigpTa->SetBinContent(549,0.00666967); - ssigpTa->SetBinContent(550,0.00646951); - ssigpTa->SetBinContent(551,0.0063777); - ssigpTa->SetBinContent(552,0.00638312); - ssigpTa->SetBinContent(553,0.00632729); - ssigpTa->SetBinContent(554,0.00632674); - ssigpTa->SetBinContent(555,0.00643748); - ssigpTa->SetBinContent(556,0.00654905); - ssigpTa->SetBinContent(557,0.00666056); - ssigpTa->SetBinContent(558,0.00677343); - ssigpTa->SetBinContent(559,0.00688786); - ssigpTa->SetBinContent(560,0.00700225); - ssigpTa->SetBinContent(561,0.00711629); - ssigpTa->SetBinContent(562,0.00723174); - ssigpTa->SetBinContent(563,0.0073484); - ssigpTa->SetBinContent(564,0.00737881); - ssigpTa->SetBinContent(565,0.00735909); - ssigpTa->SetBinContent(566,0.00738603); - ssigpTa->SetBinContent(567,0.00725894); - ssigpTa->SetBinContent(568,0.00701426); - ssigpTa->SetBinContent(569,0.00689222); - ssigpTa->SetBinContent(570,0.00701426); - ssigpTa->SetBinContent(571,0.00713891); - ssigpTa->SetBinContent(572,0.00726514); - ssigpTa->SetBinContent(573,0.00739131); - ssigpTa->SetBinContent(574,0.00751988); - ssigpTa->SetBinContent(575,0.00764392); - ssigpTa->SetBinContent(576,0.00776171); - ssigpTa->SetBinContent(577,0.00788676); - ssigpTa->SetBinContent(578,0.00804942); - ssigpTa->SetBinContent(579,0.00822778); - ssigpTa->SetBinContent(580,0.00838862); - ssigpTa->SetBinContent(581,0.00851798); - ssigpTa->SetBinContent(582,0.00829956); - ssigpTa->SetBinContent(583,0.00790057); - ssigpTa->SetBinContent(584,0.00765526); - ssigpTa->SetBinContent(585,0.00774777); - ssigpTa->SetBinContent(586,0.00783839); - ssigpTa->SetBinContent(587,0.00792625); - ssigpTa->SetBinContent(588,0.00798522); - ssigpTa->SetBinContent(589,0.0080391); - ssigpTa->SetBinContent(590,0.00773257); - ssigpTa->SetBinContent(591,0.0072719); - ssigpTa->SetBinContent(592,0.00699802); - ssigpTa->SetBinContent(593,0.00709591); - ssigpTa->SetBinContent(594,0.00719689); - ssigpTa->SetBinContent(595,0.00730227); - ssigpTa->SetBinContent(596,0.00774271); - ssigpTa->SetBinContent(597,0.00835232); - ssigpTa->SetBinContent(598,0.00880117); - ssigpTa->SetBinContent(599,0.00892358); - ssigpTa->SetBinContent(600,0.0090515); - ssigpTa->SetBinContent(601,0.00918244); - ssigpTa->SetBinContent(602,0.00931276); - ssigpTa->SetBinContent(603,0.00944184); - ssigpTa->SetBinContent(604,0.00956988); - ssigpTa->SetBinContent(605,0.00945387); - ssigpTa->SetBinContent(606,0.00921499); - ssigpTa->SetBinContent(607,0.00909704); - ssigpTa->SetBinContent(608,0.00921974); - ssigpTa->SetBinContent(609,0.00964494); - ssigpTa->SetBinContent(610,0.010228); - ssigpTa->SetBinContent(611,0.0106744); - ssigpTa->SetBinContent(612,0.010828); - ssigpTa->SetBinContent(613,0.0109836); - ssigpTa->SetBinContent(614,0.0111373); - ssigpTa->SetBinContent(615,0.0112935); - ssigpTa->SetBinContent(616,0.0111491); - ssigpTa->SetBinContent(617,0.0108465); - ssigpTa->SetBinContent(618,0.0106934); - ssigpTa->SetBinContent(619,0.0108454); - ssigpTa->SetBinContent(620,0.0113492); - ssigpTa->SetBinContent(621,0.0120304); - ssigpTa->SetBinContent(622,0.0125365); - ssigpTa->SetBinContent(623,0.0126997); - ssigpTa->SetBinContent(624,0.0128729); - ssigpTa->SetBinContent(625,0.0130574); - ssigpTa->SetBinContent(626,0.0132435); - ssigpTa->SetBinContent(627,0.0134278); - ssigpTa->SetBinContent(628,0.0128264); - ssigpTa->SetBinContent(629,0.0118163); - ssigpTa->SetBinContent(630,0.0111824); - ssigpTa->SetBinContent(631,0.0115923); - ssigpTa->SetBinContent(632,0.0121482); - ssigpTa->SetBinContent(633,0.012581); - ssigpTa->SetBinContent(634,0.0127586); - ssigpTa->SetBinContent(635,0.0129429); - ssigpTa->SetBinContent(636,0.0131269); - ssigpTa->SetBinContent(637,0.0133019); - ssigpTa->SetBinContent(638,0.0134672); - ssigpTa->SetBinContent(639,0.0136361); - ssigpTa->SetBinContent(640,0.0136828); - ssigpTa->SetBinContent(641,0.0139461); - ssigpTa->SetBinContent(642,0.0144425); - ssigpTa->SetBinContent(643,0.0149276); - ssigpTa->SetBinContent(644,0.0151285); - ssigpTa->SetBinContent(645,0.0153371); - ssigpTa->SetBinContent(646,0.0155552); - ssigpTa->SetBinContent(647,0.0157722); - ssigpTa->SetBinContent(648,0.0159821); - ssigpTa->SetBinContent(649,0.0161983); - ssigpTa->SetBinContent(650,0.016429); - ssigpTa->SetBinContent(651,0.0166743); - ssigpTa->SetBinContent(652,0.0171956); - ssigpTa->SetBinContent(653,0.0178463); - ssigpTa->SetBinContent(654,0.0183381); - ssigpTa->SetBinContent(655,0.0185809); - ssigpTa->SetBinContent(656,0.0188411); - ssigpTa->SetBinContent(657,0.0190922); - ssigpTa->SetBinContent(658,0.019353); - ssigpTa->SetBinContent(659,0.0196432); - ssigpTa->SetBinContent(660,0.0199575); - ssigpTa->SetBinContent(661,0.0202705); - ssigpTa->SetBinContent(662,0.020755); - ssigpTa->SetBinContent(663,0.0213363); - ssigpTa->SetBinContent(664,0.0218103); - ssigpTa->SetBinContent(665,0.022137); - ssigpTa->SetBinContent(666,0.0224854); - ssigpTa->SetBinContent(667,0.0228549); - ssigpTa->SetBinContent(668,0.0232076); - ssigpTa->SetBinContent(669,0.0235705); - ssigpTa->SetBinContent(670,0.0239392); - ssigpTa->SetBinContent(671,0.0243651); - ssigpTa->SetBinContent(672,0.0248206); - ssigpTa->SetBinContent(673,0.0252509); - ssigpTa->SetBinContent(674,0.0256526); - ssigpTa->SetBinContent(675,0.0260818); - ssigpTa->SetBinContent(676,0.0265134); - ssigpTa->SetBinContent(677,0.0269288); - ssigpTa->SetBinContent(678,0.0273255); - ssigpTa->SetBinContent(679,0.0277343); - ssigpTa->SetBinContent(680,0.0281183); - ssigpTa->SetBinContent(681,0.0284704); - ssigpTa->SetBinContent(682,0.0288786); - ssigpTa->SetBinContent(683,0.0293831); - ssigpTa->SetBinContent(684,0.0299043); - ssigpTa->SetBinContent(685,0.0304113); - ssigpTa->SetBinContent(686,0.0309096); - ssigpTa->SetBinContent(687,0.0313987); - ssigpTa->SetBinContent(688,0.0318794); - ssigpTa->SetBinContent(689,0.0323473); - ssigpTa->SetBinContent(690,0.0327976); - ssigpTa->SetBinContent(691,0.0332461); - ssigpTa->SetBinContent(692,0.0337297); - ssigpTa->SetBinContent(693,0.0342576); - ssigpTa->SetBinContent(694,0.0348336); - ssigpTa->SetBinContent(695,0.0354498); - ssigpTa->SetBinContent(696,0.0360781); - ssigpTa->SetBinContent(697,0.0366859); - ssigpTa->SetBinContent(698,0.0372341); - ssigpTa->SetBinContent(699,0.0353407); - ssigpTa->SetBinContent(700,0.0321961); - ssigpTa->SetBinContent(701,0.0301796); - ssigpTa->SetBinContent(702,0.0305428); - ssigpTa->SetBinContent(703,0.0309639); - ssigpTa->SetBinContent(704,0.0314307); - ssigpTa->SetBinContent(705,0.031895); - ssigpTa->SetBinContent(706,0.0323515); - ssigpTa->SetBinContent(707,0.0328017); - ssigpTa->SetBinContent(708,0.0332283); - ssigpTa->SetBinContent(709,0.0336678); - ssigpTa->SetBinContent(710,0.0341384); - ssigpTa->SetBinContent(711,0.034613); - ssigpTa->SetBinContent(712,0.0350458); - ssigpTa->SetBinContent(713,0.0354701); - ssigpTa->SetBinContent(714,0.0359749); - ssigpTa->SetBinContent(715,0.0365686); - ssigpTa->SetBinContent(716,0.0372079); - ssigpTa->SetBinContent(717,0.0378413); - ssigpTa->SetBinContent(718,0.0384681); - ssigpTa->SetBinContent(719,0.0423062); - ssigpTa->SetBinContent(720,0.0477518); - ssigpTa->SetBinContent(721,0.0515679); - ssigpTa->SetBinContent(722,0.0522397); - ssigpTa->SetBinContent(723,0.0529964); - ssigpTa->SetBinContent(724,0.0537462); - ssigpTa->SetBinContent(725,0.0544663); - ssigpTa->SetBinContent(726,0.0551197); - ssigpTa->SetBinContent(727,0.0556585); - ssigpTa->SetBinContent(728,0.0561304); - ssigpTa->SetBinContent(729,0.0565801); - ssigpTa->SetBinContent(730,0.057052); - ssigpTa->SetBinContent(731,0.0574912); - ssigpTa->SetBinContent(732,0.0580153); - ssigpTa->SetBinContent(733,0.0587329); - ssigpTa->SetBinContent(734,0.0596744); - ssigpTa->SetBinContent(735,0.0606807); - ssigpTa->SetBinContent(736,0.0616298); - ssigpTa->SetBinContent(737,0.0625252); - ssigpTa->SetBinContent(738,0.0634295); - ssigpTa->SetBinContent(739,0.0643312); - ssigpTa->SetBinContent(740,0.0651772); - ssigpTa->SetBinContent(741,0.0659891); - ssigpTa->SetBinContent(742,0.0666738); - ssigpTa->SetBinContent(743,0.0671047); - ssigpTa->SetBinContent(744,0.0672537); - ssigpTa->SetBinContent(745,0.0673086); - ssigpTa->SetBinContent(746,0.0675473); - ssigpTa->SetBinContent(747,0.0680767); - ssigpTa->SetBinContent(748,0.0687918); - ssigpTa->SetBinContent(749,0.0695324); - ssigpTa->SetBinContent(750,0.0704126); - ssigpTa->SetBinContent(751,0.0715024); - ssigpTa->SetBinContent(752,0.0727042); - ssigpTa->SetBinContent(753,0.0739178); - ssigpTa->SetBinContent(754,0.0751282); - ssigpTa->SetBinContent(755,0.0762994); - ssigpTa->SetBinContent(756,0.0774026); - ssigpTa->SetBinContent(757,0.0784439); - ssigpTa->SetBinContent(758,0.0794428); - ssigpTa->SetBinContent(759,0.0804994); - ssigpTa->SetBinContent(760,0.0814559); - ssigpTa->SetBinContent(761,0.0823259); - ssigpTa->SetBinContent(762,0.0831898); - ssigpTa->SetBinContent(763,0.0842252); - ssigpTa->SetBinContent(764,0.0852436); - ssigpTa->SetBinContent(765,0.0862144); - ssigpTa->SetBinContent(766,0.0871692); - ssigpTa->SetBinContent(767,0.0881025); - ssigpTa->SetBinContent(768,0.0890303); - ssigpTa->SetBinContent(769,0.0898539); - ssigpTa->SetBinContent(770,0.0905595); - ssigpTa->SetBinContent(771,0.0912017); - ssigpTa->SetBinContent(772,0.0918366); - ssigpTa->SetBinContent(773,0.0923262); - ssigpTa->SetBinContent(774,0.0927084); - ssigpTa->SetBinContent(775,0.0931759); - ssigpTa->SetBinContent(776,0.0937229); - ssigpTa->SetBinContent(777,0.0941004); - ssigpTa->SetBinContent(778,0.0943373); - ssigpTa->SetBinContent(779,0.0952367); - ssigpTa->SetBinContent(780,0.0972312); - ssigpTa->SetBinContent(781,0.100253); - ssigpTa->SetBinContent(782,0.10351); - ssigpTa->SetBinContent(783,0.106283); - ssigpTa->SetBinContent(784,0.111832); - ssigpTa->SetBinContent(785,0.118243); - ssigpTa->SetBinContent(786,0.122884); - ssigpTa->SetBinContent(787,0.124361); - ssigpTa->SetBinContent(788,0.126269); - ssigpTa->SetBinContent(789,0.127528); - ssigpTa->SetBinContent(790,0.128071); - ssigpTa->SetBinContent(791,0.128056); - ssigpTa->SetBinContent(792,0.128494); - ssigpTa->SetBinContent(793,0.130754); - ssigpTa->SetBinContent(794,0.134705); - ssigpTa->SetBinContent(795,0.138991); - ssigpTa->SetBinContent(796,0.143036); - ssigpTa->SetBinContent(797,0.147691); - ssigpTa->SetBinContent(798,0.152926); - ssigpTa->SetBinContent(799,0.157828); - ssigpTa->SetBinContent(800,0.161423); - ssigpTa->SetBinContent(801,0.163129); - ssigpTa->SetBinContent(802,0.16236); - ssigpTa->SetBinContent(803,0.170684); - ssigpTa->SetBinContent(804,0.161661); - ssigpTa->SetBinContent(807,0.00749609); - ssigpTa->SetBinContent(808,0.00724557); - ssigpTa->SetBinContent(809,0.00735266); - ssigpTa->SetBinContent(810,0.00735373); - ssigpTa->SetBinContent(811,0.00735522); - ssigpTa->SetBinContent(812,0.00735714); - ssigpTa->SetBinContent(813,0.00735943); - ssigpTa->SetBinContent(814,0.00736217); - ssigpTa->SetBinContent(815,0.0073653); - ssigpTa->SetBinContent(816,0.00736884); - ssigpTa->SetBinContent(817,0.00737288); - ssigpTa->SetBinContent(818,0.0073773); - ssigpTa->SetBinContent(819,0.00738209); - ssigpTa->SetBinContent(820,0.00738739); - ssigpTa->SetBinContent(821,0.00739312); - ssigpTa->SetBinContent(822,0.00739923); - ssigpTa->SetBinContent(823,0.00740576); - ssigpTa->SetBinContent(824,0.00741273); - ssigpTa->SetBinContent(825,0.00742012); - ssigpTa->SetBinContent(826,0.00742789); - ssigpTa->SetBinContent(827,0.00743609); - ssigpTa->SetBinContent(828,0.00744481); - ssigpTa->SetBinContent(829,0.00745389); - ssigpTa->SetBinContent(830,0.00746343); - ssigpTa->SetBinContent(831,0.00747339); - ssigpTa->SetBinContent(832,0.00748377); - ssigpTa->SetBinContent(833,0.00749459); - ssigpTa->SetBinContent(834,0.00750585); - ssigpTa->SetBinContent(835,0.00751753); - ssigpTa->SetBinContent(836,0.00752969); - ssigpTa->SetBinContent(837,0.00754222); - ssigpTa->SetBinContent(838,0.0075552); - ssigpTa->SetBinContent(839,0.00756856); - ssigpTa->SetBinContent(840,0.00758242); - ssigpTa->SetBinContent(841,0.00759673); - ssigpTa->SetBinContent(842,0.00761143); - ssigpTa->SetBinContent(843,0.0076266); - ssigpTa->SetBinContent(844,0.00764213); - ssigpTa->SetBinContent(845,0.00765818); - ssigpTa->SetBinContent(846,0.00767467); - ssigpTa->SetBinContent(847,0.00769157); - ssigpTa->SetBinContent(848,0.00770893); - ssigpTa->SetBinContent(849,0.00772677); - ssigpTa->SetBinContent(850,0.00774494); - ssigpTa->SetBinContent(851,0.00776362); - ssigpTa->SetBinContent(852,0.00778271); - ssigpTa->SetBinContent(853,0.00780231); - ssigpTa->SetBinContent(854,0.00782228); - ssigpTa->SetBinContent(855,0.00784277); - ssigpTa->SetBinContent(856,0.00786367); - ssigpTa->SetBinContent(857,0.00788508); - ssigpTa->SetBinContent(858,0.0079069); - ssigpTa->SetBinContent(859,0.00792915); - ssigpTa->SetBinContent(860,0.00795191); - ssigpTa->SetBinContent(861,0.0079751); - ssigpTa->SetBinContent(862,0.00799874); - ssigpTa->SetBinContent(863,0.00802288); - ssigpTa->SetBinContent(864,0.00804749); - ssigpTa->SetBinContent(865,0.00807255); - ssigpTa->SetBinContent(866,0.00809806); - ssigpTa->SetBinContent(867,0.00812402); - ssigpTa->SetBinContent(868,0.00815045); - ssigpTa->SetBinContent(869,0.00817736); - ssigpTa->SetBinContent(870,0.00820478); - ssigpTa->SetBinContent(871,0.00823271); - ssigpTa->SetBinContent(872,0.00826106); - ssigpTa->SetBinContent(873,0.00828993); - ssigpTa->SetBinContent(874,0.00831931); - ssigpTa->SetBinContent(875,0.00834918); - ssigpTa->SetBinContent(876,0.00837952); - ssigpTa->SetBinContent(877,0.00841038); - ssigpTa->SetBinContent(878,0.00844172); - ssigpTa->SetBinContent(879,0.00847358); - ssigpTa->SetBinContent(880,0.0085059); - ssigpTa->SetBinContent(881,0.00853882); - ssigpTa->SetBinContent(882,0.00857221); - ssigpTa->SetBinContent(883,0.0086062); - ssigpTa->SetBinContent(884,0.00864065); - ssigpTa->SetBinContent(885,0.00867567); - ssigpTa->SetBinContent(886,0.00871122); - ssigpTa->SetBinContent(887,0.00874728); - ssigpTa->SetBinContent(888,0.00878391); - ssigpTa->SetBinContent(889,0.00882111); - ssigpTa->SetBinContent(890,0.00885887); - ssigpTa->SetBinContent(891,0.0088972); - ssigpTa->SetBinContent(892,0.00893613); - ssigpTa->SetBinContent(893,0.0089756); - ssigpTa->SetBinContent(894,0.00901571); - ssigpTa->SetBinContent(895,0.00905637); - ssigpTa->SetBinContent(896,0.00909764); - ssigpTa->SetBinContent(897,0.00913952); - ssigpTa->SetBinContent(898,0.00918204); - ssigpTa->SetBinContent(899,0.00922514); - ssigpTa->SetBinContent(900,0.00926896); - ssigpTa->SetBinContent(901,0.00931336); - ssigpTa->SetBinContent(902,0.00935846); - ssigpTa->SetBinContent(903,0.00940421); - ssigpTa->SetBinContent(904,0.00945063); - ssigpTa->SetBinContent(905,0.00949777); - ssigpTa->SetBinContent(906,0.00954561); - ssigpTa->SetBinContent(907,0.0095941); - ssigpTa->SetBinContent(908,0.00964337); - ssigpTa->SetBinContent(909,0.00969332); - ssigpTa->SetBinContent(910,0.00976247); - ssigpTa->SetBinContent(911,0.00988758); - ssigpTa->SetBinContent(912,0.0101304); - ssigpTa->SetBinContent(913,0.0104308); - ssigpTa->SetBinContent(914,0.0108503); - ssigpTa->SetBinContent(915,0.0110796); - ssigpTa->SetBinContent(916,0.0111801); - ssigpTa->SetBinContent(917,0.0112383); - ssigpTa->SetBinContent(918,0.0112973); - ssigpTa->SetBinContent(919,0.011357); - ssigpTa->SetBinContent(920,0.0114176); - ssigpTa->SetBinContent(921,0.011479); - ssigpTa->SetBinContent(922,0.0115413); - ssigpTa->SetBinContent(923,0.0115733); - ssigpTa->SetBinContent(924,0.0115053); - ssigpTa->SetBinContent(925,0.0112966); - ssigpTa->SetBinContent(926,0.0112057); - ssigpTa->SetBinContent(927,0.0112798); - ssigpTa->SetBinContent(928,0.0114275); - ssigpTa->SetBinContent(929,0.0115866); - ssigpTa->SetBinContent(930,0.0117444); - ssigpTa->SetBinContent(931,0.0119006); - ssigpTa->SetBinContent(932,0.0120048); - ssigpTa->SetBinContent(933,0.011959); - ssigpTa->SetBinContent(934,0.0116566); - ssigpTa->SetBinContent(935,0.0113809); - ssigpTa->SetBinContent(936,0.0110022); - ssigpTa->SetBinContent(937,0.0109487); - ssigpTa->SetBinContent(938,0.0111003); - ssigpTa->SetBinContent(939,0.0113216); - ssigpTa->SetBinContent(940,0.0115457); - ssigpTa->SetBinContent(941,0.0117729); - ssigpTa->SetBinContent(942,0.0120027); - ssigpTa->SetBinContent(943,0.0121845); - ssigpTa->SetBinContent(944,0.0122148); - ssigpTa->SetBinContent(945,0.0120384); - ssigpTa->SetBinContent(946,0.0120522); - ssigpTa->SetBinContent(947,0.0122125); - ssigpTa->SetBinContent(948,0.0124218); - ssigpTa->SetBinContent(949,0.012631); - ssigpTa->SetBinContent(950,0.0128404); - ssigpTa->SetBinContent(951,0.0129721); - ssigpTa->SetBinContent(952,0.0128708); - ssigpTa->SetBinContent(953,0.0124623); - ssigpTa->SetBinContent(954,0.0123308); - ssigpTa->SetBinContent(955,0.0123067); - ssigpTa->SetBinContent(956,0.0121865); - ssigpTa->SetBinContent(957,0.0122302); - ssigpTa->SetBinContent(958,0.0124027); - ssigpTa->SetBinContent(959,0.0126177); - ssigpTa->SetBinContent(960,0.0128333); - ssigpTa->SetBinContent(961,0.013051); - ssigpTa->SetBinContent(962,0.0132716); - ssigpTa->SetBinContent(963,0.0134922); - ssigpTa->SetBinContent(964,0.0137126); - ssigpTa->SetBinContent(965,0.0139354); - ssigpTa->SetBinContent(966,0.014128); - ssigpTa->SetBinContent(967,0.0142151); - ssigpTa->SetBinContent(968,0.0141657); - ssigpTa->SetBinContent(969,0.014157); - ssigpTa->SetBinContent(970,0.0139838); - ssigpTa->SetBinContent(971,0.0134866); - ssigpTa->SetBinContent(972,0.0133548); - ssigpTa->SetBinContent(973,0.0134993); - ssigpTa->SetBinContent(974,0.0137399); - ssigpTa->SetBinContent(975,0.0139821); - ssigpTa->SetBinContent(976,0.0142267); - ssigpTa->SetBinContent(977,0.0144711); - ssigpTa->SetBinContent(978,0.0147071); - ssigpTa->SetBinContent(979,0.0149302); - ssigpTa->SetBinContent(980,0.0151791); - ssigpTa->SetBinContent(981,0.0154773); - ssigpTa->SetBinContent(982,0.0158245); - ssigpTa->SetBinContent(983,0.0161228); - ssigpTa->SetBinContent(984,0.0162527); - ssigpTa->SetBinContent(985,0.0159832); - ssigpTa->SetBinContent(986,0.0151781); - ssigpTa->SetBinContent(987,0.0148593); - ssigpTa->SetBinContent(988,0.0149109); - ssigpTa->SetBinContent(989,0.0150858); - ssigpTa->SetBinContent(990,0.0152449); - ssigpTa->SetBinContent(991,0.0153822); - ssigpTa->SetBinContent(992,0.0153467); - ssigpTa->SetBinContent(993,0.0149358); - ssigpTa->SetBinContent(994,0.0139943); - ssigpTa->SetBinContent(995,0.0136246); - ssigpTa->SetBinContent(996,0.013674); - ssigpTa->SetBinContent(997,0.0138693); - ssigpTa->SetBinContent(998,0.0141965); - ssigpTa->SetBinContent(999,0.0149021); - ssigpTa->SetBinContent(1000,0.0161123); - ssigpTa->SetBinContent(1001,0.016835); - ssigpTa->SetBinContent(1002,0.0171945); - ssigpTa->SetBinContent(1003,0.0174405); - ssigpTa->SetBinContent(1004,0.0176913); - ssigpTa->SetBinContent(1005,0.0179418); - ssigpTa->SetBinContent(1006,0.0181907); - ssigpTa->SetBinContent(1007,0.0183463); - ssigpTa->SetBinContent(1008,0.0182254); - ssigpTa->SetBinContent(1009,0.0177376); - ssigpTa->SetBinContent(1010,0.0176124); - ssigpTa->SetBinContent(1011,0.0178717); - ssigpTa->SetBinContent(1012,0.0185643); - ssigpTa->SetBinContent(1013,0.0197249); - ssigpTa->SetBinContent(1014,0.0204536); - ssigpTa->SetBinContent(1015,0.0208625); - ssigpTa->SetBinContent(1016,0.0211591); - ssigpTa->SetBinContent(1017,0.0214572); - ssigpTa->SetBinContent(1018,0.0216443); - ssigpTa->SetBinContent(1019,0.0214899); - ssigpTa->SetBinContent(1020,0.0208765); - ssigpTa->SetBinContent(1021,0.0207069); - ssigpTa->SetBinContent(1022,0.0210183); - ssigpTa->SetBinContent(1023,0.0218411); - ssigpTa->SetBinContent(1024,0.0231881); - ssigpTa->SetBinContent(1025,0.0240215); - ssigpTa->SetBinContent(1026,0.0244649); - ssigpTa->SetBinContent(1027,0.0248007); - ssigpTa->SetBinContent(1028,0.0251539); - ssigpTa->SetBinContent(1029,0.0255097); - ssigpTa->SetBinContent(1030,0.0255722); - ssigpTa->SetBinContent(1031,0.0247407); - ssigpTa->SetBinContent(1032,0.0227126); - ssigpTa->SetBinContent(1033,0.0219251); - ssigpTa->SetBinContent(1034,0.0223175); - ssigpTa->SetBinContent(1035,0.0234186); - ssigpTa->SetBinContent(1036,0.0241426); - ssigpTa->SetBinContent(1037,0.0245835); - ssigpTa->SetBinContent(1038,0.0249361); - ssigpTa->SetBinContent(1039,0.0252883); - ssigpTa->SetBinContent(1040,0.0256263); - ssigpTa->SetBinContent(1041,0.025949); - ssigpTa->SetBinContent(1042,0.0262267); - ssigpTa->SetBinContent(1043,0.0264657); - ssigpTa->SetBinContent(1044,0.0268434); - ssigpTa->SetBinContent(1045,0.0278719); - ssigpTa->SetBinContent(1046,0.0286451); - ssigpTa->SetBinContent(1047,0.0291418); - ssigpTa->SetBinContent(1048,0.0295433); - ssigpTa->SetBinContent(1049,0.0299621); - ssigpTa->SetBinContent(1050,0.0303786); - ssigpTa->SetBinContent(1051,0.0307876); - ssigpTa->SetBinContent(1052,0.0312071); - ssigpTa->SetBinContent(1053,0.0316529); - ssigpTa->SetBinContent(1054,0.0322225); - ssigpTa->SetBinContent(1055,0.0331176); - ssigpTa->SetBinContent(1056,0.034394); - ssigpTa->SetBinContent(1057,0.0352343); - ssigpTa->SetBinContent(1058,0.0357963); - ssigpTa->SetBinContent(1059,0.0362891); - ssigpTa->SetBinContent(1060,0.0367818); - ssigpTa->SetBinContent(1061,0.0372847); - ssigpTa->SetBinContent(1062,0.0378478); - ssigpTa->SetBinContent(1063,0.038444); - ssigpTa->SetBinContent(1064,0.03911); - ssigpTa->SetBinContent(1065,0.0399866); - ssigpTa->SetBinContent(1066,0.0411268); - ssigpTa->SetBinContent(1067,0.0419998); - ssigpTa->SetBinContent(1068,0.0426737); - ssigpTa->SetBinContent(1069,0.0433464); - ssigpTa->SetBinContent(1070,0.0440285); - ssigpTa->SetBinContent(1071,0.0447164); - ssigpTa->SetBinContent(1072,0.0454109); - ssigpTa->SetBinContent(1073,0.0461452); - ssigpTa->SetBinContent(1074,0.0469523); - ssigpTa->SetBinContent(1075,0.0478554); - ssigpTa->SetBinContent(1076,0.0486778); - ssigpTa->SetBinContent(1077,0.0494767); - ssigpTa->SetBinContent(1078,0.050295); - ssigpTa->SetBinContent(1079,0.051119); - ssigpTa->SetBinContent(1080,0.0519212); - ssigpTa->SetBinContent(1081,0.052696); - ssigpTa->SetBinContent(1082,0.0534757); - ssigpTa->SetBinContent(1083,0.0542451); - ssigpTa->SetBinContent(1084,0.0549304); - ssigpTa->SetBinContent(1085,0.0557362); - ssigpTa->SetBinContent(1086,0.0566873); - ssigpTa->SetBinContent(1087,0.0576764); - ssigpTa->SetBinContent(1088,0.0586567); - ssigpTa->SetBinContent(1089,0.0596193); - ssigpTa->SetBinContent(1090,0.0605657); - ssigpTa->SetBinContent(1091,0.0614942); - ssigpTa->SetBinContent(1092,0.0623987); - ssigpTa->SetBinContent(1093,0.0632757); - ssigpTa->SetBinContent(1094,0.0641508); - ssigpTa->SetBinContent(1095,0.065086); - ssigpTa->SetBinContent(1096,0.0661113); - ssigpTa->SetBinContent(1097,0.0672141); - ssigpTa->SetBinContent(1098,0.0684009); - ssigpTa->SetBinContent(1099,0.069604); - ssigpTa->SetBinContent(1100,0.0707615); - ssigpTa->SetBinContent(1101,0.0709471); - ssigpTa->SetBinContent(1102,0.06833); - ssigpTa->SetBinContent(1103,0.0620588); - ssigpTa->SetBinContent(1104,0.0592317); - ssigpTa->SetBinContent(1105,0.0590566); - ssigpTa->SetBinContent(1106,0.0598805); - ssigpTa->SetBinContent(1107,0.0607726); - ssigpTa->SetBinContent(1108,0.0616674); - ssigpTa->SetBinContent(1109,0.0625505); - ssigpTa->SetBinContent(1110,0.0634107); - ssigpTa->SetBinContent(1111,0.0642479); - ssigpTa->SetBinContent(1112,0.0650916); - ssigpTa->SetBinContent(1113,0.0659991); - ssigpTa->SetBinContent(1114,0.0669086); - ssigpTa->SetBinContent(1115,0.0677697); - ssigpTa->SetBinContent(1116,0.0686376); - ssigpTa->SetBinContent(1117,0.0696172); - ssigpTa->SetBinContent(1118,0.0707627); - ssigpTa->SetBinContent(1119,0.0719706); - ssigpTa->SetBinContent(1120,0.0731864); - ssigpTa->SetBinContent(1121,0.0755972); - ssigpTa->SetBinContent(1122,0.081666); - ssigpTa->SetBinContent(1123,0.0926192); - ssigpTa->SetBinContent(1124,0.0986478); - ssigpTa->SetBinContent(1125,0.10115); - ssigpTa->SetBinContent(1126,0.10254); - ssigpTa->SetBinContent(1127,0.103964); - ssigpTa->SetBinContent(1128,0.105339); - ssigpTa->SetBinContent(1129,0.106593); - ssigpTa->SetBinContent(1130,0.107676); - ssigpTa->SetBinContent(1131,0.108605); - ssigpTa->SetBinContent(1132,0.109546); - ssigpTa->SetBinContent(1133,0.110464); - ssigpTa->SetBinContent(1134,0.111409); - ssigpTa->SetBinContent(1135,0.112453); - ssigpTa->SetBinContent(1136,0.113844); - ssigpTa->SetBinContent(1137,0.115589); - ssigpTa->SetBinContent(1138,0.117481); - ssigpTa->SetBinContent(1139,0.119316); - ssigpTa->SetBinContent(1140,0.12108); - ssigpTa->SetBinContent(1141,0.122824); - ssigpTa->SetBinContent(1142,0.124559); - ssigpTa->SetBinContent(1143,0.126209); - ssigpTa->SetBinContent(1144,0.127727); - ssigpTa->SetBinContent(1145,0.129057); - ssigpTa->SetBinContent(1146,0.129884); - ssigpTa->SetBinContent(1147,0.130269); - ssigpTa->SetBinContent(1148,0.130526); - ssigpTa->SetBinContent(1149,0.131031); - ssigpTa->SetBinContent(1150,0.132076); - ssigpTa->SetBinContent(1151,0.133411); - ssigpTa->SetBinContent(1152,0.134866); - ssigpTa->SetBinContent(1153,0.136572); - ssigpTa->SetBinContent(1154,0.138666); - ssigpTa->SetBinContent(1155,0.140954); - ssigpTa->SetBinContent(1156,0.143292); - ssigpTa->SetBinContent(1157,0.145616); - ssigpTa->SetBinContent(1158,0.147862); - ssigpTa->SetBinContent(1159,0.149986); - ssigpTa->SetBinContent(1160,0.152007); - ssigpTa->SetBinContent(1161,0.153995); - ssigpTa->SetBinContent(1162,0.156014); - ssigpTa->SetBinContent(1163,0.158052); - ssigpTa->SetBinContent(1164,0.159803); - ssigpTa->SetBinContent(1165,0.16164); - ssigpTa->SetBinContent(1166,0.163589); - ssigpTa->SetBinContent(1167,0.165539); - ssigpTa->SetBinContent(1168,0.16741); - ssigpTa->SetBinContent(1169,0.169234); - ssigpTa->SetBinContent(1170,0.171031); - ssigpTa->SetBinContent(1171,0.172747); - ssigpTa->SetBinContent(1172,0.17435); - ssigpTa->SetBinContent(1173,0.175706); - ssigpTa->SetBinContent(1174,0.176958); - ssigpTa->SetBinContent(1175,0.178175); - ssigpTa->SetBinContent(1176,0.179197); - ssigpTa->SetBinContent(1177,0.180054); - ssigpTa->SetBinContent(1178,0.181087); - ssigpTa->SetBinContent(1179,0.182208); - ssigpTa->SetBinContent(1180,0.183121); - ssigpTa->SetBinContent(1181,0.184082); - ssigpTa->SetBinContent(1182,0.186048); - ssigpTa->SetBinContent(1183,0.190066); - ssigpTa->SetBinContent(1184,0.195455); - ssigpTa->SetBinContent(1185,0.201339); - ssigpTa->SetBinContent(1186,0.207801); - ssigpTa->SetBinContent(1187,0.21687); - ssigpTa->SetBinContent(1188,0.230652); - ssigpTa->SetBinContent(1189,0.238229); - ssigpTa->SetBinContent(1190,0.242875); - ssigpTa->SetBinContent(1191,0.246347); - ssigpTa->SetBinContent(1192,0.249116); - ssigpTa->SetBinContent(1193,0.250839); - ssigpTa->SetBinContent(1194,0.251928); - ssigpTa->SetBinContent(1195,0.253783); - ssigpTa->SetBinContent(1196,0.258289); - ssigpTa->SetBinContent(1197,0.265386); - ssigpTa->SetBinContent(1198,0.273046); - ssigpTa->SetBinContent(1199,0.280644); - ssigpTa->SetBinContent(1200,0.289033); - ssigpTa->SetBinContent(1201,0.298321); - ssigpTa->SetBinContent(1202,0.306891); - ssigpTa->SetBinContent(1203,0.313539); - ssigpTa->SetBinContent(1204,0.317133); - ssigpTa->SetBinContent(1205,0.317289); - ssigpTa->SetBinContent(1206,0.314123); - ssigpTa->SetBinContent(1207,0.329276); - ssigpTa->SetBinContent(1210,0.00926623); - ssigpTa->SetBinContent(1211,0.00940212); - ssigpTa->SetBinContent(1212,0.009419); - ssigpTa->SetBinContent(1213,0.0094204); - ssigpTa->SetBinContent(1214,0.00942232); - ssigpTa->SetBinContent(1215,0.00942475); - ssigpTa->SetBinContent(1216,0.00942778); - ssigpTa->SetBinContent(1217,0.00943126); - ssigpTa->SetBinContent(1218,0.00943521); - ssigpTa->SetBinContent(1219,0.00943974); - ssigpTa->SetBinContent(1220,0.0094449); - ssigpTa->SetBinContent(1221,0.00945055); - ssigpTa->SetBinContent(1222,0.0094567); - ssigpTa->SetBinContent(1223,0.0094634); - ssigpTa->SetBinContent(1224,0.00947078); - ssigpTa->SetBinContent(1225,0.00947864); - ssigpTa->SetBinContent(1226,0.00948703); - ssigpTa->SetBinContent(1227,0.00949592); - ssigpTa->SetBinContent(1228,0.00950534); - ssigpTa->SetBinContent(1229,0.00951524); - ssigpTa->SetBinContent(1230,0.00952582); - ssigpTa->SetBinContent(1231,0.00953687); - ssigpTa->SetBinContent(1232,0.00954854); - ssigpTa->SetBinContent(1233,0.00956076); - ssigpTa->SetBinContent(1234,0.00957342); - ssigpTa->SetBinContent(1235,0.00958671); - ssigpTa->SetBinContent(1236,0.0096006); - ssigpTa->SetBinContent(1237,0.00961496); - ssigpTa->SetBinContent(1238,0.00962996); - ssigpTa->SetBinContent(1239,0.00964548); - ssigpTa->SetBinContent(1240,0.00966155); - ssigpTa->SetBinContent(1241,0.00967812); - ssigpTa->SetBinContent(1242,0.00969526); - ssigpTa->SetBinContent(1243,0.00971293); - ssigpTa->SetBinContent(1244,0.00973117); - ssigpTa->SetBinContent(1245,0.00975007); - ssigpTa->SetBinContent(1246,0.00976938); - ssigpTa->SetBinContent(1247,0.00978931); - ssigpTa->SetBinContent(1248,0.00980985); - ssigpTa->SetBinContent(1249,0.00983095); - ssigpTa->SetBinContent(1250,0.00985254); - ssigpTa->SetBinContent(1251,0.00987481); - ssigpTa->SetBinContent(1252,0.00989757); - ssigpTa->SetBinContent(1253,0.00992091); - ssigpTa->SetBinContent(1254,0.00994472); - ssigpTa->SetBinContent(1255,0.00996924); - ssigpTa->SetBinContent(1256,0.00999424); - ssigpTa->SetBinContent(1257,0.0100198); - ssigpTa->SetBinContent(1258,0.0100459); - ssigpTa->SetBinContent(1259,0.0100727); - ssigpTa->SetBinContent(1260,0.0101001); - ssigpTa->SetBinContent(1261,0.010128); - ssigpTa->SetBinContent(1262,0.0101565); - ssigpTa->SetBinContent(1263,0.0101856); - ssigpTa->SetBinContent(1264,0.0102153); - ssigpTa->SetBinContent(1265,0.0102455); - ssigpTa->SetBinContent(1266,0.0102763); - ssigpTa->SetBinContent(1267,0.0103079); - ssigpTa->SetBinContent(1268,0.0103399); - ssigpTa->SetBinContent(1269,0.0103725); - ssigpTa->SetBinContent(1270,0.0104057); - ssigpTa->SetBinContent(1271,0.0104396); - ssigpTa->SetBinContent(1272,0.010474); - ssigpTa->SetBinContent(1273,0.0105091); - ssigpTa->SetBinContent(1274,0.0105448); - ssigpTa->SetBinContent(1275,0.010581); - ssigpTa->SetBinContent(1276,0.010618); - ssigpTa->SetBinContent(1277,0.0106556); - ssigpTa->SetBinContent(1278,0.0106938); - ssigpTa->SetBinContent(1279,0.0107326); - ssigpTa->SetBinContent(1280,0.0107721); - ssigpTa->SetBinContent(1281,0.0108121); - ssigpTa->SetBinContent(1282,0.0108529); - ssigpTa->SetBinContent(1283,0.0108942); - ssigpTa->SetBinContent(1284,0.0109362); - ssigpTa->SetBinContent(1285,0.010979); - ssigpTa->SetBinContent(1286,0.0110225); - ssigpTa->SetBinContent(1287,0.0110665); - ssigpTa->SetBinContent(1288,0.0111113); - ssigpTa->SetBinContent(1289,0.0111567); - ssigpTa->SetBinContent(1290,0.0112028); - ssigpTa->SetBinContent(1291,0.0112498); - ssigpTa->SetBinContent(1292,0.0112973); - ssigpTa->SetBinContent(1293,0.0113456); - ssigpTa->SetBinContent(1294,0.0113947); - ssigpTa->SetBinContent(1295,0.0114445); - ssigpTa->SetBinContent(1296,0.011495); - ssigpTa->SetBinContent(1297,0.0115463); - ssigpTa->SetBinContent(1298,0.0115983); - ssigpTa->SetBinContent(1299,0.011651); - ssigpTa->SetBinContent(1300,0.0117046); - ssigpTa->SetBinContent(1301,0.0117589); - ssigpTa->SetBinContent(1302,0.0118141); - ssigpTa->SetBinContent(1303,0.0118701); - ssigpTa->SetBinContent(1304,0.0119269); - ssigpTa->SetBinContent(1305,0.0119845); - ssigpTa->SetBinContent(1306,0.0120431); - ssigpTa->SetBinContent(1307,0.0121023); - ssigpTa->SetBinContent(1308,0.0121627); - ssigpTa->SetBinContent(1309,0.0122237); - ssigpTa->SetBinContent(1310,0.0122858); - ssigpTa->SetBinContent(1311,0.0123487); - ssigpTa->SetBinContent(1312,0.0124126); - ssigpTa->SetBinContent(1313,0.0124951); - ssigpTa->SetBinContent(1314,0.0126668); - ssigpTa->SetBinContent(1315,0.0129516); - ssigpTa->SetBinContent(1316,0.0133761); - ssigpTa->SetBinContent(1317,0.0138816); - ssigpTa->SetBinContent(1318,0.0142034); - ssigpTa->SetBinContent(1319,0.0143184); - ssigpTa->SetBinContent(1320,0.0143928); - ssigpTa->SetBinContent(1321,0.0144682); - ssigpTa->SetBinContent(1322,0.0145447); - ssigpTa->SetBinContent(1323,0.0146222); - ssigpTa->SetBinContent(1324,0.0147007); - ssigpTa->SetBinContent(1325,0.0147802); - ssigpTa->SetBinContent(1326,0.014831); - ssigpTa->SetBinContent(1327,0.0147255); - ssigpTa->SetBinContent(1328,0.0144704); - ssigpTa->SetBinContent(1329,0.01434); - ssigpTa->SetBinContent(1330,0.0144386); - ssigpTa->SetBinContent(1331,0.0146317); - ssigpTa->SetBinContent(1332,0.0148357); - ssigpTa->SetBinContent(1333,0.0150379); - ssigpTa->SetBinContent(1334,0.0152381); - ssigpTa->SetBinContent(1335,0.0153875); - ssigpTa->SetBinContent(1336,0.0152955); - ssigpTa->SetBinContent(1337,0.0149627); - ssigpTa->SetBinContent(1338,0.0145336); - ssigpTa->SetBinContent(1339,0.0141103); - ssigpTa->SetBinContent(1340,0.0139995); - ssigpTa->SetBinContent(1341,0.0142153); - ssigpTa->SetBinContent(1342,0.0144993); - ssigpTa->SetBinContent(1343,0.0147867); - ssigpTa->SetBinContent(1344,0.0150783); - ssigpTa->SetBinContent(1345,0.0153729); - ssigpTa->SetBinContent(1346,0.0156213); - ssigpTa->SetBinContent(1347,0.0156262); - ssigpTa->SetBinContent(1348,0.0154244); - ssigpTa->SetBinContent(1349,0.0154083); - ssigpTa->SetBinContent(1350,0.0156288); - ssigpTa->SetBinContent(1351,0.0158974); - ssigpTa->SetBinContent(1352,0.016166); - ssigpTa->SetBinContent(1353,0.0164349); - ssigpTa->SetBinContent(1354,0.0166287); - ssigpTa->SetBinContent(1355,0.0164486); - ssigpTa->SetBinContent(1356,0.0159721); - ssigpTa->SetBinContent(1357,0.0157648); - ssigpTa->SetBinContent(1358,0.0157297); - ssigpTa->SetBinContent(1359,0.0155958); - ssigpTa->SetBinContent(1360,0.0156228); - ssigpTa->SetBinContent(1361,0.0158554); - ssigpTa->SetBinContent(1362,0.016131); - ssigpTa->SetBinContent(1363,0.0164073); - ssigpTa->SetBinContent(1364,0.0166865); - ssigpTa->SetBinContent(1365,0.0169691); - ssigpTa->SetBinContent(1366,0.0172519); - ssigpTa->SetBinContent(1367,0.0175347); - ssigpTa->SetBinContent(1368,0.0178205); - ssigpTa->SetBinContent(1369,0.0180741); - ssigpTa->SetBinContent(1370,0.0181589); - ssigpTa->SetBinContent(1371,0.0180987); - ssigpTa->SetBinContent(1372,0.0180895); - ssigpTa->SetBinContent(1373,0.0178173); - ssigpTa->SetBinContent(1374,0.0172394); - ssigpTa->SetBinContent(1375,0.0170134); - ssigpTa->SetBinContent(1376,0.0172275); - ssigpTa->SetBinContent(1377,0.0175349); - ssigpTa->SetBinContent(1378,0.0178454); - ssigpTa->SetBinContent(1379,0.0181577); - ssigpTa->SetBinContent(1380,0.0184687); - ssigpTa->SetBinContent(1381,0.0187627); - ssigpTa->SetBinContent(1382,0.0190353); - ssigpTa->SetBinContent(1383,0.0193426); - ssigpTa->SetBinContent(1384,0.0197308); - ssigpTa->SetBinContent(1385,0.0201734); - ssigpTa->SetBinContent(1386,0.0205647); - ssigpTa->SetBinContent(1387,0.0207737); - ssigpTa->SetBinContent(1388,0.0203506); - ssigpTa->SetBinContent(1389,0.0194133); - ssigpTa->SetBinContent(1390,0.0189273); - ssigpTa->SetBinContent(1391,0.019037); - ssigpTa->SetBinContent(1392,0.0192613); - ssigpTa->SetBinContent(1393,0.019474); - ssigpTa->SetBinContent(1394,0.0196509); - ssigpTa->SetBinContent(1395,0.0196779); - ssigpTa->SetBinContent(1396,0.019061); - ssigpTa->SetBinContent(1397,0.0179459); - ssigpTa->SetBinContent(1398,0.0173804); - ssigpTa->SetBinContent(1399,0.0174883); - ssigpTa->SetBinContent(1400,0.0177378); - ssigpTa->SetBinContent(1401,0.018116); - ssigpTa->SetBinContent(1402,0.0190968); - ssigpTa->SetBinContent(1403,0.0205606); - ssigpTa->SetBinContent(1404,0.0215624); - ssigpTa->SetBinContent(1405,0.0219823); - ssigpTa->SetBinContent(1406,0.0222962); - ssigpTa->SetBinContent(1407,0.0226166); - ssigpTa->SetBinContent(1408,0.0229367); - ssigpTa->SetBinContent(1409,0.0232549); - ssigpTa->SetBinContent(1410,0.0234825); - ssigpTa->SetBinContent(1411,0.0232684); - ssigpTa->SetBinContent(1412,0.0226996); - ssigpTa->SetBinContent(1413,0.0224796); - ssigpTa->SetBinContent(1414,0.0228036); - ssigpTa->SetBinContent(1415,0.0237645); - ssigpTa->SetBinContent(1416,0.025181); - ssigpTa->SetBinContent(1417,0.0261891); - ssigpTa->SetBinContent(1418,0.0266744); - ssigpTa->SetBinContent(1419,0.0270551); - ssigpTa->SetBinContent(1420,0.0274354); - ssigpTa->SetBinContent(1421,0.0277097); - ssigpTa->SetBinContent(1422,0.0274401); - ssigpTa->SetBinContent(1423,0.0267259); - ssigpTa->SetBinContent(1424,0.0264383); - ssigpTa->SetBinContent(1425,0.0268281); - ssigpTa->SetBinContent(1426,0.027963); - ssigpTa->SetBinContent(1427,0.0296059); - ssigpTa->SetBinContent(1428,0.0307536); - ssigpTa->SetBinContent(1429,0.0312839); - ssigpTa->SetBinContent(1430,0.0317126); - ssigpTa->SetBinContent(1431,0.0321643); - ssigpTa->SetBinContent(1432,0.0326215); - ssigpTa->SetBinContent(1433,0.0327944); - ssigpTa->SetBinContent(1434,0.0315476); - ssigpTa->SetBinContent(1435,0.0291472); - ssigpTa->SetBinContent(1436,0.0279268); - ssigpTa->SetBinContent(1437,0.0285862); - ssigpTa->SetBinContent(1438,0.0299353); - ssigpTa->SetBinContent(1439,0.0309275); - ssigpTa->SetBinContent(1440,0.0314625); - ssigpTa->SetBinContent(1441,0.0319147); - ssigpTa->SetBinContent(1442,0.0323662); - ssigpTa->SetBinContent(1443,0.0328); - ssigpTa->SetBinContent(1444,0.0332152); - ssigpTa->SetBinContent(1445,0.0335816); - ssigpTa->SetBinContent(1446,0.0338197); - ssigpTa->SetBinContent(1447,0.0343884); - ssigpTa->SetBinContent(1448,0.035609); - ssigpTa->SetBinContent(1449,0.0366805); - ssigpTa->SetBinContent(1450,0.0372898); - ssigpTa->SetBinContent(1451,0.0378067); - ssigpTa->SetBinContent(1452,0.0383419); - ssigpTa->SetBinContent(1453,0.038877); - ssigpTa->SetBinContent(1454,0.0394037); - ssigpTa->SetBinContent(1455,0.0399437); - ssigpTa->SetBinContent(1456,0.0405142); - ssigpTa->SetBinContent(1457,0.0412179); - ssigpTa->SetBinContent(1458,0.042427); - ssigpTa->SetBinContent(1459,0.0439948); - ssigpTa->SetBinContent(1460,0.0451135); - ssigpTa->SetBinContent(1461,0.0457928); - ssigpTa->SetBinContent(1462,0.0464203); - ssigpTa->SetBinContent(1463,0.0470489); - ssigpTa->SetBinContent(1464,0.047699); - ssigpTa->SetBinContent(1465,0.048417); - ssigpTa->SetBinContent(1466,0.049181); - ssigpTa->SetBinContent(1467,0.0500195); - ssigpTa->SetBinContent(1468,0.0511928); - ssigpTa->SetBinContent(1469,0.0526438); - ssigpTa->SetBinContent(1470,0.0538067); - ssigpTa->SetBinContent(1471,0.0546584); - ssigpTa->SetBinContent(1472,0.0554828); - ssigpTa->SetBinContent(1473,0.0563468); - ssigpTa->SetBinContent(1474,0.0572129); - ssigpTa->SetBinContent(1475,0.0581004); - ssigpTa->SetBinContent(1476,0.0590382); - ssigpTa->SetBinContent(1477,0.0601073); - ssigpTa->SetBinContent(1478,0.0612885); - ssigpTa->SetBinContent(1479,0.0623777); - ssigpTa->SetBinContent(1480,0.0633994); - ssigpTa->SetBinContent(1481,0.0644449); - ssigpTa->SetBinContent(1482,0.0654971); - ssigpTa->SetBinContent(1483,0.0665219); - ssigpTa->SetBinContent(1484,0.0675234); - ssigpTa->SetBinContent(1485,0.0685506); - ssigpTa->SetBinContent(1486,0.0695546); - ssigpTa->SetBinContent(1487,0.0704452); - ssigpTa->SetBinContent(1488,0.0714675); - ssigpTa->SetBinContent(1489,0.0726801); - ssigpTa->SetBinContent(1490,0.0739463); - ssigpTa->SetBinContent(1491,0.0752014); - ssigpTa->SetBinContent(1492,0.0764408); - ssigpTa->SetBinContent(1493,0.0776617); - ssigpTa->SetBinContent(1494,0.0788611); - ssigpTa->SetBinContent(1495,0.0800293); - ssigpTa->SetBinContent(1496,0.0811599); - ssigpTa->SetBinContent(1497,0.0822857); - ssigpTa->SetBinContent(1498,0.0834875); - ssigpTa->SetBinContent(1499,0.0847991); - ssigpTa->SetBinContent(1500,0.0862207); - ssigpTa->SetBinContent(1501,0.0877417); - ssigpTa->SetBinContent(1502,0.0892895); - ssigpTa->SetBinContent(1503,0.0907922); - ssigpTa->SetBinContent(1504,0.0913416); - ssigpTa->SetBinContent(1505,0.0875179); - ssigpTa->SetBinContent(1506,0.0802004); - ssigpTa->SetBinContent(1507,0.0760845); - ssigpTa->SetBinContent(1508,0.0761889); - ssigpTa->SetBinContent(1509,0.0772601); - ssigpTa->SetBinContent(1510,0.0784209); - ssigpTa->SetBinContent(1511,0.0795823); - ssigpTa->SetBinContent(1512,0.0807149); - ssigpTa->SetBinContent(1513,0.0818168); - ssigpTa->SetBinContent(1514,0.0828857); - ssigpTa->SetBinContent(1515,0.083976); - ssigpTa->SetBinContent(1516,0.0851418); - ssigpTa->SetBinContent(1517,0.0863386); - ssigpTa->SetBinContent(1518,0.0874943); - ssigpTa->SetBinContent(1519,0.0886557); - ssigpTa->SetBinContent(1520,0.089954); - ssigpTa->SetBinContent(1521,0.0914241); - ssigpTa->SetBinContent(1522,0.092975); - ssigpTa->SetBinContent(1523,0.0945216); - ssigpTa->SetBinContent(1524,0.0972385); - ssigpTa->SetBinContent(1525,0.105923); - ssigpTa->SetBinContent(1526,0.119443); - ssigpTa->SetBinContent(1527,0.12808); - ssigpTa->SetBinContent(1528,0.130852); - ssigpTa->SetBinContent(1529,0.132569); - ssigpTa->SetBinContent(1530,0.134336); - ssigpTa->SetBinContent(1531,0.136081); - ssigpTa->SetBinContent(1532,0.137709); - ssigpTa->SetBinContent(1533,0.139137); - ssigpTa->SetBinContent(1534,0.140429); - ssigpTa->SetBinContent(1535,0.141733); - ssigpTa->SetBinContent(1536,0.143061); - ssigpTa->SetBinContent(1537,0.14437); - ssigpTa->SetBinContent(1538,0.145797); - ssigpTa->SetBinContent(1539,0.147565); - ssigpTa->SetBinContent(1540,0.149741); - ssigpTa->SetBinContent(1541,0.152126); - ssigpTa->SetBinContent(1542,0.154491); - ssigpTa->SetBinContent(1543,0.156786); - ssigpTa->SetBinContent(1544,0.159061); - ssigpTa->SetBinContent(1545,0.161307); - ssigpTa->SetBinContent(1546,0.163443); - ssigpTa->SetBinContent(1547,0.165446); - ssigpTa->SetBinContent(1548,0.167168); - ssigpTa->SetBinContent(1549,0.168325); - ssigpTa->SetBinContent(1550,0.168932); - ssigpTa->SetBinContent(1551,0.169381); - ssigpTa->SetBinContent(1552,0.170182); - ssigpTa->SetBinContent(1553,0.17158); - ssigpTa->SetBinContent(1554,0.173333); - ssigpTa->SetBinContent(1555,0.175203); - ssigpTa->SetBinContent(1556,0.177391); - ssigpTa->SetBinContent(1557,0.180081); - ssigpTa->SetBinContent(1558,0.183046); - ssigpTa->SetBinContent(1559,0.186055); - ssigpTa->SetBinContent(1560,0.189028); - ssigpTa->SetBinContent(1561,0.191895); - ssigpTa->SetBinContent(1562,0.194621); - ssigpTa->SetBinContent(1563,0.197268); - ssigpTa->SetBinContent(1564,0.199935); - ssigpTa->SetBinContent(1565,0.202773); - ssigpTa->SetBinContent(1566,0.205629); - ssigpTa->SetBinContent(1567,0.208249); - ssigpTa->SetBinContent(1568,0.210746); - ssigpTa->SetBinContent(1569,0.213313); - ssigpTa->SetBinContent(1570,0.215809); - ssigpTa->SetBinContent(1571,0.218181); - ssigpTa->SetBinContent(1572,0.220476); - ssigpTa->SetBinContent(1573,0.222719); - ssigpTa->SetBinContent(1574,0.224908); - ssigpTa->SetBinContent(1575,0.226929); - ssigpTa->SetBinContent(1576,0.22872); - ssigpTa->SetBinContent(1577,0.230409); - ssigpTa->SetBinContent(1578,0.232086); - ssigpTa->SetBinContent(1579,0.233595); - ssigpTa->SetBinContent(1580,0.235008); - ssigpTa->SetBinContent(1581,0.236641); - ssigpTa->SetBinContent(1582,0.238432); - ssigpTa->SetBinContent(1583,0.240039); - ssigpTa->SetBinContent(1584,0.241712); - ssigpTa->SetBinContent(1585,0.24471); - ssigpTa->SetBinContent(1586,0.249843); - ssigpTa->SetBinContent(1587,0.256571); - ssigpTa->SetBinContent(1588,0.263639); - ssigpTa->SetBinContent(1589,0.271163); - ssigpTa->SetBinContent(1590,0.284302); - ssigpTa->SetBinContent(1591,0.302377); - ssigpTa->SetBinContent(1592,0.314386); - ssigpTa->SetBinContent(1593,0.320295); - ssigpTa->SetBinContent(1594,0.325441); - ssigpTa->SetBinContent(1595,0.32994); - ssigpTa->SetBinContent(1596,0.333535); - ssigpTa->SetBinContent(1597,0.336573); - ssigpTa->SetBinContent(1598,0.340434); - ssigpTa->SetBinContent(1599,0.346794); - ssigpTa->SetBinContent(1600,0.355384); - ssigpTa->SetBinContent(1601,0.364393); - ssigpTa->SetBinContent(1602,0.373203); - ssigpTa->SetBinContent(1603,0.382866); - ssigpTa->SetBinContent(1604,0.393451); - ssigpTa->SetBinContent(1605,0.403647); - ssigpTa->SetBinContent(1606,0.412129); - ssigpTa->SetBinContent(1607,0.417719); - ssigpTa->SetBinContent(1608,0.420657); - ssigpTa->SetBinContent(1609,0.426304); - ssigpTa->SetBinContent(1610,0.434609); - ssigpTa->SetBinContent(1613,0.00984496); - ssigpTa->SetBinContent(1614,0.0098424); - ssigpTa->SetBinContent(1615,0.00984234); - ssigpTa->SetBinContent(1616,0.00984363); - ssigpTa->SetBinContent(1617,0.00984575); - ssigpTa->SetBinContent(1618,0.0098483); - ssigpTa->SetBinContent(1619,0.00985154); - ssigpTa->SetBinContent(1620,0.00985513); - ssigpTa->SetBinContent(1621,0.00985926); - ssigpTa->SetBinContent(1622,0.00986392); - ssigpTa->SetBinContent(1623,0.0098693); - ssigpTa->SetBinContent(1624,0.00987518); - ssigpTa->SetBinContent(1625,0.00988159); - ssigpTa->SetBinContent(1626,0.00988847); - ssigpTa->SetBinContent(1627,0.00989618); - ssigpTa->SetBinContent(1628,0.00990434); - ssigpTa->SetBinContent(1629,0.00991313); - ssigpTa->SetBinContent(1630,0.00992242); - ssigpTa->SetBinContent(1631,0.00993214); - ssigpTa->SetBinContent(1632,0.00994251); - ssigpTa->SetBinContent(1633,0.00995335); - ssigpTa->SetBinContent(1634,0.00996486); - ssigpTa->SetBinContent(1635,0.00997706); - ssigpTa->SetBinContent(1636,0.00998957); - ssigpTa->SetBinContent(1637,0.0100029); - ssigpTa->SetBinContent(1638,0.0100166); - ssigpTa->SetBinContent(1639,0.0100311); - ssigpTa->SetBinContent(1640,0.0100462); - ssigpTa->SetBinContent(1641,0.0100617); - ssigpTa->SetBinContent(1642,0.010078); - ssigpTa->SetBinContent(1643,0.0100946); - ssigpTa->SetBinContent(1644,0.0101119); - ssigpTa->SetBinContent(1645,0.0101297); - ssigpTa->SetBinContent(1646,0.010148); - ssigpTa->SetBinContent(1647,0.010167); - ssigpTa->SetBinContent(1648,0.0101865); - ssigpTa->SetBinContent(1649,0.0102067); - ssigpTa->SetBinContent(1650,0.0102273); - ssigpTa->SetBinContent(1651,0.0102487); - ssigpTa->SetBinContent(1652,0.0102708); - ssigpTa->SetBinContent(1653,0.0102932); - ssigpTa->SetBinContent(1654,0.0103164); - ssigpTa->SetBinContent(1655,0.0103401); - ssigpTa->SetBinContent(1656,0.0103643); - ssigpTa->SetBinContent(1657,0.0103891); - ssigpTa->SetBinContent(1658,0.0104146); - ssigpTa->SetBinContent(1659,0.0104406); - ssigpTa->SetBinContent(1660,0.0104673); - ssigpTa->SetBinContent(1661,0.0104944); - ssigpTa->SetBinContent(1662,0.0105224); - ssigpTa->SetBinContent(1663,0.0105507); - ssigpTa->SetBinContent(1664,0.0105797); - ssigpTa->SetBinContent(1665,0.0106093); - ssigpTa->SetBinContent(1666,0.0106397); - ssigpTa->SetBinContent(1667,0.0106705); - ssigpTa->SetBinContent(1668,0.0107019); - ssigpTa->SetBinContent(1669,0.0107341); - ssigpTa->SetBinContent(1670,0.0107667); - ssigpTa->SetBinContent(1671,0.0108001); - ssigpTa->SetBinContent(1672,0.0108338); - ssigpTa->SetBinContent(1673,0.0108684); - ssigpTa->SetBinContent(1674,0.0109037); - ssigpTa->SetBinContent(1675,0.0109395); - ssigpTa->SetBinContent(1676,0.0109762); - ssigpTa->SetBinContent(1677,0.0110132); - ssigpTa->SetBinContent(1678,0.0110509); - ssigpTa->SetBinContent(1679,0.0110894); - ssigpTa->SetBinContent(1680,0.0111286); - ssigpTa->SetBinContent(1681,0.0111683); - ssigpTa->SetBinContent(1682,0.0112087); - ssigpTa->SetBinContent(1683,0.0112496); - ssigpTa->SetBinContent(1684,0.0112914); - ssigpTa->SetBinContent(1685,0.0113337); - ssigpTa->SetBinContent(1686,0.0113767); - ssigpTa->SetBinContent(1687,0.0114205); - ssigpTa->SetBinContent(1688,0.011465); - ssigpTa->SetBinContent(1689,0.0115101); - ssigpTa->SetBinContent(1690,0.0115559); - ssigpTa->SetBinContent(1691,0.0116024); - ssigpTa->SetBinContent(1692,0.0116495); - ssigpTa->SetBinContent(1693,0.0116977); - ssigpTa->SetBinContent(1694,0.0117465); - ssigpTa->SetBinContent(1695,0.0117959); - ssigpTa->SetBinContent(1696,0.0118461); - ssigpTa->SetBinContent(1697,0.0118972); - ssigpTa->SetBinContent(1698,0.0119492); - ssigpTa->SetBinContent(1699,0.0120016); - ssigpTa->SetBinContent(1700,0.0120552); - ssigpTa->SetBinContent(1701,0.0121091); - ssigpTa->SetBinContent(1702,0.012164); - ssigpTa->SetBinContent(1703,0.0122195); - ssigpTa->SetBinContent(1704,0.0122763); - ssigpTa->SetBinContent(1705,0.0123335); - ssigpTa->SetBinContent(1706,0.0123919); - ssigpTa->SetBinContent(1707,0.0124508); - ssigpTa->SetBinContent(1708,0.0125108); - ssigpTa->SetBinContent(1709,0.0125716); - ssigpTa->SetBinContent(1710,0.0126335); - ssigpTa->SetBinContent(1711,0.012696); - ssigpTa->SetBinContent(1712,0.0127598); - ssigpTa->SetBinContent(1713,0.0128242); - ssigpTa->SetBinContent(1714,0.0128897); - ssigpTa->SetBinContent(1715,0.012956); - ssigpTa->SetBinContent(1716,0.013041); - ssigpTa->SetBinContent(1717,0.0132146); - ssigpTa->SetBinContent(1718,0.0135174); - ssigpTa->SetBinContent(1719,0.013947); - ssigpTa->SetBinContent(1720,0.0145052); - ssigpTa->SetBinContent(1721,0.0148327); - ssigpTa->SetBinContent(1722,0.0149509); - ssigpTa->SetBinContent(1723,0.0150282); - ssigpTa->SetBinContent(1724,0.0151067); - ssigpTa->SetBinContent(1725,0.0151862); - ssigpTa->SetBinContent(1726,0.0152669); - ssigpTa->SetBinContent(1727,0.0153485); - ssigpTa->SetBinContent(1728,0.0154311); - ssigpTa->SetBinContent(1729,0.0154849); - ssigpTa->SetBinContent(1730,0.0153806); - ssigpTa->SetBinContent(1731,0.0150929); - ssigpTa->SetBinContent(1732,0.0149587); - ssigpTa->SetBinContent(1733,0.0150665); - ssigpTa->SetBinContent(1734,0.0152689); - ssigpTa->SetBinContent(1735,0.0154821); - ssigpTa->SetBinContent(1736,0.0156936); - ssigpTa->SetBinContent(1737,0.0159029); - ssigpTa->SetBinContent(1738,0.0160615); - ssigpTa->SetBinContent(1739,0.015979); - ssigpTa->SetBinContent(1740,0.015608); - ssigpTa->SetBinContent(1741,0.0151937); - ssigpTa->SetBinContent(1742,0.0147323); - ssigpTa->SetBinContent(1743,0.0146374); - ssigpTa->SetBinContent(1744,0.0148666); - ssigpTa->SetBinContent(1745,0.0151636); - ssigpTa->SetBinContent(1746,0.0154644); - ssigpTa->SetBinContent(1747,0.0157693); - ssigpTa->SetBinContent(1748,0.0160773); - ssigpTa->SetBinContent(1749,0.0163381); - ssigpTa->SetBinContent(1750,0.0163471); - ssigpTa->SetBinContent(1751,0.0160883); - ssigpTa->SetBinContent(1752,0.0160757); - ssigpTa->SetBinContent(1753,0.0163087); - ssigpTa->SetBinContent(1754,0.0165907); - ssigpTa->SetBinContent(1755,0.0168733); - ssigpTa->SetBinContent(1756,0.017156); - ssigpTa->SetBinContent(1757,0.0173639); - ssigpTa->SetBinContent(1758,0.0171932); - ssigpTa->SetBinContent(1759,0.0166457); - ssigpTa->SetBinContent(1760,0.0164477); - ssigpTa->SetBinContent(1761,0.0164218); - ssigpTa->SetBinContent(1762,0.0162518); - ssigpTa->SetBinContent(1763,0.0162868); - ssigpTa->SetBinContent(1764,0.0165317); - ssigpTa->SetBinContent(1765,0.0168202); - ssigpTa->SetBinContent(1766,0.0171093); - ssigpTa->SetBinContent(1767,0.0174018); - ssigpTa->SetBinContent(1768,0.0176978); - ssigpTa->SetBinContent(1769,0.017994); - ssigpTa->SetBinContent(1770,0.0182904); - ssigpTa->SetBinContent(1771,0.0185902); - ssigpTa->SetBinContent(1772,0.018857); - ssigpTa->SetBinContent(1773,0.0189439); - ssigpTa->SetBinContent(1774,0.0188456); - ssigpTa->SetBinContent(1775,0.0188378); - ssigpTa->SetBinContent(1776,0.0185782); - ssigpTa->SetBinContent(1777,0.0179245); - ssigpTa->SetBinContent(1778,0.0177116); - ssigpTa->SetBinContent(1779,0.0179385); - ssigpTa->SetBinContent(1780,0.0182594); - ssigpTa->SetBinContent(1781,0.0185832); - ssigpTa->SetBinContent(1782,0.0189088); - ssigpTa->SetBinContent(1783,0.0192324); - ssigpTa->SetBinContent(1784,0.0195313); - ssigpTa->SetBinContent(1785,0.0198003); - ssigpTa->SetBinContent(1786,0.0201128); - ssigpTa->SetBinContent(1787,0.0205226); - ssigpTa->SetBinContent(1788,0.0210126); - ssigpTa->SetBinContent(1789,0.0214296); - ssigpTa->SetBinContent(1790,0.0216567); - ssigpTa->SetBinContent(1791,0.0212552); - ssigpTa->SetBinContent(1792,0.0202162); - ssigpTa->SetBinContent(1793,0.0197454); - ssigpTa->SetBinContent(1794,0.0198668); - ssigpTa->SetBinContent(1795,0.0201024); - ssigpTa->SetBinContent(1796,0.0203269); - ssigpTa->SetBinContent(1797,0.0205275); - ssigpTa->SetBinContent(1798,0.020572); - ssigpTa->SetBinContent(1799,0.0199684); - ssigpTa->SetBinContent(1800,0.0186981); - ssigpTa->SetBinContent(1801,0.0181338); - ssigpTa->SetBinContent(1802,0.0182523); - ssigpTa->SetBinContent(1803,0.0185143); - ssigpTa->SetBinContent(1804,0.0189047); - ssigpTa->SetBinContent(1805,0.019892); - ssigpTa->SetBinContent(1806,0.0214715); - ssigpTa->SetBinContent(1807,0.0224801); - ssigpTa->SetBinContent(1808,0.0229122); - ssigpTa->SetBinContent(1809,0.0232398); - ssigpTa->SetBinContent(1810,0.0235737); - ssigpTa->SetBinContent(1811,0.0239074); - ssigpTa->SetBinContent(1812,0.0242398); - ssigpTa->SetBinContent(1813,0.0244821); - ssigpTa->SetBinContent(1814,0.0242815); - ssigpTa->SetBinContent(1815,0.0236411); - ssigpTa->SetBinContent(1816,0.0234345); - ssigpTa->SetBinContent(1817,0.0237737); - ssigpTa->SetBinContent(1818,0.0247547); - ssigpTa->SetBinContent(1819,0.0263036); - ssigpTa->SetBinContent(1820,0.0273328); - ssigpTa->SetBinContent(1821,0.0278361); - ssigpTa->SetBinContent(1822,0.0282337); - ssigpTa->SetBinContent(1823,0.0286315); - ssigpTa->SetBinContent(1824,0.0289236); - ssigpTa->SetBinContent(1825,0.028677); - ssigpTa->SetBinContent(1826,0.0278908); - ssigpTa->SetBinContent(1827,0.027626); - ssigpTa->SetBinContent(1828,0.0280339); - ssigpTa->SetBinContent(1829,0.0291848); - ssigpTa->SetBinContent(1830,0.030967); - ssigpTa->SetBinContent(1831,0.032136); - ssigpTa->SetBinContent(1832,0.0326863); - ssigpTa->SetBinContent(1833,0.033136); - ssigpTa->SetBinContent(1834,0.0336091); - ssigpTa->SetBinContent(1835,0.0340891); - ssigpTa->SetBinContent(1836,0.0342884); - ssigpTa->SetBinContent(1837,0.0330836); - ssigpTa->SetBinContent(1838,0.0304712); - ssigpTa->SetBinContent(1839,0.0292881); - ssigpTa->SetBinContent(1840,0.0299644); - ssigpTa->SetBinContent(1841,0.0314253); - ssigpTa->SetBinContent(1842,0.0324354); - ssigpTa->SetBinContent(1843,0.0329927); - ssigpTa->SetBinContent(1844,0.0334675); - ssigpTa->SetBinContent(1845,0.0339417); - ssigpTa->SetBinContent(1846,0.0343994); - ssigpTa->SetBinContent(1847,0.0348398); - ssigpTa->SetBinContent(1848,0.035233); - ssigpTa->SetBinContent(1849,0.0354984); - ssigpTa->SetBinContent(1850,0.0360555); - ssigpTa->SetBinContent(1851,0.0373906); - ssigpTa->SetBinContent(1852,0.0384872); - ssigpTa->SetBinContent(1853,0.039126); - ssigpTa->SetBinContent(1854,0.039671); - ssigpTa->SetBinContent(1855,0.0402334); - ssigpTa->SetBinContent(1856,0.0407966); - ssigpTa->SetBinContent(1857,0.0413553); - ssigpTa->SetBinContent(1858,0.0419276); - ssigpTa->SetBinContent(1859,0.0425292); - ssigpTa->SetBinContent(1860,0.0432604); - ssigpTa->SetBinContent(1861,0.0444919); - ssigpTa->SetBinContent(1862,0.0461416); - ssigpTa->SetBinContent(1863,0.0472516); - ssigpTa->SetBinContent(1864,0.0479404); - ssigpTa->SetBinContent(1865,0.0485981); - ssigpTa->SetBinContent(1866,0.0492595); - ssigpTa->SetBinContent(1867,0.0499422); - ssigpTa->SetBinContent(1868,0.0506978); - ssigpTa->SetBinContent(1869,0.0514963); - ssigpTa->SetBinContent(1870,0.0523682); - ssigpTa->SetBinContent(1871,0.053589); - ssigpTa->SetBinContent(1872,0.0551468); - ssigpTa->SetBinContent(1873,0.0563652); - ssigpTa->SetBinContent(1874,0.0572425); - ssigpTa->SetBinContent(1875,0.0580921); - ssigpTa->SetBinContent(1876,0.0589711); - ssigpTa->SetBinContent(1877,0.0598661); - ssigpTa->SetBinContent(1878,0.0607857); - ssigpTa->SetBinContent(1879,0.0617682); - ssigpTa->SetBinContent(1880,0.0629108); - ssigpTa->SetBinContent(1881,0.0642003); - ssigpTa->SetBinContent(1882,0.0653649); - ssigpTa->SetBinContent(1883,0.0664351); - ssigpTa->SetBinContent(1884,0.0675187); - ssigpTa->SetBinContent(1885,0.0686076); - ssigpTa->SetBinContent(1886,0.0696775); - ssigpTa->SetBinContent(1887,0.0707364); - ssigpTa->SetBinContent(1888,0.0718594); - ssigpTa->SetBinContent(1889,0.072993); - ssigpTa->SetBinContent(1890,0.0739043); - ssigpTa->SetBinContent(1891,0.0749599); - ssigpTa->SetBinContent(1892,0.0762225); - ssigpTa->SetBinContent(1893,0.077537); - ssigpTa->SetBinContent(1894,0.0788514); - ssigpTa->SetBinContent(1895,0.0801582); - ssigpTa->SetBinContent(1896,0.0814498); - ssigpTa->SetBinContent(1897,0.0827211); - ssigpTa->SetBinContent(1898,0.0839623); - ssigpTa->SetBinContent(1899,0.0851629); - ssigpTa->SetBinContent(1900,0.0863378); - ssigpTa->SetBinContent(1901,0.0876002); - ssigpTa->SetBinContent(1902,0.0889739); - ssigpTa->SetBinContent(1903,0.0904557); - ssigpTa->SetBinContent(1904,0.0920494); - ssigpTa->SetBinContent(1905,0.0936751); - ssigpTa->SetBinContent(1906,0.095265); - ssigpTa->SetBinContent(1907,0.095949); - ssigpTa->SetBinContent(1908,0.0924006); - ssigpTa->SetBinContent(1909,0.0846968); - ssigpTa->SetBinContent(1910,0.0808381); - ssigpTa->SetBinContent(1911,0.0810569); - ssigpTa->SetBinContent(1912,0.0822202); - ssigpTa->SetBinContent(1913,0.0834596); - ssigpTa->SetBinContent(1914,0.0846907); - ssigpTa->SetBinContent(1915,0.0858883); - ssigpTa->SetBinContent(1916,0.087051); - ssigpTa->SetBinContent(1917,0.0881843); - ssigpTa->SetBinContent(1918,0.0893384); - ssigpTa->SetBinContent(1919,0.0905905); - ssigpTa->SetBinContent(1920,0.0919066); - ssigpTa->SetBinContent(1921,0.093211); - ssigpTa->SetBinContent(1922,0.0945261); - ssigpTa->SetBinContent(1923,0.0959497); - ssigpTa->SetBinContent(1924,0.0975209); - ssigpTa->SetBinContent(1925,0.099148); - ssigpTa->SetBinContent(1926,0.100762); - ssigpTa->SetBinContent(1927,0.103593); - ssigpTa->SetBinContent(1928,0.112662); - ssigpTa->SetBinContent(1929,0.12816); - ssigpTa->SetBinContent(1930,0.137177); - ssigpTa->SetBinContent(1931,0.140023); - ssigpTa->SetBinContent(1932,0.14172); - ssigpTa->SetBinContent(1933,0.143487); - ssigpTa->SetBinContent(1934,0.145271); - ssigpTa->SetBinContent(1935,0.146988); - ssigpTa->SetBinContent(1936,0.148568); - ssigpTa->SetBinContent(1937,0.150075); - ssigpTa->SetBinContent(1938,0.151681); - ssigpTa->SetBinContent(1939,0.15333); - ssigpTa->SetBinContent(1940,0.154963); - ssigpTa->SetBinContent(1941,0.156632); - ssigpTa->SetBinContent(1942,0.158526); - ssigpTa->SetBinContent(1943,0.160733); - ssigpTa->SetBinContent(1944,0.16316); - ssigpTa->SetBinContent(1945,0.165646); - ssigpTa->SetBinContent(1946,0.168125); - ssigpTa->SetBinContent(1947,0.170594); - ssigpTa->SetBinContent(1948,0.173031); - ssigpTa->SetBinContent(1949,0.175352); - ssigpTa->SetBinContent(1950,0.177532); - ssigpTa->SetBinContent(1951,0.179466); - ssigpTa->SetBinContent(1952,0.180847); - ssigpTa->SetBinContent(1953,0.181725); - ssigpTa->SetBinContent(1954,0.182474); - ssigpTa->SetBinContent(1955,0.183549); - ssigpTa->SetBinContent(1956,0.185187); - ssigpTa->SetBinContent(1957,0.187105); - ssigpTa->SetBinContent(1958,0.189093); - ssigpTa->SetBinContent(1959,0.191408); - ssigpTa->SetBinContent(1960,0.194291); - ssigpTa->SetBinContent(1961,0.197464); - ssigpTa->SetBinContent(1962,0.200662); - ssigpTa->SetBinContent(1963,0.203798); - ssigpTa->SetBinContent(1964,0.206818); - ssigpTa->SetBinContent(1965,0.209756); - ssigpTa->SetBinContent(1966,0.21274); - ssigpTa->SetBinContent(1967,0.215878); - ssigpTa->SetBinContent(1968,0.219282); - ssigpTa->SetBinContent(1969,0.222812); - ssigpTa->SetBinContent(1970,0.22601); - ssigpTa->SetBinContent(1971,0.228936); - ssigpTa->SetBinContent(1972,0.231736); - ssigpTa->SetBinContent(1973,0.234378); - ssigpTa->SetBinContent(1974,0.236857); - ssigpTa->SetBinContent(1975,0.239236); - ssigpTa->SetBinContent(1976,0.241582); - ssigpTa->SetBinContent(1977,0.243933); - ssigpTa->SetBinContent(1978,0.246224); - ssigpTa->SetBinContent(1979,0.24834); - ssigpTa->SetBinContent(1980,0.25042); - ssigpTa->SetBinContent(1981,0.25257); - ssigpTa->SetBinContent(1982,0.254631); - ssigpTa->SetBinContent(1983,0.256634); - ssigpTa->SetBinContent(1984,0.258862); - ssigpTa->SetBinContent(1985,0.261224); - ssigpTa->SetBinContent(1986,0.263439); - ssigpTa->SetBinContent(1987,0.265791); - ssigpTa->SetBinContent(1988,0.269343); - ssigpTa->SetBinContent(1989,0.274799); - ssigpTa->SetBinContent(1990,0.28142); - ssigpTa->SetBinContent(1991,0.288299); - ssigpTa->SetBinContent(1992,0.296029); - ssigpTa->SetBinContent(1993,0.311052); - ssigpTa->SetBinContent(1994,0.33519); - ssigpTa->SetBinContent(1995,0.349779); - ssigpTa->SetBinContent(1996,0.357023); - ssigpTa->SetBinContent(1997,0.363173); - ssigpTa->SetBinContent(1998,0.369111); - ssigpTa->SetBinContent(1999,0.374721); - ssigpTa->SetBinContent(2000,0.380173); - ssigpTa->SetBinContent(2001,0.386214); - ssigpTa->SetBinContent(2002,0.39381); - ssigpTa->SetBinContent(2003,0.402635); - ssigpTa->SetBinContent(2004,0.411409); - ssigpTa->SetBinContent(2005,0.419981); - ssigpTa->SetBinContent(2006,0.429375); - ssigpTa->SetBinContent(2007,0.439719); - ssigpTa->SetBinContent(2008,0.449918); - ssigpTa->SetBinContent(2009,0.459215); - ssigpTa->SetBinContent(2010,0.466655); - ssigpTa->SetBinContent(2011,0.473327); - ssigpTa->SetBinContent(2012,0.489316); - ssigpTa->SetBinContent(2013,0.519691); - ssigpTa->SetBinContent(2016,0.00995367); - ssigpTa->SetBinContent(2017,0.00995019); - ssigpTa->SetBinContent(2018,0.00994766); - ssigpTa->SetBinContent(2019,0.00994908); - ssigpTa->SetBinContent(2020,0.00995092); - ssigpTa->SetBinContent(2021,0.00995398); - ssigpTa->SetBinContent(2022,0.00995682); - ssigpTa->SetBinContent(2023,0.00996032); - ssigpTa->SetBinContent(2024,0.00996448); - ssigpTa->SetBinContent(2025,0.009969); - ssigpTa->SetBinContent(2026,0.0099745); - ssigpTa->SetBinContent(2027,0.00998032); - ssigpTa->SetBinContent(2028,0.00998682); - ssigpTa->SetBinContent(2029,0.00999406); - ssigpTa->SetBinContent(2030,0.0100012); - ssigpTa->SetBinContent(2031,0.0100095); - ssigpTa->SetBinContent(2032,0.0100183); - ssigpTa->SetBinContent(2033,0.0100277); - ssigpTa->SetBinContent(2034,0.0100375); - ssigpTa->SetBinContent(2035,0.0100477); - ssigpTa->SetBinContent(2036,0.0100584); - ssigpTa->SetBinContent(2037,0.0100698); - ssigpTa->SetBinContent(2038,0.0100816); - ssigpTa->SetBinContent(2039,0.0100948); - ssigpTa->SetBinContent(2040,0.0101075); - ssigpTa->SetBinContent(2041,0.0101211); - ssigpTa->SetBinContent(2042,0.0101357); - ssigpTa->SetBinContent(2043,0.0101505); - ssigpTa->SetBinContent(2044,0.0101665); - ssigpTa->SetBinContent(2045,0.0101825); - ssigpTa->SetBinContent(2046,0.0101993); - ssigpTa->SetBinContent(2047,0.0102165); - ssigpTa->SetBinContent(2048,0.0102338); - ssigpTa->SetBinContent(2049,0.0102521); - ssigpTa->SetBinContent(2050,0.0102708); - ssigpTa->SetBinContent(2051,0.0102905); - ssigpTa->SetBinContent(2052,0.0103105); - ssigpTa->SetBinContent(2053,0.010331); - ssigpTa->SetBinContent(2054,0.0103524); - ssigpTa->SetBinContent(2055,0.0103743); - ssigpTa->SetBinContent(2056,0.0103972); - ssigpTa->SetBinContent(2057,0.01042); - ssigpTa->SetBinContent(2058,0.0104435); - ssigpTa->SetBinContent(2059,0.0104678); - ssigpTa->SetBinContent(2060,0.0104924); - ssigpTa->SetBinContent(2061,0.0105179); - ssigpTa->SetBinContent(2062,0.0105439); - ssigpTa->SetBinContent(2063,0.0105705); - ssigpTa->SetBinContent(2064,0.0105982); - ssigpTa->SetBinContent(2065,0.0106255); - ssigpTa->SetBinContent(2066,0.0106539); - ssigpTa->SetBinContent(2067,0.0106826); - ssigpTa->SetBinContent(2068,0.0107123); - ssigpTa->SetBinContent(2069,0.0107425); - ssigpTa->SetBinContent(2070,0.0107732); - ssigpTa->SetBinContent(2071,0.0108045); - ssigpTa->SetBinContent(2072,0.0108363); - ssigpTa->SetBinContent(2073,0.0108696); - ssigpTa->SetBinContent(2074,0.0109022); - ssigpTa->SetBinContent(2075,0.0109358); - ssigpTa->SetBinContent(2076,0.0109702); - ssigpTa->SetBinContent(2077,0.0110053); - ssigpTa->SetBinContent(2078,0.0110415); - ssigpTa->SetBinContent(2079,0.0110778); - ssigpTa->SetBinContent(2080,0.011115); - ssigpTa->SetBinContent(2081,0.0111524); - ssigpTa->SetBinContent(2082,0.011191); - ssigpTa->SetBinContent(2083,0.0112302); - ssigpTa->SetBinContent(2084,0.0112697); - ssigpTa->SetBinContent(2085,0.0113098); - ssigpTa->SetBinContent(2086,0.0113511); - ssigpTa->SetBinContent(2087,0.0113925); - ssigpTa->SetBinContent(2088,0.0114348); - ssigpTa->SetBinContent(2089,0.0114776); - ssigpTa->SetBinContent(2090,0.0115211); - ssigpTa->SetBinContent(2091,0.0115659); - ssigpTa->SetBinContent(2092,0.0116108); - ssigpTa->SetBinContent(2093,0.0116564); - ssigpTa->SetBinContent(2094,0.0117027); - ssigpTa->SetBinContent(2095,0.0117494); - ssigpTa->SetBinContent(2096,0.0117976); - ssigpTa->SetBinContent(2097,0.0118464); - ssigpTa->SetBinContent(2098,0.0118955); - ssigpTa->SetBinContent(2099,0.0119453); - ssigpTa->SetBinContent(2100,0.0119965); - ssigpTa->SetBinContent(2101,0.0120483); - ssigpTa->SetBinContent(2102,0.012101); - ssigpTa->SetBinContent(2103,0.0121538); - ssigpTa->SetBinContent(2104,0.012208); - ssigpTa->SetBinContent(2105,0.0122621); - ssigpTa->SetBinContent(2106,0.0123182); - ssigpTa->SetBinContent(2107,0.0123744); - ssigpTa->SetBinContent(2108,0.0124322); - ssigpTa->SetBinContent(2109,0.01249); - ssigpTa->SetBinContent(2110,0.0125489); - ssigpTa->SetBinContent(2111,0.0126084); - ssigpTa->SetBinContent(2112,0.0126695); - ssigpTa->SetBinContent(2113,0.0127309); - ssigpTa->SetBinContent(2114,0.0127937); - ssigpTa->SetBinContent(2115,0.0128569); - ssigpTa->SetBinContent(2116,0.0129219); - ssigpTa->SetBinContent(2117,0.0129868); - ssigpTa->SetBinContent(2118,0.0130529); - ssigpTa->SetBinContent(2119,0.0131372); - ssigpTa->SetBinContent(2120,0.0133063); - ssigpTa->SetBinContent(2121,0.0136021); - ssigpTa->SetBinContent(2122,0.0140392); - ssigpTa->SetBinContent(2123,0.0146193); - ssigpTa->SetBinContent(2124,0.0149583); - ssigpTa->SetBinContent(2125,0.0150773); - ssigpTa->SetBinContent(2126,0.0151545); - ssigpTa->SetBinContent(2127,0.0152325); - ssigpTa->SetBinContent(2128,0.0153121); - ssigpTa->SetBinContent(2129,0.0153925); - ssigpTa->SetBinContent(2130,0.0154737); - ssigpTa->SetBinContent(2131,0.0155563); - ssigpTa->SetBinContent(2132,0.015609); - ssigpTa->SetBinContent(2133,0.0154955); - ssigpTa->SetBinContent(2134,0.0151938); - ssigpTa->SetBinContent(2135,0.0150567); - ssigpTa->SetBinContent(2136,0.0151678); - ssigpTa->SetBinContent(2137,0.0153724); - ssigpTa->SetBinContent(2138,0.0155882); - ssigpTa->SetBinContent(2139,0.0158023); - ssigpTa->SetBinContent(2140,0.016014); - ssigpTa->SetBinContent(2141,0.0161763); - ssigpTa->SetBinContent(2142,0.0160992); - ssigpTa->SetBinContent(2143,0.0157332); - ssigpTa->SetBinContent(2144,0.0153452); - ssigpTa->SetBinContent(2145,0.0149309); - ssigpTa->SetBinContent(2146,0.0148622); - ssigpTa->SetBinContent(2147,0.0150951); - ssigpTa->SetBinContent(2148,0.0153939); - ssigpTa->SetBinContent(2149,0.0156963); - ssigpTa->SetBinContent(2150,0.0160025); - ssigpTa->SetBinContent(2151,0.0163109); - ssigpTa->SetBinContent(2152,0.0165689); - ssigpTa->SetBinContent(2153,0.0165488); - ssigpTa->SetBinContent(2154,0.0162451); - ssigpTa->SetBinContent(2155,0.0162081); - ssigpTa->SetBinContent(2156,0.016444); - ssigpTa->SetBinContent(2157,0.0167331); - ssigpTa->SetBinContent(2158,0.0170228); - ssigpTa->SetBinContent(2159,0.0173137); - ssigpTa->SetBinContent(2160,0.0175282); - ssigpTa->SetBinContent(2161,0.0173533); - ssigpTa->SetBinContent(2162,0.0167961); - ssigpTa->SetBinContent(2163,0.0165918); - ssigpTa->SetBinContent(2164,0.0165613); - ssigpTa->SetBinContent(2165,0.0163727); - ssigpTa->SetBinContent(2166,0.0164027); - ssigpTa->SetBinContent(2167,0.0166519); - ssigpTa->SetBinContent(2168,0.0169449); - ssigpTa->SetBinContent(2169,0.0172393); - ssigpTa->SetBinContent(2170,0.0175376); - ssigpTa->SetBinContent(2171,0.0178393); - ssigpTa->SetBinContent(2172,0.0181417); - ssigpTa->SetBinContent(2173,0.0184452); - ssigpTa->SetBinContent(2174,0.0187522); - ssigpTa->SetBinContent(2175,0.0190253); - ssigpTa->SetBinContent(2176,0.0191029); - ssigpTa->SetBinContent(2177,0.0189768); - ssigpTa->SetBinContent(2178,0.0189588); - ssigpTa->SetBinContent(2179,0.0186979); - ssigpTa->SetBinContent(2180,0.0180311); - ssigpTa->SetBinContent(2181,0.0178149); - ssigpTa->SetBinContent(2182,0.0180445); - ssigpTa->SetBinContent(2183,0.0183676); - ssigpTa->SetBinContent(2184,0.0186939); - ssigpTa->SetBinContent(2185,0.0190222); - ssigpTa->SetBinContent(2186,0.019348); - ssigpTa->SetBinContent(2187,0.0196402); - ssigpTa->SetBinContent(2188,0.0198901); - ssigpTa->SetBinContent(2189,0.0201982); - ssigpTa->SetBinContent(2190,0.020638); - ssigpTa->SetBinContent(2191,0.0211785); - ssigpTa->SetBinContent(2192,0.0216326); - ssigpTa->SetBinContent(2193,0.0218735); - ssigpTa->SetBinContent(2194,0.0214878); - ssigpTa->SetBinContent(2195,0.0204775); - ssigpTa->SetBinContent(2196,0.0200193); - ssigpTa->SetBinContent(2197,0.0201466); - ssigpTa->SetBinContent(2198,0.0203895); - ssigpTa->SetBinContent(2199,0.0206219); - ssigpTa->SetBinContent(2200,0.0208384); - ssigpTa->SetBinContent(2201,0.0209032); - ssigpTa->SetBinContent(2202,0.0202657); - ssigpTa->SetBinContent(2203,0.0189091); - ssigpTa->SetBinContent(2204,0.0183014); - ssigpTa->SetBinContent(2205,0.0184225); - ssigpTa->SetBinContent(2206,0.0186913); - ssigpTa->SetBinContent(2207,0.0190867); - ssigpTa->SetBinContent(2208,0.0200586); - ssigpTa->SetBinContent(2209,0.0216031); - ssigpTa->SetBinContent(2210,0.0225935); - ssigpTa->SetBinContent(2211,0.0230268); - ssigpTa->SetBinContent(2212,0.0233568); - ssigpTa->SetBinContent(2213,0.0236937); - ssigpTa->SetBinContent(2214,0.02403); - ssigpTa->SetBinContent(2215,0.0243663); - ssigpTa->SetBinContent(2216,0.0246136); - ssigpTa->SetBinContent(2217,0.0244233); - ssigpTa->SetBinContent(2218,0.0237987); - ssigpTa->SetBinContent(2219,0.0236035); - ssigpTa->SetBinContent(2220,0.0239518); - ssigpTa->SetBinContent(2221,0.0249467); - ssigpTa->SetBinContent(2222,0.0265084); - ssigpTa->SetBinContent(2223,0.0275476); - ssigpTa->SetBinContent(2224,0.0280566); - ssigpTa->SetBinContent(2225,0.0284588); - ssigpTa->SetBinContent(2226,0.0288623); - ssigpTa->SetBinContent(2227,0.0291617); - ssigpTa->SetBinContent(2228,0.028946); - ssigpTa->SetBinContent(2229,0.0282141); - ssigpTa->SetBinContent(2230,0.0279852); - ssigpTa->SetBinContent(2231,0.0284037); - ssigpTa->SetBinContent(2232,0.029558); - ssigpTa->SetBinContent(2233,0.0313378); - ssigpTa->SetBinContent(2234,0.0325136); - ssigpTa->SetBinContent(2235,0.033075); - ssigpTa->SetBinContent(2236,0.0335326); - ssigpTa->SetBinContent(2237,0.0340132); - ssigpTa->SetBinContent(2238,0.034504); - ssigpTa->SetBinContent(2239,0.0347238); - ssigpTa->SetBinContent(2240,0.0335956); - ssigpTa->SetBinContent(2241,0.0310955); - ssigpTa->SetBinContent(2242,0.0299845); - ssigpTa->SetBinContent(2243,0.030677); - ssigpTa->SetBinContent(2244,0.0321505); - ssigpTa->SetBinContent(2245,0.0331706); - ssigpTa->SetBinContent(2246,0.0337359); - ssigpTa->SetBinContent(2247,0.0342187); - ssigpTa->SetBinContent(2248,0.0347014); - ssigpTa->SetBinContent(2249,0.0351713); - ssigpTa->SetBinContent(2250,0.0356283); - ssigpTa->SetBinContent(2251,0.0360453); - ssigpTa->SetBinContent(2252,0.0363542); - ssigpTa->SetBinContent(2253,0.0369454); - ssigpTa->SetBinContent(2254,0.0382947); - ssigpTa->SetBinContent(2255,0.0393859); - ssigpTa->SetBinContent(2256,0.0400368); - ssigpTa->SetBinContent(2257,0.0405964); - ssigpTa->SetBinContent(2258,0.0411686); - ssigpTa->SetBinContent(2259,0.041744); - ssigpTa->SetBinContent(2260,0.0423207); - ssigpTa->SetBinContent(2261,0.0429118); - ssigpTa->SetBinContent(2262,0.0435286); - ssigpTa->SetBinContent(2263,0.0442645); - ssigpTa->SetBinContent(2264,0.0454591); - ssigpTa->SetBinContent(2265,0.0470455); - ssigpTa->SetBinContent(2266,0.0480936); - ssigpTa->SetBinContent(2267,0.0487733); - ssigpTa->SetBinContent(2268,0.0494397); - ssigpTa->SetBinContent(2269,0.0501161); - ssigpTa->SetBinContent(2270,0.0508147); - ssigpTa->SetBinContent(2271,0.0515815); - ssigpTa->SetBinContent(2272,0.0523867); - ssigpTa->SetBinContent(2273,0.0532644); - ssigpTa->SetBinContent(2274,0.0544772); - ssigpTa->SetBinContent(2275,0.056032); - ssigpTa->SetBinContent(2276,0.0572514); - ssigpTa->SetBinContent(2277,0.0581413); - ssigpTa->SetBinContent(2278,0.058988); - ssigpTa->SetBinContent(2279,0.0598614); - ssigpTa->SetBinContent(2280,0.0607527); - ssigpTa->SetBinContent(2281,0.0616721); - ssigpTa->SetBinContent(2282,0.0626651); - ssigpTa->SetBinContent(2283,0.0638414); - ssigpTa->SetBinContent(2284,0.0651889); - ssigpTa->SetBinContent(2285,0.066392); - ssigpTa->SetBinContent(2286,0.0674748); - ssigpTa->SetBinContent(2287,0.0685536); - ssigpTa->SetBinContent(2288,0.0696357); - ssigpTa->SetBinContent(2289,0.0707115); - ssigpTa->SetBinContent(2290,0.0718047); - ssigpTa->SetBinContent(2291,0.073056); - ssigpTa->SetBinContent(2292,0.074372); - ssigpTa->SetBinContent(2293,0.0752661); - ssigpTa->SetBinContent(2294,0.0762826); - ssigpTa->SetBinContent(2295,0.0775476); - ssigpTa->SetBinContent(2296,0.0788724); - ssigpTa->SetBinContent(2297,0.0802072); - ssigpTa->SetBinContent(2298,0.0815415); - ssigpTa->SetBinContent(2299,0.0828642); - ssigpTa->SetBinContent(2300,0.0841724); - ssigpTa->SetBinContent(2301,0.0854574); - ssigpTa->SetBinContent(2302,0.0866754); - ssigpTa->SetBinContent(2303,0.0878127); - ssigpTa->SetBinContent(2304,0.0890695); - ssigpTa->SetBinContent(2305,0.0904523); - ssigpTa->SetBinContent(2306,0.0919381); - ssigpTa->SetBinContent(2307,0.0935447); - ssigpTa->SetBinContent(2308,0.0951956); - ssigpTa->SetBinContent(2309,0.096832); - ssigpTa->SetBinContent(2310,0.0976488); - ssigpTa->SetBinContent(2311,0.0946238); - ssigpTa->SetBinContent(2312,0.0877711); - ssigpTa->SetBinContent(2313,0.0844518); - ssigpTa->SetBinContent(2314,0.0848275); - ssigpTa->SetBinContent(2315,0.0860639); - ssigpTa->SetBinContent(2316,0.087352); - ssigpTa->SetBinContent(2317,0.0886306); - ssigpTa->SetBinContent(2318,0.0898799); - ssigpTa->SetBinContent(2319,0.0911018); - ssigpTa->SetBinContent(2320,0.0923013); - ssigpTa->SetBinContent(2321,0.0935292); - ssigpTa->SetBinContent(2322,0.0948705); - ssigpTa->SetBinContent(2323,0.0963118); - ssigpTa->SetBinContent(2324,0.0977761); - ssigpTa->SetBinContent(2325,0.0992527); - ssigpTa->SetBinContent(2326,0.100803); - ssigpTa->SetBinContent(2327,0.102455); - ssigpTa->SetBinContent(2328,0.104146); - ssigpTa->SetBinContent(2329,0.105822); - ssigpTa->SetBinContent(2330,0.10879); - ssigpTa->SetBinContent(2331,0.118703); - ssigpTa->SetBinContent(2332,0.13596); - ssigpTa->SetBinContent(2333,0.145884); - ssigpTa->SetBinContent(2334,0.148887); - ssigpTa->SetBinContent(2335,0.150618); - ssigpTa->SetBinContent(2336,0.152407); - ssigpTa->SetBinContent(2337,0.154222); - ssigpTa->SetBinContent(2338,0.156009); - ssigpTa->SetBinContent(2339,0.157747); - ssigpTa->SetBinContent(2340,0.159535); - ssigpTa->SetBinContent(2341,0.161522); - ssigpTa->SetBinContent(2342,0.163607); - ssigpTa->SetBinContent(2343,0.165694); - ssigpTa->SetBinContent(2344,0.16777); - ssigpTa->SetBinContent(2345,0.169914); - ssigpTa->SetBinContent(2346,0.172216); - ssigpTa->SetBinContent(2347,0.1747); - ssigpTa->SetBinContent(2348,0.17732); - ssigpTa->SetBinContent(2349,0.180022); - ssigpTa->SetBinContent(2350,0.182753); - ssigpTa->SetBinContent(2351,0.185461); - ssigpTa->SetBinContent(2352,0.188067); - ssigpTa->SetBinContent(2353,0.190549); - ssigpTa->SetBinContent(2354,0.192815); - ssigpTa->SetBinContent(2355,0.194599); - ssigpTa->SetBinContent(2356,0.195947); - ssigpTa->SetBinContent(2357,0.197189); - ssigpTa->SetBinContent(2358,0.198709); - ssigpTa->SetBinContent(2359,0.200675); - ssigpTa->SetBinContent(2360,0.202831); - ssigpTa->SetBinContent(2361,0.20502); - ssigpTa->SetBinContent(2362,0.207541); - ssigpTa->SetBinContent(2363,0.210692); - ssigpTa->SetBinContent(2364,0.214164); - ssigpTa->SetBinContent(2365,0.217647); - ssigpTa->SetBinContent(2366,0.221049); - ssigpTa->SetBinContent(2367,0.224355); - ssigpTa->SetBinContent(2368,0.227694); - ssigpTa->SetBinContent(2369,0.231283); - ssigpTa->SetBinContent(2370,0.23518); - ssigpTa->SetBinContent(2371,0.239391); - ssigpTa->SetBinContent(2372,0.243724); - ssigpTa->SetBinContent(2373,0.247675); - ssigpTa->SetBinContent(2374,0.251176); - ssigpTa->SetBinContent(2375,0.254389); - ssigpTa->SetBinContent(2376,0.257379); - ssigpTa->SetBinContent(2377,0.260173); - ssigpTa->SetBinContent(2378,0.262856); - ssigpTa->SetBinContent(2379,0.265583); - ssigpTa->SetBinContent(2380,0.268483); - ssigpTa->SetBinContent(2381,0.271485); - ssigpTa->SetBinContent(2382,0.274416); - ssigpTa->SetBinContent(2383,0.277345); - ssigpTa->SetBinContent(2384,0.280349); - ssigpTa->SetBinContent(2385,0.283297); - ssigpTa->SetBinContent(2386,0.286181); - ssigpTa->SetBinContent(2387,0.289165); - ssigpTa->SetBinContent(2388,0.292156); - ssigpTa->SetBinContent(2389,0.295001); - ssigpTa->SetBinContent(2390,0.298055); - ssigpTa->SetBinContent(2391,0.302246); - ssigpTa->SetBinContent(2392,0.308034); - ssigpTa->SetBinContent(2393,0.314742); - ssigpTa->SetBinContent(2394,0.321729); - ssigpTa->SetBinContent(2395,0.330316); - ssigpTa->SetBinContent(2396,0.350663); - ssigpTa->SetBinContent(2397,0.385197); - ssigpTa->SetBinContent(2398,0.405882); - ssigpTa->SetBinContent(2399,0.414919); - ssigpTa->SetBinContent(2400,0.422434); - ssigpTa->SetBinContent(2401,0.430267); - ssigpTa->SetBinContent(2402,0.438372); - ssigpTa->SetBinContent(2403,0.44679); - ssigpTa->SetBinContent(2404,0.455816); - ssigpTa->SetBinContent(2405,0.465648); - ssigpTa->SetBinContent(2406,0.475812); - ssigpTa->SetBinContent(2407,0.485728); - ssigpTa->SetBinContent(2408,0.49566); - ssigpTa->SetBinContent(2409,0.5065); - ssigpTa->SetBinContent(2410,0.518308); - ssigpTa->SetBinContent(2411,0.530263); - ssigpTa->SetBinContent(2412,0.541867); - ssigpTa->SetBinContent(2413,0.552325); - ssigpTa->SetBinContent(2414,0.564235); - ssigpTa->SetBinContent(2415,0.59819); - ssigpTa->SetBinContent(2416,0.655725); - ssigpTa->SetBinContent(2419,0.0102269); - ssigpTa->SetBinContent(2420,0.010219); - ssigpTa->SetBinContent(2421,0.0102155); - ssigpTa->SetBinContent(2422,0.0102162); - ssigpTa->SetBinContent(2423,0.0102188); - ssigpTa->SetBinContent(2424,0.010222); - ssigpTa->SetBinContent(2425,0.0102251); - ssigpTa->SetBinContent(2426,0.010228); - ssigpTa->SetBinContent(2427,0.0102317); - ssigpTa->SetBinContent(2428,0.0102366); - ssigpTa->SetBinContent(2429,0.0102421); - ssigpTa->SetBinContent(2430,0.010248); - ssigpTa->SetBinContent(2431,0.0102547); - ssigpTa->SetBinContent(2432,0.010262); - ssigpTa->SetBinContent(2433,0.0102692); - ssigpTa->SetBinContent(2434,0.0102764); - ssigpTa->SetBinContent(2435,0.0102861); - ssigpTa->SetBinContent(2436,0.0102953); - ssigpTa->SetBinContent(2437,0.0103055); - ssigpTa->SetBinContent(2438,0.0103153); - ssigpTa->SetBinContent(2439,0.0103261); - ssigpTa->SetBinContent(2440,0.0103365); - ssigpTa->SetBinContent(2441,0.0103494); - ssigpTa->SetBinContent(2442,0.0103622); - ssigpTa->SetBinContent(2443,0.0103749); - ssigpTa->SetBinContent(2444,0.0103882); - ssigpTa->SetBinContent(2445,0.0104025); - ssigpTa->SetBinContent(2446,0.0104182); - ssigpTa->SetBinContent(2447,0.0104327); - ssigpTa->SetBinContent(2448,0.0104496); - ssigpTa->SetBinContent(2449,0.0104662); - ssigpTa->SetBinContent(2450,0.0104831); - ssigpTa->SetBinContent(2451,0.0105007); - ssigpTa->SetBinContent(2452,0.0105182); - ssigpTa->SetBinContent(2453,0.0105374); - ssigpTa->SetBinContent(2454,0.010557); - ssigpTa->SetBinContent(2455,0.0105771); - ssigpTa->SetBinContent(2456,0.0105974); - ssigpTa->SetBinContent(2457,0.0106182); - ssigpTa->SetBinContent(2458,0.0106408); - ssigpTa->SetBinContent(2459,0.0106631); - ssigpTa->SetBinContent(2460,0.0106862); - ssigpTa->SetBinContent(2461,0.0107092); - ssigpTa->SetBinContent(2462,0.0107337); - ssigpTa->SetBinContent(2463,0.0107586); - ssigpTa->SetBinContent(2464,0.0107833); - ssigpTa->SetBinContent(2465,0.0108092); - ssigpTa->SetBinContent(2466,0.0108368); - ssigpTa->SetBinContent(2467,0.0108635); - ssigpTa->SetBinContent(2468,0.0108917); - ssigpTa->SetBinContent(2469,0.0109188); - ssigpTa->SetBinContent(2470,0.0109476); - ssigpTa->SetBinContent(2471,0.0109776); - ssigpTa->SetBinContent(2472,0.0110074); - ssigpTa->SetBinContent(2473,0.0110382); - ssigpTa->SetBinContent(2474,0.0110694); - ssigpTa->SetBinContent(2475,0.0111016); - ssigpTa->SetBinContent(2476,0.0111343); - ssigpTa->SetBinContent(2477,0.0111678); - ssigpTa->SetBinContent(2478,0.0112002); - ssigpTa->SetBinContent(2479,0.0112345); - ssigpTa->SetBinContent(2480,0.0112702); - ssigpTa->SetBinContent(2481,0.0113057); - ssigpTa->SetBinContent(2482,0.0113419); - ssigpTa->SetBinContent(2483,0.0113786); - ssigpTa->SetBinContent(2484,0.0114166); - ssigpTa->SetBinContent(2485,0.0114555); - ssigpTa->SetBinContent(2486,0.0114943); - ssigpTa->SetBinContent(2487,0.0115334); - ssigpTa->SetBinContent(2488,0.0115735); - ssigpTa->SetBinContent(2489,0.0116147); - ssigpTa->SetBinContent(2490,0.0116565); - ssigpTa->SetBinContent(2491,0.0116982); - ssigpTa->SetBinContent(2492,0.011741); - ssigpTa->SetBinContent(2493,0.0117845); - ssigpTa->SetBinContent(2494,0.0118286); - ssigpTa->SetBinContent(2495,0.0118738); - ssigpTa->SetBinContent(2496,0.01192); - ssigpTa->SetBinContent(2497,0.0119657); - ssigpTa->SetBinContent(2498,0.0120122); - ssigpTa->SetBinContent(2499,0.0120604); - ssigpTa->SetBinContent(2500,0.012109); - ssigpTa->SetBinContent(2501,0.0121583); - ssigpTa->SetBinContent(2502,0.0122077); - ssigpTa->SetBinContent(2503,0.0122586); - ssigpTa->SetBinContent(2504,0.01231); - ssigpTa->SetBinContent(2505,0.0123619); - ssigpTa->SetBinContent(2506,0.0124155); - ssigpTa->SetBinContent(2507,0.012468); - ssigpTa->SetBinContent(2508,0.0125233); - ssigpTa->SetBinContent(2509,0.0125784); - ssigpTa->SetBinContent(2510,0.0126357); - ssigpTa->SetBinContent(2511,0.0126927); - ssigpTa->SetBinContent(2512,0.0127514); - ssigpTa->SetBinContent(2513,0.0128098); - ssigpTa->SetBinContent(2514,0.0128696); - ssigpTa->SetBinContent(2515,0.01293); - ssigpTa->SetBinContent(2516,0.0129918); - ssigpTa->SetBinContent(2517,0.0130534); - ssigpTa->SetBinContent(2518,0.0131171); - ssigpTa->SetBinContent(2519,0.0131818); - ssigpTa->SetBinContent(2520,0.0132471); - ssigpTa->SetBinContent(2521,0.013312); - ssigpTa->SetBinContent(2522,0.0133947); - ssigpTa->SetBinContent(2523,0.0135528); - ssigpTa->SetBinContent(2524,0.0138347); - ssigpTa->SetBinContent(2525,0.0142876); - ssigpTa->SetBinContent(2526,0.0149154); - ssigpTa->SetBinContent(2527,0.0152802); - ssigpTa->SetBinContent(2528,0.0154038); - ssigpTa->SetBinContent(2529,0.0154798); - ssigpTa->SetBinContent(2530,0.0155579); - ssigpTa->SetBinContent(2531,0.0156367); - ssigpTa->SetBinContent(2532,0.0157169); - ssigpTa->SetBinContent(2533,0.0157983); - ssigpTa->SetBinContent(2534,0.0158812); - ssigpTa->SetBinContent(2535,0.0159301); - ssigpTa->SetBinContent(2536,0.0157978); - ssigpTa->SetBinContent(2537,0.0154648); - ssigpTa->SetBinContent(2538,0.0153233); - ssigpTa->SetBinContent(2539,0.0154415); - ssigpTa->SetBinContent(2540,0.0156517); - ssigpTa->SetBinContent(2541,0.0158738); - ssigpTa->SetBinContent(2542,0.0160935); - ssigpTa->SetBinContent(2543,0.0163116); - ssigpTa->SetBinContent(2544,0.0164812); - ssigpTa->SetBinContent(2545,0.0164118); - ssigpTa->SetBinContent(2546,0.0160571); - ssigpTa->SetBinContent(2547,0.0157273); - ssigpTa->SetBinContent(2548,0.0154178); - ssigpTa->SetBinContent(2549,0.0154096); - ssigpTa->SetBinContent(2550,0.015653); - ssigpTa->SetBinContent(2551,0.0159511); - ssigpTa->SetBinContent(2552,0.016252); - ssigpTa->SetBinContent(2553,0.016556); - ssigpTa->SetBinContent(2554,0.0168607); - ssigpTa->SetBinContent(2555,0.0171025); - ssigpTa->SetBinContent(2556,0.0170349); - ssigpTa->SetBinContent(2557,0.0166528); - ssigpTa->SetBinContent(2558,0.0165792); - ssigpTa->SetBinContent(2559,0.0168155); - ssigpTa->SetBinContent(2560,0.0171163); - ssigpTa->SetBinContent(2561,0.0174194); - ssigpTa->SetBinContent(2562,0.0177233); - ssigpTa->SetBinContent(2563,0.017947); - ssigpTa->SetBinContent(2564,0.0177735); - ssigpTa->SetBinContent(2565,0.017214); - ssigpTa->SetBinContent(2566,0.0170076); - ssigpTa->SetBinContent(2567,0.0169526); - ssigpTa->SetBinContent(2568,0.0167136); - ssigpTa->SetBinContent(2569,0.016723); - ssigpTa->SetBinContent(2570,0.0169805); - ssigpTa->SetBinContent(2571,0.0172864); - ssigpTa->SetBinContent(2572,0.0175954); - ssigpTa->SetBinContent(2573,0.0179076); - ssigpTa->SetBinContent(2574,0.0182248); - ssigpTa->SetBinContent(2575,0.0185433); - ssigpTa->SetBinContent(2576,0.018864); - ssigpTa->SetBinContent(2577,0.0191897); - ssigpTa->SetBinContent(2578,0.0194744); - ssigpTa->SetBinContent(2579,0.0195351); - ssigpTa->SetBinContent(2580,0.0193601); - ssigpTa->SetBinContent(2581,0.0193202); - ssigpTa->SetBinContent(2582,0.0190399); - ssigpTa->SetBinContent(2583,0.0183256); - ssigpTa->SetBinContent(2584,0.0180898); - ssigpTa->SetBinContent(2585,0.0183231); - ssigpTa->SetBinContent(2586,0.0186548); - ssigpTa->SetBinContent(2587,0.0189892); - ssigpTa->SetBinContent(2588,0.0193273); - ssigpTa->SetBinContent(2589,0.0196598); - ssigpTa->SetBinContent(2590,0.0199406); - ssigpTa->SetBinContent(2591,0.0201511); - ssigpTa->SetBinContent(2592,0.0204559); - ssigpTa->SetBinContent(2593,0.020942); - ssigpTa->SetBinContent(2594,0.0215694); - ssigpTa->SetBinContent(2595,0.022082); - ssigpTa->SetBinContent(2596,0.0223567); - ssigpTa->SetBinContent(2597,0.0220249); - ssigpTa->SetBinContent(2598,0.0210962); - ssigpTa->SetBinContent(2599,0.020691); - ssigpTa->SetBinContent(2600,0.0208412); - ssigpTa->SetBinContent(2601,0.0211032); - ssigpTa->SetBinContent(2602,0.0213592); - ssigpTa->SetBinContent(2603,0.021606); - ssigpTa->SetBinContent(2604,0.0216862); - ssigpTa->SetBinContent(2605,0.0209668); - ssigpTa->SetBinContent(2606,0.0194247); - ssigpTa->SetBinContent(2607,0.0187186); - ssigpTa->SetBinContent(2608,0.0188326); - ssigpTa->SetBinContent(2609,0.019115); - ssigpTa->SetBinContent(2610,0.0195145); - ssigpTa->SetBinContent(2611,0.0204539); - ssigpTa->SetBinContent(2612,0.021917); - ssigpTa->SetBinContent(2613,0.0228703); - ssigpTa->SetBinContent(2614,0.023301); - ssigpTa->SetBinContent(2615,0.0236382); - ssigpTa->SetBinContent(2616,0.0239814); - ssigpTa->SetBinContent(2617,0.0243255); - ssigpTa->SetBinContent(2618,0.0246698); - ssigpTa->SetBinContent(2619,0.0249284); - ssigpTa->SetBinContent(2620,0.024764); - ssigpTa->SetBinContent(2621,0.024184); - ssigpTa->SetBinContent(2622,0.024019); - ssigpTa->SetBinContent(2623,0.0243865); - ssigpTa->SetBinContent(2624,0.0253916); - ssigpTa->SetBinContent(2625,0.0269491); - ssigpTa->SetBinContent(2626,0.0279929); - ssigpTa->SetBinContent(2627,0.0285101); - ssigpTa->SetBinContent(2628,0.0289234); - ssigpTa->SetBinContent(2629,0.0293382); - ssigpTa->SetBinContent(2630,0.0296572); - ssigpTa->SetBinContent(2631,0.0295025); - ssigpTa->SetBinContent(2632,0.0288803); - ssigpTa->SetBinContent(2633,0.0287201); - ssigpTa->SetBinContent(2634,0.0291673); - ssigpTa->SetBinContent(2635,0.0303255); - ssigpTa->SetBinContent(2636,0.0320889); - ssigpTa->SetBinContent(2637,0.0332695); - ssigpTa->SetBinContent(2638,0.0338511); - ssigpTa->SetBinContent(2639,0.0343268); - ssigpTa->SetBinContent(2640,0.0348247); - ssigpTa->SetBinContent(2641,0.0353374); - ssigpTa->SetBinContent(2642,0.035603); - ssigpTa->SetBinContent(2643,0.0345846); - ssigpTa->SetBinContent(2644,0.0322799); - ssigpTa->SetBinContent(2645,0.0312771); - ssigpTa->SetBinContent(2646,0.0320322); - ssigpTa->SetBinContent(2647,0.0335518); - ssigpTa->SetBinContent(2648,0.0346142); - ssigpTa->SetBinContent(2649,0.0351992); - ssigpTa->SetBinContent(2650,0.0356959); - ssigpTa->SetBinContent(2651,0.0361918); - ssigpTa->SetBinContent(2652,0.0366801); - ssigpTa->SetBinContent(2653,0.0371614); - ssigpTa->SetBinContent(2654,0.0376106); - ssigpTa->SetBinContent(2655,0.037963); - ssigpTa->SetBinContent(2656,0.0386244); - ssigpTa->SetBinContent(2657,0.0399903); - ssigpTa->SetBinContent(2658,0.0411015); - ssigpTa->SetBinContent(2659,0.0417697); - ssigpTa->SetBinContent(2660,0.0423515); - ssigpTa->SetBinContent(2661,0.0429402); - ssigpTa->SetBinContent(2662,0.0435348); - ssigpTa->SetBinContent(2663,0.044134); - ssigpTa->SetBinContent(2664,0.0447508); - ssigpTa->SetBinContent(2665,0.0453913); - ssigpTa->SetBinContent(2666,0.0461352); - ssigpTa->SetBinContent(2667,0.0473057); - ssigpTa->SetBinContent(2668,0.0488183); - ssigpTa->SetBinContent(2669,0.049821); - ssigpTa->SetBinContent(2670,0.0504949); - ssigpTa->SetBinContent(2671,0.0511802); - ssigpTa->SetBinContent(2672,0.0518811); - ssigpTa->SetBinContent(2673,0.052606); - ssigpTa->SetBinContent(2674,0.053392); - ssigpTa->SetBinContent(2675,0.0542132); - ssigpTa->SetBinContent(2676,0.055103); - ssigpTa->SetBinContent(2677,0.0563196); - ssigpTa->SetBinContent(2678,0.057867); - ssigpTa->SetBinContent(2679,0.0590977); - ssigpTa->SetBinContent(2680,0.0600117); - ssigpTa->SetBinContent(2681,0.0608901); - ssigpTa->SetBinContent(2682,0.0617787); - ssigpTa->SetBinContent(2683,0.0626833); - ssigpTa->SetBinContent(2684,0.0636182); - ssigpTa->SetBinContent(2685,0.0646382); - ssigpTa->SetBinContent(2686,0.0658618); - ssigpTa->SetBinContent(2687,0.0672769); - ssigpTa->SetBinContent(2688,0.0685364); - ssigpTa->SetBinContent(2689,0.0696505); - ssigpTa->SetBinContent(2690,0.0707444); - ssigpTa->SetBinContent(2691,0.0718396); - ssigpTa->SetBinContent(2692,0.0729424); - ssigpTa->SetBinContent(2693,0.0741178); - ssigpTa->SetBinContent(2694,0.07566); - ssigpTa->SetBinContent(2695,0.0775339); - ssigpTa->SetBinContent(2696,0.0783313); - ssigpTa->SetBinContent(2697,0.0792776); - ssigpTa->SetBinContent(2698,0.0805759); - ssigpTa->SetBinContent(2699,0.0819631); - ssigpTa->SetBinContent(2700,0.0833659); - ssigpTa->SetBinContent(2701,0.0847693); - ssigpTa->SetBinContent(2702,0.0861658); - ssigpTa->SetBinContent(2703,0.0875588); - ssigpTa->SetBinContent(2704,0.088928); - ssigpTa->SetBinContent(2705,0.090127); - ssigpTa->SetBinContent(2706,0.0910299); - ssigpTa->SetBinContent(2707,0.0922331); - ssigpTa->SetBinContent(2708,0.0936484); - ssigpTa->SetBinContent(2709,0.0951828); - ssigpTa->SetBinContent(2710,0.0968521); - ssigpTa->SetBinContent(2711,0.0985865); - ssigpTa->SetBinContent(2712,0.100327); - ssigpTa->SetBinContent(2713,0.10139); - ssigpTa->SetBinContent(2714,0.0990741); - ssigpTa->SetBinContent(2715,0.0936635); - ssigpTa->SetBinContent(2716,0.0912171); - ssigpTa->SetBinContent(2717,0.0919151); - ssigpTa->SetBinContent(2718,0.093296); - ssigpTa->SetBinContent(2719,0.0947065); - ssigpTa->SetBinContent(2720,0.09611); - ssigpTa->SetBinContent(2721,0.0975018); - ssigpTa->SetBinContent(2722,0.0988774); - ssigpTa->SetBinContent(2723,0.100239); - ssigpTa->SetBinContent(2724,0.101643); - ssigpTa->SetBinContent(2725,0.103187); - ssigpTa->SetBinContent(2726,0.104865); - ssigpTa->SetBinContent(2727,0.106592); - ssigpTa->SetBinContent(2728,0.108335); - ssigpTa->SetBinContent(2729,0.110125); - ssigpTa->SetBinContent(2730,0.111983); - ssigpTa->SetBinContent(2731,0.113874); - ssigpTa->SetBinContent(2732,0.115759); - ssigpTa->SetBinContent(2733,0.119208); - ssigpTa->SetBinContent(2734,0.131271); - ssigpTa->SetBinContent(2735,0.153198); - ssigpTa->SetBinContent(2736,0.165438); - ssigpTa->SetBinContent(2737,0.169098); - ssigpTa->SetBinContent(2738,0.171201); - ssigpTa->SetBinContent(2739,0.173337); - ssigpTa->SetBinContent(2740,0.175469); - ssigpTa->SetBinContent(2741,0.17758); - ssigpTa->SetBinContent(2742,0.179711); - ssigpTa->SetBinContent(2743,0.182024); - ssigpTa->SetBinContent(2744,0.184662); - ssigpTa->SetBinContent(2745,0.187471); - ssigpTa->SetBinContent(2746,0.190339); - ssigpTa->SetBinContent(2747,0.193202); - ssigpTa->SetBinContent(2748,0.196031); - ssigpTa->SetBinContent(2749,0.198886); - ssigpTa->SetBinContent(2750,0.201868); - ssigpTa->SetBinContent(2751,0.205028); - ssigpTa->SetBinContent(2752,0.208358); - ssigpTa->SetBinContent(2753,0.211777); - ssigpTa->SetBinContent(2754,0.215207); - ssigpTa->SetBinContent(2755,0.218559); - ssigpTa->SetBinContent(2756,0.221829); - ssigpTa->SetBinContent(2757,0.224929); - ssigpTa->SetBinContent(2758,0.227594); - ssigpTa->SetBinContent(2759,0.229856); - ssigpTa->SetBinContent(2760,0.232009); - ssigpTa->SetBinContent(2761,0.234384); - ssigpTa->SetBinContent(2762,0.23709); - ssigpTa->SetBinContent(2763,0.239907); - ssigpTa->SetBinContent(2764,0.242721); - ssigpTa->SetBinContent(2765,0.245911); - ssigpTa->SetBinContent(2766,0.249875); - ssigpTa->SetBinContent(2767,0.254247); - ssigpTa->SetBinContent(2768,0.258654); - ssigpTa->SetBinContent(2769,0.262992); - ssigpTa->SetBinContent(2770,0.26728); - ssigpTa->SetBinContent(2771,0.271743); - ssigpTa->SetBinContent(2772,0.27669); - ssigpTa->SetBinContent(2773,0.282099); - ssigpTa->SetBinContent(2774,0.287864); - ssigpTa->SetBinContent(2775,0.29372); - ssigpTa->SetBinContent(2776,0.299151); - ssigpTa->SetBinContent(2777,0.304015); - ssigpTa->SetBinContent(2778,0.308492); - ssigpTa->SetBinContent(2779,0.312689); - ssigpTa->SetBinContent(2780,0.316652); - ssigpTa->SetBinContent(2781,0.320507); - ssigpTa->SetBinContent(2782,0.32453); - ssigpTa->SetBinContent(2783,0.328999); - ssigpTa->SetBinContent(2784,0.333796); - ssigpTa->SetBinContent(2785,0.33859); - ssigpTa->SetBinContent(2786,0.343343); - ssigpTa->SetBinContent(2787,0.3481); - ssigpTa->SetBinContent(2788,0.352753); - ssigpTa->SetBinContent(2789,0.357277); - ssigpTa->SetBinContent(2790,0.361753); - ssigpTa->SetBinContent(2791,0.366075); - ssigpTa->SetBinContent(2792,0.370208); - ssigpTa->SetBinContent(2793,0.374663); - ssigpTa->SetBinContent(2794,0.380387); - ssigpTa->SetBinContent(2795,0.387694); - ssigpTa->SetBinContent(2796,0.395944); - ssigpTa->SetBinContent(2797,0.404649); - ssigpTa->SetBinContent(2798,0.41672); - ssigpTa->SetBinContent(2799,0.449447); - ssigpTa->SetBinContent(2800,0.508355); - ssigpTa->SetBinContent(2801,0.54229); - ssigpTa->SetBinContent(2802,0.555966); - ssigpTa->SetBinContent(2803,0.566882); - ssigpTa->SetBinContent(2804,0.578878); - ssigpTa->SetBinContent(2805,0.591841); - ssigpTa->SetBinContent(2806,0.605648); - ssigpTa->SetBinContent(2807,0.6203); - ssigpTa->SetBinContent(2808,0.635481); - ssigpTa->SetBinContent(2809,0.650504); - ssigpTa->SetBinContent(2810,0.665191); - ssigpTa->SetBinContent(2811,0.680152); - ssigpTa->SetBinContent(2812,0.696438); - ssigpTa->SetBinContent(2813,0.714032); - ssigpTa->SetBinContent(2814,0.732083); - ssigpTa->SetBinContent(2815,0.750199); - ssigpTa->SetBinContent(2816,0.767553); - ssigpTa->SetBinContent(2817,0.790576); - ssigpTa->SetBinContent(2818,0.856068); - ssigpTa->SetBinContent(2819,0.974092); - ssigpTa->SetBinContent(2822,0.0107314); - ssigpTa->SetBinContent(2823,0.0107278); - ssigpTa->SetBinContent(2824,0.0107222); - ssigpTa->SetBinContent(2825,0.0107231); - ssigpTa->SetBinContent(2826,0.010726); - ssigpTa->SetBinContent(2827,0.0107305); - ssigpTa->SetBinContent(2828,0.010735); - ssigpTa->SetBinContent(2829,0.0107372); - ssigpTa->SetBinContent(2830,0.0107406); - ssigpTa->SetBinContent(2831,0.0107451); - ssigpTa->SetBinContent(2832,0.010751); - ssigpTa->SetBinContent(2833,0.0107564); - ssigpTa->SetBinContent(2834,0.0107642); - ssigpTa->SetBinContent(2835,0.0107713); - ssigpTa->SetBinContent(2836,0.0107772); - ssigpTa->SetBinContent(2837,0.0107847); - ssigpTa->SetBinContent(2838,0.0107939); - ssigpTa->SetBinContent(2839,0.0108042); - ssigpTa->SetBinContent(2840,0.010813); - ssigpTa->SetBinContent(2841,0.0108246); - ssigpTa->SetBinContent(2842,0.0108335); - ssigpTa->SetBinContent(2843,0.0108447); - ssigpTa->SetBinContent(2844,0.0108576); - ssigpTa->SetBinContent(2845,0.010871); - ssigpTa->SetBinContent(2846,0.0108842); - ssigpTa->SetBinContent(2847,0.0108968); - ssigpTa->SetBinContent(2848,0.0109122); - ssigpTa->SetBinContent(2849,0.0109268); - ssigpTa->SetBinContent(2850,0.0109418); - ssigpTa->SetBinContent(2851,0.0109573); - ssigpTa->SetBinContent(2852,0.0109755); - ssigpTa->SetBinContent(2853,0.0109926); - ssigpTa->SetBinContent(2854,0.0110102); - ssigpTa->SetBinContent(2855,0.0110281); - ssigpTa->SetBinContent(2856,0.0110476); - ssigpTa->SetBinContent(2857,0.011068); - ssigpTa->SetBinContent(2858,0.0110872); - ssigpTa->SetBinContent(2859,0.0111076); - ssigpTa->SetBinContent(2860,0.0111289); - ssigpTa->SetBinContent(2861,0.0111494); - ssigpTa->SetBinContent(2862,0.0111726); - ssigpTa->SetBinContent(2863,0.0111948); - ssigpTa->SetBinContent(2864,0.011219); - ssigpTa->SetBinContent(2865,0.0112431); - ssigpTa->SetBinContent(2866,0.0112681); - ssigpTa->SetBinContent(2867,0.0112927); - ssigpTa->SetBinContent(2868,0.0113186); - ssigpTa->SetBinContent(2869,0.0113456); - ssigpTa->SetBinContent(2870,0.0113747); - ssigpTa->SetBinContent(2871,0.011401); - ssigpTa->SetBinContent(2872,0.011429); - ssigpTa->SetBinContent(2873,0.0114573); - ssigpTa->SetBinContent(2874,0.0114865); - ssigpTa->SetBinContent(2875,0.0115173); - ssigpTa->SetBinContent(2876,0.0115482); - ssigpTa->SetBinContent(2877,0.0115798); - ssigpTa->SetBinContent(2878,0.0116118); - ssigpTa->SetBinContent(2879,0.0116456); - ssigpTa->SetBinContent(2880,0.0116781); - ssigpTa->SetBinContent(2881,0.011711); - ssigpTa->SetBinContent(2882,0.0117452); - ssigpTa->SetBinContent(2883,0.0117806); - ssigpTa->SetBinContent(2884,0.0118161); - ssigpTa->SetBinContent(2885,0.0118519); - ssigpTa->SetBinContent(2886,0.0118882); - ssigpTa->SetBinContent(2887,0.0119265); - ssigpTa->SetBinContent(2888,0.0119653); - ssigpTa->SetBinContent(2889,0.0120052); - ssigpTa->SetBinContent(2890,0.0120432); - ssigpTa->SetBinContent(2891,0.0120828); - ssigpTa->SetBinContent(2892,0.0121253); - ssigpTa->SetBinContent(2893,0.0121661); - ssigpTa->SetBinContent(2894,0.0122094); - ssigpTa->SetBinContent(2895,0.0122519); - ssigpTa->SetBinContent(2896,0.0122949); - ssigpTa->SetBinContent(2897,0.0123394); - ssigpTa->SetBinContent(2898,0.0123841); - ssigpTa->SetBinContent(2899,0.012431); - ssigpTa->SetBinContent(2900,0.0124782); - ssigpTa->SetBinContent(2901,0.0125236); - ssigpTa->SetBinContent(2902,0.0125719); - ssigpTa->SetBinContent(2903,0.0126211); - ssigpTa->SetBinContent(2904,0.0126702); - ssigpTa->SetBinContent(2905,0.012721); - ssigpTa->SetBinContent(2906,0.0127699); - ssigpTa->SetBinContent(2907,0.0128216); - ssigpTa->SetBinContent(2908,0.0128741); - ssigpTa->SetBinContent(2909,0.0129266); - ssigpTa->SetBinContent(2910,0.0129812); - ssigpTa->SetBinContent(2911,0.0130338); - ssigpTa->SetBinContent(2912,0.0130912); - ssigpTa->SetBinContent(2913,0.0131478); - ssigpTa->SetBinContent(2914,0.0132066); - ssigpTa->SetBinContent(2915,0.0132653); - ssigpTa->SetBinContent(2916,0.0133248); - ssigpTa->SetBinContent(2917,0.0133844); - ssigpTa->SetBinContent(2918,0.0134449); - ssigpTa->SetBinContent(2919,0.0135053); - ssigpTa->SetBinContent(2920,0.0135666); - ssigpTa->SetBinContent(2921,0.0136299); - ssigpTa->SetBinContent(2922,0.0136966); - ssigpTa->SetBinContent(2923,0.0137611); - ssigpTa->SetBinContent(2924,0.013827); - ssigpTa->SetBinContent(2925,0.0139049); - ssigpTa->SetBinContent(2926,0.01405); - ssigpTa->SetBinContent(2927,0.0143141); - ssigpTa->SetBinContent(2928,0.0147958); - ssigpTa->SetBinContent(2929,0.0155048); - ssigpTa->SetBinContent(2930,0.0159146); - ssigpTa->SetBinContent(2931,0.0160441); - ssigpTa->SetBinContent(2932,0.0161207); - ssigpTa->SetBinContent(2933,0.0161958); - ssigpTa->SetBinContent(2934,0.0162754); - ssigpTa->SetBinContent(2935,0.0163558); - ssigpTa->SetBinContent(2936,0.0164375); - ssigpTa->SetBinContent(2937,0.016522); - ssigpTa->SetBinContent(2938,0.0165662); - ssigpTa->SetBinContent(2939,0.0164012); - ssigpTa->SetBinContent(2940,0.0160168); - ssigpTa->SetBinContent(2941,0.015866); - ssigpTa->SetBinContent(2942,0.0159974); - ssigpTa->SetBinContent(2943,0.0162204); - ssigpTa->SetBinContent(2944,0.0164522); - ssigpTa->SetBinContent(2945,0.0166835); - ssigpTa->SetBinContent(2946,0.0169115); - ssigpTa->SetBinContent(2947,0.0170942); - ssigpTa->SetBinContent(2948,0.0170257); - ssigpTa->SetBinContent(2949,0.0166731); - ssigpTa->SetBinContent(2950,0.0164178); - ssigpTa->SetBinContent(2951,0.0162482); - ssigpTa->SetBinContent(2952,0.0163226); - ssigpTa->SetBinContent(2953,0.0165809); - ssigpTa->SetBinContent(2954,0.0168744); - ssigpTa->SetBinContent(2955,0.0171693); - ssigpTa->SetBinContent(2956,0.017466); - ssigpTa->SetBinContent(2957,0.0177632); - ssigpTa->SetBinContent(2958,0.0179869); - ssigpTa->SetBinContent(2959,0.0178695); - ssigpTa->SetBinContent(2960,0.0174067); - ssigpTa->SetBinContent(2961,0.017298); - ssigpTa->SetBinContent(2962,0.0175382); - ssigpTa->SetBinContent(2963,0.0178516); - ssigpTa->SetBinContent(2964,0.0181662); - ssigpTa->SetBinContent(2965,0.018482); - ssigpTa->SetBinContent(2966,0.0187179); - ssigpTa->SetBinContent(2967,0.0185674); - ssigpTa->SetBinContent(2968,0.0180401); - ssigpTa->SetBinContent(2969,0.0178478); - ssigpTa->SetBinContent(2970,0.0177446); - ssigpTa->SetBinContent(2971,0.0174062); - ssigpTa->SetBinContent(2972,0.017369); - ssigpTa->SetBinContent(2973,0.017637); - ssigpTa->SetBinContent(2974,0.0179682); - ssigpTa->SetBinContent(2975,0.0183006); - ssigpTa->SetBinContent(2976,0.0186391); - ssigpTa->SetBinContent(2977,0.0189803); - ssigpTa->SetBinContent(2978,0.0193262); - ssigpTa->SetBinContent(2979,0.0196765); - ssigpTa->SetBinContent(2980,0.0200298); - ssigpTa->SetBinContent(2981,0.020334); - ssigpTa->SetBinContent(2982,0.0203666); - ssigpTa->SetBinContent(2983,0.0201205); - ssigpTa->SetBinContent(2984,0.0200433); - ssigpTa->SetBinContent(2985,0.0197086); - ssigpTa->SetBinContent(2986,0.0189059); - ssigpTa->SetBinContent(2987,0.0186165); - ssigpTa->SetBinContent(2988,0.0188566); - ssigpTa->SetBinContent(2989,0.0192045); - ssigpTa->SetBinContent(2990,0.0195597); - ssigpTa->SetBinContent(2991,0.0199185); - ssigpTa->SetBinContent(2992,0.0202678); - ssigpTa->SetBinContent(2993,0.0205188); - ssigpTa->SetBinContent(2994,0.020662); - ssigpTa->SetBinContent(2995,0.0209415); - ssigpTa->SetBinContent(2996,0.0214814); - ssigpTa->SetBinContent(2997,0.0221969); - ssigpTa->SetBinContent(2998,0.0227777); - ssigpTa->SetBinContent(2999,0.0231027); - ssigpTa->SetBinContent(3000,0.0228736); - ssigpTa->SetBinContent(3001,0.0221035); - ssigpTa->SetBinContent(3002,0.0218065); - ssigpTa->SetBinContent(3003,0.0220108); - ssigpTa->SetBinContent(3004,0.0223136); - ssigpTa->SetBinContent(3005,0.0226118); - ssigpTa->SetBinContent(3006,0.0229006); - ssigpTa->SetBinContent(3007,0.0229865); - ssigpTa->SetBinContent(3008,0.0221358); - ssigpTa->SetBinContent(3009,0.0203545); - ssigpTa->SetBinContent(3010,0.0195012); - ssigpTa->SetBinContent(3011,0.0196028); - ssigpTa->SetBinContent(3012,0.019903); - ssigpTa->SetBinContent(3013,0.0203102); - ssigpTa->SetBinContent(3014,0.0211826); - ssigpTa->SetBinContent(3015,0.022523); - ssigpTa->SetBinContent(3016,0.0234051); - ssigpTa->SetBinContent(3017,0.0238363); - ssigpTa->SetBinContent(3018,0.0241846); - ssigpTa->SetBinContent(3019,0.0245429); - ssigpTa->SetBinContent(3020,0.0249014); - ssigpTa->SetBinContent(3021,0.0252604); - ssigpTa->SetBinContent(3022,0.0255401); - ssigpTa->SetBinContent(3023,0.0254282); - ssigpTa->SetBinContent(3024,0.0249338); - ssigpTa->SetBinContent(3025,0.0248293); - ssigpTa->SetBinContent(3026,0.0252255); - ssigpTa->SetBinContent(3027,0.0262194); - ssigpTa->SetBinContent(3028,0.0277307); - ssigpTa->SetBinContent(3029,0.0287554); - ssigpTa->SetBinContent(3030,0.0292857); - ssigpTa->SetBinContent(3031,0.0297198); - ssigpTa->SetBinContent(3032,0.0301555); - ssigpTa->SetBinContent(3033,0.0305107); - ssigpTa->SetBinContent(3034,0.0304561); - ssigpTa->SetBinContent(3035,0.0299934); - ssigpTa->SetBinContent(3036,0.0299451); - ssigpTa->SetBinContent(3037,0.0304353); - ssigpTa->SetBinContent(3038,0.031583); - ssigpTa->SetBinContent(3039,0.033293); - ssigpTa->SetBinContent(3040,0.0344606); - ssigpTa->SetBinContent(3041,0.0350729); - ssigpTa->SetBinContent(3042,0.0355828); - ssigpTa->SetBinContent(3043,0.0361167); - ssigpTa->SetBinContent(3044,0.0366676); - ssigpTa->SetBinContent(3045,0.0369888); - ssigpTa->SetBinContent(3046,0.0361207); - ssigpTa->SetBinContent(3047,0.0340354); - ssigpTa->SetBinContent(3048,0.0331887); - ssigpTa->SetBinContent(3049,0.0340138); - ssigpTa->SetBinContent(3050,0.0356042); - ssigpTa->SetBinContent(3051,0.0367226); - ssigpTa->SetBinContent(3052,0.0373493); - ssigpTa->SetBinContent(3053,0.0378742); - ssigpTa->SetBinContent(3054,0.0383986); - ssigpTa->SetBinContent(3055,0.0389203); - ssigpTa->SetBinContent(3056,0.0394394); - ssigpTa->SetBinContent(3057,0.039925); - ssigpTa->SetBinContent(3058,0.0403406); - ssigpTa->SetBinContent(3059,0.0410678); - ssigpTa->SetBinContent(3060,0.0424874); - ssigpTa->SetBinContent(3061,0.0436342); - ssigpTa->SetBinContent(3062,0.0443495); - ssigpTa->SetBinContent(3063,0.044969); - ssigpTa->SetBinContent(3064,0.0455966); - ssigpTa->SetBinContent(3065,0.0462255); - ssigpTa->SetBinContent(3066,0.0468667); - ssigpTa->SetBinContent(3067,0.0475276); - ssigpTa->SetBinContent(3068,0.0482159); - ssigpTa->SetBinContent(3069,0.0490073); - ssigpTa->SetBinContent(3070,0.0502022); - ssigpTa->SetBinContent(3071,0.0517138); - ssigpTa->SetBinContent(3072,0.0527246); - ssigpTa->SetBinContent(3073,0.053434); - ssigpTa->SetBinContent(3074,0.0541658); - ssigpTa->SetBinContent(3075,0.0549186); - ssigpTa->SetBinContent(3076,0.0556975); - ssigpTa->SetBinContent(3077,0.0565338); - ssigpTa->SetBinContent(3078,0.0574068); - ssigpTa->SetBinContent(3079,0.0583516); - ssigpTa->SetBinContent(3080,0.0596267); - ssigpTa->SetBinContent(3081,0.0612326); - ssigpTa->SetBinContent(3082,0.0625301); - ssigpTa->SetBinContent(3083,0.0635406); - ssigpTa->SetBinContent(3084,0.0645386); - ssigpTa->SetBinContent(3085,0.0655195); - ssigpTa->SetBinContent(3086,0.0664926); - ssigpTa->SetBinContent(3087,0.0675); - ssigpTa->SetBinContent(3088,0.0685986); - ssigpTa->SetBinContent(3089,0.0699253); - ssigpTa->SetBinContent(3090,0.0714537); - ssigpTa->SetBinContent(3091,0.0728264); - ssigpTa->SetBinContent(3092,0.0740346); - ssigpTa->SetBinContent(3093,0.0752134); - ssigpTa->SetBinContent(3094,0.0763938); - ssigpTa->SetBinContent(3095,0.0775926); - ssigpTa->SetBinContent(3096,0.0789635); - ssigpTa->SetBinContent(3097,0.0814029); - ssigpTa->SetBinContent(3098,0.0843999); - ssigpTa->SetBinContent(3099,0.0853182); - ssigpTa->SetBinContent(3100,0.086038); - ssigpTa->SetBinContent(3101,0.0874769); - ssigpTa->SetBinContent(3102,0.0890662); - ssigpTa->SetBinContent(3103,0.0906743); - ssigpTa->SetBinContent(3104,0.0922857); - ssigpTa->SetBinContent(3105,0.0938945); - ssigpTa->SetBinContent(3106,0.0955178); - ssigpTa->SetBinContent(3107,0.0970862); - ssigpTa->SetBinContent(3108,0.0980948); - ssigpTa->SetBinContent(3109,0.0984488); - ssigpTa->SetBinContent(3110,0.0994123); - ssigpTa->SetBinContent(3111,0.100967); - ssigpTa->SetBinContent(3112,0.102695); - ssigpTa->SetBinContent(3113,0.104589); - ssigpTa->SetBinContent(3114,0.106568); - ssigpTa->SetBinContent(3115,0.108553); - ssigpTa->SetBinContent(3116,0.10978); - ssigpTa->SetBinContent(3117,0.108186); - ssigpTa->SetBinContent(3118,0.104321); - ssigpTa->SetBinContent(3119,0.10309); - ssigpTa->SetBinContent(3120,0.104266); - ssigpTa->SetBinContent(3121,0.105962); - ssigpTa->SetBinContent(3122,0.107677); - ssigpTa->SetBinContent(3123,0.109398); - ssigpTa->SetBinContent(3124,0.111125); - ssigpTa->SetBinContent(3125,0.112847); - ssigpTa->SetBinContent(3126,0.114563); - ssigpTa->SetBinContent(3127,0.116347); - ssigpTa->SetBinContent(3128,0.118314); - ssigpTa->SetBinContent(3129,0.120454); - ssigpTa->SetBinContent(3130,0.122669); - ssigpTa->SetBinContent(3131,0.124915); - ssigpTa->SetBinContent(3132,0.1272); - ssigpTa->SetBinContent(3133,0.129544); - ssigpTa->SetBinContent(3134,0.131931); - ssigpTa->SetBinContent(3135,0.134333); - ssigpTa->SetBinContent(3136,0.138939); - ssigpTa->SetBinContent(3137,0.156584); - ssigpTa->SetBinContent(3138,0.188003); - ssigpTa->SetBinContent(3139,0.206137); - ssigpTa->SetBinContent(3140,0.211382); - ssigpTa->SetBinContent(3141,0.214451); - ssigpTa->SetBinContent(3142,0.21754); - ssigpTa->SetBinContent(3143,0.220594); - ssigpTa->SetBinContent(3144,0.223602); - ssigpTa->SetBinContent(3145,0.226677); - ssigpTa->SetBinContent(3146,0.230074); - ssigpTa->SetBinContent(3147,0.233937); - ssigpTa->SetBinContent(3148,0.238074); - ssigpTa->SetBinContent(3149,0.242361); - ssigpTa->SetBinContent(3150,0.246702); - ssigpTa->SetBinContent(3151,0.250976); - ssigpTa->SetBinContent(3152,0.255212); - ssigpTa->SetBinContent(3153,0.259548); - ssigpTa->SetBinContent(3154,0.264105); - ssigpTa->SetBinContent(3155,0.268924); - ssigpTa->SetBinContent(3156,0.273912); - ssigpTa->SetBinContent(3157,0.278955); - ssigpTa->SetBinContent(3158,0.283956); - ssigpTa->SetBinContent(3159,0.288929); - ssigpTa->SetBinContent(3160,0.293778); - ssigpTa->SetBinContent(3161,0.298185); - ssigpTa->SetBinContent(3162,0.302157); - ssigpTa->SetBinContent(3163,0.306001); - ssigpTa->SetBinContent(3164,0.310033); - ssigpTa->SetBinContent(3165,0.314335); - ssigpTa->SetBinContent(3166,0.318681); - ssigpTa->SetBinContent(3167,0.323001); - ssigpTa->SetBinContent(3168,0.327827); - ssigpTa->SetBinContent(3169,0.3337); - ssigpTa->SetBinContent(3170,0.340184); - ssigpTa->SetBinContent(3171,0.346781); - ssigpTa->SetBinContent(3172,0.353353); - ssigpTa->SetBinContent(3173,0.359936); - ssigpTa->SetBinContent(3174,0.366874); - ssigpTa->SetBinContent(3175,0.37456); - ssigpTa->SetBinContent(3176,0.382925); - ssigpTa->SetBinContent(3177,0.391749); - ssigpTa->SetBinContent(3178,0.400692); - ssigpTa->SetBinContent(3179,0.409161); - ssigpTa->SetBinContent(3180,0.416955); - ssigpTa->SetBinContent(3181,0.424262); - ssigpTa->SetBinContent(3182,0.431216); - ssigpTa->SetBinContent(3183,0.437868); - ssigpTa->SetBinContent(3184,0.444401); - ssigpTa->SetBinContent(3185,0.451281); - ssigpTa->SetBinContent(3186,0.458979); - ssigpTa->SetBinContent(3187,0.46731); - ssigpTa->SetBinContent(3188,0.475692); - ssigpTa->SetBinContent(3189,0.483944); - ssigpTa->SetBinContent(3190,0.49209); - ssigpTa->SetBinContent(3191,0.500043); - ssigpTa->SetBinContent(3192,0.507787); - ssigpTa->SetBinContent(3193,0.515351); - ssigpTa->SetBinContent(3194,0.522594); - ssigpTa->SetBinContent(3195,0.52959); - ssigpTa->SetBinContent(3196,0.537127); - ssigpTa->SetBinContent(3197,0.546376); - ssigpTa->SetBinContent(3198,0.557611); - ssigpTa->SetBinContent(3199,0.570114); - ssigpTa->SetBinContent(3200,0.583378); - ssigpTa->SetBinContent(3201,0.603199); - ssigpTa->SetBinContent(3202,0.663285); - ssigpTa->SetBinContent(3203,0.766524); - ssigpTa->SetBinContent(3204,0.829198); - ssigpTa->SetBinContent(3205,0.852644); - ssigpTa->SetBinContent(3206,0.871004); - ssigpTa->SetBinContent(3207,0.891566); - ssigpTa->SetBinContent(3208,0.914096); - ssigpTa->SetBinContent(3209,0.938202); - ssigpTa->SetBinContent(3210,0.963662); - ssigpTa->SetBinContent(3211,0.9897); - ssigpTa->SetBinContent(3212,1.01529); - ssigpTa->SetBinContent(3213,1.04047); - ssigpTa->SetBinContent(3214,1.06632); - ssigpTa->SetBinContent(3215,1.09437); - ssigpTa->SetBinContent(3216,1.12452); - ssigpTa->SetBinContent(3217,1.15564); - ssigpTa->SetBinContent(3218,1.18726); - ssigpTa->SetBinContent(3219,1.2182); - ssigpTa->SetBinContent(3220,1.2617); - ssigpTa->SetBinContent(3221,1.3916); - ssigpTa->SetBinContent(3222,1.58658); - ssigpTa->SetBinContent(3225,0.0114844); - ssigpTa->SetBinContent(3226,0.0114767); - ssigpTa->SetBinContent(3227,0.0114752); - ssigpTa->SetBinContent(3228,0.011476); - ssigpTa->SetBinContent(3229,0.0114786); - ssigpTa->SetBinContent(3230,0.0114858); - ssigpTa->SetBinContent(3231,0.0114908); - ssigpTa->SetBinContent(3232,0.0114948); - ssigpTa->SetBinContent(3233,0.0114966); - ssigpTa->SetBinContent(3234,0.0115); - ssigpTa->SetBinContent(3235,0.011505); - ssigpTa->SetBinContent(3236,0.0115116); - ssigpTa->SetBinContent(3237,0.0115184); - ssigpTa->SetBinContent(3238,0.0115282); - ssigpTa->SetBinContent(3239,0.0115326); - ssigpTa->SetBinContent(3240,0.0115392); - ssigpTa->SetBinContent(3241,0.0115492); - ssigpTa->SetBinContent(3242,0.0115576); - ssigpTa->SetBinContent(3243,0.01157); - ssigpTa->SetBinContent(3244,0.0115784); - ssigpTa->SetBinContent(3245,0.0115892); - ssigpTa->SetBinContent(3246,0.0115984); - ssigpTa->SetBinContent(3247,0.0116126); - ssigpTa->SetBinContent(3248,0.0116274); - ssigpTa->SetBinContent(3249,0.0116384); - ssigpTa->SetBinContent(3250,0.0116532); - ssigpTa->SetBinContent(3251,0.0116666); - ssigpTa->SetBinContent(3252,0.0116808); - ssigpTa->SetBinContent(3253,0.0116958); - ssigpTa->SetBinContent(3254,0.0117126); - ssigpTa->SetBinContent(3255,0.01173); - ssigpTa->SetBinContent(3256,0.0117498); - ssigpTa->SetBinContent(3257,0.0117658); - ssigpTa->SetBinContent(3258,0.0117856); - ssigpTa->SetBinContent(3259,0.0118048); - ssigpTa->SetBinContent(3260,0.0118256); - ssigpTa->SetBinContent(3261,0.0118448); - ssigpTa->SetBinContent(3262,0.0118656); - ssigpTa->SetBinContent(3263,0.0118848); - ssigpTa->SetBinContent(3264,0.0119066); - ssigpTa->SetBinContent(3265,0.0119266); - ssigpTa->SetBinContent(3266,0.0119516); - ssigpTa->SetBinContent(3267,0.0119732); - ssigpTa->SetBinContent(3268,0.011999); - ssigpTa->SetBinContent(3269,0.0120216); - ssigpTa->SetBinContent(3270,0.0120474); - ssigpTa->SetBinContent(3271,0.012074); - ssigpTa->SetBinContent(3272,0.0121024); - ssigpTa->SetBinContent(3273,0.0121306); - ssigpTa->SetBinContent(3274,0.0121606); - ssigpTa->SetBinContent(3275,0.0121864); - ssigpTa->SetBinContent(3276,0.0122148); - ssigpTa->SetBinContent(3277,0.0122456); - ssigpTa->SetBinContent(3278,0.012274); - ssigpTa->SetBinContent(3279,0.0123064); - ssigpTa->SetBinContent(3280,0.0123388); - ssigpTa->SetBinContent(3281,0.0123706); - ssigpTa->SetBinContent(3282,0.0124022); - ssigpTa->SetBinContent(3283,0.0124356); - ssigpTa->SetBinContent(3284,0.0124672); - ssigpTa->SetBinContent(3285,0.0125014); - ssigpTa->SetBinContent(3286,0.0125364); - ssigpTa->SetBinContent(3287,0.012573); - ssigpTa->SetBinContent(3288,0.0126066); - ssigpTa->SetBinContent(3289,0.012644); - ssigpTa->SetBinContent(3290,0.0126806); - ssigpTa->SetBinContent(3291,0.0127206); - ssigpTa->SetBinContent(3292,0.0127598); - ssigpTa->SetBinContent(3293,0.012799); - ssigpTa->SetBinContent(3294,0.012839); - ssigpTa->SetBinContent(3295,0.0128798); - ssigpTa->SetBinContent(3296,0.0129238); - ssigpTa->SetBinContent(3297,0.0129656); - ssigpTa->SetBinContent(3298,0.0130096); - ssigpTa->SetBinContent(3299,0.0130522); - ssigpTa->SetBinContent(3300,0.0130948); - ssigpTa->SetBinContent(3301,0.0131406); - ssigpTa->SetBinContent(3302,0.0131904); - ssigpTa->SetBinContent(3303,0.013237); - ssigpTa->SetBinContent(3304,0.0132836); - ssigpTa->SetBinContent(3305,0.0133304); - ssigpTa->SetBinContent(3306,0.0133788); - ssigpTa->SetBinContent(3307,0.0134294); - ssigpTa->SetBinContent(3308,0.0134794); - ssigpTa->SetBinContent(3309,0.0135302); - ssigpTa->SetBinContent(3310,0.0135796); - ssigpTa->SetBinContent(3311,0.0136336); - ssigpTa->SetBinContent(3312,0.0136902); - ssigpTa->SetBinContent(3313,0.013741); - ssigpTa->SetBinContent(3314,0.0137952); - ssigpTa->SetBinContent(3315,0.013851); - ssigpTa->SetBinContent(3316,0.0139094); - ssigpTa->SetBinContent(3317,0.0139692); - ssigpTa->SetBinContent(3318,0.0140284); - ssigpTa->SetBinContent(3319,0.014089); - ssigpTa->SetBinContent(3320,0.0141482); - ssigpTa->SetBinContent(3321,0.014209); - ssigpTa->SetBinContent(3322,0.0142684); - ssigpTa->SetBinContent(3323,0.01433); - ssigpTa->SetBinContent(3324,0.0143942); - ssigpTa->SetBinContent(3325,0.0144624); - ssigpTa->SetBinContent(3326,0.0145282); - ssigpTa->SetBinContent(3327,0.0145924); - ssigpTa->SetBinContent(3328,0.0146718); - ssigpTa->SetBinContent(3329,0.0148042); - ssigpTa->SetBinContent(3330,0.0150576); - ssigpTa->SetBinContent(3331,0.0155934); - ssigpTa->SetBinContent(3332,0.0164262); - ssigpTa->SetBinContent(3333,0.0169036); - ssigpTa->SetBinContent(3334,0.0170442); - ssigpTa->SetBinContent(3335,0.0171168); - ssigpTa->SetBinContent(3336,0.0171944); - ssigpTa->SetBinContent(3337,0.0172728); - ssigpTa->SetBinContent(3338,0.0173536); - ssigpTa->SetBinContent(3339,0.017436); - ssigpTa->SetBinContent(3340,0.0175208); - ssigpTa->SetBinContent(3341,0.0175578); - ssigpTa->SetBinContent(3342,0.0173436); - ssigpTa->SetBinContent(3343,0.0168788); - ssigpTa->SetBinContent(3344,0.0167072); - ssigpTa->SetBinContent(3345,0.01686); - ssigpTa->SetBinContent(3346,0.0171); - ssigpTa->SetBinContent(3347,0.0173512); - ssigpTa->SetBinContent(3348,0.0175992); - ssigpTa->SetBinContent(3349,0.0178494); - ssigpTa->SetBinContent(3350,0.018046); - ssigpTa->SetBinContent(3351,0.0179676); - ssigpTa->SetBinContent(3352,0.0175804); - ssigpTa->SetBinContent(3353,0.0173698); - ssigpTa->SetBinContent(3354,0.0173212); - ssigpTa->SetBinContent(3355,0.0174668); - ssigpTa->SetBinContent(3356,0.017742); - ssigpTa->SetBinContent(3357,0.0180358); - ssigpTa->SetBinContent(3358,0.018332); - ssigpTa->SetBinContent(3359,0.0186308); - ssigpTa->SetBinContent(3360,0.0189272); - ssigpTa->SetBinContent(3361,0.0191516); - ssigpTa->SetBinContent(3362,0.0189946); - ssigpTa->SetBinContent(3363,0.0184638); - ssigpTa->SetBinContent(3364,0.0183252); - ssigpTa->SetBinContent(3365,0.0185748); - ssigpTa->SetBinContent(3366,0.0188996); - ssigpTa->SetBinContent(3367,0.019223); - ssigpTa->SetBinContent(3368,0.0195488); - ssigpTa->SetBinContent(3369,0.0198052); - ssigpTa->SetBinContent(3370,0.019703); - ssigpTa->SetBinContent(3371,0.0192548); - ssigpTa->SetBinContent(3372,0.0191004); - ssigpTa->SetBinContent(3373,0.0189358); - ssigpTa->SetBinContent(3374,0.018457); - ssigpTa->SetBinContent(3375,0.0183566); - ssigpTa->SetBinContent(3376,0.018635); - ssigpTa->SetBinContent(3377,0.0189942); - ssigpTa->SetBinContent(3378,0.0193598); - ssigpTa->SetBinContent(3379,0.0197242); - ssigpTa->SetBinContent(3380,0.0200976); - ssigpTa->SetBinContent(3381,0.0204756); - ssigpTa->SetBinContent(3382,0.0208586); - ssigpTa->SetBinContent(3383,0.0212482); - ssigpTa->SetBinContent(3384,0.0215708); - ssigpTa->SetBinContent(3385,0.021571); - ssigpTa->SetBinContent(3386,0.021235); - ssigpTa->SetBinContent(3387,0.0211048); - ssigpTa->SetBinContent(3388,0.020718); - ssigpTa->SetBinContent(3389,0.019802); - ssigpTa->SetBinContent(3390,0.019464); - ssigpTa->SetBinContent(3391,0.0197094); - ssigpTa->SetBinContent(3392,0.0200868); - ssigpTa->SetBinContent(3393,0.0204704); - ssigpTa->SetBinContent(3394,0.0208628); - ssigpTa->SetBinContent(3395,0.0212288); - ssigpTa->SetBinContent(3396,0.0214366); - ssigpTa->SetBinContent(3397,0.0214624); - ssigpTa->SetBinContent(3398,0.0216994); - ssigpTa->SetBinContent(3399,0.0222722); - ssigpTa->SetBinContent(3400,0.0230562); - ssigpTa->SetBinContent(3401,0.0236888); - ssigpTa->SetBinContent(3402,0.0240712); - ssigpTa->SetBinContent(3403,0.0239678); - ssigpTa->SetBinContent(3404,0.0233944); - ssigpTa->SetBinContent(3405,0.0232396); - ssigpTa->SetBinContent(3406,0.0235182); - ssigpTa->SetBinContent(3407,0.0238804); - ssigpTa->SetBinContent(3408,0.0242342); - ssigpTa->SetBinContent(3409,0.0245584); - ssigpTa->SetBinContent(3410,0.024619); - ssigpTa->SetBinContent(3411,0.0236654); - ssigpTa->SetBinContent(3412,0.0216766); - ssigpTa->SetBinContent(3413,0.0207194); - ssigpTa->SetBinContent(3414,0.0208132); - ssigpTa->SetBinContent(3415,0.021142); - ssigpTa->SetBinContent(3416,0.0215514); - ssigpTa->SetBinContent(3417,0.0223506); - ssigpTa->SetBinContent(3418,0.0235276); - ssigpTa->SetBinContent(3419,0.0243322); - ssigpTa->SetBinContent(3420,0.0247624); - ssigpTa->SetBinContent(3421,0.0251346); - ssigpTa->SetBinContent(3422,0.0255162); - ssigpTa->SetBinContent(3423,0.0259002); - ssigpTa->SetBinContent(3424,0.026286); - ssigpTa->SetBinContent(3425,0.0266022); - ssigpTa->SetBinContent(3426,0.026575); - ssigpTa->SetBinContent(3427,0.0262134); - ssigpTa->SetBinContent(3428,0.0262046); - ssigpTa->SetBinContent(3429,0.0266364); - ssigpTa->SetBinContent(3430,0.0275986); - ssigpTa->SetBinContent(3431,0.0290126); - ssigpTa->SetBinContent(3432,0.0299966); - ssigpTa->SetBinContent(3433,0.0305492); - ssigpTa->SetBinContent(3434,0.0310192); - ssigpTa->SetBinContent(3435,0.0314966); - ssigpTa->SetBinContent(3436,0.0319066); - ssigpTa->SetBinContent(3437,0.0319822); - ssigpTa->SetBinContent(3438,0.0317282); - ssigpTa->SetBinContent(3439,0.0318214); - ssigpTa->SetBinContent(3440,0.032371); - ssigpTa->SetBinContent(3441,0.0334902); - ssigpTa->SetBinContent(3442,0.0350986); - ssigpTa->SetBinContent(3443,0.0362348); - ssigpTa->SetBinContent(3444,0.0368886); - ssigpTa->SetBinContent(3445,0.0374574); - ssigpTa->SetBinContent(3446,0.0380478); - ssigpTa->SetBinContent(3447,0.0386626); - ssigpTa->SetBinContent(3448,0.0390658); - ssigpTa->SetBinContent(3449,0.0383794); - ssigpTa->SetBinContent(3450,0.0365782); - ssigpTa->SetBinContent(3451,0.0359084); - ssigpTa->SetBinContent(3452,0.0368016); - ssigpTa->SetBinContent(3453,0.0384056); - ssigpTa->SetBinContent(3454,0.0395686); - ssigpTa->SetBinContent(3455,0.0402556); - ssigpTa->SetBinContent(3456,0.0408436); - ssigpTa->SetBinContent(3457,0.0414338); - ssigpTa->SetBinContent(3458,0.0420238); - ssigpTa->SetBinContent(3459,0.0426172); - ssigpTa->SetBinContent(3460,0.0431788); - ssigpTa->SetBinContent(3461,0.0436822); - ssigpTa->SetBinContent(3462,0.0445044); - ssigpTa->SetBinContent(3463,0.0459632); - ssigpTa->SetBinContent(3464,0.047167); - ssigpTa->SetBinContent(3465,0.0479614); - ssigpTa->SetBinContent(3466,0.0486644); - ssigpTa->SetBinContent(3467,0.0493696); - ssigpTa->SetBinContent(3468,0.0500836); - ssigpTa->SetBinContent(3469,0.0508092); - ssigpTa->SetBinContent(3470,0.0515656); - ssigpTa->SetBinContent(3471,0.052352); - ssigpTa->SetBinContent(3472,0.0532504); - ssigpTa->SetBinContent(3473,0.0545352); - ssigpTa->SetBinContent(3474,0.0561132); - ssigpTa->SetBinContent(3475,0.0572032); - ssigpTa->SetBinContent(3476,0.058014); - ssigpTa->SetBinContent(3477,0.0588494); - ssigpTa->SetBinContent(3478,0.0597138); - ssigpTa->SetBinContent(3479,0.0606074); - ssigpTa->SetBinContent(3480,0.0615648); - ssigpTa->SetBinContent(3481,0.0625632); - ssigpTa->SetBinContent(3482,0.0636472); - ssigpTa->SetBinContent(3483,0.0650658); - ssigpTa->SetBinContent(3484,0.0668238); - ssigpTa->SetBinContent(3485,0.0682862); - ssigpTa->SetBinContent(3486,0.069521); - ssigpTa->SetBinContent(3487,0.0708054); - ssigpTa->SetBinContent(3488,0.0720164); - ssigpTa->SetBinContent(3489,0.0731652); - ssigpTa->SetBinContent(3490,0.0743426); - ssigpTa->SetBinContent(3491,0.0756302); - ssigpTa->SetBinContent(3492,0.0771498); - ssigpTa->SetBinContent(3493,0.0788904); - ssigpTa->SetBinContent(3494,0.0804748); - ssigpTa->SetBinContent(3495,0.0818954); - ssigpTa->SetBinContent(3496,0.0832824); - ssigpTa->SetBinContent(3497,0.0846752); - ssigpTa->SetBinContent(3498,0.0860968); - ssigpTa->SetBinContent(3499,0.0879954); - ssigpTa->SetBinContent(3500,0.092052); - ssigpTa->SetBinContent(3501,0.09734); - ssigpTa->SetBinContent(3502,0.0985192); - ssigpTa->SetBinContent(3503,0.0990506); - ssigpTa->SetBinContent(3504,0.100729); - ssigpTa->SetBinContent(3505,0.102737); - ssigpTa->SetBinContent(3506,0.104776); - ssigpTa->SetBinContent(3507,0.106821); - ssigpTa->SetBinContent(3508,0.108877); - ssigpTa->SetBinContent(3509,0.110962); - ssigpTa->SetBinContent(3510,0.112853); - ssigpTa->SetBinContent(3511,0.113528); - ssigpTa->SetBinContent(3512,0.112823); - ssigpTa->SetBinContent(3513,0.113394); - ssigpTa->SetBinContent(3514,0.115198); - ssigpTa->SetBinContent(3515,0.11736); - ssigpTa->SetBinContent(3516,0.119727); - ssigpTa->SetBinContent(3517,0.122208); - ssigpTa->SetBinContent(3518,0.124594); - ssigpTa->SetBinContent(3519,0.125908); - ssigpTa->SetBinContent(3520,0.124527); - ssigpTa->SetBinContent(3521,0.1221); - ssigpTa->SetBinContent(3522,0.122112); - ssigpTa->SetBinContent(3523,0.124018); - ssigpTa->SetBinContent(3524,0.126279); - ssigpTa->SetBinContent(3525,0.128575); - ssigpTa->SetBinContent(3526,0.130892); - ssigpTa->SetBinContent(3527,0.133233); - ssigpTa->SetBinContent(3528,0.13558); - ssigpTa->SetBinContent(3529,0.137931); - ssigpTa->SetBinContent(3530,0.140389); - ssigpTa->SetBinContent(3531,0.143092); - ssigpTa->SetBinContent(3532,0.146022); - ssigpTa->SetBinContent(3533,0.149064); - ssigpTa->SetBinContent(3534,0.152162); - ssigpTa->SetBinContent(3535,0.155315); - ssigpTa->SetBinContent(3536,0.158543); - ssigpTa->SetBinContent(3537,0.161841); - ssigpTa->SetBinContent(3538,0.165183); - ssigpTa->SetBinContent(3539,0.17238); - ssigpTa->SetBinContent(3540,0.19923); - ssigpTa->SetBinContent(3541,0.247066); - ssigpTa->SetBinContent(3542,0.274883); - ssigpTa->SetBinContent(3543,0.283391); - ssigpTa->SetBinContent(3544,0.28814); - ssigpTa->SetBinContent(3545,0.292917); - ssigpTa->SetBinContent(3546,0.29763); - ssigpTa->SetBinContent(3547,0.302274); - ssigpTa->SetBinContent(3548,0.307027); - ssigpTa->SetBinContent(3549,0.31226); - ssigpTa->SetBinContent(3550,0.318159); - ssigpTa->SetBinContent(3551,0.324462); - ssigpTa->SetBinContent(3552,0.331035); - ssigpTa->SetBinContent(3553,0.33775); - ssigpTa->SetBinContent(3554,0.344406); - ssigpTa->SetBinContent(3555,0.351006); - ssigpTa->SetBinContent(3556,0.357723); - ssigpTa->SetBinContent(3557,0.36474); - ssigpTa->SetBinContent(3558,0.372137); - ssigpTa->SetBinContent(3559,0.379808); - ssigpTa->SetBinContent(3560,0.387594); - ssigpTa->SetBinContent(3561,0.395369); - ssigpTa->SetBinContent(3562,0.40318); - ssigpTa->SetBinContent(3563,0.410891); - ssigpTa->SetBinContent(3564,0.418074); - ssigpTa->SetBinContent(3565,0.424722); - ssigpTa->SetBinContent(3566,0.431205); - ssigpTa->SetBinContent(3567,0.437897); - ssigpTa->SetBinContent(3568,0.444854); - ssigpTa->SetBinContent(3569,0.451829); - ssigpTa->SetBinContent(3570,0.45877); - ssigpTa->SetBinContent(3571,0.46643); - ssigpTa->SetBinContent(3572,0.4756); - ssigpTa->SetBinContent(3573,0.485691); - ssigpTa->SetBinContent(3574,0.496023); - ssigpTa->SetBinContent(3575,0.50639); - ssigpTa->SetBinContent(3576,0.516849); - ssigpTa->SetBinContent(3577,0.527884); - ssigpTa->SetBinContent(3578,0.540043); - ssigpTa->SetBinContent(3579,0.553186); - ssigpTa->SetBinContent(3580,0.56701); - ssigpTa->SetBinContent(3581,0.581027); - ssigpTa->SetBinContent(3582,0.59448); - ssigpTa->SetBinContent(3583,0.607066); - ssigpTa->SetBinContent(3584,0.619012); - ssigpTa->SetBinContent(3585,0.630477); - ssigpTa->SetBinContent(3586,0.641529); - ssigpTa->SetBinContent(3587,0.652444); - ssigpTa->SetBinContent(3588,0.663932); - ssigpTa->SetBinContent(3589,0.676733); - ssigpTa->SetBinContent(3590,0.690565); - ssigpTa->SetBinContent(3591,0.704518); - ssigpTa->SetBinContent(3592,0.718244); - ssigpTa->SetBinContent(3593,0.731743); - ssigpTa->SetBinContent(3594,0.744934); - ssigpTa->SetBinContent(3595,0.757822); - ssigpTa->SetBinContent(3596,0.770404); - ssigpTa->SetBinContent(3597,0.782475); - ssigpTa->SetBinContent(3598,0.794225); - ssigpTa->SetBinContent(3599,0.806854); - ssigpTa->SetBinContent(3600,0.821987); - ssigpTa->SetBinContent(3601,0.839953); - ssigpTa->SetBinContent(3602,0.85981); - ssigpTa->SetBinContent(3603,0.880892); - ssigpTa->SetBinContent(3604,0.915257); - ssigpTa->SetBinContent(3605,1.01616); - ssigpTa->SetBinContent(3606,1.18923); - ssigpTa->SetBinContent(3607,1.29473); - ssigpTa->SetBinContent(3608,1.33574); - ssigpTa->SetBinContent(3609,1.36614); - ssigpTa->SetBinContent(3610,1.40029); - ssigpTa->SetBinContent(3611,1.43777); - ssigpTa->SetBinContent(3612,1.47788); - ssigpTa->SetBinContent(3613,1.52014); - ssigpTa->SetBinContent(3614,1.56325); - ssigpTa->SetBinContent(3615,1.60568); - ssigpTa->SetBinContent(3616,1.64757); - ssigpTa->SetBinContent(3617,1.6907); - ssigpTa->SetBinContent(3618,1.73736); - ssigpTa->SetBinContent(3619,1.78743); - ssigpTa->SetBinContent(3620,1.83919); - ssigpTa->SetBinContent(3621,1.89195); - ssigpTa->SetBinContent(3622,1.94386); - ssigpTa->SetBinContent(3623,2.02259); - ssigpTa->SetBinContent(3624,2.22882); - ssigpTa->SetBinContent(3625,2.55969); - ssigpTa->SetBinContent(3628,0.0123994); - ssigpTa->SetBinContent(3629,0.0123971); - ssigpTa->SetBinContent(3630,0.0123944); - ssigpTa->SetBinContent(3631,0.0123944); - ssigpTa->SetBinContent(3632,0.0123972); - ssigpTa->SetBinContent(3633,0.0124016); - ssigpTa->SetBinContent(3634,0.0124092); - ssigpTa->SetBinContent(3635,0.0124116); - ssigpTa->SetBinContent(3636,0.0124132); - ssigpTa->SetBinContent(3637,0.0124148); - ssigpTa->SetBinContent(3638,0.012418); - ssigpTa->SetBinContent(3639,0.012422); - ssigpTa->SetBinContent(3640,0.0124332); - ssigpTa->SetBinContent(3641,0.0124408); - ssigpTa->SetBinContent(3642,0.01245); - ssigpTa->SetBinContent(3643,0.0124544); - ssigpTa->SetBinContent(3644,0.0124624); - ssigpTa->SetBinContent(3645,0.0124728); - ssigpTa->SetBinContent(3646,0.0124816); - ssigpTa->SetBinContent(3647,0.0124944); - ssigpTa->SetBinContent(3648,0.012502); - ssigpTa->SetBinContent(3649,0.0125124); - ssigpTa->SetBinContent(3650,0.0125264); - ssigpTa->SetBinContent(3651,0.0125384); - ssigpTa->SetBinContent(3652,0.0125524); - ssigpTa->SetBinContent(3653,0.0125648); - ssigpTa->SetBinContent(3654,0.0125772); - ssigpTa->SetBinContent(3655,0.0125912); - ssigpTa->SetBinContent(3656,0.0126044); - ssigpTa->SetBinContent(3657,0.0126228); - ssigpTa->SetBinContent(3658,0.0126412); - ssigpTa->SetBinContent(3659,0.012656); - ssigpTa->SetBinContent(3660,0.012678); - ssigpTa->SetBinContent(3661,0.0126928); - ssigpTa->SetBinContent(3662,0.0127144); - ssigpTa->SetBinContent(3663,0.0127348); - ssigpTa->SetBinContent(3664,0.012754); - ssigpTa->SetBinContent(3665,0.0127724); - ssigpTa->SetBinContent(3666,0.012796); - ssigpTa->SetBinContent(3667,0.012812); - ssigpTa->SetBinContent(3668,0.0128372); - ssigpTa->SetBinContent(3669,0.0128568); - ssigpTa->SetBinContent(3670,0.0128812); - ssigpTa->SetBinContent(3671,0.0129012); - ssigpTa->SetBinContent(3672,0.0129256); - ssigpTa->SetBinContent(3673,0.012952); - ssigpTa->SetBinContent(3674,0.0129788); - ssigpTa->SetBinContent(3675,0.013008); - ssigpTa->SetBinContent(3676,0.0130368); - ssigpTa->SetBinContent(3677,0.0130656); - ssigpTa->SetBinContent(3678,0.0130928); - ssigpTa->SetBinContent(3679,0.013122); - ssigpTa->SetBinContent(3680,0.0131492); - ssigpTa->SetBinContent(3681,0.01318); - ssigpTa->SetBinContent(3682,0.0132088); - ssigpTa->SetBinContent(3683,0.0132428); - ssigpTa->SetBinContent(3684,0.0132736); - ssigpTa->SetBinContent(3685,0.0133028); - ssigpTa->SetBinContent(3686,0.0133336); - ssigpTa->SetBinContent(3687,0.0133656); - ssigpTa->SetBinContent(3688,0.0134); - ssigpTa->SetBinContent(3689,0.0134368); - ssigpTa->SetBinContent(3690,0.0134684); - ssigpTa->SetBinContent(3691,0.0135052); - ssigpTa->SetBinContent(3692,0.0135388); - ssigpTa->SetBinContent(3693,0.0135752); - ssigpTa->SetBinContent(3694,0.0136136); - ssigpTa->SetBinContent(3695,0.0136556); - ssigpTa->SetBinContent(3696,0.0136948); - ssigpTa->SetBinContent(3697,0.0137324); - ssigpTa->SetBinContent(3698,0.013776); - ssigpTa->SetBinContent(3699,0.0138168); - ssigpTa->SetBinContent(3700,0.0138616); - ssigpTa->SetBinContent(3701,0.0139008); - ssigpTa->SetBinContent(3702,0.013942); - ssigpTa->SetBinContent(3703,0.0139856); - ssigpTa->SetBinContent(3704,0.0140324); - ssigpTa->SetBinContent(3705,0.0140832); - ssigpTa->SetBinContent(3706,0.014134); - ssigpTa->SetBinContent(3707,0.0141776); - ssigpTa->SetBinContent(3708,0.014224); - ssigpTa->SetBinContent(3709,0.0142676); - ssigpTa->SetBinContent(3710,0.0143184); - ssigpTa->SetBinContent(3711,0.0143708); - ssigpTa->SetBinContent(3712,0.0144192); - ssigpTa->SetBinContent(3713,0.0144696); - ssigpTa->SetBinContent(3714,0.0145244); - ssigpTa->SetBinContent(3715,0.0145792); - ssigpTa->SetBinContent(3716,0.0146332); - ssigpTa->SetBinContent(3717,0.0146832); - ssigpTa->SetBinContent(3718,0.0147388); - ssigpTa->SetBinContent(3719,0.0148004); - ssigpTa->SetBinContent(3720,0.0148584); - ssigpTa->SetBinContent(3721,0.0149196); - ssigpTa->SetBinContent(3722,0.0149776); - ssigpTa->SetBinContent(3723,0.0150388); - ssigpTa->SetBinContent(3724,0.0150968); - ssigpTa->SetBinContent(3725,0.015158); - ssigpTa->SetBinContent(3726,0.0152192); - ssigpTa->SetBinContent(3727,0.0152844); - ssigpTa->SetBinContent(3728,0.0153504); - ssigpTa->SetBinContent(3729,0.0154156); - ssigpTa->SetBinContent(3730,0.0154832); - ssigpTa->SetBinContent(3731,0.0155612); - ssigpTa->SetBinContent(3732,0.0156896); - ssigpTa->SetBinContent(3733,0.015944); - ssigpTa->SetBinContent(3734,0.016568); - ssigpTa->SetBinContent(3735,0.0175768); - ssigpTa->SetBinContent(3736,0.0181512); - ssigpTa->SetBinContent(3737,0.0183048); - ssigpTa->SetBinContent(3738,0.0183784); - ssigpTa->SetBinContent(3739,0.0184544); - ssigpTa->SetBinContent(3740,0.018534); - ssigpTa->SetBinContent(3741,0.0186156); - ssigpTa->SetBinContent(3742,0.0186944); - ssigpTa->SetBinContent(3743,0.0187792); - ssigpTa->SetBinContent(3744,0.0188016); - ssigpTa->SetBinContent(3745,0.0185172); - ssigpTa->SetBinContent(3746,0.0179308); - ssigpTa->SetBinContent(3747,0.0177244); - ssigpTa->SetBinContent(3748,0.0178968); - ssigpTa->SetBinContent(3749,0.0181668); - ssigpTa->SetBinContent(3750,0.0184416); - ssigpTa->SetBinContent(3751,0.0187228); - ssigpTa->SetBinContent(3752,0.0190012); - ssigpTa->SetBinContent(3753,0.0192236); - ssigpTa->SetBinContent(3754,0.0191096); - ssigpTa->SetBinContent(3755,0.0186392); - ssigpTa->SetBinContent(3756,0.0184216); - ssigpTa->SetBinContent(3757,0.0184432); - ssigpTa->SetBinContent(3758,0.0186404); - ssigpTa->SetBinContent(3759,0.0189332); - ssigpTa->SetBinContent(3760,0.0192492); - ssigpTa->SetBinContent(3761,0.0195644); - ssigpTa->SetBinContent(3762,0.0198832); - ssigpTa->SetBinContent(3763,0.0202052); - ssigpTa->SetBinContent(3764,0.0204404); - ssigpTa->SetBinContent(3765,0.0202544); - ssigpTa->SetBinContent(3766,0.0196292); - ssigpTa->SetBinContent(3767,0.0194532); - ssigpTa->SetBinContent(3768,0.01971); - ssigpTa->SetBinContent(3769,0.0200516); - ssigpTa->SetBinContent(3770,0.0203912); - ssigpTa->SetBinContent(3771,0.020734); - ssigpTa->SetBinContent(3772,0.021018); - ssigpTa->SetBinContent(3773,0.0209848); - ssigpTa->SetBinContent(3774,0.020642); - ssigpTa->SetBinContent(3775,0.0205408); - ssigpTa->SetBinContent(3776,0.0203096); - ssigpTa->SetBinContent(3777,0.0196736); - ssigpTa->SetBinContent(3778,0.0194984); - ssigpTa->SetBinContent(3779,0.0197864); - ssigpTa->SetBinContent(3780,0.0201752); - ssigpTa->SetBinContent(3781,0.0205648); - ssigpTa->SetBinContent(3782,0.0209632); - ssigpTa->SetBinContent(3783,0.021362); - ssigpTa->SetBinContent(3784,0.0217736); - ssigpTa->SetBinContent(3785,0.0221908); - ssigpTa->SetBinContent(3786,0.0226112); - ssigpTa->SetBinContent(3787,0.02296); - ssigpTa->SetBinContent(3788,0.022914); - ssigpTa->SetBinContent(3789,0.0224656); - ssigpTa->SetBinContent(3790,0.0222872); - ssigpTa->SetBinContent(3791,0.0218692); - ssigpTa->SetBinContent(3792,0.020914); - ssigpTa->SetBinContent(3793,0.0205548); - ssigpTa->SetBinContent(3794,0.0208288); - ssigpTa->SetBinContent(3795,0.0212388); - ssigpTa->SetBinContent(3796,0.021656); - ssigpTa->SetBinContent(3797,0.0220824); - ssigpTa->SetBinContent(3798,0.0224688); - ssigpTa->SetBinContent(3799,0.0226068); - ssigpTa->SetBinContent(3800,0.0224856); - ssigpTa->SetBinContent(3801,0.0226476); - ssigpTa->SetBinContent(3802,0.0232372); - ssigpTa->SetBinContent(3803,0.0240484); - ssigpTa->SetBinContent(3804,0.0247136); - ssigpTa->SetBinContent(3805,0.0251364); - ssigpTa->SetBinContent(3806,0.0251436); - ssigpTa->SetBinContent(3807,0.024748); - ssigpTa->SetBinContent(3808,0.0247172); - ssigpTa->SetBinContent(3809,0.0250676); - ssigpTa->SetBinContent(3810,0.0254904); - ssigpTa->SetBinContent(3811,0.025898); - ssigpTa->SetBinContent(3812,0.026224); - ssigpTa->SetBinContent(3813,0.0262448); - ssigpTa->SetBinContent(3814,0.0252344); - ssigpTa->SetBinContent(3815,0.0232052); - ssigpTa->SetBinContent(3816,0.0222296); - ssigpTa->SetBinContent(3817,0.0223532); - ssigpTa->SetBinContent(3818,0.0227132); - ssigpTa->SetBinContent(3819,0.0231436); - ssigpTa->SetBinContent(3820,0.0238684); - ssigpTa->SetBinContent(3821,0.0248992); - ssigpTa->SetBinContent(3822,0.0256304); - ssigpTa->SetBinContent(3823,0.0260784); - ssigpTa->SetBinContent(3824,0.0264832); - ssigpTa->SetBinContent(3825,0.0268988); - ssigpTa->SetBinContent(3826,0.0273196); - ssigpTa->SetBinContent(3827,0.0277436); - ssigpTa->SetBinContent(3828,0.0281136); - ssigpTa->SetBinContent(3829,0.028196); - ssigpTa->SetBinContent(3830,0.0280096); - ssigpTa->SetBinContent(3831,0.0281184); - ssigpTa->SetBinContent(3832,0.0286032); - ssigpTa->SetBinContent(3833,0.0295196); - ssigpTa->SetBinContent(3834,0.0308136); - ssigpTa->SetBinContent(3835,0.0317512); - ssigpTa->SetBinContent(3836,0.0323368); - ssigpTa->SetBinContent(3837,0.032868); - ssigpTa->SetBinContent(3838,0.0333976); - ssigpTa->SetBinContent(3839,0.0338828); - ssigpTa->SetBinContent(3840,0.0341096); - ssigpTa->SetBinContent(3841,0.0340872); - ssigpTa->SetBinContent(3842,0.0343468); - ssigpTa->SetBinContent(3843,0.0349704); - ssigpTa->SetBinContent(3844,0.0360548); - ssigpTa->SetBinContent(3845,0.0375308); - ssigpTa->SetBinContent(3846,0.0386268); - ssigpTa->SetBinContent(3847,0.0393372); - ssigpTa->SetBinContent(3848,0.0399812); - ssigpTa->SetBinContent(3849,0.0406532); - ssigpTa->SetBinContent(3850,0.0413464); - ssigpTa->SetBinContent(3851,0.0418644); - ssigpTa->SetBinContent(3852,0.0414028); - ssigpTa->SetBinContent(3853,0.0399536); - ssigpTa->SetBinContent(3854,0.0395068); - ssigpTa->SetBinContent(3855,0.0404308); - ssigpTa->SetBinContent(3856,0.0419732); - ssigpTa->SetBinContent(3857,0.04314); - ssigpTa->SetBinContent(3858,0.0439088); - ssigpTa->SetBinContent(3859,0.0446016); - ssigpTa->SetBinContent(3860,0.0452968); - ssigpTa->SetBinContent(3861,0.0459996); - ssigpTa->SetBinContent(3862,0.0467088); - ssigpTa->SetBinContent(3863,0.0473924); - ssigpTa->SetBinContent(3864,0.0480324); - ssigpTa->SetBinContent(3865,0.0489556); - ssigpTa->SetBinContent(3866,0.0504232); - ssigpTa->SetBinContent(3867,0.0516804); - ssigpTa->SetBinContent(3868,0.0525856); - ssigpTa->SetBinContent(3869,0.0534192); - ssigpTa->SetBinContent(3870,0.05426); - ssigpTa->SetBinContent(3871,0.0551048); - ssigpTa->SetBinContent(3872,0.055974); - ssigpTa->SetBinContent(3873,0.0568772); - ssigpTa->SetBinContent(3874,0.0578216); - ssigpTa->SetBinContent(3875,0.0588712); - ssigpTa->SetBinContent(3876,0.0602812); - ssigpTa->SetBinContent(3877,0.0619384); - ssigpTa->SetBinContent(3878,0.0631512); - ssigpTa->SetBinContent(3879,0.0641208); - ssigpTa->SetBinContent(3880,0.0651304); - ssigpTa->SetBinContent(3881,0.0661708); - ssigpTa->SetBinContent(3882,0.0672492); - ssigpTa->SetBinContent(3883,0.0683996); - ssigpTa->SetBinContent(3884,0.0696036); - ssigpTa->SetBinContent(3885,0.070896); - ssigpTa->SetBinContent(3886,0.072524); - ssigpTa->SetBinContent(3887,0.07448); - ssigpTa->SetBinContent(3888,0.0761796); - ssigpTa->SetBinContent(3889,0.0777616); - ssigpTa->SetBinContent(3890,0.0795004); - ssigpTa->SetBinContent(3891,0.0810756); - ssigpTa->SetBinContent(3892,0.0825036); - ssigpTa->SetBinContent(3893,0.0839488); - ssigpTa->SetBinContent(3894,0.0855148); - ssigpTa->SetBinContent(3895,0.0873228); - ssigpTa->SetBinContent(3896,0.0893416); - ssigpTa->SetBinContent(3897,0.091232); - ssigpTa->SetBinContent(3898,0.0929728); - ssigpTa->SetBinContent(3899,0.094684); - ssigpTa->SetBinContent(3900,0.0964072); - ssigpTa->SetBinContent(3901,0.0981704); - ssigpTa->SetBinContent(3902,0.100812); - ssigpTa->SetBinContent(3903,0.107234); - ssigpTa->SetBinContent(3904,0.115628); - ssigpTa->SetBinContent(3905,0.117405); - ssigpTa->SetBinContent(3906,0.117684); - ssigpTa->SetBinContent(3907,0.11973); - ssigpTa->SetBinContent(3908,0.12234); - ssigpTa->SetBinContent(3909,0.124986); - ssigpTa->SetBinContent(3910,0.127652); - ssigpTa->SetBinContent(3911,0.130335); - ssigpTa->SetBinContent(3912,0.133074); - ssigpTa->SetBinContent(3913,0.135428); - ssigpTa->SetBinContent(3914,0.13563); - ssigpTa->SetBinContent(3915,0.133558); - ssigpTa->SetBinContent(3916,0.133591); - ssigpTa->SetBinContent(3917,0.135787); - ssigpTa->SetBinContent(3918,0.138576); - ssigpTa->SetBinContent(3919,0.141618); - ssigpTa->SetBinContent(3920,0.14481); - ssigpTa->SetBinContent(3921,0.147756); - ssigpTa->SetBinContent(3922,0.14898); - ssigpTa->SetBinContent(3923,0.147357); - ssigpTa->SetBinContent(3924,0.145865); - ssigpTa->SetBinContent(3925,0.1471); - ssigpTa->SetBinContent(3926,0.149848); - ssigpTa->SetBinContent(3927,0.15288); - ssigpTa->SetBinContent(3928,0.155959); - ssigpTa->SetBinContent(3929,0.159085); - ssigpTa->SetBinContent(3930,0.162254); - ssigpTa->SetBinContent(3931,0.165436); - ssigpTa->SetBinContent(3932,0.168636); - ssigpTa->SetBinContent(3933,0.171989); - ssigpTa->SetBinContent(3934,0.175659); - ssigpTa->SetBinContent(3935,0.179626); - ssigpTa->SetBinContent(3936,0.183746); - ssigpTa->SetBinContent(3937,0.187957); - ssigpTa->SetBinContent(3938,0.192247); - ssigpTa->SetBinContent(3939,0.196645); - ssigpTa->SetBinContent(3940,0.201151); - ssigpTa->SetBinContent(3941,0.20573); - ssigpTa->SetBinContent(3942,0.216039); - ssigpTa->SetBinContent(3943,0.254943); - ssigpTa->SetBinContent(3944,0.323112); - ssigpTa->SetBinContent(3945,0.363534); - ssigpTa->SetBinContent(3946,0.375934); - ssigpTa->SetBinContent(3947,0.38278); - ssigpTa->SetBinContent(3948,0.389662); - ssigpTa->SetBinContent(3949,0.396468); - ssigpTa->SetBinContent(3950,0.403175); - ssigpTa->SetBinContent(3951,0.41004); - ssigpTa->SetBinContent(3952,0.417571); - ssigpTa->SetBinContent(3953,0.426001); - ssigpTa->SetBinContent(3954,0.434996); - ssigpTa->SetBinContent(3955,0.444389); - ssigpTa->SetBinContent(3956,0.454019); - ssigpTa->SetBinContent(3957,0.463592); - ssigpTa->SetBinContent(3958,0.473112); - ssigpTa->SetBinContent(3959,0.482789); - ssigpTa->SetBinContent(3960,0.49287); - ssigpTa->SetBinContent(3961,0.503476); - ssigpTa->SetBinContent(3962,0.51448); - ssigpTa->SetBinContent(3963,0.525655); - ssigpTa->SetBinContent(3964,0.536856); - ssigpTa->SetBinContent(3965,0.548144); - ssigpTa->SetBinContent(3966,0.559335); - ssigpTa->SetBinContent(3967,0.569857); - ssigpTa->SetBinContent(3968,0.579685); - ssigpTa->SetBinContent(3969,0.589309); - ssigpTa->SetBinContent(3970,0.599186); - ssigpTa->SetBinContent(3971,0.60939); - ssigpTa->SetBinContent(3972,0.619592); - ssigpTa->SetBinContent(3973,0.629757); - ssigpTa->SetBinContent(3974,0.640926); - ssigpTa->SetBinContent(3975,0.654161); - ssigpTa->SetBinContent(3976,0.668709); - ssigpTa->SetBinContent(3977,0.683635); - ssigpTa->SetBinContent(3978,0.698647); - ssigpTa->SetBinContent(3979,0.713829); - ssigpTa->SetBinContent(3980,0.729848); - ssigpTa->SetBinContent(3981,0.747426); - ssigpTa->SetBinContent(3982,0.766388); - ssigpTa->SetBinContent(3983,0.786303); - ssigpTa->SetBinContent(3984,0.806515); - ssigpTa->SetBinContent(3985,0.826011); - ssigpTa->SetBinContent(3986,0.844375); - ssigpTa->SetBinContent(3987,0.86188); - ssigpTa->SetBinContent(3988,0.878743); - ssigpTa->SetBinContent(3989,0.89505); - ssigpTa->SetBinContent(3990,0.911184); - ssigpTa->SetBinContent(3991,0.928152); - ssigpTa->SetBinContent(3992,0.946999); - ssigpTa->SetBinContent(3993,0.967335); - ssigpTa->SetBinContent(3994,0.987872); - ssigpTa->SetBinContent(3995,1.00808); - ssigpTa->SetBinContent(3996,1.02794); - ssigpTa->SetBinContent(3997,1.04737); - ssigpTa->SetBinContent(3998,1.06638); - ssigpTa->SetBinContent(3999,1.08496); - ssigpTa->SetBinContent(4000,1.10281); - ssigpTa->SetBinContent(4001,1.12024); - ssigpTa->SetBinContent(4002,1.13894); - ssigpTa->SetBinContent(4003,1.16115); - ssigpTa->SetBinContent(4004,1.18729); - ssigpTa->SetBinContent(4005,1.21614); - ssigpTa->SetBinContent(4006,1.24673); - ssigpTa->SetBinContent(4007,1.29738); - ssigpTa->SetBinContent(4008,1.44801); - ssigpTa->SetBinContent(4009,1.70161); - ssigpTa->SetBinContent(4010,1.85913); - ssigpTa->SetBinContent(4011,1.91984); - ssigpTa->SetBinContent(4012,1.96454); - ssigpTa->SetBinContent(4013,2.01475); - ssigpTa->SetBinContent(4014,2.06983); - ssigpTa->SetBinContent(4015,2.12877); - ssigpTa->SetBinContent(4016,2.19082); - ssigpTa->SetBinContent(4017,2.2541); - ssigpTa->SetBinContent(4018,2.31641); - ssigpTa->SetBinContent(4019,2.37802); - ssigpTa->SetBinContent(4020,2.44149); - ssigpTa->SetBinContent(4021,2.5101); - ssigpTa->SetBinContent(4022,2.58365); - ssigpTa->SetBinContent(4023,2.65974); - ssigpTa->SetBinContent(4024,2.73737); - ssigpTa->SetBinContent(4025,2.81384); - ssigpTa->SetBinContent(4026,2.93099); - ssigpTa->SetBinContent(4027,3.23793); - ssigpTa->SetBinContent(4028,3.70628); - ssigpTa->SetBinContent(4031,0.0134589); - ssigpTa->SetBinContent(4032,0.013455); - ssigpTa->SetBinContent(4033,0.0134528); - ssigpTa->SetBinContent(4034,0.0134528); - ssigpTa->SetBinContent(4035,0.0134528); - ssigpTa->SetBinContent(4036,0.013456); - ssigpTa->SetBinContent(4037,0.0134584); - ssigpTa->SetBinContent(4038,0.0134608); - ssigpTa->SetBinContent(4039,0.0134608); - ssigpTa->SetBinContent(4040,0.0134608); - ssigpTa->SetBinContent(4041,0.013464); - ssigpTa->SetBinContent(4042,0.013468); - ssigpTa->SetBinContent(4043,0.0134736); - ssigpTa->SetBinContent(4044,0.0134888); - ssigpTa->SetBinContent(4045,0.013496); - ssigpTa->SetBinContent(4046,0.013504); - ssigpTa->SetBinContent(4047,0.0135088); - ssigpTa->SetBinContent(4048,0.0135144); - ssigpTa->SetBinContent(4049,0.0135256); - ssigpTa->SetBinContent(4050,0.0135376); - ssigpTa->SetBinContent(4051,0.013548); - ssigpTa->SetBinContent(4052,0.0135576); - ssigpTa->SetBinContent(4053,0.0135688); - ssigpTa->SetBinContent(4054,0.0135792); - ssigpTa->SetBinContent(4055,0.0135904); - ssigpTa->SetBinContent(4056,0.013608); - ssigpTa->SetBinContent(4057,0.01362); - ssigpTa->SetBinContent(4058,0.013628); - ssigpTa->SetBinContent(4059,0.0136448); - ssigpTa->SetBinContent(4060,0.0136592); - ssigpTa->SetBinContent(4061,0.013676); - ssigpTa->SetBinContent(4062,0.0136952); - ssigpTa->SetBinContent(4063,0.0137088); - ssigpTa->SetBinContent(4064,0.0137296); - ssigpTa->SetBinContent(4065,0.013748); - ssigpTa->SetBinContent(4066,0.0137688); - ssigpTa->SetBinContent(4067,0.0137848); - ssigpTa->SetBinContent(4068,0.0138056); - ssigpTa->SetBinContent(4069,0.013824); - ssigpTa->SetBinContent(4070,0.0138488); - ssigpTa->SetBinContent(4071,0.0138648); - ssigpTa->SetBinContent(4072,0.0138904); - ssigpTa->SetBinContent(4073,0.0139064); - ssigpTa->SetBinContent(4074,0.013928); - ssigpTa->SetBinContent(4075,0.013952); - ssigpTa->SetBinContent(4076,0.0139768); - ssigpTa->SetBinContent(4077,0.014008); - ssigpTa->SetBinContent(4078,0.0140304); - ssigpTa->SetBinContent(4079,0.0140592); - ssigpTa->SetBinContent(4080,0.0140872); - ssigpTa->SetBinContent(4081,0.0141128); - ssigpTa->SetBinContent(4082,0.01414); - ssigpTa->SetBinContent(4083,0.0141696); - ssigpTa->SetBinContent(4084,0.0141912); - ssigpTa->SetBinContent(4085,0.0142248); - ssigpTa->SetBinContent(4086,0.014256); - ssigpTa->SetBinContent(4087,0.0142888); - ssigpTa->SetBinContent(4088,0.0143152); - ssigpTa->SetBinContent(4089,0.0143448); - ssigpTa->SetBinContent(4090,0.0143768); - ssigpTa->SetBinContent(4091,0.0144136); - ssigpTa->SetBinContent(4092,0.0144464); - ssigpTa->SetBinContent(4093,0.0144824); - ssigpTa->SetBinContent(4094,0.0145104); - ssigpTa->SetBinContent(4095,0.0145464); - ssigpTa->SetBinContent(4096,0.0145792); - ssigpTa->SetBinContent(4097,0.0146184); - ssigpTa->SetBinContent(4098,0.0146616); - ssigpTa->SetBinContent(4099,0.0146984); - ssigpTa->SetBinContent(4100,0.0147376); - ssigpTa->SetBinContent(4101,0.0147744); - ssigpTa->SetBinContent(4102,0.01482); - ssigpTa->SetBinContent(4103,0.0148592); - ssigpTa->SetBinContent(4104,0.0148968); - ssigpTa->SetBinContent(4105,0.014936); - ssigpTa->SetBinContent(4106,0.0149808); - ssigpTa->SetBinContent(4107,0.0150272); - ssigpTa->SetBinContent(4108,0.0150816); - ssigpTa->SetBinContent(4109,0.0151304); - ssigpTa->SetBinContent(4110,0.0151752); - ssigpTa->SetBinContent(4111,0.0152152); - ssigpTa->SetBinContent(4112,0.0152584); - ssigpTa->SetBinContent(4113,0.015304); - ssigpTa->SetBinContent(4114,0.0153552); - ssigpTa->SetBinContent(4115,0.0154048); - ssigpTa->SetBinContent(4116,0.0154536); - ssigpTa->SetBinContent(4117,0.0155056); - ssigpTa->SetBinContent(4118,0.01556); - ssigpTa->SetBinContent(4119,0.0156104); - ssigpTa->SetBinContent(4120,0.0156616); - ssigpTa->SetBinContent(4121,0.0157216); - ssigpTa->SetBinContent(4122,0.0157808); - ssigpTa->SetBinContent(4123,0.0158448); - ssigpTa->SetBinContent(4124,0.0159); - ssigpTa->SetBinContent(4125,0.01596); - ssigpTa->SetBinContent(4126,0.0160152); - ssigpTa->SetBinContent(4127,0.0160752); - ssigpTa->SetBinContent(4128,0.016132); - ssigpTa->SetBinContent(4129,0.016196); - ssigpTa->SetBinContent(4130,0.0162576); - ssigpTa->SetBinContent(4131,0.0163208); - ssigpTa->SetBinContent(4132,0.0163864); - ssigpTa->SetBinContent(4133,0.0164536); - ssigpTa->SetBinContent(4134,0.0165336); - ssigpTa->SetBinContent(4135,0.016656); - ssigpTa->SetBinContent(4136,0.0169224); - ssigpTa->SetBinContent(4137,0.017668); - ssigpTa->SetBinContent(4138,0.0189072); - ssigpTa->SetBinContent(4139,0.0196072); - ssigpTa->SetBinContent(4140,0.0197792); - ssigpTa->SetBinContent(4141,0.0198528); - ssigpTa->SetBinContent(4142,0.0199272); - ssigpTa->SetBinContent(4143,0.0200096); - ssigpTa->SetBinContent(4144,0.0200856); - ssigpTa->SetBinContent(4145,0.0201656); - ssigpTa->SetBinContent(4146,0.0202424); - ssigpTa->SetBinContent(4147,0.020248); - ssigpTa->SetBinContent(4148,0.0198656); - ssigpTa->SetBinContent(4149,0.0191216); - ssigpTa->SetBinContent(4150,0.0188568); - ssigpTa->SetBinContent(4151,0.0190576); - ssigpTa->SetBinContent(4152,0.0193608); - ssigpTa->SetBinContent(4153,0.0196784); - ssigpTa->SetBinContent(4154,0.0199968); - ssigpTa->SetBinContent(4155,0.0203256); - ssigpTa->SetBinContent(4156,0.020568); - ssigpTa->SetBinContent(4157,0.020404); - ssigpTa->SetBinContent(4158,0.0197984); - ssigpTa->SetBinContent(4159,0.0195344); - ssigpTa->SetBinContent(4160,0.0195992); - ssigpTa->SetBinContent(4161,0.019836); - ssigpTa->SetBinContent(4162,0.0201648); - ssigpTa->SetBinContent(4163,0.0205144); - ssigpTa->SetBinContent(4164,0.020868); - ssigpTa->SetBinContent(4165,0.0212264); - ssigpTa->SetBinContent(4166,0.0215856); - ssigpTa->SetBinContent(4167,0.021852); - ssigpTa->SetBinContent(4168,0.0216112); - ssigpTa->SetBinContent(4169,0.020856); - ssigpTa->SetBinContent(4170,0.0206112); - ssigpTa->SetBinContent(4171,0.02088); - ssigpTa->SetBinContent(4172,0.0212456); - ssigpTa->SetBinContent(4173,0.0216168); - ssigpTa->SetBinContent(4174,0.021988); - ssigpTa->SetBinContent(4175,0.0223096); - ssigpTa->SetBinContent(4176,0.0223552); - ssigpTa->SetBinContent(4177,0.022128); - ssigpTa->SetBinContent(4178,0.0220896); - ssigpTa->SetBinContent(4179,0.0217824); - ssigpTa->SetBinContent(4180,0.0209704); - ssigpTa->SetBinContent(4181,0.0207104); - ssigpTa->SetBinContent(4182,0.021008); - ssigpTa->SetBinContent(4183,0.0214184); - ssigpTa->SetBinContent(4184,0.021844); - ssigpTa->SetBinContent(4185,0.0222672); - ssigpTa->SetBinContent(4186,0.0227064); - ssigpTa->SetBinContent(4187,0.0231448); - ssigpTa->SetBinContent(4188,0.0235952); - ssigpTa->SetBinContent(4189,0.0240528); - ssigpTa->SetBinContent(4190,0.0244216); - ssigpTa->SetBinContent(4191,0.0243184); - ssigpTa->SetBinContent(4192,0.0237248); - ssigpTa->SetBinContent(4193,0.0234792); - ssigpTa->SetBinContent(4194,0.0230912); - ssigpTa->SetBinContent(4195,0.022172); - ssigpTa->SetBinContent(4196,0.0218576); - ssigpTa->SetBinContent(4197,0.0221688); - ssigpTa->SetBinContent(4198,0.0226152); - ssigpTa->SetBinContent(4199,0.0230672); - ssigpTa->SetBinContent(4200,0.023528); - ssigpTa->SetBinContent(4201,0.023932); - ssigpTa->SetBinContent(4202,0.0239904); - ssigpTa->SetBinContent(4203,0.0236824); - ssigpTa->SetBinContent(4204,0.02376); - ssigpTa->SetBinContent(4205,0.0243392); - ssigpTa->SetBinContent(4206,0.025156); - ssigpTa->SetBinContent(4207,0.0258264); - ssigpTa->SetBinContent(4208,0.0262856); - ssigpTa->SetBinContent(4209,0.0263816); - ssigpTa->SetBinContent(4210,0.026124); - ssigpTa->SetBinContent(4211,0.0261968); - ssigpTa->SetBinContent(4212,0.0266048); - ssigpTa->SetBinContent(4213,0.0270856); - ssigpTa->SetBinContent(4214,0.0275352); - ssigpTa->SetBinContent(4215,0.0278368); - ssigpTa->SetBinContent(4216,0.027768); - ssigpTa->SetBinContent(4217,0.0267744); - ssigpTa->SetBinContent(4218,0.024828); - ssigpTa->SetBinContent(4219,0.0239336); - ssigpTa->SetBinContent(4220,0.0241072); - ssigpTa->SetBinContent(4221,0.0245112); - ssigpTa->SetBinContent(4222,0.0249648); - ssigpTa->SetBinContent(4223,0.025648); - ssigpTa->SetBinContent(4224,0.0265552); - ssigpTa->SetBinContent(4225,0.0272408); - ssigpTa->SetBinContent(4226,0.0277184); - ssigpTa->SetBinContent(4227,0.0281688); - ssigpTa->SetBinContent(4228,0.0286272); - ssigpTa->SetBinContent(4229,0.0290928); - ssigpTa->SetBinContent(4230,0.0295688); - ssigpTa->SetBinContent(4231,0.0300016); - ssigpTa->SetBinContent(4232,0.0302216); - ssigpTa->SetBinContent(4233,0.0302352); - ssigpTa->SetBinContent(4234,0.0304912); - ssigpTa->SetBinContent(4235,0.0310336); - ssigpTa->SetBinContent(4236,0.0319136); - ssigpTa->SetBinContent(4237,0.0330816); - ssigpTa->SetBinContent(4238,0.0339744); - ssigpTa->SetBinContent(4239,0.0346144); - ssigpTa->SetBinContent(4240,0.0352072); - ssigpTa->SetBinContent(4241,0.0358128); - ssigpTa->SetBinContent(4242,0.0363808); - ssigpTa->SetBinContent(4243,0.0367768); - ssigpTa->SetBinContent(4244,0.0370056); - ssigpTa->SetBinContent(4245,0.0374496); - ssigpTa->SetBinContent(4246,0.0381616); - ssigpTa->SetBinContent(4247,0.0392128); - ssigpTa->SetBinContent(4248,0.0405504); - ssigpTa->SetBinContent(4249,0.0416032); - ssigpTa->SetBinContent(4250,0.0423832); - ssigpTa->SetBinContent(4251,0.0431232); - ssigpTa->SetBinContent(4252,0.0438856); - ssigpTa->SetBinContent(4253,0.044684); - ssigpTa->SetBinContent(4254,0.0453256); - ssigpTa->SetBinContent(4255,0.0451376); - ssigpTa->SetBinContent(4256,0.0440848); - ssigpTa->SetBinContent(4257,0.0438992); - ssigpTa->SetBinContent(4258,0.0448408); - ssigpTa->SetBinContent(4259,0.046256); - ssigpTa->SetBinContent(4260,0.047412); - ssigpTa->SetBinContent(4261,0.0482864); - ssigpTa->SetBinContent(4262,0.0491112); - ssigpTa->SetBinContent(4263,0.0499432); - ssigpTa->SetBinContent(4264,0.0507864); - ssigpTa->SetBinContent(4265,0.0516432); - ssigpTa->SetBinContent(4266,0.0524856); - ssigpTa->SetBinContent(4267,0.0532944); - ssigpTa->SetBinContent(4268,0.0543296); - ssigpTa->SetBinContent(4269,0.0557808); - ssigpTa->SetBinContent(4270,0.0570768); - ssigpTa->SetBinContent(4271,0.0581264); - ssigpTa->SetBinContent(4272,0.059128); - ssigpTa->SetBinContent(4273,0.0601392); - ssigpTa->SetBinContent(4274,0.0611624); - ssigpTa->SetBinContent(4275,0.0622104); - ssigpTa->SetBinContent(4276,0.0633024); - ssigpTa->SetBinContent(4277,0.0644408); - ssigpTa->SetBinContent(4278,0.0656824); - ssigpTa->SetBinContent(4279,0.06722); - ssigpTa->SetBinContent(4280,0.0689528); - ssigpTa->SetBinContent(4281,0.0703088); - ssigpTa->SetBinContent(4282,0.0714848); - ssigpTa->SetBinContent(4283,0.072716); - ssigpTa->SetBinContent(4284,0.073984); - ssigpTa->SetBinContent(4285,0.0752928); - ssigpTa->SetBinContent(4286,0.0766856); - ssigpTa->SetBinContent(4287,0.0781464); - ssigpTa->SetBinContent(4288,0.0796968); - ssigpTa->SetBinContent(4289,0.08156); - ssigpTa->SetBinContent(4290,0.083732); - ssigpTa->SetBinContent(4291,0.0857008); - ssigpTa->SetBinContent(4292,0.0877128); - ssigpTa->SetBinContent(4293,0.0900128); - ssigpTa->SetBinContent(4294,0.0920504); - ssigpTa->SetBinContent(4295,0.0938144); - ssigpTa->SetBinContent(4296,0.095592); - ssigpTa->SetBinContent(4297,0.0975048); - ssigpTa->SetBinContent(4298,0.0996424); - ssigpTa->SetBinContent(4299,0.101986); - ssigpTa->SetBinContent(4300,0.104234); - ssigpTa->SetBinContent(4301,0.10636); - ssigpTa->SetBinContent(4302,0.108471); - ssigpTa->SetBinContent(4303,0.110599); - ssigpTa->SetBinContent(4304,0.112778); - ssigpTa->SetBinContent(4305,0.116266); - ssigpTa->SetBinContent(4306,0.125378); - ssigpTa->SetBinContent(4307,0.137402); - ssigpTa->SetBinContent(4308,0.139882); - ssigpTa->SetBinContent(4309,0.139918); - ssigpTa->SetBinContent(4310,0.142419); - ssigpTa->SetBinContent(4311,0.145718); - ssigpTa->SetBinContent(4312,0.149071); - ssigpTa->SetBinContent(4313,0.152446); - ssigpTa->SetBinContent(4314,0.155858); - ssigpTa->SetBinContent(4315,0.159337); - ssigpTa->SetBinContent(4316,0.162244); - ssigpTa->SetBinContent(4317,0.161957); - ssigpTa->SetBinContent(4318,0.158375); - ssigpTa->SetBinContent(4319,0.157854); - ssigpTa->SetBinContent(4320,0.160534); - ssigpTa->SetBinContent(4321,0.164051); - ssigpTa->SetBinContent(4322,0.167876); - ssigpTa->SetBinContent(4323,0.171886); - ssigpTa->SetBinContent(4324,0.175498); - ssigpTa->SetBinContent(4325,0.176588); - ssigpTa->SetBinContent(4326,0.174355); - ssigpTa->SetBinContent(4327,0.173493); - ssigpTa->SetBinContent(4328,0.175815); - ssigpTa->SetBinContent(4329,0.179489); - ssigpTa->SetBinContent(4330,0.18338); - ssigpTa->SetBinContent(4331,0.187348); - ssigpTa->SetBinContent(4332,0.19138); - ssigpTa->SetBinContent(4333,0.19548); - ssigpTa->SetBinContent(4334,0.199602); - ssigpTa->SetBinContent(4335,0.203758); - ssigpTa->SetBinContent(4336,0.208102); - ssigpTa->SetBinContent(4337,0.212854); - ssigpTa->SetBinContent(4338,0.217966); - ssigpTa->SetBinContent(4339,0.223286); - ssigpTa->SetBinContent(4340,0.228725); - ssigpTa->SetBinContent(4341,0.234277); - ssigpTa->SetBinContent(4342,0.239971); - ssigpTa->SetBinContent(4343,0.245815); - ssigpTa->SetBinContent(4344,0.251763); - ssigpTa->SetBinContent(4345,0.265362); - ssigpTa->SetBinContent(4346,0.317021); - ssigpTa->SetBinContent(4347,0.407381); - ssigpTa->SetBinContent(4348,0.461103); - ssigpTa->SetBinContent(4349,0.477574); - ssigpTa->SetBinContent(4350,0.486631); - ssigpTa->SetBinContent(4351,0.495754); - ssigpTa->SetBinContent(4352,0.504769); - ssigpTa->SetBinContent(4353,0.513675); - ssigpTa->SetBinContent(4354,0.522776); - ssigpTa->SetBinContent(4355,0.532745); - ssigpTa->SetBinContent(4356,0.543862); - ssigpTa->SetBinContent(4357,0.555717); - ssigpTa->SetBinContent(4358,0.5681); - ssigpTa->SetBinContent(4359,0.580803); - ssigpTa->SetBinContent(4360,0.593455); - ssigpTa->SetBinContent(4361,0.606045); - ssigpTa->SetBinContent(4362,0.618846); - ssigpTa->SetBinContent(4363,0.632166); - ssigpTa->SetBinContent(4364,0.646167); - ssigpTa->SetBinContent(4365,0.660683); - ssigpTa->SetBinContent(4366,0.675445); - ssigpTa->SetBinContent(4367,0.690246); - ssigpTa->SetBinContent(4368,0.70519); - ssigpTa->SetBinContent(4369,0.720022); - ssigpTa->SetBinContent(4370,0.734016); - ssigpTa->SetBinContent(4371,0.747137); - ssigpTa->SetBinContent(4372,0.759998); - ssigpTa->SetBinContent(4373,0.773189); - ssigpTa->SetBinContent(4374,0.786774); - ssigpTa->SetBinContent(4375,0.800357); - ssigpTa->SetBinContent(4376,0.813893); - ssigpTa->SetBinContent(4377,0.828729); - ssigpTa->SetBinContent(4378,0.846247); - ssigpTa->SetBinContent(4379,0.865479); - ssigpTa->SetBinContent(4380,0.885224); - ssigpTa->SetBinContent(4381,0.905102); - ssigpTa->SetBinContent(4382,0.925219); - ssigpTa->SetBinContent(4383,0.946438); - ssigpTa->SetBinContent(4384,0.969694); - ssigpTa->SetBinContent(4385,0.994739); - ssigpTa->SetBinContent(4386,1.02104); - ssigpTa->SetBinContent(4387,1.04775); - ssigpTa->SetBinContent(4388,1.07356); - ssigpTa->SetBinContent(4389,1.09792); - ssigpTa->SetBinContent(4390,1.1212); - ssigpTa->SetBinContent(4391,1.14364); - ssigpTa->SetBinContent(4392,1.16538); - ssigpTa->SetBinContent(4393,1.18689); - ssigpTa->SetBinContent(4394,1.20951); - ssigpTa->SetBinContent(4395,1.2346); - ssigpTa->SetBinContent(4396,1.26165); - ssigpTa->SetBinContent(4397,1.28897); - ssigpTa->SetBinContent(4398,1.31587); - ssigpTa->SetBinContent(4399,1.3423); - ssigpTa->SetBinContent(4400,1.36817); - ssigpTa->SetBinContent(4401,1.39351); - ssigpTa->SetBinContent(4402,1.41827); - ssigpTa->SetBinContent(4403,1.44209); - ssigpTa->SetBinContent(4404,1.46537); - ssigpTa->SetBinContent(4405,1.49032); - ssigpTa->SetBinContent(4406,1.51986); - ssigpTa->SetBinContent(4407,1.55452); - ssigpTa->SetBinContent(4408,1.59272); - ssigpTa->SetBinContent(4409,1.63325); - ssigpTa->SetBinContent(4410,1.70056); - ssigpTa->SetBinContent(4411,1.90139); - ssigpTa->SetBinContent(4412,2.2396); - ssigpTa->SetBinContent(4413,2.44965); - ssigpTa->SetBinContent(4414,2.53048); - ssigpTa->SetBinContent(4415,2.5899); - ssigpTa->SetBinContent(4416,2.65664); - ssigpTa->SetBinContent(4417,2.72986); - ssigpTa->SetBinContent(4418,2.80819); - ssigpTa->SetBinContent(4419,2.89064); - ssigpTa->SetBinContent(4420,2.9747); - ssigpTa->SetBinContent(4421,3.05751); - ssigpTa->SetBinContent(4422,3.1394); - ssigpTa->SetBinContent(4423,3.2238); - ssigpTa->SetBinContent(4424,3.31501); - ssigpTa->SetBinContent(4425,3.41275); - ssigpTa->SetBinContent(4426,3.51389); - ssigpTa->SetBinContent(4427,3.61709); - ssigpTa->SetBinContent(4428,3.71882); - ssigpTa->SetBinContent(4429,3.87494); - ssigpTa->SetBinContent(4430,4.28408); - ssigpTa->SetBinContent(4431,4.90803); - ssigpTa->SetBinContent(4434,0.0146494); - ssigpTa->SetBinContent(4435,0.0146454); - ssigpTa->SetBinContent(4436,0.0146436); - ssigpTa->SetBinContent(4437,0.0146436); - ssigpTa->SetBinContent(4438,0.0146436); - ssigpTa->SetBinContent(4439,0.0146436); - ssigpTa->SetBinContent(4440,0.0146448); - ssigpTa->SetBinContent(4441,0.0146448); - ssigpTa->SetBinContent(4442,0.0146448); - ssigpTa->SetBinContent(4443,0.0146496); - ssigpTa->SetBinContent(4444,0.0146544); - ssigpTa->SetBinContent(4445,0.0146592); - ssigpTa->SetBinContent(4446,0.0146656); - ssigpTa->SetBinContent(4447,0.0146728); - ssigpTa->SetBinContent(4448,0.014686); - ssigpTa->SetBinContent(4449,0.01469); - ssigpTa->SetBinContent(4450,0.014696); - ssigpTa->SetBinContent(4451,0.0146992); - ssigpTa->SetBinContent(4452,0.0147092); - ssigpTa->SetBinContent(4453,0.0147224); - ssigpTa->SetBinContent(4454,0.0147372); - ssigpTa->SetBinContent(4455,0.0147444); - ssigpTa->SetBinContent(4456,0.0147508); - ssigpTa->SetBinContent(4457,0.014756); - ssigpTa->SetBinContent(4458,0.014772); - ssigpTa->SetBinContent(4459,0.01479); - ssigpTa->SetBinContent(4460,0.014802); - ssigpTa->SetBinContent(4461,0.0148104); - ssigpTa->SetBinContent(4462,0.0148176); - ssigpTa->SetBinContent(4463,0.0148368); - ssigpTa->SetBinContent(4464,0.0148548); - ssigpTa->SetBinContent(4465,0.0148688); - ssigpTa->SetBinContent(4466,0.0148864); - ssigpTa->SetBinContent(4467,0.0149004); - ssigpTa->SetBinContent(4468,0.0149188); - ssigpTa->SetBinContent(4469,0.0149408); - ssigpTa->SetBinContent(4470,0.0149532); - ssigpTa->SetBinContent(4471,0.0149684); - ssigpTa->SetBinContent(4472,0.0149928); - ssigpTa->SetBinContent(4473,0.0150116); - ssigpTa->SetBinContent(4474,0.015036); - ssigpTa->SetBinContent(4475,0.0150512); - ssigpTa->SetBinContent(4476,0.0150696); - ssigpTa->SetBinContent(4477,0.0150924); - ssigpTa->SetBinContent(4478,0.0151128); - ssigpTa->SetBinContent(4479,0.015144); - ssigpTa->SetBinContent(4480,0.0151672); - ssigpTa->SetBinContent(4481,0.0151936); - ssigpTa->SetBinContent(4482,0.015214); - ssigpTa->SetBinContent(4483,0.0152404); - ssigpTa->SetBinContent(4484,0.0152684); - ssigpTa->SetBinContent(4485,0.0152948); - ssigpTa->SetBinContent(4486,0.0153152); - ssigpTa->SetBinContent(4487,0.0153444); - ssigpTa->SetBinContent(4488,0.0153668); - ssigpTa->SetBinContent(4489,0.015406); - ssigpTa->SetBinContent(4490,0.0154344); - ssigpTa->SetBinContent(4491,0.0154616); - ssigpTa->SetBinContent(4492,0.0154908); - ssigpTa->SetBinContent(4493,0.0155212); - ssigpTa->SetBinContent(4494,0.0155556); - ssigpTa->SetBinContent(4495,0.015592); - ssigpTa->SetBinContent(4496,0.0156164); - ssigpTa->SetBinContent(4497,0.0156536); - ssigpTa->SetBinContent(4498,0.015682); - ssigpTa->SetBinContent(4499,0.0157172); - ssigpTa->SetBinContent(4500,0.0157556); - ssigpTa->SetBinContent(4501,0.015798); - ssigpTa->SetBinContent(4502,0.0158364); - ssigpTa->SetBinContent(4503,0.0158668); - ssigpTa->SetBinContent(4504,0.0159064); - ssigpTa->SetBinContent(4505,0.0159476); - ssigpTa->SetBinContent(4506,0.0159872); - ssigpTa->SetBinContent(4507,0.0160224); - ssigpTa->SetBinContent(4508,0.0160608); - ssigpTa->SetBinContent(4509,0.0161052); - ssigpTa->SetBinContent(4510,0.0161508); - ssigpTa->SetBinContent(4511,0.0162004); - ssigpTa->SetBinContent(4512,0.01625); - ssigpTa->SetBinContent(4513,0.0162904); - ssigpTa->SetBinContent(4514,0.0163328); - ssigpTa->SetBinContent(4515,0.01637); - ssigpTa->SetBinContent(4516,0.0164156); - ssigpTa->SetBinContent(4517,0.0164632); - ssigpTa->SetBinContent(4518,0.0165088); - ssigpTa->SetBinContent(4519,0.01656); - ssigpTa->SetBinContent(4520,0.0166096); - ssigpTa->SetBinContent(4521,0.0166564); - ssigpTa->SetBinContent(4522,0.016706); - ssigpTa->SetBinContent(4523,0.0167612); - ssigpTa->SetBinContent(4524,0.0168168); - ssigpTa->SetBinContent(4525,0.0168844); - ssigpTa->SetBinContent(4526,0.0169428); - ssigpTa->SetBinContent(4527,0.0170024); - ssigpTa->SetBinContent(4528,0.017054); - ssigpTa->SetBinContent(4529,0.0171116); - ssigpTa->SetBinContent(4530,0.0171632); - ssigpTa->SetBinContent(4531,0.01722); - ssigpTa->SetBinContent(4532,0.0172796); - ssigpTa->SetBinContent(4533,0.0173384); - ssigpTa->SetBinContent(4534,0.0174028); - ssigpTa->SetBinContent(4535,0.0174692); - ssigpTa->SetBinContent(4536,0.0175416); - ssigpTa->SetBinContent(4537,0.0176164); - ssigpTa->SetBinContent(4538,0.0177308); - ssigpTa->SetBinContent(4539,0.018014); - ssigpTa->SetBinContent(4540,0.0189068); - ssigpTa->SetBinContent(4541,0.0204204); - ssigpTa->SetBinContent(4542,0.021268); - ssigpTa->SetBinContent(4543,0.0214676); - ssigpTa->SetBinContent(4544,0.0215344); - ssigpTa->SetBinContent(4545,0.021614); - ssigpTa->SetBinContent(4546,0.0216888); - ssigpTa->SetBinContent(4547,0.0217696); - ssigpTa->SetBinContent(4548,0.0218384); - ssigpTa->SetBinContent(4549,0.0219144); - ssigpTa->SetBinContent(4550,0.0218932); - ssigpTa->SetBinContent(4551,0.0213964); - ssigpTa->SetBinContent(4552,0.0204572); - ssigpTa->SetBinContent(4553,0.0201252); - ssigpTa->SetBinContent(4554,0.0203548); - ssigpTa->SetBinContent(4555,0.0207088); - ssigpTa->SetBinContent(4556,0.0210716); - ssigpTa->SetBinContent(4557,0.0214504); - ssigpTa->SetBinContent(4558,0.0218252); - ssigpTa->SetBinContent(4559,0.0221052); - ssigpTa->SetBinContent(4560,0.0218616); - ssigpTa->SetBinContent(4561,0.02109); - ssigpTa->SetBinContent(4562,0.0207508); - ssigpTa->SetBinContent(4563,0.0208532); - ssigpTa->SetBinContent(4564,0.0211368); - ssigpTa->SetBinContent(4565,0.02151); - ssigpTa->SetBinContent(4566,0.0219056); - ssigpTa->SetBinContent(4567,0.0223068); - ssigpTa->SetBinContent(4568,0.022714); - ssigpTa->SetBinContent(4569,0.0231264); - ssigpTa->SetBinContent(4570,0.0234224); - ssigpTa->SetBinContent(4571,0.0231144); - ssigpTa->SetBinContent(4572,0.0221788); - ssigpTa->SetBinContent(4573,0.0218504); - ssigpTa->SetBinContent(4574,0.0221264); - ssigpTa->SetBinContent(4575,0.0225408); - ssigpTa->SetBinContent(4576,0.0229484); - ssigpTa->SetBinContent(4577,0.0233612); - ssigpTa->SetBinContent(4578,0.02373); - ssigpTa->SetBinContent(4579,0.0238612); - ssigpTa->SetBinContent(4580,0.0237612); - ssigpTa->SetBinContent(4581,0.0237864); - ssigpTa->SetBinContent(4582,0.023398); - ssigpTa->SetBinContent(4583,0.0223824); - ssigpTa->SetBinContent(4584,0.022028); - ssigpTa->SetBinContent(4585,0.0223332); - ssigpTa->SetBinContent(4586,0.0227788); - ssigpTa->SetBinContent(4587,0.0232312); - ssigpTa->SetBinContent(4588,0.0237016); - ssigpTa->SetBinContent(4589,0.024168); - ssigpTa->SetBinContent(4590,0.0246496); - ssigpTa->SetBinContent(4591,0.0251304); - ssigpTa->SetBinContent(4592,0.025626); - ssigpTa->SetBinContent(4593,0.0260204); - ssigpTa->SetBinContent(4594,0.0258396); - ssigpTa->SetBinContent(4595,0.0250552); - ssigpTa->SetBinContent(4596,0.024734); - ssigpTa->SetBinContent(4597,0.0244016); - ssigpTa->SetBinContent(4598,0.0236012); - ssigpTa->SetBinContent(4599,0.0233648); - ssigpTa->SetBinContent(4600,0.0237224); - ssigpTa->SetBinContent(4601,0.0242088); - ssigpTa->SetBinContent(4602,0.0246964); - ssigpTa->SetBinContent(4603,0.0251952); - ssigpTa->SetBinContent(4604,0.0256168); - ssigpTa->SetBinContent(4605,0.0255796); - ssigpTa->SetBinContent(4606,0.0250656); - ssigpTa->SetBinContent(4607,0.0250344); - ssigpTa->SetBinContent(4608,0.0256044); - ssigpTa->SetBinContent(4609,0.0263992); - ssigpTa->SetBinContent(4610,0.0270768); - ssigpTa->SetBinContent(4611,0.0275688); - ssigpTa->SetBinContent(4612,0.027742); - ssigpTa->SetBinContent(4613,0.02761); - ssigpTa->SetBinContent(4614,0.0277656); - ssigpTa->SetBinContent(4615,0.0282312); - ssigpTa->SetBinContent(4616,0.0287664); - ssigpTa->SetBinContent(4617,0.0292556); - ssigpTa->SetBinContent(4618,0.0295048); - ssigpTa->SetBinContent(4619,0.0293192); - ssigpTa->SetBinContent(4620,0.0283508); - ssigpTa->SetBinContent(4621,0.0265756); - ssigpTa->SetBinContent(4622,0.0258088); - ssigpTa->SetBinContent(4623,0.0260452); - ssigpTa->SetBinContent(4624,0.026496); - ssigpTa->SetBinContent(4625,0.0269928); - ssigpTa->SetBinContent(4626,0.0276472); - ssigpTa->SetBinContent(4627,0.028462); - ssigpTa->SetBinContent(4628,0.0291188); - ssigpTa->SetBinContent(4629,0.0296376); - ssigpTa->SetBinContent(4630,0.0301396); - ssigpTa->SetBinContent(4631,0.0306516); - ssigpTa->SetBinContent(4632,0.0311708); - ssigpTa->SetBinContent(4633,0.0317056); - ssigpTa->SetBinContent(4634,0.0322176); - ssigpTa->SetBinContent(4635,0.0325832); - ssigpTa->SetBinContent(4636,0.0328308); - ssigpTa->SetBinContent(4637,0.033246); - ssigpTa->SetBinContent(4638,0.0338612); - ssigpTa->SetBinContent(4639,0.0347084); - ssigpTa->SetBinContent(4640,0.035754); - ssigpTa->SetBinContent(4641,0.0366184); - ssigpTa->SetBinContent(4642,0.0373068); - ssigpTa->SetBinContent(4643,0.0379844); - ssigpTa->SetBinContent(4644,0.0386608); - ssigpTa->SetBinContent(4645,0.039334); - ssigpTa->SetBinContent(4646,0.0399128); - ssigpTa->SetBinContent(4647,0.040414); - ssigpTa->SetBinContent(4648,0.0410528); - ssigpTa->SetBinContent(4649,0.041868); - ssigpTa->SetBinContent(4650,0.0428916); - ssigpTa->SetBinContent(4651,0.044086); - ssigpTa->SetBinContent(4652,0.045106); - ssigpTa->SetBinContent(4653,0.0459684); - ssigpTa->SetBinContent(4654,0.04681); - ssigpTa->SetBinContent(4655,0.0476868); - ssigpTa->SetBinContent(4656,0.0485916); - ssigpTa->SetBinContent(4657,0.0493856); - ssigpTa->SetBinContent(4658,0.0494728); - ssigpTa->SetBinContent(4659,0.0488544); - ssigpTa->SetBinContent(4660,0.0489452); - ssigpTa->SetBinContent(4661,0.0498964); - ssigpTa->SetBinContent(4662,0.0511796); - ssigpTa->SetBinContent(4663,0.052322); - ssigpTa->SetBinContent(4664,0.0533216); - ssigpTa->SetBinContent(4665,0.0543012); - ssigpTa->SetBinContent(4666,0.055284); - ssigpTa->SetBinContent(4667,0.0562848); - ssigpTa->SetBinContent(4668,0.0573064); - ssigpTa->SetBinContent(4669,0.0583208); - ssigpTa->SetBinContent(4670,0.059332); - ssigpTa->SetBinContent(4671,0.0604828); - ssigpTa->SetBinContent(4672,0.0619092); - ssigpTa->SetBinContent(4673,0.0632528); - ssigpTa->SetBinContent(4674,0.0644588); - ssigpTa->SetBinContent(4675,0.0656536); - ssigpTa->SetBinContent(4676,0.0668604); - ssigpTa->SetBinContent(4677,0.068082); - ssigpTa->SetBinContent(4678,0.0693348); - ssigpTa->SetBinContent(4679,0.0706368); - ssigpTa->SetBinContent(4680,0.0719996); - ssigpTa->SetBinContent(4681,0.0734544); - ssigpTa->SetBinContent(4682,0.07513); - ssigpTa->SetBinContent(4683,0.0769436); - ssigpTa->SetBinContent(4684,0.078458); - ssigpTa->SetBinContent(4685,0.0798748); - ssigpTa->SetBinContent(4686,0.0813568); - ssigpTa->SetBinContent(4687,0.0828748); - ssigpTa->SetBinContent(4688,0.0844456); - ssigpTa->SetBinContent(4689,0.086112); - ssigpTa->SetBinContent(4690,0.0878556); - ssigpTa->SetBinContent(4691,0.089694); - ssigpTa->SetBinContent(4692,0.091814); - ssigpTa->SetBinContent(4693,0.0942144); - ssigpTa->SetBinContent(4694,0.0964728); - ssigpTa->SetBinContent(4695,0.0989504); - ssigpTa->SetBinContent(4696,0.101876); - ssigpTa->SetBinContent(4697,0.104408); - ssigpTa->SetBinContent(4698,0.106556); - ssigpTa->SetBinContent(4699,0.108697); - ssigpTa->SetBinContent(4700,0.110992); - ssigpTa->SetBinContent(4701,0.113498); - ssigpTa->SetBinContent(4702,0.116186); - ssigpTa->SetBinContent(4703,0.11882); - ssigpTa->SetBinContent(4704,0.121374); - ssigpTa->SetBinContent(4705,0.123919); - ssigpTa->SetBinContent(4706,0.126492); - ssigpTa->SetBinContent(4707,0.12913); - ssigpTa->SetBinContent(4708,0.133507); - ssigpTa->SetBinContent(4709,0.145406); - ssigpTa->SetBinContent(4710,0.161247); - ssigpTa->SetBinContent(4711,0.16447); - ssigpTa->SetBinContent(4712,0.164298); - ssigpTa->SetBinContent(4713,0.167289); - ssigpTa->SetBinContent(4714,0.171324); - ssigpTa->SetBinContent(4715,0.175418); - ssigpTa->SetBinContent(4716,0.179551); - ssigpTa->SetBinContent(4717,0.183722); - ssigpTa->SetBinContent(4718,0.187986); - ssigpTa->SetBinContent(4719,0.191481); - ssigpTa->SetBinContent(4720,0.190737); - ssigpTa->SetBinContent(4721,0.185625); - ssigpTa->SetBinContent(4722,0.184584); - ssigpTa->SetBinContent(4723,0.18779); - ssigpTa->SetBinContent(4724,0.192079); - ssigpTa->SetBinContent(4725,0.19674); - ssigpTa->SetBinContent(4726,0.201623); - ssigpTa->SetBinContent(4727,0.205948); - ssigpTa->SetBinContent(4728,0.20692); - ssigpTa->SetBinContent(4729,0.20396); - ssigpTa->SetBinContent(4730,0.203535); - ssigpTa->SetBinContent(4731,0.206904); - ssigpTa->SetBinContent(4732,0.211519); - ssigpTa->SetBinContent(4733,0.216323); - ssigpTa->SetBinContent(4734,0.221214); - ssigpTa->SetBinContent(4735,0.226196); - ssigpTa->SetBinContent(4736,0.231264); - ssigpTa->SetBinContent(4737,0.23637); - ssigpTa->SetBinContent(4738,0.241514); - ssigpTa->SetBinContent(4739,0.246906); - ssigpTa->SetBinContent(4740,0.252772); - ssigpTa->SetBinContent(4741,0.259088); - ssigpTa->SetBinContent(4742,0.265648); - ssigpTa->SetBinContent(4743,0.272368); - ssigpTa->SetBinContent(4744,0.27923); - ssigpTa->SetBinContent(4745,0.286275); - ssigpTa->SetBinContent(4746,0.293502); - ssigpTa->SetBinContent(4747,0.300866); - ssigpTa->SetBinContent(4748,0.317818); - ssigpTa->SetBinContent(4749,0.382412); - ssigpTa->SetBinContent(4750,0.495398); - ssigpTa->SetBinContent(4751,0.562604); - ssigpTa->SetBinContent(4752,0.583174); - ssigpTa->SetBinContent(4753,0.594482); - ssigpTa->SetBinContent(4754,0.605856); - ssigpTa->SetBinContent(4755,0.617126); - ssigpTa->SetBinContent(4756,0.628242); - ssigpTa->SetBinContent(4757,0.63962); - ssigpTa->SetBinContent(4758,0.652045); - ssigpTa->SetBinContent(4759,0.665894); - ssigpTa->SetBinContent(4760,0.680649); - ssigpTa->SetBinContent(4761,0.696061); - ssigpTa->SetBinContent(4762,0.711881); - ssigpTa->SetBinContent(4763,0.727643); - ssigpTa->SetBinContent(4764,0.743336); - ssigpTa->SetBinContent(4765,0.7593); - ssigpTa->SetBinContent(4766,0.775901); - ssigpTa->SetBinContent(4767,0.79333); - ssigpTa->SetBinContent(4768,0.811413); - ssigpTa->SetBinContent(4769,0.829789); - ssigpTa->SetBinContent(4770,0.848243); - ssigpTa->SetBinContent(4771,0.866869); - ssigpTa->SetBinContent(4772,0.885374); - ssigpTa->SetBinContent(4773,0.902857); - ssigpTa->SetBinContent(4774,0.919277); - ssigpTa->SetBinContent(4775,0.935387); - ssigpTa->SetBinContent(4776,0.951893); - ssigpTa->SetBinContent(4777,0.968888); - ssigpTa->SetBinContent(4778,0.985871); - ssigpTa->SetBinContent(4779,1.00279); - ssigpTa->SetBinContent(4780,1.02133); - ssigpTa->SetBinContent(4781,1.04317); - ssigpTa->SetBinContent(4782,1.06713); - ssigpTa->SetBinContent(4783,1.09174); - ssigpTa->SetBinContent(4784,1.11652); - ssigpTa->SetBinContent(4785,1.14161); - ssigpTa->SetBinContent(4786,1.16808); - ssigpTa->SetBinContent(4787,1.19705); - ssigpTa->SetBinContent(4788,1.22825); - ssigpTa->SetBinContent(4789,1.26099); - ssigpTa->SetBinContent(4790,1.29425); - ssigpTa->SetBinContent(4791,1.32642); - ssigpTa->SetBinContent(4792,1.35683); - ssigpTa->SetBinContent(4793,1.38589); - ssigpTa->SetBinContent(4794,1.41394); - ssigpTa->SetBinContent(4795,1.44111); - ssigpTa->SetBinContent(4796,1.46802); - ssigpTa->SetBinContent(4797,1.4963); - ssigpTa->SetBinContent(4798,1.52765); - ssigpTa->SetBinContent(4799,1.56144); - ssigpTa->SetBinContent(4800,1.59558); - ssigpTa->SetBinContent(4801,1.62917); - ssigpTa->SetBinContent(4802,1.6622); - ssigpTa->SetBinContent(4803,1.69453); - ssigpTa->SetBinContent(4804,1.72621); - ssigpTa->SetBinContent(4805,1.75717); - ssigpTa->SetBinContent(4806,1.78697); - ssigpTa->SetBinContent(4807,1.81609); - ssigpTa->SetBinContent(4808,1.84732); - ssigpTa->SetBinContent(4809,1.88421); - ssigpTa->SetBinContent(4810,1.92744); - ssigpTa->SetBinContent(4811,1.97507); - ssigpTa->SetBinContent(4812,2.02558); - ssigpTa->SetBinContent(4813,2.10961); - ssigpTa->SetBinContent(4814,2.36069); - ssigpTa->SetBinContent(4815,2.78359); - ssigpTa->SetBinContent(4816,3.04622); - ssigpTa->SetBinContent(4817,3.1472); - ssigpTa->SetBinContent(4818,3.22139); - ssigpTa->SetBinContent(4819,3.30471); - ssigpTa->SetBinContent(4820,3.39611); - ssigpTa->SetBinContent(4821,3.49388); - ssigpTa->SetBinContent(4822,3.59681); - ssigpTa->SetBinContent(4823,3.70174); - ssigpTa->SetBinContent(4824,3.80509); - ssigpTa->SetBinContent(4825,3.90734); - ssigpTa->SetBinContent(4826,4.01272); - ssigpTa->SetBinContent(4827,4.12658); - ssigpTa->SetBinContent(4828,4.2486); - ssigpTa->SetBinContent(4829,4.37485); - ssigpTa->SetBinContent(4830,4.5037); - ssigpTa->SetBinContent(4831,4.63074); - ssigpTa->SetBinContent(4832,4.82585); - ssigpTa->SetBinContent(4833,5.3373); - ssigpTa->SetBinContent(4834,6.11719); - ssigpTa->SetBinContent(4837,0.0159622); - ssigpTa->SetBinContent(4838,0.01596); - ssigpTa->SetBinContent(4839,0.0159576); - ssigpTa->SetBinContent(4840,0.0159576); - ssigpTa->SetBinContent(4841,0.0159576); - ssigpTa->SetBinContent(4842,0.0159576); - ssigpTa->SetBinContent(4843,0.0159576); - ssigpTa->SetBinContent(4844,0.0159576); - ssigpTa->SetBinContent(4845,0.01596); - ssigpTa->SetBinContent(4846,0.0159648); - ssigpTa->SetBinContent(4847,0.0159768); - ssigpTa->SetBinContent(4848,0.0159816); - ssigpTa->SetBinContent(4849,0.015984); - ssigpTa->SetBinContent(4850,0.0159896); - ssigpTa->SetBinContent(4851,0.0159936); - ssigpTa->SetBinContent(4852,0.0160032); - ssigpTa->SetBinContent(4853,0.0160088); - ssigpTa->SetBinContent(4854,0.0160168); - ssigpTa->SetBinContent(4855,0.0160264); - ssigpTa->SetBinContent(4856,0.0160424); - ssigpTa->SetBinContent(4857,0.0160512); - ssigpTa->SetBinContent(4858,0.0160576); - ssigpTa->SetBinContent(4859,0.0160592); - ssigpTa->SetBinContent(4860,0.0160672); - ssigpTa->SetBinContent(4861,0.0160816); - ssigpTa->SetBinContent(4862,0.0161048); - ssigpTa->SetBinContent(4863,0.0161136); - ssigpTa->SetBinContent(4864,0.0161192); - ssigpTa->SetBinContent(4865,0.0161272); - ssigpTa->SetBinContent(4866,0.0161416); - ssigpTa->SetBinContent(4867,0.0161632); - ssigpTa->SetBinContent(4868,0.0161792); - ssigpTa->SetBinContent(4869,0.016188); - ssigpTa->SetBinContent(4870,0.0162016); - ssigpTa->SetBinContent(4871,0.0162232); - ssigpTa->SetBinContent(4872,0.0162392); - ssigpTa->SetBinContent(4873,0.0162536); - ssigpTa->SetBinContent(4874,0.016264); - ssigpTa->SetBinContent(4875,0.0162856); - ssigpTa->SetBinContent(4876,0.0163112); - ssigpTa->SetBinContent(4877,0.016328); - ssigpTa->SetBinContent(4878,0.0163456); - ssigpTa->SetBinContent(4879,0.0163624); - ssigpTa->SetBinContent(4880,0.016384); - ssigpTa->SetBinContent(4881,0.016412); - ssigpTa->SetBinContent(4882,0.0164328); - ssigpTa->SetBinContent(4883,0.0164624); - ssigpTa->SetBinContent(4884,0.0164824); - ssigpTa->SetBinContent(4885,0.0164992); - ssigpTa->SetBinContent(4886,0.0165248); - ssigpTa->SetBinContent(4887,0.016548); - ssigpTa->SetBinContent(4888,0.0165768); - ssigpTa->SetBinContent(4889,0.0165992); - ssigpTa->SetBinContent(4890,0.016616); - ssigpTa->SetBinContent(4891,0.0166544); - ssigpTa->SetBinContent(4892,0.0166792); - ssigpTa->SetBinContent(4893,0.0167112); - ssigpTa->SetBinContent(4894,0.0167376); - ssigpTa->SetBinContent(4895,0.0167656); - ssigpTa->SetBinContent(4896,0.016796); - ssigpTa->SetBinContent(4897,0.0168312); - ssigpTa->SetBinContent(4898,0.016856); - ssigpTa->SetBinContent(4899,0.016888); - ssigpTa->SetBinContent(4900,0.0169144); - ssigpTa->SetBinContent(4901,0.016952); - ssigpTa->SetBinContent(4902,0.0169792); - ssigpTa->SetBinContent(4903,0.0170224); - ssigpTa->SetBinContent(4904,0.0170608); - ssigpTa->SetBinContent(4905,0.0170968); - ssigpTa->SetBinContent(4906,0.0171288); - ssigpTa->SetBinContent(4907,0.0171616); - ssigpTa->SetBinContent(4908,0.0172032); - ssigpTa->SetBinContent(4909,0.0172432); - ssigpTa->SetBinContent(4910,0.017276); - ssigpTa->SetBinContent(4911,0.017316); - ssigpTa->SetBinContent(4912,0.0173576); - ssigpTa->SetBinContent(4913,0.0173968); - ssigpTa->SetBinContent(4914,0.0174456); - ssigpTa->SetBinContent(4915,0.0174896); - ssigpTa->SetBinContent(4916,0.017532); - ssigpTa->SetBinContent(4917,0.0175688); - ssigpTa->SetBinContent(4918,0.0176144); - ssigpTa->SetBinContent(4919,0.0176568); - ssigpTa->SetBinContent(4920,0.0177008); - ssigpTa->SetBinContent(4921,0.0177472); - ssigpTa->SetBinContent(4922,0.0177968); - ssigpTa->SetBinContent(4923,0.0178432); - ssigpTa->SetBinContent(4924,0.0178872); - ssigpTa->SetBinContent(4925,0.0179336); - ssigpTa->SetBinContent(4926,0.0179856); - ssigpTa->SetBinContent(4927,0.0180456); - ssigpTa->SetBinContent(4928,0.0181008); - ssigpTa->SetBinContent(4929,0.0181664); - ssigpTa->SetBinContent(4930,0.0182208); - ssigpTa->SetBinContent(4931,0.0182736); - ssigpTa->SetBinContent(4932,0.0183256); - ssigpTa->SetBinContent(4933,0.0183824); - ssigpTa->SetBinContent(4934,0.0184312); - ssigpTa->SetBinContent(4935,0.0184864); - ssigpTa->SetBinContent(4936,0.0185448); - ssigpTa->SetBinContent(4937,0.0186024); - ssigpTa->SetBinContent(4938,0.0186784); - ssigpTa->SetBinContent(4939,0.0187488); - ssigpTa->SetBinContent(4940,0.018824); - ssigpTa->SetBinContent(4941,0.018928); - ssigpTa->SetBinContent(4942,0.0192296); - ssigpTa->SetBinContent(4943,0.020284); - ssigpTa->SetBinContent(4944,0.0221048); - ssigpTa->SetBinContent(4945,0.0231224); - ssigpTa->SetBinContent(4946,0.0233448); - ssigpTa->SetBinContent(4947,0.0234136); - ssigpTa->SetBinContent(4948,0.023484); - ssigpTa->SetBinContent(4949,0.0235656); - ssigpTa->SetBinContent(4950,0.023636); - ssigpTa->SetBinContent(4951,0.023708); - ssigpTa->SetBinContent(4952,0.023776); - ssigpTa->SetBinContent(4953,0.0237304); - ssigpTa->SetBinContent(4954,0.0230992); - ssigpTa->SetBinContent(4955,0.0219368); - ssigpTa->SetBinContent(4956,0.0215264); - ssigpTa->SetBinContent(4957,0.0217976); - ssigpTa->SetBinContent(4958,0.0222072); - ssigpTa->SetBinContent(4959,0.0226296); - ssigpTa->SetBinContent(4960,0.02306); - ssigpTa->SetBinContent(4961,0.0235016); - ssigpTa->SetBinContent(4962,0.0238072); - ssigpTa->SetBinContent(4963,0.0234888); - ssigpTa->SetBinContent(4964,0.0225136); - ssigpTa->SetBinContent(4965,0.0220984); - ssigpTa->SetBinContent(4966,0.0222296); - ssigpTa->SetBinContent(4967,0.0225728); - ssigpTa->SetBinContent(4968,0.0229944); - ssigpTa->SetBinContent(4969,0.0234424); - ssigpTa->SetBinContent(4970,0.0238952); - ssigpTa->SetBinContent(4971,0.0243576); - ssigpTa->SetBinContent(4972,0.0248312); - ssigpTa->SetBinContent(4973,0.0251648); - ssigpTa->SetBinContent(4974,0.0247736); - ssigpTa->SetBinContent(4975,0.0236288); - ssigpTa->SetBinContent(4976,0.0231944); - ssigpTa->SetBinContent(4977,0.0235); - ssigpTa->SetBinContent(4978,0.0239528); - ssigpTa->SetBinContent(4979,0.0244168); - ssigpTa->SetBinContent(4980,0.0248768); - ssigpTa->SetBinContent(4981,0.0252968); - ssigpTa->SetBinContent(4982,0.0255272); - ssigpTa->SetBinContent(4983,0.0255592); - ssigpTa->SetBinContent(4984,0.025656); - ssigpTa->SetBinContent(4985,0.0251736); - ssigpTa->SetBinContent(4986,0.0239344); - ssigpTa->SetBinContent(4987,0.0234736); - ssigpTa->SetBinContent(4988,0.0237944); - ssigpTa->SetBinContent(4989,0.0242768); - ssigpTa->SetBinContent(4990,0.0247712); - ssigpTa->SetBinContent(4991,0.025272); - ssigpTa->SetBinContent(4992,0.0257912); - ssigpTa->SetBinContent(4993,0.026304); - ssigpTa->SetBinContent(4994,0.0268304); - ssigpTa->SetBinContent(4995,0.0273688); - ssigpTa->SetBinContent(4996,0.0277848); - ssigpTa->SetBinContent(4997,0.0275056); - ssigpTa->SetBinContent(4998,0.0265072); - ssigpTa->SetBinContent(4999,0.0260832); - ssigpTa->SetBinContent(5000,0.0258376); - ssigpTa->SetBinContent(5001,0.0251928); - ssigpTa->SetBinContent(5002,0.0250624); - ssigpTa->SetBinContent(5003,0.025468); - ssigpTa->SetBinContent(5004,0.0259976); - ssigpTa->SetBinContent(5005,0.026532); - ssigpTa->SetBinContent(5006,0.0270728); - ssigpTa->SetBinContent(5007,0.027512); - ssigpTa->SetBinContent(5008,0.0273744); - ssigpTa->SetBinContent(5009,0.0266248); - ssigpTa->SetBinContent(5010,0.0264808); - ssigpTa->SetBinContent(5011,0.0270272); - ssigpTa->SetBinContent(5012,0.0278); - ssigpTa->SetBinContent(5013,0.0284776); - ssigpTa->SetBinContent(5014,0.0290072); - ssigpTa->SetBinContent(5015,0.0292616); - ssigpTa->SetBinContent(5016,0.0292368); - ssigpTa->SetBinContent(5017,0.0294808); - ssigpTa->SetBinContent(5018,0.0299992); - ssigpTa->SetBinContent(5019,0.0305912); - ssigpTa->SetBinContent(5020,0.0311184); - ssigpTa->SetBinContent(5021,0.031308); - ssigpTa->SetBinContent(5022,0.0309744); - ssigpTa->SetBinContent(5023,0.0300384); - ssigpTa->SetBinContent(5024,0.0284696); - ssigpTa->SetBinContent(5025,0.0278536); - ssigpTa->SetBinContent(5026,0.0281592); - ssigpTa->SetBinContent(5027,0.0286688); - ssigpTa->SetBinContent(5028,0.0292048); - ssigpTa->SetBinContent(5029,0.029848); - ssigpTa->SetBinContent(5030,0.0305864); - ssigpTa->SetBinContent(5031,0.0312272); - ssigpTa->SetBinContent(5032,0.0317888); - ssigpTa->SetBinContent(5033,0.032356); - ssigpTa->SetBinContent(5034,0.0329248); - ssigpTa->SetBinContent(5035,0.0335112); - ssigpTa->SetBinContent(5036,0.0341144); - ssigpTa->SetBinContent(5037,0.0347048); - ssigpTa->SetBinContent(5038,0.0352384); - ssigpTa->SetBinContent(5039,0.0357208); - ssigpTa->SetBinContent(5040,0.0363096); - ssigpTa->SetBinContent(5041,0.0370064); - ssigpTa->SetBinContent(5042,0.0378272); - ssigpTa->SetBinContent(5043,0.0387656); - ssigpTa->SetBinContent(5044,0.0396016); - ssigpTa->SetBinContent(5045,0.040364); - ssigpTa->SetBinContent(5046,0.0411144); - ssigpTa->SetBinContent(5047,0.0418864); - ssigpTa->SetBinContent(5048,0.042664); - ssigpTa->SetBinContent(5049,0.0434384); - ssigpTa->SetBinContent(5050,0.04422); - ssigpTa->SetBinContent(5051,0.0450688); - ssigpTa->SetBinContent(5052,0.0459848); - ssigpTa->SetBinContent(5053,0.0469928); - ssigpTa->SetBinContent(5054,0.048052); - ssigpTa->SetBinContent(5055,0.0490472); - ssigpTa->SetBinContent(5056,0.0499936); - ssigpTa->SetBinContent(5057,0.0509544); - ssigpTa->SetBinContent(5058,0.0519416); - ssigpTa->SetBinContent(5059,0.0529736); - ssigpTa->SetBinContent(5060,0.053916); - ssigpTa->SetBinContent(5061,0.0543024); - ssigpTa->SetBinContent(5062,0.0541056); - ssigpTa->SetBinContent(5063,0.0544816); - ssigpTa->SetBinContent(5064,0.0554584); - ssigpTa->SetBinContent(5065,0.0566008); - ssigpTa->SetBinContent(5066,0.0577472); - ssigpTa->SetBinContent(5067,0.0588808); - ssigpTa->SetBinContent(5068,0.0600224); - ssigpTa->SetBinContent(5069,0.0611744); - ssigpTa->SetBinContent(5070,0.0623424); - ssigpTa->SetBinContent(5071,0.0635336); - ssigpTa->SetBinContent(5072,0.0647408); - ssigpTa->SetBinContent(5073,0.065952); - ssigpTa->SetBinContent(5074,0.0672408); - ssigpTa->SetBinContent(5075,0.0686424); - ssigpTa->SetBinContent(5076,0.0700448); - ssigpTa->SetBinContent(5077,0.071428); - ssigpTa->SetBinContent(5078,0.072824); - ssigpTa->SetBinContent(5079,0.0742384); - ssigpTa->SetBinContent(5080,0.0756696); - ssigpTa->SetBinContent(5081,0.0771368); - ssigpTa->SetBinContent(5082,0.0786672); - ssigpTa->SetBinContent(5083,0.0802736); - ssigpTa->SetBinContent(5084,0.0819568); - ssigpTa->SetBinContent(5085,0.0837888); - ssigpTa->SetBinContent(5086,0.0856792); - ssigpTa->SetBinContent(5087,0.0873808); - ssigpTa->SetBinContent(5088,0.0890512); - ssigpTa->SetBinContent(5089,0.0907936); - ssigpTa->SetBinContent(5090,0.0925856); - ssigpTa->SetBinContent(5091,0.0944328); - ssigpTa->SetBinContent(5092,0.0963928); - ssigpTa->SetBinContent(5093,0.098436); - ssigpTa->SetBinContent(5094,0.100577); - ssigpTa->SetBinContent(5095,0.102972); - ssigpTa->SetBinContent(5096,0.105611); - ssigpTa->SetBinContent(5097,0.108176); - ssigpTa->SetBinContent(5098,0.111142); - ssigpTa->SetBinContent(5099,0.114705); - ssigpTa->SetBinContent(5100,0.117766); - ssigpTa->SetBinContent(5101,0.120306); - ssigpTa->SetBinContent(5102,0.122839); - ssigpTa->SetBinContent(5103,0.125537); - ssigpTa->SetBinContent(5104,0.128422); - ssigpTa->SetBinContent(5105,0.131481); - ssigpTa->SetBinContent(5106,0.134518); - ssigpTa->SetBinContent(5107,0.137518); - ssigpTa->SetBinContent(5108,0.140522); - ssigpTa->SetBinContent(5109,0.143561); - ssigpTa->SetBinContent(5110,0.146673); - ssigpTa->SetBinContent(5111,0.151962); - ssigpTa->SetBinContent(5112,0.166661); - ssigpTa->SetBinContent(5113,0.186357); - ssigpTa->SetBinContent(5114,0.190339); - ssigpTa->SetBinContent(5115,0.189981); - ssigpTa->SetBinContent(5116,0.193486); - ssigpTa->SetBinContent(5117,0.198265); - ssigpTa->SetBinContent(5118,0.203129); - ssigpTa->SetBinContent(5119,0.208029); - ssigpTa->SetBinContent(5120,0.212984); - ssigpTa->SetBinContent(5121,0.218047); - ssigpTa->SetBinContent(5122,0.222147); - ssigpTa->SetBinContent(5123,0.220974); - ssigpTa->SetBinContent(5124,0.214367); - ssigpTa->SetBinContent(5125,0.212834); - ssigpTa->SetBinContent(5126,0.21659); - ssigpTa->SetBinContent(5127,0.221684); - ssigpTa->SetBinContent(5128,0.227198); - ssigpTa->SetBinContent(5129,0.232984); - ssigpTa->SetBinContent(5130,0.238046); - ssigpTa->SetBinContent(5131,0.238921); - ssigpTa->SetBinContent(5132,0.235202); - ssigpTa->SetBinContent(5133,0.235136); - ssigpTa->SetBinContent(5134,0.239504); - ssigpTa->SetBinContent(5135,0.245077); - ssigpTa->SetBinContent(5136,0.250806); - ssigpTa->SetBinContent(5137,0.25665); - ssigpTa->SetBinContent(5138,0.262597); - ssigpTa->SetBinContent(5139,0.268648); - ssigpTa->SetBinContent(5140,0.274746); - ssigpTa->SetBinContent(5141,0.280905); - ssigpTa->SetBinContent(5142,0.287346); - ssigpTa->SetBinContent(5143,0.294365); - ssigpTa->SetBinContent(5144,0.301891); - ssigpTa->SetBinContent(5145,0.309719); - ssigpTa->SetBinContent(5146,0.317742); - ssigpTa->SetBinContent(5147,0.325938); - ssigpTa->SetBinContent(5148,0.334351); - ssigpTa->SetBinContent(5149,0.342987); - ssigpTa->SetBinContent(5150,0.351785); - ssigpTa->SetBinContent(5151,0.372103); - ssigpTa->SetBinContent(5152,0.449686); - ssigpTa->SetBinContent(5153,0.585411); - ssigpTa->SetBinContent(5154,0.666133); - ssigpTa->SetBinContent(5155,0.690834); - ssigpTa->SetBinContent(5156,0.704382); - ssigpTa->SetBinContent(5157,0.718037); - ssigpTa->SetBinContent(5158,0.73155); - ssigpTa->SetBinContent(5159,0.744903); - ssigpTa->SetBinContent(5160,0.758546); - ssigpTa->SetBinContent(5161,0.773454); - ssigpTa->SetBinContent(5162,0.790037); - ssigpTa->SetBinContent(5163,0.807706); - ssigpTa->SetBinContent(5164,0.826166); - ssigpTa->SetBinContent(5165,0.845109); - ssigpTa->SetBinContent(5166,0.863991); - ssigpTa->SetBinContent(5167,0.882805); - ssigpTa->SetBinContent(5168,0.901938); - ssigpTa->SetBinContent(5169,0.921829); - ssigpTa->SetBinContent(5170,0.942714); - ssigpTa->SetBinContent(5171,0.964363); - ssigpTa->SetBinContent(5172,0.986386); - ssigpTa->SetBinContent(5173,1.00849); - ssigpTa->SetBinContent(5174,1.03082); - ssigpTa->SetBinContent(5175,1.053); - ssigpTa->SetBinContent(5176,1.07399); - ssigpTa->SetBinContent(5177,1.09371); - ssigpTa->SetBinContent(5178,1.11306); - ssigpTa->SetBinContent(5179,1.13288); - ssigpTa->SetBinContent(5180,1.15328); - ssigpTa->SetBinContent(5181,1.17367); - ssigpTa->SetBinContent(5182,1.19399); - ssigpTa->SetBinContent(5183,1.21622); - ssigpTa->SetBinContent(5184,1.2424); - ssigpTa->SetBinContent(5185,1.2711); - ssigpTa->SetBinContent(5186,1.30059); - ssigpTa->SetBinContent(5187,1.33029); - ssigpTa->SetBinContent(5188,1.36037); - ssigpTa->SetBinContent(5189,1.39208); - ssigpTa->SetBinContent(5190,1.4268); - ssigpTa->SetBinContent(5191,1.46417); - ssigpTa->SetBinContent(5192,1.50339); - ssigpTa->SetBinContent(5193,1.54322); - ssigpTa->SetBinContent(5194,1.58177); - ssigpTa->SetBinContent(5195,1.61822); - ssigpTa->SetBinContent(5196,1.65309); - ssigpTa->SetBinContent(5197,1.68674); - ssigpTa->SetBinContent(5198,1.71936); - ssigpTa->SetBinContent(5199,1.75165); - ssigpTa->SetBinContent(5200,1.78559); - ssigpTa->SetBinContent(5201,1.82321); - ssigpTa->SetBinContent(5202,1.86375); - ssigpTa->SetBinContent(5203,1.9047); - ssigpTa->SetBinContent(5204,1.94502); - ssigpTa->SetBinContent(5205,1.98464); - ssigpTa->SetBinContent(5206,2.02344); - ssigpTa->SetBinContent(5207,2.06145); - ssigpTa->SetBinContent(5208,2.09862); - ssigpTa->SetBinContent(5209,2.13438); - ssigpTa->SetBinContent(5210,2.16935); - ssigpTa->SetBinContent(5211,2.20684); - ssigpTa->SetBinContent(5212,2.2511); - ssigpTa->SetBinContent(5213,2.30292); - ssigpTa->SetBinContent(5214,2.35999); - ssigpTa->SetBinContent(5215,2.42052); - ssigpTa->SetBinContent(5216,2.52131); - ssigpTa->SetBinContent(5217,2.82263); - ssigpTa->SetBinContent(5218,3.33022); - ssigpTa->SetBinContent(5219,3.6454); - ssigpTa->SetBinContent(5220,3.76654); - ssigpTa->SetBinContent(5221,3.85552); - ssigpTa->SetBinContent(5222,3.95545); - ssigpTa->SetBinContent(5223,4.06505); - ssigpTa->SetBinContent(5224,4.18231); - ssigpTa->SetBinContent(5225,4.30572); - ssigpTa->SetBinContent(5226,4.43154); - ssigpTa->SetBinContent(5227,4.55548); - ssigpTa->SetBinContent(5228,4.67809); - ssigpTa->SetBinContent(5229,4.80447); - ssigpTa->SetBinContent(5230,4.94102); - ssigpTa->SetBinContent(5231,5.08734); - ssigpTa->SetBinContent(5232,5.23873); - ssigpTa->SetBinContent(5233,5.39326); - ssigpTa->SetBinContent(5234,5.54563); - ssigpTa->SetBinContent(5235,5.77974); - ssigpTa->SetBinContent(5236,6.39351); - ssigpTa->SetBinContent(5237,7.32941); - ssigpTa->SetBinContent(5240,0.0173906); - ssigpTa->SetBinContent(5241,0.0173879); - ssigpTa->SetBinContent(5242,0.0173868); - ssigpTa->SetBinContent(5243,0.0173868); - ssigpTa->SetBinContent(5244,0.0173868); - ssigpTa->SetBinContent(5245,0.0173868); - ssigpTa->SetBinContent(5246,0.0173868); - ssigpTa->SetBinContent(5247,0.0173868); - ssigpTa->SetBinContent(5248,0.0173868); - ssigpTa->SetBinContent(5249,0.0173916); - ssigpTa->SetBinContent(5250,0.0173964); - ssigpTa->SetBinContent(5251,0.0174012); - ssigpTa->SetBinContent(5252,0.0174012); - ssigpTa->SetBinContent(5253,0.0174012); - ssigpTa->SetBinContent(5254,0.017406); - ssigpTa->SetBinContent(5255,0.0174152); - ssigpTa->SetBinContent(5256,0.0174292); - ssigpTa->SetBinContent(5257,0.0174412); - ssigpTa->SetBinContent(5258,0.0174552); - ssigpTa->SetBinContent(5259,0.0174664); - ssigpTa->SetBinContent(5260,0.0174732); - ssigpTa->SetBinContent(5261,0.0174732); - ssigpTa->SetBinContent(5262,0.017476); - ssigpTa->SetBinContent(5263,0.0174816); - ssigpTa->SetBinContent(5264,0.0175004); - ssigpTa->SetBinContent(5265,0.0175128); - ssigpTa->SetBinContent(5266,0.0175304); - ssigpTa->SetBinContent(5267,0.0175368); - ssigpTa->SetBinContent(5268,0.017546); - ssigpTa->SetBinContent(5269,0.0175584); - ssigpTa->SetBinContent(5270,0.0175772); - ssigpTa->SetBinContent(5271,0.0175876); - ssigpTa->SetBinContent(5272,0.0175988); - ssigpTa->SetBinContent(5273,0.0176128); - ssigpTa->SetBinContent(5274,0.0176332); - ssigpTa->SetBinContent(5275,0.017654); - ssigpTa->SetBinContent(5276,0.0176596); - ssigpTa->SetBinContent(5277,0.01767); - ssigpTa->SetBinContent(5278,0.0176888); - ssigpTa->SetBinContent(5279,0.017714); - ssigpTa->SetBinContent(5280,0.0177364); - ssigpTa->SetBinContent(5281,0.0177468); - ssigpTa->SetBinContent(5282,0.0177636); - ssigpTa->SetBinContent(5283,0.0177908); - ssigpTa->SetBinContent(5284,0.0178104); - ssigpTa->SetBinContent(5285,0.017834); - ssigpTa->SetBinContent(5286,0.0178592); - ssigpTa->SetBinContent(5287,0.017878); - ssigpTa->SetBinContent(5288,0.0178948); - ssigpTa->SetBinContent(5289,0.0179108); - ssigpTa->SetBinContent(5290,0.0179408); - ssigpTa->SetBinContent(5291,0.0179624); - ssigpTa->SetBinContent(5292,0.017982); - ssigpTa->SetBinContent(5293,0.018012); - ssigpTa->SetBinContent(5294,0.018038); - ssigpTa->SetBinContent(5295,0.0180728); - ssigpTa->SetBinContent(5296,0.0180944); - ssigpTa->SetBinContent(5297,0.0181224); - ssigpTa->SetBinContent(5298,0.0181524); - ssigpTa->SetBinContent(5299,0.0181796); - ssigpTa->SetBinContent(5300,0.0182096); - ssigpTa->SetBinContent(5301,0.0182396); - ssigpTa->SetBinContent(5302,0.0182592); - ssigpTa->SetBinContent(5303,0.018294); - ssigpTa->SetBinContent(5304,0.018322); - ssigpTa->SetBinContent(5305,0.0183576); - ssigpTa->SetBinContent(5306,0.0183868); - ssigpTa->SetBinContent(5307,0.0184344); - ssigpTa->SetBinContent(5308,0.0184636); - ssigpTa->SetBinContent(5309,0.0184944); - ssigpTa->SetBinContent(5310,0.0185272); - ssigpTa->SetBinContent(5311,0.0185648); - ssigpTa->SetBinContent(5312,0.0186004); - ssigpTa->SetBinContent(5313,0.0186396); - ssigpTa->SetBinContent(5314,0.0186752); - ssigpTa->SetBinContent(5315,0.0187164); - ssigpTa->SetBinContent(5316,0.0187548); - ssigpTa->SetBinContent(5317,0.0187952); - ssigpTa->SetBinContent(5318,0.0188456); - ssigpTa->SetBinContent(5319,0.0188776); - ssigpTa->SetBinContent(5320,0.0189252); - ssigpTa->SetBinContent(5321,0.01896); - ssigpTa->SetBinContent(5322,0.0190104); - ssigpTa->SetBinContent(5323,0.0190508); - ssigpTa->SetBinContent(5324,0.0190956); - ssigpTa->SetBinContent(5325,0.0191408); - ssigpTa->SetBinContent(5326,0.0191912); - ssigpTa->SetBinContent(5327,0.019226); - ssigpTa->SetBinContent(5328,0.0192764); - ssigpTa->SetBinContent(5329,0.019328); - ssigpTa->SetBinContent(5330,0.0193776); - ssigpTa->SetBinContent(5331,0.019434); - ssigpTa->SetBinContent(5332,0.019492); - ssigpTa->SetBinContent(5333,0.0195464); - ssigpTa->SetBinContent(5334,0.019596); - ssigpTa->SetBinContent(5335,0.0196504); - ssigpTa->SetBinContent(5336,0.0197064); - ssigpTa->SetBinContent(5337,0.0197624); - ssigpTa->SetBinContent(5338,0.019814); - ssigpTa->SetBinContent(5339,0.0198636); - ssigpTa->SetBinContent(5340,0.0199228); - ssigpTa->SetBinContent(5341,0.0199884); - ssigpTa->SetBinContent(5342,0.0200652); - ssigpTa->SetBinContent(5343,0.0201308); - ssigpTa->SetBinContent(5344,0.0202328); - ssigpTa->SetBinContent(5345,0.0205464); - ssigpTa->SetBinContent(5346,0.0217784); - ssigpTa->SetBinContent(5347,0.023926); - ssigpTa->SetBinContent(5348,0.0251296); - ssigpTa->SetBinContent(5349,0.0253792); - ssigpTa->SetBinContent(5350,0.0254428); - ssigpTa->SetBinContent(5351,0.0255132); - ssigpTa->SetBinContent(5352,0.025588); - ssigpTa->SetBinContent(5353,0.0256612); - ssigpTa->SetBinContent(5354,0.0257312); - ssigpTa->SetBinContent(5355,0.0258032); - ssigpTa->SetBinContent(5356,0.0257324); - ssigpTa->SetBinContent(5357,0.024952); - ssigpTa->SetBinContent(5358,0.023546); - ssigpTa->SetBinContent(5359,0.0230532); - ssigpTa->SetBinContent(5360,0.023374); - ssigpTa->SetBinContent(5361,0.02385); - ssigpTa->SetBinContent(5362,0.0243272); - ssigpTa->SetBinContent(5363,0.0248176); - ssigpTa->SetBinContent(5364,0.0253124); - ssigpTa->SetBinContent(5365,0.0256608); - ssigpTa->SetBinContent(5366,0.0252496); - ssigpTa->SetBinContent(5367,0.0240748); - ssigpTa->SetBinContent(5368,0.02356); - ssigpTa->SetBinContent(5369,0.0237404); - ssigpTa->SetBinContent(5370,0.0241352); - ssigpTa->SetBinContent(5371,0.024618); - ssigpTa->SetBinContent(5372,0.0251176); - ssigpTa->SetBinContent(5373,0.0256248); - ssigpTa->SetBinContent(5374,0.0261496); - ssigpTa->SetBinContent(5375,0.0266864); - ssigpTa->SetBinContent(5376,0.0270664); - ssigpTa->SetBinContent(5377,0.0265824); - ssigpTa->SetBinContent(5378,0.0252104); - ssigpTa->SetBinContent(5379,0.024668); - ssigpTa->SetBinContent(5380,0.0249884); - ssigpTa->SetBinContent(5381,0.0255032); - ssigpTa->SetBinContent(5382,0.0260132); - ssigpTa->SetBinContent(5383,0.0265232); - ssigpTa->SetBinContent(5384,0.0270144); - ssigpTa->SetBinContent(5385,0.0273384); - ssigpTa->SetBinContent(5386,0.027516); - ssigpTa->SetBinContent(5387,0.0276824); - ssigpTa->SetBinContent(5388,0.0270988); - ssigpTa->SetBinContent(5389,0.0256156); - ssigpTa->SetBinContent(5390,0.0250404); - ssigpTa->SetBinContent(5391,0.025378); - ssigpTa->SetBinContent(5392,0.0259004); - ssigpTa->SetBinContent(5393,0.026434); - ssigpTa->SetBinContent(5394,0.0269836); - ssigpTa->SetBinContent(5395,0.0275404); - ssigpTa->SetBinContent(5396,0.028114); - ssigpTa->SetBinContent(5397,0.0286848); - ssigpTa->SetBinContent(5398,0.0292716); - ssigpTa->SetBinContent(5399,0.0297092); - ssigpTa->SetBinContent(5400,0.0293212); - ssigpTa->SetBinContent(5401,0.028074); - ssigpTa->SetBinContent(5402,0.0275552); - ssigpTa->SetBinContent(5403,0.0273948); - ssigpTa->SetBinContent(5404,0.0269348); - ssigpTa->SetBinContent(5405,0.026918); - ssigpTa->SetBinContent(5406,0.0273816); - ssigpTa->SetBinContent(5407,0.0279564); - ssigpTa->SetBinContent(5408,0.0285412); - ssigpTa->SetBinContent(5409,0.0291272); - ssigpTa->SetBinContent(5410,0.0295936); - ssigpTa->SetBinContent(5411,0.0293384); - ssigpTa->SetBinContent(5412,0.0283516); - ssigpTa->SetBinContent(5413,0.0280796); - ssigpTa->SetBinContent(5414,0.0286048); - ssigpTa->SetBinContent(5415,0.0293484); - ssigpTa->SetBinContent(5416,0.0300268); - ssigpTa->SetBinContent(5417,0.0306016); - ssigpTa->SetBinContent(5418,0.0309244); - ssigpTa->SetBinContent(5419,0.0310184); - ssigpTa->SetBinContent(5420,0.0313408); - ssigpTa->SetBinContent(5421,0.0319256); - ssigpTa->SetBinContent(5422,0.0325668); - ssigpTa->SetBinContent(5423,0.033134); - ssigpTa->SetBinContent(5424,0.033254); - ssigpTa->SetBinContent(5425,0.0327556); - ssigpTa->SetBinContent(5426,0.0318452); - ssigpTa->SetBinContent(5427,0.0305048); - ssigpTa->SetBinContent(5428,0.0300512); - ssigpTa->SetBinContent(5429,0.0304352); - ssigpTa->SetBinContent(5430,0.031002); - ssigpTa->SetBinContent(5431,0.0315896); - ssigpTa->SetBinContent(5432,0.032224); - ssigpTa->SetBinContent(5433,0.0328956); - ssigpTa->SetBinContent(5434,0.0335272); - ssigpTa->SetBinContent(5435,0.0341428); - ssigpTa->SetBinContent(5436,0.0347704); - ssigpTa->SetBinContent(5437,0.0354148); - ssigpTa->SetBinContent(5438,0.0360712); - ssigpTa->SetBinContent(5439,0.0367456); - ssigpTa->SetBinContent(5440,0.037432); - ssigpTa->SetBinContent(5441,0.0381216); - ssigpTa->SetBinContent(5442,0.038854); - ssigpTa->SetBinContent(5443,0.039612); - ssigpTa->SetBinContent(5444,0.0403944); - ssigpTa->SetBinContent(5445,0.0412048); - ssigpTa->SetBinContent(5446,0.0420376); - ssigpTa->SetBinContent(5447,0.0428676); - ssigpTa->SetBinContent(5448,0.0437004); - ssigpTa->SetBinContent(5449,0.0445504); - ssigpTa->SetBinContent(5450,0.0454104); - ssigpTa->SetBinContent(5451,0.0463024); - ssigpTa->SetBinContent(5452,0.0472768); - ssigpTa->SetBinContent(5453,0.0483416); - ssigpTa->SetBinContent(5454,0.0493936); - ssigpTa->SetBinContent(5455,0.0504256); - ssigpTa->SetBinContent(5456,0.0514156); - ssigpTa->SetBinContent(5457,0.0523584); - ssigpTa->SetBinContent(5458,0.0533344); - ssigpTa->SetBinContent(5459,0.0543768); - ssigpTa->SetBinContent(5460,0.0554516); - ssigpTa->SetBinContent(5461,0.056564); - ssigpTa->SetBinContent(5462,0.057722); - ssigpTa->SetBinContent(5463,0.058826); - ssigpTa->SetBinContent(5464,0.0595004); - ssigpTa->SetBinContent(5465,0.0597332); - ssigpTa->SetBinContent(5466,0.060386); - ssigpTa->SetBinContent(5467,0.061388); - ssigpTa->SetBinContent(5468,0.0624108); - ssigpTa->SetBinContent(5469,0.0635568); - ssigpTa->SetBinContent(5470,0.0648284); - ssigpTa->SetBinContent(5471,0.0661456); - ssigpTa->SetBinContent(5472,0.067472); - ssigpTa->SetBinContent(5473,0.0688172); - ssigpTa->SetBinContent(5474,0.0701932); - ssigpTa->SetBinContent(5475,0.071586); - ssigpTa->SetBinContent(5476,0.0730164); - ssigpTa->SetBinContent(5477,0.0744416); - ssigpTa->SetBinContent(5478,0.0758392); - ssigpTa->SetBinContent(5479,0.0773152); - ssigpTa->SetBinContent(5480,0.0788816); - ssigpTa->SetBinContent(5481,0.0804892); - ssigpTa->SetBinContent(5482,0.0821136); - ssigpTa->SetBinContent(5483,0.0837576); - ssigpTa->SetBinContent(5484,0.08545); - ssigpTa->SetBinContent(5485,0.0872216); - ssigpTa->SetBinContent(5486,0.0890764); - ssigpTa->SetBinContent(5487,0.0910068); - ssigpTa->SetBinContent(5488,0.092994); - ssigpTa->SetBinContent(5489,0.0949892); - ssigpTa->SetBinContent(5490,0.0968752); - ssigpTa->SetBinContent(5491,0.0988064); - ssigpTa->SetBinContent(5492,0.100829); - ssigpTa->SetBinContent(5493,0.102888); - ssigpTa->SetBinContent(5494,0.105034); - ssigpTa->SetBinContent(5495,0.107288); - ssigpTa->SetBinContent(5496,0.10965); - ssigpTa->SetBinContent(5497,0.112099); - ssigpTa->SetBinContent(5498,0.114778); - ssigpTa->SetBinContent(5499,0.11767); - ssigpTa->SetBinContent(5500,0.120552); - ssigpTa->SetBinContent(5501,0.124015); - ssigpTa->SetBinContent(5502,0.128236); - ssigpTa->SetBinContent(5503,0.131825); - ssigpTa->SetBinContent(5504,0.134783); - ssigpTa->SetBinContent(5505,0.137716); - ssigpTa->SetBinContent(5506,0.140821); - ssigpTa->SetBinContent(5507,0.144106); - ssigpTa->SetBinContent(5508,0.147533); - ssigpTa->SetBinContent(5509,0.150994); - ssigpTa->SetBinContent(5510,0.154449); - ssigpTa->SetBinContent(5511,0.157924); - ssigpTa->SetBinContent(5512,0.161435); - ssigpTa->SetBinContent(5513,0.165038); - ssigpTa->SetBinContent(5514,0.171241); - ssigpTa->SetBinContent(5515,0.18874); - ssigpTa->SetBinContent(5516,0.212265); - ssigpTa->SetBinContent(5517,0.217018); - ssigpTa->SetBinContent(5518,0.216478); - ssigpTa->SetBinContent(5519,0.2205); - ssigpTa->SetBinContent(5520,0.226047); - ssigpTa->SetBinContent(5521,0.231677); - ssigpTa->SetBinContent(5522,0.23737); - ssigpTa->SetBinContent(5523,0.243119); - ssigpTa->SetBinContent(5524,0.248987); - ssigpTa->SetBinContent(5525,0.25371); - ssigpTa->SetBinContent(5526,0.252124); - ssigpTa->SetBinContent(5527,0.244057); - ssigpTa->SetBinContent(5528,0.24206); - ssigpTa->SetBinContent(5529,0.246383); - ssigpTa->SetBinContent(5530,0.252286); - ssigpTa->SetBinContent(5531,0.258682); - ssigpTa->SetBinContent(5532,0.265372); - ssigpTa->SetBinContent(5533,0.271188); - ssigpTa->SetBinContent(5534,0.271982); - ssigpTa->SetBinContent(5535,0.267502); - ssigpTa->SetBinContent(5536,0.267741); - ssigpTa->SetBinContent(5537,0.273079); - ssigpTa->SetBinContent(5538,0.27961); - ssigpTa->SetBinContent(5539,0.286278); - ssigpTa->SetBinContent(5540,0.293085); - ssigpTa->SetBinContent(5541,0.300008); - ssigpTa->SetBinContent(5542,0.307054); - ssigpTa->SetBinContent(5543,0.31415); - ssigpTa->SetBinContent(5544,0.321321); - ssigpTa->SetBinContent(5545,0.328835); - ssigpTa->SetBinContent(5546,0.336992); - ssigpTa->SetBinContent(5547,0.34575); - ssigpTa->SetBinContent(5548,0.354857); - ssigpTa->SetBinContent(5549,0.364193); - ssigpTa->SetBinContent(5550,0.373733); - ssigpTa->SetBinContent(5551,0.383522); - ssigpTa->SetBinContent(5552,0.393575); - ssigpTa->SetBinContent(5553,0.403816); - ssigpTa->SetBinContent(5554,0.427522); - ssigpTa->SetBinContent(5555,0.518092); - ssigpTa->SetBinContent(5556,0.676583); - ssigpTa->SetBinContent(5557,0.770843); - ssigpTa->SetBinContent(5558,0.79966); - ssigpTa->SetBinContent(5559,0.815468); - ssigpTa->SetBinContent(5560,0.831396); - ssigpTa->SetBinContent(5561,0.847167); - ssigpTa->SetBinContent(5562,0.862745); - ssigpTa->SetBinContent(5563,0.878671); - ssigpTa->SetBinContent(5564,0.896048); - ssigpTa->SetBinContent(5565,0.915383); - ssigpTa->SetBinContent(5566,0.935974); - ssigpTa->SetBinContent(5567,0.957479); - ssigpTa->SetBinContent(5568,0.979554); - ssigpTa->SetBinContent(5569,1.00156); - ssigpTa->SetBinContent(5570,1.02349); - ssigpTa->SetBinContent(5571,1.0458); - ssigpTa->SetBinContent(5572,1.06899); - ssigpTa->SetBinContent(5573,1.09333); - ssigpTa->SetBinContent(5574,1.11857); - ssigpTa->SetBinContent(5575,1.14423); - ssigpTa->SetBinContent(5576,1.17001); - ssigpTa->SetBinContent(5577,1.19604); - ssigpTa->SetBinContent(5578,1.22191); - ssigpTa->SetBinContent(5579,1.24639); - ssigpTa->SetBinContent(5580,1.26941); - ssigpTa->SetBinContent(5581,1.29201); - ssigpTa->SetBinContent(5582,1.31514); - ssigpTa->SetBinContent(5583,1.33895); - ssigpTa->SetBinContent(5584,1.36273); - ssigpTa->SetBinContent(5585,1.38644); - ssigpTa->SetBinContent(5586,1.41238); - ssigpTa->SetBinContent(5587,1.4429); - ssigpTa->SetBinContent(5588,1.47636); - ssigpTa->SetBinContent(5589,1.51073); - ssigpTa->SetBinContent(5590,1.54536); - ssigpTa->SetBinContent(5591,1.58043); - ssigpTa->SetBinContent(5592,1.61741); - ssigpTa->SetBinContent(5593,1.65788); - ssigpTa->SetBinContent(5594,1.70143); - ssigpTa->SetBinContent(5595,1.74714); - ssigpTa->SetBinContent(5596,1.79355); - ssigpTa->SetBinContent(5597,1.83848); - ssigpTa->SetBinContent(5598,1.88099); - ssigpTa->SetBinContent(5599,1.92165); - ssigpTa->SetBinContent(5600,1.96092); - ssigpTa->SetBinContent(5601,1.99897); - ssigpTa->SetBinContent(5602,2.03665); - ssigpTa->SetBinContent(5603,2.07626); - ssigpTa->SetBinContent(5604,2.12015); - ssigpTa->SetBinContent(5605,2.16743); - ssigpTa->SetBinContent(5606,2.21521); - ssigpTa->SetBinContent(5607,2.26223); - ssigpTa->SetBinContent(5608,2.30847); - ssigpTa->SetBinContent(5609,2.35373); - ssigpTa->SetBinContent(5610,2.39808); - ssigpTa->SetBinContent(5611,2.44145); - ssigpTa->SetBinContent(5612,2.48318); - ssigpTa->SetBinContent(5613,2.52399); - ssigpTa->SetBinContent(5614,2.56774); - ssigpTa->SetBinContent(5615,2.61937); - ssigpTa->SetBinContent(5616,2.67979); - ssigpTa->SetBinContent(5617,2.74633); - ssigpTa->SetBinContent(5618,2.81688); - ssigpTa->SetBinContent(5619,2.93443); - ssigpTa->SetBinContent(5620,3.28599); - ssigpTa->SetBinContent(5621,3.87826); - ssigpTa->SetBinContent(5622,4.24599); - ssigpTa->SetBinContent(5623,4.38731); - ssigpTa->SetBinContent(5624,4.49108); - ssigpTa->SetBinContent(5625,4.60762); - ssigpTa->SetBinContent(5626,4.73545); - ssigpTa->SetBinContent(5627,4.87218); - ssigpTa->SetBinContent(5628,5.0161); - ssigpTa->SetBinContent(5629,5.16282); - ssigpTa->SetBinContent(5630,5.30736); - ssigpTa->SetBinContent(5631,5.45036); - ssigpTa->SetBinContent(5632,5.59774); - ssigpTa->SetBinContent(5633,5.75698); - ssigpTa->SetBinContent(5634,5.92761); - ssigpTa->SetBinContent(5635,6.10417); - ssigpTa->SetBinContent(5636,6.28438); - ssigpTa->SetBinContent(5637,6.4621); - ssigpTa->SetBinContent(5638,6.73522); - ssigpTa->SetBinContent(5639,7.45131); - ssigpTa->SetBinContent(5640,8.54323); - ssigpTa->SetBinContent(5643,0.0189); - ssigpTa->SetBinContent(5644,0.0188975); - ssigpTa->SetBinContent(5645,0.0188968); - ssigpTa->SetBinContent(5646,0.0188968); - ssigpTa->SetBinContent(5647,0.0188968); - ssigpTa->SetBinContent(5648,0.0188968); - ssigpTa->SetBinContent(5649,0.0188968); - ssigpTa->SetBinContent(5650,0.0188968); - ssigpTa->SetBinContent(5651,0.0188968); - ssigpTa->SetBinContent(5652,0.0188968); - ssigpTa->SetBinContent(5653,0.0188992); - ssigpTa->SetBinContent(5654,0.0188992); - ssigpTa->SetBinContent(5655,0.0188992); - ssigpTa->SetBinContent(5656,0.0188992); - ssigpTa->SetBinContent(5657,0.0189064); - ssigpTa->SetBinContent(5658,0.0189192); - ssigpTa->SetBinContent(5659,0.0189352); - ssigpTa->SetBinContent(5660,0.0189472); - ssigpTa->SetBinContent(5661,0.0189632); - ssigpTa->SetBinContent(5662,0.018972); - ssigpTa->SetBinContent(5663,0.0189752); - ssigpTa->SetBinContent(5664,0.0189792); - ssigpTa->SetBinContent(5665,0.0189792); - ssigpTa->SetBinContent(5666,0.0189848); - ssigpTa->SetBinContent(5667,0.0189904); - ssigpTa->SetBinContent(5668,0.0190088); - ssigpTa->SetBinContent(5669,0.0190224); - ssigpTa->SetBinContent(5670,0.0190456); - ssigpTa->SetBinContent(5671,0.019052); - ssigpTa->SetBinContent(5672,0.0190608); - ssigpTa->SetBinContent(5673,0.0190688); - ssigpTa->SetBinContent(5674,0.0190816); - ssigpTa->SetBinContent(5675,0.019088); - ssigpTa->SetBinContent(5676,0.0191112); - ssigpTa->SetBinContent(5677,0.0191328); - ssigpTa->SetBinContent(5678,0.0191488); - ssigpTa->SetBinContent(5679,0.0191544); - ssigpTa->SetBinContent(5680,0.0191576); - ssigpTa->SetBinContent(5681,0.019172); - ssigpTa->SetBinContent(5682,0.0192048); - ssigpTa->SetBinContent(5683,0.019224); - ssigpTa->SetBinContent(5684,0.01924); - ssigpTa->SetBinContent(5685,0.019252); - ssigpTa->SetBinContent(5686,0.0192736); - ssigpTa->SetBinContent(5687,0.0192952); - ssigpTa->SetBinContent(5688,0.0193184); - ssigpTa->SetBinContent(5689,0.01934); - ssigpTa->SetBinContent(5690,0.0193616); - ssigpTa->SetBinContent(5691,0.0193752); - ssigpTa->SetBinContent(5692,0.0193968); - ssigpTa->SetBinContent(5693,0.01942); - ssigpTa->SetBinContent(5694,0.019444); - ssigpTa->SetBinContent(5695,0.0194592); - ssigpTa->SetBinContent(5696,0.0194816); - ssigpTa->SetBinContent(5697,0.0195184); - ssigpTa->SetBinContent(5698,0.0195448); - ssigpTa->SetBinContent(5699,0.0195696); - ssigpTa->SetBinContent(5700,0.0195984); - ssigpTa->SetBinContent(5701,0.0196232); - ssigpTa->SetBinContent(5702,0.019648); - ssigpTa->SetBinContent(5703,0.0196792); - ssigpTa->SetBinContent(5704,0.0197016); - ssigpTa->SetBinContent(5705,0.0197264); - ssigpTa->SetBinContent(5706,0.0197592); - ssigpTa->SetBinContent(5707,0.0197896); - ssigpTa->SetBinContent(5708,0.019812); - ssigpTa->SetBinContent(5709,0.019856); - ssigpTa->SetBinContent(5710,0.019884); - ssigpTa->SetBinContent(5711,0.0199216); - ssigpTa->SetBinContent(5712,0.0199464); - ssigpTa->SetBinContent(5713,0.0199784); - ssigpTa->SetBinContent(5714,0.0200128); - ssigpTa->SetBinContent(5715,0.0200464); - ssigpTa->SetBinContent(5716,0.0200856); - ssigpTa->SetBinContent(5717,0.0201264); - ssigpTa->SetBinContent(5718,0.020164); - ssigpTa->SetBinContent(5719,0.0201992); - ssigpTa->SetBinContent(5720,0.0202424); - ssigpTa->SetBinContent(5721,0.02028); - ssigpTa->SetBinContent(5722,0.020328); - ssigpTa->SetBinContent(5723,0.020356); - ssigpTa->SetBinContent(5724,0.0204104); - ssigpTa->SetBinContent(5725,0.020444); - ssigpTa->SetBinContent(5726,0.020496); - ssigpTa->SetBinContent(5727,0.0205296); - ssigpTa->SetBinContent(5728,0.02058); - ssigpTa->SetBinContent(5729,0.0206176); - ssigpTa->SetBinContent(5730,0.0206656); - ssigpTa->SetBinContent(5731,0.0207064); - ssigpTa->SetBinContent(5732,0.02076); - ssigpTa->SetBinContent(5733,0.0208104); - ssigpTa->SetBinContent(5734,0.0208576); - ssigpTa->SetBinContent(5735,0.0209136); - ssigpTa->SetBinContent(5736,0.0209672); - ssigpTa->SetBinContent(5737,0.0210112); - ssigpTa->SetBinContent(5738,0.0210648); - ssigpTa->SetBinContent(5739,0.021128); - ssigpTa->SetBinContent(5740,0.0211784); - ssigpTa->SetBinContent(5741,0.021236); - ssigpTa->SetBinContent(5742,0.0212824); - ssigpTa->SetBinContent(5743,0.0213336); - ssigpTa->SetBinContent(5744,0.0213984); - ssigpTa->SetBinContent(5745,0.0214648); - ssigpTa->SetBinContent(5746,0.0215336); - ssigpTa->SetBinContent(5747,0.0216184); - ssigpTa->SetBinContent(5748,0.0219568); - ssigpTa->SetBinContent(5749,0.0233624); - ssigpTa->SetBinContent(5750,0.0258608); - ssigpTa->SetBinContent(5751,0.027244); - ssigpTa->SetBinContent(5752,0.0275312); - ssigpTa->SetBinContent(5753,0.027584); - ssigpTa->SetBinContent(5754,0.0276576); - ssigpTa->SetBinContent(5755,0.0277296); - ssigpTa->SetBinContent(5756,0.0277984); - ssigpTa->SetBinContent(5757,0.0278712); - ssigpTa->SetBinContent(5758,0.0279512); - ssigpTa->SetBinContent(5759,0.0278544); - ssigpTa->SetBinContent(5760,0.0269264); - ssigpTa->SetBinContent(5761,0.0252688); - ssigpTa->SetBinContent(5762,0.0246888); - ssigpTa->SetBinContent(5763,0.0250648); - ssigpTa->SetBinContent(5764,0.0256048); - ssigpTa->SetBinContent(5765,0.0261416); - ssigpTa->SetBinContent(5766,0.026688); - ssigpTa->SetBinContent(5767,0.0272472); - ssigpTa->SetBinContent(5768,0.0276312); - ssigpTa->SetBinContent(5769,0.0271352); - ssigpTa->SetBinContent(5770,0.0257336); - ssigpTa->SetBinContent(5771,0.0251472); - ssigpTa->SetBinContent(5772,0.0253552); - ssigpTa->SetBinContent(5773,0.0258224); - ssigpTa->SetBinContent(5774,0.0263592); - ssigpTa->SetBinContent(5775,0.0269216); - ssigpTa->SetBinContent(5776,0.0274904); - ssigpTa->SetBinContent(5777,0.0280752); - ssigpTa->SetBinContent(5778,0.0286816); - ssigpTa->SetBinContent(5779,0.029104); - ssigpTa->SetBinContent(5780,0.0285248); - ssigpTa->SetBinContent(5781,0.0269064); - ssigpTa->SetBinContent(5782,0.0262504); - ssigpTa->SetBinContent(5783,0.0266008); - ssigpTa->SetBinContent(5784,0.0271592); - ssigpTa->SetBinContent(5785,0.0277272); - ssigpTa->SetBinContent(5786,0.0282984); - ssigpTa->SetBinContent(5787,0.0288448); - ssigpTa->SetBinContent(5788,0.0292832); - ssigpTa->SetBinContent(5789,0.0295928); - ssigpTa->SetBinContent(5790,0.02984); - ssigpTa->SetBinContent(5791,0.0291488); - ssigpTa->SetBinContent(5792,0.0274168); - ssigpTa->SetBinContent(5793,0.0267224); - ssigpTa->SetBinContent(5794,0.0270712); - ssigpTa->SetBinContent(5795,0.0276376); - ssigpTa->SetBinContent(5796,0.0282104); - ssigpTa->SetBinContent(5797,0.0287992); - ssigpTa->SetBinContent(5798,0.0294136); - ssigpTa->SetBinContent(5799,0.030036); - ssigpTa->SetBinContent(5800,0.0306672); - ssigpTa->SetBinContent(5801,0.031308); - ssigpTa->SetBinContent(5802,0.0317656); - ssigpTa->SetBinContent(5803,0.0312576); - ssigpTa->SetBinContent(5804,0.02976); - ssigpTa->SetBinContent(5805,0.0291248); - ssigpTa->SetBinContent(5806,0.0290656); - ssigpTa->SetBinContent(5807,0.028792); - ssigpTa->SetBinContent(5808,0.0289112); - ssigpTa->SetBinContent(5809,0.0294304); - ssigpTa->SetBinContent(5810,0.0300576); - ssigpTa->SetBinContent(5811,0.030688); - ssigpTa->SetBinContent(5812,0.031328); - ssigpTa->SetBinContent(5813,0.031808); - ssigpTa->SetBinContent(5814,0.0314528); - ssigpTa->SetBinContent(5815,0.0302088); - ssigpTa->SetBinContent(5816,0.0298224); - ssigpTa->SetBinContent(5817,0.03032); - ssigpTa->SetBinContent(5818,0.0310304); - ssigpTa->SetBinContent(5819,0.0317176); - ssigpTa->SetBinContent(5820,0.0323248); - ssigpTa->SetBinContent(5821,0.032732); - ssigpTa->SetBinContent(5822,0.0329248); - ssigpTa->SetBinContent(5823,0.0333504); - ssigpTa->SetBinContent(5824,0.033988); - ssigpTa->SetBinContent(5825,0.0346952); - ssigpTa->SetBinContent(5826,0.0352896); - ssigpTa->SetBinContent(5827,0.0353296); - ssigpTa->SetBinContent(5828,0.034652); - ssigpTa->SetBinContent(5829,0.0337664); - ssigpTa->SetBinContent(5830,0.0326616); - ssigpTa->SetBinContent(5831,0.0323776); - ssigpTa->SetBinContent(5832,0.03284); - ssigpTa->SetBinContent(5833,0.033472); - ssigpTa->SetBinContent(5834,0.0341144); - ssigpTa->SetBinContent(5835,0.034744); - ssigpTa->SetBinContent(5836,0.0353552); - ssigpTa->SetBinContent(5837,0.0359856); - ssigpTa->SetBinContent(5838,0.0366528); - ssigpTa->SetBinContent(5839,0.0373584); - ssigpTa->SetBinContent(5840,0.0380784); - ssigpTa->SetBinContent(5841,0.0388128); - ssigpTa->SetBinContent(5842,0.0395656); - ssigpTa->SetBinContent(5843,0.0403352); - ssigpTa->SetBinContent(5844,0.041204); - ssigpTa->SetBinContent(5845,0.0421696); - ssigpTa->SetBinContent(5846,0.0431048); - ssigpTa->SetBinContent(5847,0.0439768); - ssigpTa->SetBinContent(5848,0.0447776); - ssigpTa->SetBinContent(5849,0.0455192); - ssigpTa->SetBinContent(5850,0.0463424); - ssigpTa->SetBinContent(5851,0.0472584); - ssigpTa->SetBinContent(5852,0.048208); - ssigpTa->SetBinContent(5853,0.0491648); - ssigpTa->SetBinContent(5854,0.0501776); - ssigpTa->SetBinContent(5855,0.0513504); - ssigpTa->SetBinContent(5856,0.0527064); - ssigpTa->SetBinContent(5857,0.0539672); - ssigpTa->SetBinContent(5858,0.055104); - ssigpTa->SetBinContent(5859,0.0560976); - ssigpTa->SetBinContent(5860,0.0569264); - ssigpTa->SetBinContent(5861,0.0578976); - ssigpTa->SetBinContent(5862,0.0590376); - ssigpTa->SetBinContent(5863,0.0602344); - ssigpTa->SetBinContent(5864,0.0614736); - ssigpTa->SetBinContent(5865,0.06276); - ssigpTa->SetBinContent(5866,0.0640272); - ssigpTa->SetBinContent(5867,0.0649872); - ssigpTa->SetBinContent(5868,0.0656304); - ssigpTa->SetBinContent(5869,0.06656); - ssigpTa->SetBinContent(5870,0.0676032); - ssigpTa->SetBinContent(5871,0.0685064); - ssigpTa->SetBinContent(5872,0.0696656); - ssigpTa->SetBinContent(5873,0.0710864); - ssigpTa->SetBinContent(5874,0.0725728); - ssigpTa->SetBinContent(5875,0.0740824); - ssigpTa->SetBinContent(5876,0.0756112); - ssigpTa->SetBinContent(5877,0.0771616); - ssigpTa->SetBinContent(5878,0.0787576); - ssigpTa->SetBinContent(5879,0.0803984); - ssigpTa->SetBinContent(5880,0.081972); - ssigpTa->SetBinContent(5881,0.0833816); - ssigpTa->SetBinContent(5882,0.0849392); - ssigpTa->SetBinContent(5883,0.0866984); - ssigpTa->SetBinContent(5884,0.0885176); - ssigpTa->SetBinContent(5885,0.09036); - ssigpTa->SetBinContent(5886,0.092232); - ssigpTa->SetBinContent(5887,0.0941544); - ssigpTa->SetBinContent(5888,0.0961664); - ssigpTa->SetBinContent(5889,0.098276); - ssigpTa->SetBinContent(5890,0.100441); - ssigpTa->SetBinContent(5891,0.102612); - ssigpTa->SetBinContent(5892,0.104709); - ssigpTa->SetBinContent(5893,0.106791); - ssigpTa->SetBinContent(5894,0.108993); - ssigpTa->SetBinContent(5895,0.11128); - ssigpTa->SetBinContent(5896,0.113638); - ssigpTa->SetBinContent(5897,0.116058); - ssigpTa->SetBinContent(5898,0.118637); - ssigpTa->SetBinContent(5899,0.121304); - ssigpTa->SetBinContent(5900,0.124084); - ssigpTa->SetBinContent(5901,0.12705); - ssigpTa->SetBinContent(5902,0.130203); - ssigpTa->SetBinContent(5903,0.133412); - ssigpTa->SetBinContent(5904,0.137382); - ssigpTa->SetBinContent(5905,0.142264); - ssigpTa->SetBinContent(5906,0.146397); - ssigpTa->SetBinContent(5907,0.149772); - ssigpTa->SetBinContent(5908,0.153116); - ssigpTa->SetBinContent(5909,0.156644); - ssigpTa->SetBinContent(5910,0.160322); - ssigpTa->SetBinContent(5911,0.16414); - ssigpTa->SetBinContent(5912,0.16802); - ssigpTa->SetBinContent(5913,0.171941); - ssigpTa->SetBinContent(5914,0.175888); - ssigpTa->SetBinContent(5915,0.179879); - ssigpTa->SetBinContent(5916,0.18397); - ssigpTa->SetBinContent(5917,0.191098); - ssigpTa->SetBinContent(5918,0.211366); - ssigpTa->SetBinContent(5919,0.23871); - ssigpTa->SetBinContent(5920,0.244216); - ssigpTa->SetBinContent(5921,0.243518); - ssigpTa->SetBinContent(5922,0.248069); - ssigpTa->SetBinContent(5923,0.254374); - ssigpTa->SetBinContent(5924,0.260798); - ssigpTa->SetBinContent(5925,0.267276); - ssigpTa->SetBinContent(5926,0.273828); - ssigpTa->SetBinContent(5927,0.280518); - ssigpTa->SetBinContent(5928,0.285856); - ssigpTa->SetBinContent(5929,0.283882); - ssigpTa->SetBinContent(5930,0.27438); - ssigpTa->SetBinContent(5931,0.271933); - ssigpTa->SetBinContent(5932,0.276826); - ssigpTa->SetBinContent(5933,0.28355); - ssigpTa->SetBinContent(5934,0.290826); - ssigpTa->SetBinContent(5935,0.298442); - ssigpTa->SetBinContent(5936,0.305014); - ssigpTa->SetBinContent(5937,0.305754); - ssigpTa->SetBinContent(5938,0.300517); - ssigpTa->SetBinContent(5939,0.301021); - ssigpTa->SetBinContent(5940,0.30731); - ssigpTa->SetBinContent(5941,0.314794); - ssigpTa->SetBinContent(5942,0.32241); - ssigpTa->SetBinContent(5943,0.330178); - ssigpTa->SetBinContent(5944,0.338092); - ssigpTa->SetBinContent(5945,0.346126); - ssigpTa->SetBinContent(5946,0.354238); - ssigpTa->SetBinContent(5947,0.36243); - ssigpTa->SetBinContent(5948,0.370999); - ssigpTa->SetBinContent(5949,0.380316); - ssigpTa->SetBinContent(5950,0.390302); - ssigpTa->SetBinContent(5951,0.400694); - ssigpTa->SetBinContent(5952,0.411356); - ssigpTa->SetBinContent(5953,0.422238); - ssigpTa->SetBinContent(5954,0.433403); - ssigpTa->SetBinContent(5955,0.444874); - ssigpTa->SetBinContent(5956,0.456572); - ssigpTa->SetBinContent(5957,0.483653); - ssigpTa->SetBinContent(5958,0.587238); - ssigpTa->SetBinContent(5959,0.768486); - ssigpTa->SetBinContent(5960,0.87628); - ssigpTa->SetBinContent(5961,0.909226); - ssigpTa->SetBinContent(5962,0.927287); - ssigpTa->SetBinContent(5963,0.945489); - ssigpTa->SetBinContent(5964,0.963521); - ssigpTa->SetBinContent(5965,0.981322); - ssigpTa->SetBinContent(5966,0.999525); - ssigpTa->SetBinContent(5967,1.01938); - ssigpTa->SetBinContent(5968,1.04147); - ssigpTa->SetBinContent(5969,1.06498); - ssigpTa->SetBinContent(5970,1.08954); - ssigpTa->SetBinContent(5971,1.11474); - ssigpTa->SetBinContent(5972,1.13989); - ssigpTa->SetBinContent(5973,1.16494); - ssigpTa->SetBinContent(5974,1.19042); - ssigpTa->SetBinContent(5975,1.21691); - ssigpTa->SetBinContent(5976,1.24471); - ssigpTa->SetBinContent(5977,1.27354); - ssigpTa->SetBinContent(5978,1.30286); - ssigpTa->SetBinContent(5979,1.3323); - ssigpTa->SetBinContent(5980,1.36203); - ssigpTa->SetBinContent(5981,1.39159); - ssigpTa->SetBinContent(5982,1.41958); - ssigpTa->SetBinContent(5983,1.4459); - ssigpTa->SetBinContent(5984,1.47173); - ssigpTa->SetBinContent(5985,1.49819); - ssigpTa->SetBinContent(5986,1.52539); - ssigpTa->SetBinContent(5987,1.55258); - ssigpTa->SetBinContent(5988,1.57968); - ssigpTa->SetBinContent(5989,1.60933); - ssigpTa->SetBinContent(5990,1.64419); - ssigpTa->SetBinContent(5991,1.68241); - ssigpTa->SetBinContent(5992,1.72166); - ssigpTa->SetBinContent(5993,1.76123); - ssigpTa->SetBinContent(5994,1.80129); - ssigpTa->SetBinContent(5995,1.84355); - ssigpTa->SetBinContent(5996,1.88976); - ssigpTa->SetBinContent(5997,1.93951); - ssigpTa->SetBinContent(5998,1.9917); - ssigpTa->SetBinContent(5999,2.04471); - ssigpTa->SetBinContent(6000,2.09602); - ssigpTa->SetBinContent(6001,2.14458); - ssigpTa->SetBinContent(6002,2.19105); - ssigpTa->SetBinContent(6003,2.23593); - ssigpTa->SetBinContent(6004,2.27942); - ssigpTa->SetBinContent(6005,2.32249); - ssigpTa->SetBinContent(6006,2.36777); - ssigpTa->SetBinContent(6007,2.41792); - ssigpTa->SetBinContent(6008,2.47196); - ssigpTa->SetBinContent(6009,2.52655); - ssigpTa->SetBinContent(6010,2.5803); - ssigpTa->SetBinContent(6011,2.63312); - ssigpTa->SetBinContent(6012,2.68486); - ssigpTa->SetBinContent(6013,2.73555); - ssigpTa->SetBinContent(6014,2.78512); - ssigpTa->SetBinContent(6015,2.83282); - ssigpTa->SetBinContent(6016,2.87948); - ssigpTa->SetBinContent(6017,2.92948); - ssigpTa->SetBinContent(6018,2.98848); - ssigpTa->SetBinContent(6019,3.05751); - ssigpTa->SetBinContent(6020,3.13352); - ssigpTa->SetBinContent(6021,3.21411); - ssigpTa->SetBinContent(6022,3.34841); - ssigpTa->SetBinContent(6023,3.75021); - ssigpTa->SetBinContent(6024,4.42715); - ssigpTa->SetBinContent(6025,4.84744); - ssigpTa->SetBinContent(6026,5.00894); - ssigpTa->SetBinContent(6027,5.12751); - ssigpTa->SetBinContent(6028,5.26066); - ssigpTa->SetBinContent(6029,5.4067); - ssigpTa->SetBinContent(6030,5.56293); - ssigpTa->SetBinContent(6031,5.72735); - ssigpTa->SetBinContent(6032,5.89499); - ssigpTa->SetBinContent(6033,6.06014); - ssigpTa->SetBinContent(6034,6.22352); - ssigpTa->SetBinContent(6035,6.39193); - ssigpTa->SetBinContent(6036,6.57387); - ssigpTa->SetBinContent(6037,6.76883); - ssigpTa->SetBinContent(6038,6.97055); - ssigpTa->SetBinContent(6039,7.17647); - ssigpTa->SetBinContent(6040,7.37953); - ssigpTa->SetBinContent(6041,7.69166); - ssigpTa->SetBinContent(6042,8.51006); - ssigpTa->SetBinContent(6043,9.75801); - ssigpTa->SetBinContent(6046,0.0213622); - ssigpTa->SetBinContent(6047,0.0211392); - ssigpTa->SetBinContent(6048,0.0211108); - ssigpTa->SetBinContent(6049,0.0211108); - ssigpTa->SetBinContent(6050,0.0211108); - ssigpTa->SetBinContent(6051,0.0211108); - ssigpTa->SetBinContent(6052,0.0211108); - ssigpTa->SetBinContent(6053,0.0211108); - ssigpTa->SetBinContent(6054,0.0211108); - ssigpTa->SetBinContent(6055,0.0211108); - ssigpTa->SetBinContent(6056,0.0211108); - ssigpTa->SetBinContent(6057,0.0211108); - ssigpTa->SetBinContent(6058,0.0211108); - ssigpTa->SetBinContent(6059,0.0211144); - ssigpTa->SetBinContent(6060,0.0211216); - ssigpTa->SetBinContent(6061,0.0211396); - ssigpTa->SetBinContent(6062,0.0211496); - ssigpTa->SetBinContent(6063,0.0211596); - ssigpTa->SetBinContent(6064,0.021166); - ssigpTa->SetBinContent(6065,0.0211724); - ssigpTa->SetBinContent(6066,0.0211804); - ssigpTa->SetBinContent(6067,0.0211884); - ssigpTa->SetBinContent(6068,0.0211964); - ssigpTa->SetBinContent(6069,0.0211964); - ssigpTa->SetBinContent(6070,0.0212028); - ssigpTa->SetBinContent(6071,0.02121); - ssigpTa->SetBinContent(6072,0.0212344); - ssigpTa->SetBinContent(6073,0.021248); - ssigpTa->SetBinContent(6074,0.021258); - ssigpTa->SetBinContent(6075,0.021258); - ssigpTa->SetBinContent(6076,0.0212768); - ssigpTa->SetBinContent(6077,0.0212848); - ssigpTa->SetBinContent(6078,0.0213028); - ssigpTa->SetBinContent(6079,0.0213164); - ssigpTa->SetBinContent(6080,0.0213408); - ssigpTa->SetBinContent(6081,0.0213508); - ssigpTa->SetBinContent(6082,0.0213544); - ssigpTa->SetBinContent(6083,0.0213544); - ssigpTa->SetBinContent(6084,0.0213724); - ssigpTa->SetBinContent(6085,0.0213968); - ssigpTa->SetBinContent(6086,0.0214292); - ssigpTa->SetBinContent(6087,0.0214364); - ssigpTa->SetBinContent(6088,0.0214464); - ssigpTa->SetBinContent(6089,0.0214592); - ssigpTa->SetBinContent(6090,0.0214808); - ssigpTa->SetBinContent(6091,0.0215068); - ssigpTa->SetBinContent(6092,0.0215392); - ssigpTa->SetBinContent(6093,0.0215528); - ssigpTa->SetBinContent(6094,0.0215664); - ssigpTa->SetBinContent(6095,0.0215924); - ssigpTa->SetBinContent(6096,0.0216168); - ssigpTa->SetBinContent(6097,0.0216348); - ssigpTa->SetBinContent(6098,0.0216448); - ssigpTa->SetBinContent(6099,0.0216612); - ssigpTa->SetBinContent(6100,0.0216936); - ssigpTa->SetBinContent(6101,0.0217216); - ssigpTa->SetBinContent(6102,0.0217468); - ssigpTa->SetBinContent(6103,0.0217792); - ssigpTa->SetBinContent(6104,0.0218036); - ssigpTa->SetBinContent(6105,0.0218252); - ssigpTa->SetBinContent(6106,0.0218496); - ssigpTa->SetBinContent(6107,0.021874); - ssigpTa->SetBinContent(6108,0.0218992); - ssigpTa->SetBinContent(6109,0.0219272); - ssigpTa->SetBinContent(6110,0.0219596); - ssigpTa->SetBinContent(6111,0.0219956); - ssigpTa->SetBinContent(6112,0.0220208); - ssigpTa->SetBinContent(6113,0.0220624); - ssigpTa->SetBinContent(6114,0.0220796); - ssigpTa->SetBinContent(6115,0.0221076); - ssigpTa->SetBinContent(6116,0.02214); - ssigpTa->SetBinContent(6117,0.022168); - ssigpTa->SetBinContent(6118,0.0222076); - ssigpTa->SetBinContent(6119,0.0222464); - ssigpTa->SetBinContent(6120,0.0222816); - ssigpTa->SetBinContent(6121,0.0223204); - ssigpTa->SetBinContent(6122,0.022352); - ssigpTa->SetBinContent(6123,0.022388); - ssigpTa->SetBinContent(6124,0.0224332); - ssigpTa->SetBinContent(6125,0.02247); - ssigpTa->SetBinContent(6126,0.0225188); - ssigpTa->SetBinContent(6127,0.0225476); - ssigpTa->SetBinContent(6128,0.0226044); - ssigpTa->SetBinContent(6129,0.022636); - ssigpTa->SetBinContent(6130,0.02269); - ssigpTa->SetBinContent(6131,0.0227216); - ssigpTa->SetBinContent(6132,0.0227704); - ssigpTa->SetBinContent(6133,0.0228072); - ssigpTa->SetBinContent(6134,0.022856); - ssigpTa->SetBinContent(6135,0.02291); - ssigpTa->SetBinContent(6136,0.022956); - ssigpTa->SetBinContent(6137,0.023002); - ssigpTa->SetBinContent(6138,0.0230508); - ssigpTa->SetBinContent(6139,0.0231048); - ssigpTa->SetBinContent(6140,0.0231508); - ssigpTa->SetBinContent(6141,0.0232004); - ssigpTa->SetBinContent(6142,0.0232528); - ssigpTa->SetBinContent(6143,0.0233212); - ssigpTa->SetBinContent(6144,0.0233628); - ssigpTa->SetBinContent(6145,0.0234168); - ssigpTa->SetBinContent(6146,0.0234664); - ssigpTa->SetBinContent(6147,0.0235268); - ssigpTa->SetBinContent(6148,0.0235856); - ssigpTa->SetBinContent(6149,0.0236424); - ssigpTa->SetBinContent(6150,0.0237308); - ssigpTa->SetBinContent(6151,0.0240732); - ssigpTa->SetBinContent(6152,0.025668); - ssigpTa->SetBinContent(6153,0.0288052); - ssigpTa->SetBinContent(6154,0.0303856); - ssigpTa->SetBinContent(6155,0.0306828); - ssigpTa->SetBinContent(6156,0.0307548); - ssigpTa->SetBinContent(6157,0.0308188); - ssigpTa->SetBinContent(6158,0.0308972); - ssigpTa->SetBinContent(6159,0.0309568); - ssigpTa->SetBinContent(6160,0.0310272); - ssigpTa->SetBinContent(6161,0.0311092); - ssigpTa->SetBinContent(6162,0.0309888); - ssigpTa->SetBinContent(6163,0.02991); - ssigpTa->SetBinContent(6164,0.0277752); - ssigpTa->SetBinContent(6165,0.0271568); - ssigpTa->SetBinContent(6166,0.0275996); - ssigpTa->SetBinContent(6167,0.0282288); - ssigpTa->SetBinContent(6168,0.0288516); - ssigpTa->SetBinContent(6169,0.0294932); - ssigpTa->SetBinContent(6170,0.0301448); - ssigpTa->SetBinContent(6171,0.0305824); - ssigpTa->SetBinContent(6172,0.0300148); - ssigpTa->SetBinContent(6173,0.0281836); - ssigpTa->SetBinContent(6174,0.0275176); - ssigpTa->SetBinContent(6175,0.0278168); - ssigpTa->SetBinContent(6176,0.0283648); - ssigpTa->SetBinContent(6177,0.028986); - ssigpTa->SetBinContent(6178,0.0296376); - ssigpTa->SetBinContent(6179,0.0302964); - ssigpTa->SetBinContent(6180,0.030968); - ssigpTa->SetBinContent(6181,0.0316656); - ssigpTa->SetBinContent(6182,0.0321544); - ssigpTa->SetBinContent(6183,0.0315048); - ssigpTa->SetBinContent(6184,0.0293972); - ssigpTa->SetBinContent(6185,0.0286504); - ssigpTa->SetBinContent(6186,0.0290412); - ssigpTa->SetBinContent(6187,0.0296796); - ssigpTa->SetBinContent(6188,0.0303268); - ssigpTa->SetBinContent(6189,0.030982); - ssigpTa->SetBinContent(6190,0.0316284); - ssigpTa->SetBinContent(6191,0.0321824); - ssigpTa->SetBinContent(6192,0.0327096); - ssigpTa->SetBinContent(6193,0.0330512); - ssigpTa->SetBinContent(6194,0.0322856); - ssigpTa->SetBinContent(6195,0.0300588); - ssigpTa->SetBinContent(6196,0.0292556); - ssigpTa->SetBinContent(6197,0.029642); - ssigpTa->SetBinContent(6198,0.030266); - ssigpTa->SetBinContent(6199,0.0309044); - ssigpTa->SetBinContent(6200,0.0315564); - ssigpTa->SetBinContent(6201,0.0322424); - ssigpTa->SetBinContent(6202,0.0329412); - ssigpTa->SetBinContent(6203,0.0336524); - ssigpTa->SetBinContent(6204,0.03437); - ssigpTa->SetBinContent(6205,0.0348788); - ssigpTa->SetBinContent(6206,0.0342684); - ssigpTa->SetBinContent(6207,0.0322468); - ssigpTa->SetBinContent(6208,0.0315212); - ssigpTa->SetBinContent(6209,0.0315708); - ssigpTa->SetBinContent(6210,0.0316208); - ssigpTa->SetBinContent(6211,0.031896); - ssigpTa->SetBinContent(6212,0.0325092); - ssigpTa->SetBinContent(6213,0.0331972); - ssigpTa->SetBinContent(6214,0.0339076); - ssigpTa->SetBinContent(6215,0.0346108); - ssigpTa->SetBinContent(6216,0.0351476); - ssigpTa->SetBinContent(6217,0.0346928); - ssigpTa->SetBinContent(6218,0.0329864); - ssigpTa->SetBinContent(6219,0.032484); - ssigpTa->SetBinContent(6220,0.0329772); - ssigpTa->SetBinContent(6221,0.033614); - ssigpTa->SetBinContent(6222,0.0343248); - ssigpTa->SetBinContent(6223,0.0350056); - ssigpTa->SetBinContent(6224,0.035496); - ssigpTa->SetBinContent(6225,0.0358756); - ssigpTa->SetBinContent(6226,0.0363992); - ssigpTa->SetBinContent(6227,0.0371376); - ssigpTa->SetBinContent(6228,0.0379128); - ssigpTa->SetBinContent(6229,0.038572); - ssigpTa->SetBinContent(6230,0.0385424); - ssigpTa->SetBinContent(6231,0.0374796); - ssigpTa->SetBinContent(6232,0.0366336); - ssigpTa->SetBinContent(6233,0.0359164); - ssigpTa->SetBinContent(6234,0.0358292); - ssigpTa->SetBinContent(6235,0.0363928); - ssigpTa->SetBinContent(6236,0.0371228); - ssigpTa->SetBinContent(6237,0.0378536); - ssigpTa->SetBinContent(6238,0.038506); - ssigpTa->SetBinContent(6239,0.0390088); - ssigpTa->SetBinContent(6240,0.03967); - ssigpTa->SetBinContent(6241,0.0404324); - ssigpTa->SetBinContent(6242,0.0412416); - ssigpTa->SetBinContent(6243,0.0420804); - ssigpTa->SetBinContent(6244,0.0429212); - ssigpTa->SetBinContent(6245,0.0437764); - ssigpTa->SetBinContent(6246,0.044674); - ssigpTa->SetBinContent(6247,0.0457372); - ssigpTa->SetBinContent(6248,0.047092); - ssigpTa->SetBinContent(6249,0.0482416); - ssigpTa->SetBinContent(6250,0.0492408); - ssigpTa->SetBinContent(6251,0.0500804); - ssigpTa->SetBinContent(6252,0.0506436); - ssigpTa->SetBinContent(6253,0.0514924); - ssigpTa->SetBinContent(6254,0.0525348); - ssigpTa->SetBinContent(6255,0.0536124); - ssigpTa->SetBinContent(6256,0.054716); - ssigpTa->SetBinContent(6257,0.0558844); - ssigpTa->SetBinContent(6258,0.0573176); - ssigpTa->SetBinContent(6259,0.0591152); - ssigpTa->SetBinContent(6260,0.060634); - ssigpTa->SetBinContent(6261,0.0619428); - ssigpTa->SetBinContent(6262,0.0629744); - ssigpTa->SetBinContent(6263,0.0635992); - ssigpTa->SetBinContent(6264,0.0646128); - ssigpTa->SetBinContent(6265,0.0658992); - ssigpTa->SetBinContent(6266,0.067272); - ssigpTa->SetBinContent(6267,0.0686844); - ssigpTa->SetBinContent(6268,0.0701696); - ssigpTa->SetBinContent(6269,0.0716388); - ssigpTa->SetBinContent(6270,0.0729328); - ssigpTa->SetBinContent(6271,0.0741616); - ssigpTa->SetBinContent(6272,0.075422); - ssigpTa->SetBinContent(6273,0.0765792); - ssigpTa->SetBinContent(6274,0.0772672); - ssigpTa->SetBinContent(6275,0.078512); - ssigpTa->SetBinContent(6276,0.0801464); - ssigpTa->SetBinContent(6277,0.0818844); - ssigpTa->SetBinContent(6278,0.0836368); - ssigpTa->SetBinContent(6279,0.0854072); - ssigpTa->SetBinContent(6280,0.0872288); - ssigpTa->SetBinContent(6281,0.0890784); - ssigpTa->SetBinContent(6282,0.0910096); - ssigpTa->SetBinContent(6283,0.092866); - ssigpTa->SetBinContent(6284,0.0941952); - ssigpTa->SetBinContent(6285,0.0959348); - ssigpTa->SetBinContent(6286,0.0979564); - ssigpTa->SetBinContent(6287,0.100084); - ssigpTa->SetBinContent(6288,0.102237); - ssigpTa->SetBinContent(6289,0.104418); - ssigpTa->SetBinContent(6290,0.10666); - ssigpTa->SetBinContent(6291,0.108999); - ssigpTa->SetBinContent(6292,0.111442); - ssigpTa->SetBinContent(6293,0.113953); - ssigpTa->SetBinContent(6294,0.116403); - ssigpTa->SetBinContent(6295,0.118624); - ssigpTa->SetBinContent(6296,0.121017); - ssigpTa->SetBinContent(6297,0.123581); - ssigpTa->SetBinContent(6298,0.126261); - ssigpTa->SetBinContent(6299,0.12899); - ssigpTa->SetBinContent(6300,0.131837); - ssigpTa->SetBinContent(6301,0.134817); - ssigpTa->SetBinContent(6302,0.137944); - ssigpTa->SetBinContent(6303,0.141158); - ssigpTa->SetBinContent(6304,0.144551); - ssigpTa->SetBinContent(6305,0.14807); - ssigpTa->SetBinContent(6306,0.15174); - ssigpTa->SetBinContent(6307,0.15635); - ssigpTa->SetBinContent(6308,0.162267); - ssigpTa->SetBinContent(6309,0.167074); - ssigpTa->SetBinContent(6310,0.171015); - ssigpTa->SetBinContent(6311,0.174909); - ssigpTa->SetBinContent(6312,0.179016); - ssigpTa->SetBinContent(6313,0.183267); - ssigpTa->SetBinContent(6314,0.187612); - ssigpTa->SetBinContent(6315,0.19209); - ssigpTa->SetBinContent(6316,0.196654); - ssigpTa->SetBinContent(6317,0.201253); - ssigpTa->SetBinContent(6318,0.205895); - ssigpTa->SetBinContent(6319,0.210672); - ssigpTa->SetBinContent(6320,0.2189); - ssigpTa->SetBinContent(6321,0.242124); - ssigpTa->SetBinContent(6322,0.277006); - ssigpTa->SetBinContent(6323,0.281662); - ssigpTa->SetBinContent(6324,0.281069); - ssigpTa->SetBinContent(6325,0.286428); - ssigpTa->SetBinContent(6326,0.293788); - ssigpTa->SetBinContent(6327,0.301275); - ssigpTa->SetBinContent(6328,0.308832); - ssigpTa->SetBinContent(6329,0.316481); - ssigpTa->SetBinContent(6330,0.32428); - ssigpTa->SetBinContent(6331,0.330561); - ssigpTa->SetBinContent(6332,0.328503); - ssigpTa->SetBinContent(6333,0.31612); - ssigpTa->SetBinContent(6334,0.313504); - ssigpTa->SetBinContent(6335,0.319248); - ssigpTa->SetBinContent(6336,0.32708); - ssigpTa->SetBinContent(6337,0.335585); - ssigpTa->SetBinContent(6338,0.34446); - ssigpTa->SetBinContent(6339,0.352155); - ssigpTa->SetBinContent(6340,0.353198); - ssigpTa->SetBinContent(6341,0.346071); - ssigpTa->SetBinContent(6342,0.347354); - ssigpTa->SetBinContent(6343,0.354904); - ssigpTa->SetBinContent(6344,0.363684); - ssigpTa->SetBinContent(6345,0.372575); - ssigpTa->SetBinContent(6346,0.381668); - ssigpTa->SetBinContent(6347,0.390909); - ssigpTa->SetBinContent(6348,0.400322); - ssigpTa->SetBinContent(6349,0.409805); - ssigpTa->SetBinContent(6350,0.419385); - ssigpTa->SetBinContent(6351,0.429399); - ssigpTa->SetBinContent(6352,0.440278); - ssigpTa->SetBinContent(6353,0.451962); - ssigpTa->SetBinContent(6354,0.464107); - ssigpTa->SetBinContent(6355,0.47657); - ssigpTa->SetBinContent(6356,0.48928); - ssigpTa->SetBinContent(6357,0.502325); - ssigpTa->SetBinContent(6358,0.515734); - ssigpTa->SetBinContent(6359,0.529402); - ssigpTa->SetBinContent(6360,0.560419); - ssigpTa->SetBinContent(6361,0.677531); - ssigpTa->SetBinContent(6362,0.899293); - ssigpTa->SetBinContent(6363,1.02144); - ssigpTa->SetBinContent(6364,1.05931); - ssigpTa->SetBinContent(6365,1.08044); - ssigpTa->SetBinContent(6366,1.10175); - ssigpTa->SetBinContent(6367,1.12284); - ssigpTa->SetBinContent(6368,1.14367); - ssigpTa->SetBinContent(6369,1.16494); - ssigpTa->SetBinContent(6370,1.18814); - ssigpTa->SetBinContent(6371,1.21401); - ssigpTa->SetBinContent(6372,1.24149); - ssigpTa->SetBinContent(6373,1.27021); - ssigpTa->SetBinContent(6374,1.29972); - ssigpTa->SetBinContent(6375,1.32912); - ssigpTa->SetBinContent(6376,1.35842); - ssigpTa->SetBinContent(6377,1.38821); - ssigpTa->SetBinContent(6378,1.41918); - ssigpTa->SetBinContent(6379,1.4517); - ssigpTa->SetBinContent(6380,1.48542); - ssigpTa->SetBinContent(6381,1.51972); - ssigpTa->SetBinContent(6382,1.55412); - ssigpTa->SetBinContent(6383,1.5889); - ssigpTa->SetBinContent(6384,1.62355); - ssigpTa->SetBinContent(6385,1.65628); - ssigpTa->SetBinContent(6386,1.68706); - ssigpTa->SetBinContent(6387,1.71728); - ssigpTa->SetBinContent(6388,1.74824); - ssigpTa->SetBinContent(6389,1.7801); - ssigpTa->SetBinContent(6390,1.81193); - ssigpTa->SetBinContent(6391,1.84359); - ssigpTa->SetBinContent(6392,1.87814); - ssigpTa->SetBinContent(6393,1.91904); - ssigpTa->SetBinContent(6394,1.96376); - ssigpTa->SetBinContent(6395,2.00968); - ssigpTa->SetBinContent(6396,2.05595); - ssigpTa->SetBinContent(6397,2.10279); - ssigpTa->SetBinContent(6398,2.15212); - ssigpTa->SetBinContent(6399,2.20624); - ssigpTa->SetBinContent(6400,2.26439); - ssigpTa->SetBinContent(6401,2.32545); - ssigpTa->SetBinContent(6402,2.3875); - ssigpTa->SetBinContent(6403,2.44754); - ssigpTa->SetBinContent(6404,2.50431); - ssigpTa->SetBinContent(6405,2.55867); - ssigpTa->SetBinContent(6406,2.61118); - ssigpTa->SetBinContent(6407,2.66205); - ssigpTa->SetBinContent(6408,2.71242); - ssigpTa->SetBinContent(6409,2.7653); - ssigpTa->SetBinContent(6410,2.82401); - ssigpTa->SetBinContent(6411,2.88732); - ssigpTa->SetBinContent(6412,2.95119); - ssigpTa->SetBinContent(6413,3.01405); - ssigpTa->SetBinContent(6414,3.07589); - ssigpTa->SetBinContent(6415,3.1364); - ssigpTa->SetBinContent(6416,3.1957); - ssigpTa->SetBinContent(6417,3.25375); - ssigpTa->SetBinContent(6418,3.30959); - ssigpTa->SetBinContent(6419,3.36409); - ssigpTa->SetBinContent(6420,3.42245); - ssigpTa->SetBinContent(6421,3.49143); - ssigpTa->SetBinContent(6422,3.57233); - ssigpTa->SetBinContent(6423,3.66116); - ssigpTa->SetBinContent(6424,3.75557); - ssigpTa->SetBinContent(6425,3.91036); - ssigpTa->SetBinContent(6426,4.3657); - ssigpTa->SetBinContent(6427,5.19147); - ssigpTa->SetBinContent(6428,5.66894); - ssigpTa->SetBinContent(6429,5.8554); - ssigpTa->SetBinContent(6430,5.99392); - ssigpTa->SetBinContent(6431,6.14981); - ssigpTa->SetBinContent(6432,6.3207); - ssigpTa->SetBinContent(6433,6.50342); - ssigpTa->SetBinContent(6434,6.69586); - ssigpTa->SetBinContent(6435,6.89215); - ssigpTa->SetBinContent(6436,7.08524); - ssigpTa->SetBinContent(6437,7.2763); - ssigpTa->SetBinContent(6438,7.47298); - ssigpTa->SetBinContent(6439,7.68587); - ssigpTa->SetBinContent(6440,7.91415); - ssigpTa->SetBinContent(6441,8.15008); - ssigpTa->SetBinContent(6442,8.39097); - ssigpTa->SetBinContent(6443,8.62902); - ssigpTa->SetBinContent(6444,8.98864); - ssigpTa->SetBinContent(6445,9.93057); - ssigpTa->SetBinContent(6446,11.6634); - ssigpTa->SetBinContent(6449,0.0295889); - ssigpTa->SetBinContent(6450,0.0290525); - ssigpTa->SetBinContent(6451,0.0287744); - ssigpTa->SetBinContent(6452,0.0287744); - ssigpTa->SetBinContent(6453,0.0287744); - ssigpTa->SetBinContent(6454,0.0287744); - ssigpTa->SetBinContent(6455,0.0287744); - ssigpTa->SetBinContent(6456,0.0287744); - ssigpTa->SetBinContent(6457,0.0287744); - ssigpTa->SetBinContent(6458,0.0287744); - ssigpTa->SetBinContent(6459,0.0287744); - ssigpTa->SetBinContent(6460,0.0287744); - ssigpTa->SetBinContent(6461,0.0287744); - ssigpTa->SetBinContent(6462,0.0287744); - ssigpTa->SetBinContent(6463,0.0287816); - ssigpTa->SetBinContent(6464,0.0287888); - ssigpTa->SetBinContent(6465,0.028796); - ssigpTa->SetBinContent(6466,0.028796); - ssigpTa->SetBinContent(6467,0.0287992); - ssigpTa->SetBinContent(6468,0.0288032); - ssigpTa->SetBinContent(6469,0.0288112); - ssigpTa->SetBinContent(6470,0.0288312); - ssigpTa->SetBinContent(6471,0.0288392); - ssigpTa->SetBinContent(6472,0.0288432); - ssigpTa->SetBinContent(6473,0.0288432); - ssigpTa->SetBinContent(6474,0.0288504); - ssigpTa->SetBinContent(6475,0.0288776); - ssigpTa->SetBinContent(6476,0.028888); - ssigpTa->SetBinContent(6477,0.028888); - ssigpTa->SetBinContent(6478,0.028908); - ssigpTa->SetBinContent(6479,0.028932); - ssigpTa->SetBinContent(6480,0.028968); - ssigpTa->SetBinContent(6481,0.028976); - ssigpTa->SetBinContent(6482,0.0289904); - ssigpTa->SetBinContent(6483,0.0289976); - ssigpTa->SetBinContent(6484,0.0290048); - ssigpTa->SetBinContent(6485,0.0290048); - ssigpTa->SetBinContent(6486,0.0290088); - ssigpTa->SetBinContent(6487,0.0290168); - ssigpTa->SetBinContent(6488,0.0290472); - ssigpTa->SetBinContent(6489,0.0290624); - ssigpTa->SetBinContent(6490,0.0290736); - ssigpTa->SetBinContent(6491,0.0290736); - ssigpTa->SetBinContent(6492,0.0290808); - ssigpTa->SetBinContent(6493,0.029096); - ssigpTa->SetBinContent(6494,0.0291392); - ssigpTa->SetBinContent(6495,0.0291704); - ssigpTa->SetBinContent(6496,0.0291936); - ssigpTa->SetBinContent(6497,0.0292048); - ssigpTa->SetBinContent(6498,0.02922); - ssigpTa->SetBinContent(6499,0.0292472); - ssigpTa->SetBinContent(6500,0.0292584); - ssigpTa->SetBinContent(6501,0.0292624); - ssigpTa->SetBinContent(6502,0.0292936); - ssigpTa->SetBinContent(6503,0.029312); - ssigpTa->SetBinContent(6504,0.0293392); - ssigpTa->SetBinContent(6505,0.0293704); - ssigpTa->SetBinContent(6506,0.0294048); - ssigpTa->SetBinContent(6507,0.029436); - ssigpTa->SetBinContent(6508,0.029456); - ssigpTa->SetBinContent(6509,0.0294744); - ssigpTa->SetBinContent(6510,0.0294896); - ssigpTa->SetBinContent(6511,0.0295048); - ssigpTa->SetBinContent(6512,0.0295352); - ssigpTa->SetBinContent(6513,0.0295704); - ssigpTa->SetBinContent(6514,0.0296056); - ssigpTa->SetBinContent(6515,0.029652); - ssigpTa->SetBinContent(6516,0.0296872); - ssigpTa->SetBinContent(6517,0.0297056); - ssigpTa->SetBinContent(6518,0.0297208); - ssigpTa->SetBinContent(6519,0.029748); - ssigpTa->SetBinContent(6520,0.0297864); - ssigpTa->SetBinContent(6521,0.0298216); - ssigpTa->SetBinContent(6522,0.029868); - ssigpTa->SetBinContent(6523,0.0298944); - ssigpTa->SetBinContent(6524,0.0299168); - ssigpTa->SetBinContent(6525,0.029948); - ssigpTa->SetBinContent(6526,0.0299744); - ssigpTa->SetBinContent(6527,0.0300416); - ssigpTa->SetBinContent(6528,0.0300872); - ssigpTa->SetBinContent(6529,0.0301224); - ssigpTa->SetBinContent(6530,0.030164); - ssigpTa->SetBinContent(6531,0.0301872); - ssigpTa->SetBinContent(6532,0.0302448); - ssigpTa->SetBinContent(6533,0.03028); - ssigpTa->SetBinContent(6534,0.0303256); - ssigpTa->SetBinContent(6535,0.0303768); - ssigpTa->SetBinContent(6536,0.0304104); - ssigpTa->SetBinContent(6537,0.0304616); - ssigpTa->SetBinContent(6538,0.0305112); - ssigpTa->SetBinContent(6539,0.0305656); - ssigpTa->SetBinContent(6540,0.030596); - ssigpTa->SetBinContent(6541,0.0306504); - ssigpTa->SetBinContent(6542,0.03072); - ssigpTa->SetBinContent(6543,0.0307712); - ssigpTa->SetBinContent(6544,0.0308048); - ssigpTa->SetBinContent(6545,0.0308664); - ssigpTa->SetBinContent(6546,0.0309128); - ssigpTa->SetBinContent(6547,0.0309744); - ssigpTa->SetBinContent(6548,0.0310368); - ssigpTa->SetBinContent(6549,0.0310952); - ssigpTa->SetBinContent(6550,0.0311448); - ssigpTa->SetBinContent(6551,0.0311904); - ssigpTa->SetBinContent(6552,0.031244); - ssigpTa->SetBinContent(6553,0.0313216); - ssigpTa->SetBinContent(6554,0.0316368); - ssigpTa->SetBinContent(6555,0.0339864); - ssigpTa->SetBinContent(6556,0.0389968); - ssigpTa->SetBinContent(6557,0.0413384); - ssigpTa->SetBinContent(6558,0.041684); - ssigpTa->SetBinContent(6559,0.0417544); - ssigpTa->SetBinContent(6560,0.0418432); - ssigpTa->SetBinContent(6561,0.0419088); - ssigpTa->SetBinContent(6562,0.0419664); - ssigpTa->SetBinContent(6563,0.042052); - ssigpTa->SetBinContent(6564,0.0421248); - ssigpTa->SetBinContent(6565,0.0419696); - ssigpTa->SetBinContent(6566,0.0402984); - ssigpTa->SetBinContent(6567,0.0368008); - ssigpTa->SetBinContent(6568,0.0359056); - ssigpTa->SetBinContent(6569,0.0366584); - ssigpTa->SetBinContent(6570,0.0375568); - ssigpTa->SetBinContent(6571,0.03848); - ssigpTa->SetBinContent(6572,0.0394264); - ssigpTa->SetBinContent(6573,0.040344); - ssigpTa->SetBinContent(6574,0.0410496); - ssigpTa->SetBinContent(6575,0.04012); - ssigpTa->SetBinContent(6576,0.0370432); - ssigpTa->SetBinContent(6577,0.0360368); - ssigpTa->SetBinContent(6578,0.0366144); - ssigpTa->SetBinContent(6579,0.0374472); - ssigpTa->SetBinContent(6580,0.0383616); - ssigpTa->SetBinContent(6581,0.0392992); - ssigpTa->SetBinContent(6582,0.0402368); - ssigpTa->SetBinContent(6583,0.0412256); - ssigpTa->SetBinContent(6584,0.0422216); - ssigpTa->SetBinContent(6585,0.0430208); - ssigpTa->SetBinContent(6586,0.0419952); - ssigpTa->SetBinContent(6587,0.0385008); - ssigpTa->SetBinContent(6588,0.0373064); - ssigpTa->SetBinContent(6589,0.0379168); - ssigpTa->SetBinContent(6590,0.0387984); - ssigpTa->SetBinContent(6591,0.039712); - ssigpTa->SetBinContent(6592,0.0406656); - ssigpTa->SetBinContent(6593,0.0416112); - ssigpTa->SetBinContent(6594,0.042596); - ssigpTa->SetBinContent(6595,0.0436872); - ssigpTa->SetBinContent(6596,0.0444272); - ssigpTa->SetBinContent(6597,0.0432568); - ssigpTa->SetBinContent(6598,0.0395992); - ssigpTa->SetBinContent(6599,0.0383424); - ssigpTa->SetBinContent(6600,0.0388968); - ssigpTa->SetBinContent(6601,0.0397632); - ssigpTa->SetBinContent(6602,0.0406288); - ssigpTa->SetBinContent(6603,0.0415304); - ssigpTa->SetBinContent(6604,0.0424504); - ssigpTa->SetBinContent(6605,0.0434064); - ssigpTa->SetBinContent(6606,0.0443816); - ssigpTa->SetBinContent(6607,0.0453848); - ssigpTa->SetBinContent(6608,0.0461312); - ssigpTa->SetBinContent(6609,0.0450672); - ssigpTa->SetBinContent(6610,0.041536); - ssigpTa->SetBinContent(6611,0.0403304); - ssigpTa->SetBinContent(6612,0.0408456); - ssigpTa->SetBinContent(6613,0.0417528); - ssigpTa->SetBinContent(6614,0.04254); - ssigpTa->SetBinContent(6615,0.0434048); - ssigpTa->SetBinContent(6616,0.044356); - ssigpTa->SetBinContent(6617,0.045296); - ssigpTa->SetBinContent(6618,0.0462552); - ssigpTa->SetBinContent(6619,0.0470224); - ssigpTa->SetBinContent(6620,0.046164); - ssigpTa->SetBinContent(6621,0.0431184); - ssigpTa->SetBinContent(6622,0.0421856); - ssigpTa->SetBinContent(6623,0.0426856); - ssigpTa->SetBinContent(6624,0.0432192); - ssigpTa->SetBinContent(6625,0.0440064); - ssigpTa->SetBinContent(6626,0.0449096); - ssigpTa->SetBinContent(6627,0.0457608); - ssigpTa->SetBinContent(6628,0.0466104); - ssigpTa->SetBinContent(6629,0.0475072); - ssigpTa->SetBinContent(6630,0.0485088); - ssigpTa->SetBinContent(6631,0.0495976); - ssigpTa->SetBinContent(6632,0.0504984); - ssigpTa->SetBinContent(6633,0.0501688); - ssigpTa->SetBinContent(6634,0.0479792); - ssigpTa->SetBinContent(6635,0.04718); - ssigpTa->SetBinContent(6636,0.0474088); - ssigpTa->SetBinContent(6637,0.0479704); - ssigpTa->SetBinContent(6638,0.0488584); - ssigpTa->SetBinContent(6639,0.0499176); - ssigpTa->SetBinContent(6640,0.050944); - ssigpTa->SetBinContent(6641,0.0516976); - ssigpTa->SetBinContent(6642,0.052004); - ssigpTa->SetBinContent(6643,0.0527776); - ssigpTa->SetBinContent(6644,0.0538632); - ssigpTa->SetBinContent(6645,0.0550232); - ssigpTa->SetBinContent(6646,0.0561984); - ssigpTa->SetBinContent(6647,0.0574136); - ssigpTa->SetBinContent(6648,0.058612); - ssigpTa->SetBinContent(6649,0.0598984); - ssigpTa->SetBinContent(6650,0.0616408); - ssigpTa->SetBinContent(6651,0.0640912); - ssigpTa->SetBinContent(6652,0.0659592); - ssigpTa->SetBinContent(6653,0.0674248); - ssigpTa->SetBinContent(6654,0.0683448); - ssigpTa->SetBinContent(6655,0.068572); - ssigpTa->SetBinContent(6656,0.0695072); - ssigpTa->SetBinContent(6657,0.0709664); - ssigpTa->SetBinContent(6658,0.0725128); - ssigpTa->SetBinContent(6659,0.0740912); - ssigpTa->SetBinContent(6660,0.07576); - ssigpTa->SetBinContent(6661,0.0780144); - ssigpTa->SetBinContent(6662,0.081072); - ssigpTa->SetBinContent(6663,0.0834632); - ssigpTa->SetBinContent(6664,0.0853104); - ssigpTa->SetBinContent(6665,0.0864952); - ssigpTa->SetBinContent(6666,0.086688); - ssigpTa->SetBinContent(6667,0.0878304); - ssigpTa->SetBinContent(6668,0.089672); - ssigpTa->SetBinContent(6669,0.0916208); - ssigpTa->SetBinContent(6670,0.093644); - ssigpTa->SetBinContent(6671,0.0957416); - ssigpTa->SetBinContent(6672,0.0979008); - ssigpTa->SetBinContent(6673,0.100221); - ssigpTa->SetBinContent(6674,0.102952); - ssigpTa->SetBinContent(6675,0.105311); - ssigpTa->SetBinContent(6676,0.10672); - ssigpTa->SetBinContent(6677,0.107031); - ssigpTa->SetBinContent(6678,0.108518); - ssigpTa->SetBinContent(6679,0.110907); - ssigpTa->SetBinContent(6680,0.113448); - ssigpTa->SetBinContent(6681,0.11598); - ssigpTa->SetBinContent(6682,0.118579); - ssigpTa->SetBinContent(6683,0.121218); - ssigpTa->SetBinContent(6684,0.123922); - ssigpTa->SetBinContent(6685,0.12683); - ssigpTa->SetBinContent(6686,0.12943); - ssigpTa->SetBinContent(6687,0.130834); - ssigpTa->SetBinContent(6688,0.133052); - ssigpTa->SetBinContent(6689,0.136025); - ssigpTa->SetBinContent(6690,0.139124); - ssigpTa->SetBinContent(6691,0.14227); - ssigpTa->SetBinContent(6692,0.145448); - ssigpTa->SetBinContent(6693,0.148687); - ssigpTa->SetBinContent(6694,0.152087); - ssigpTa->SetBinContent(6695,0.155643); - ssigpTa->SetBinContent(6696,0.159297); - ssigpTa->SetBinContent(6697,0.162661); - ssigpTa->SetBinContent(6698,0.165476); - ssigpTa->SetBinContent(6699,0.168817); - ssigpTa->SetBinContent(6700,0.172596); - ssigpTa->SetBinContent(6701,0.176501); - ssigpTa->SetBinContent(6702,0.18049); - ssigpTa->SetBinContent(6703,0.184598); - ssigpTa->SetBinContent(6704,0.188963); - ssigpTa->SetBinContent(6705,0.193485); - ssigpTa->SetBinContent(6706,0.19815); - ssigpTa->SetBinContent(6707,0.202934); - ssigpTa->SetBinContent(6708,0.207754); - ssigpTa->SetBinContent(6709,0.21287); - ssigpTa->SetBinContent(6710,0.219658); - ssigpTa->SetBinContent(6711,0.22866); - ssigpTa->SetBinContent(6712,0.235764); - ssigpTa->SetBinContent(6713,0.2414); - ssigpTa->SetBinContent(6714,0.24705); - ssigpTa->SetBinContent(6715,0.253026); - ssigpTa->SetBinContent(6716,0.259128); - ssigpTa->SetBinContent(6717,0.265237); - ssigpTa->SetBinContent(6718,0.271683); - ssigpTa->SetBinContent(6719,0.278303); - ssigpTa->SetBinContent(6720,0.284998); - ssigpTa->SetBinContent(6721,0.291763); - ssigpTa->SetBinContent(6722,0.298708); - ssigpTa->SetBinContent(6723,0.30958); - ssigpTa->SetBinContent(6724,0.344438); - ssigpTa->SetBinContent(6725,0.399683); - ssigpTa->SetBinContent(6726,0.40471); - ssigpTa->SetBinContent(6727,0.402641); - ssigpTa->SetBinContent(6728,0.411064); - ssigpTa->SetBinContent(6729,0.421772); - ssigpTa->SetBinContent(6730,0.432655); - ssigpTa->SetBinContent(6731,0.443685); - ssigpTa->SetBinContent(6732,0.454799); - ssigpTa->SetBinContent(6733,0.46618); - ssigpTa->SetBinContent(6734,0.475884); - ssigpTa->SetBinContent(6735,0.472725); - ssigpTa->SetBinContent(6736,0.452478); - ssigpTa->SetBinContent(6737,0.448461); - ssigpTa->SetBinContent(6738,0.457354); - ssigpTa->SetBinContent(6739,0.468746); - ssigpTa->SetBinContent(6740,0.48113); - ssigpTa->SetBinContent(6741,0.494081); - ssigpTa->SetBinContent(6742,0.505703); - ssigpTa->SetBinContent(6743,0.506962); - ssigpTa->SetBinContent(6744,0.494994); - ssigpTa->SetBinContent(6745,0.49758); - ssigpTa->SetBinContent(6746,0.509527); - ssigpTa->SetBinContent(6747,0.52235); - ssigpTa->SetBinContent(6748,0.535325); - ssigpTa->SetBinContent(6749,0.548602); - ssigpTa->SetBinContent(6750,0.56211); - ssigpTa->SetBinContent(6751,0.575852); - ssigpTa->SetBinContent(6752,0.589711); - ssigpTa->SetBinContent(6753,0.60369); - ssigpTa->SetBinContent(6754,0.618282); - ssigpTa->SetBinContent(6755,0.634177); - ssigpTa->SetBinContent(6756,0.651248); - ssigpTa->SetBinContent(6757,0.668979); - ssigpTa->SetBinContent(6758,0.687149); - ssigpTa->SetBinContent(6759,0.705706); - ssigpTa->SetBinContent(6760,0.724745); - ssigpTa->SetBinContent(6761,0.744314); - ssigpTa->SetBinContent(6762,0.764286); - ssigpTa->SetBinContent(6763,0.803587); - ssigpTa->SetBinContent(6764,0.973075); - ssigpTa->SetBinContent(6765,1.31293); - ssigpTa->SetBinContent(6766,1.49002); - ssigpTa->SetBinContent(6767,1.53942); - ssigpTa->SetBinContent(6768,1.5703); - ssigpTa->SetBinContent(6769,1.60147); - ssigpTa->SetBinContent(6770,1.63231); - ssigpTa->SetBinContent(6771,1.66272); - ssigpTa->SetBinContent(6772,1.6937); - ssigpTa->SetBinContent(6773,1.72757); - ssigpTa->SetBinContent(6774,1.76543); - ssigpTa->SetBinContent(6775,1.80558); - ssigpTa->SetBinContent(6776,1.84753); - ssigpTa->SetBinContent(6777,1.89071); - ssigpTa->SetBinContent(6778,1.93366); - ssigpTa->SetBinContent(6779,1.97644); - ssigpTa->SetBinContent(6780,2.01993); - ssigpTa->SetBinContent(6781,2.06512); - ssigpTa->SetBinContent(6782,2.11263); - ssigpTa->SetBinContent(6783,2.16194); - ssigpTa->SetBinContent(6784,2.21205); - ssigpTa->SetBinContent(6785,2.26227); - ssigpTa->SetBinContent(6786,2.31309); - ssigpTa->SetBinContent(6787,2.36387); - ssigpTa->SetBinContent(6788,2.41171); - ssigpTa->SetBinContent(6789,2.45661); - ssigpTa->SetBinContent(6790,2.50072); - ssigpTa->SetBinContent(6791,2.54599); - ssigpTa->SetBinContent(6792,2.59264); - ssigpTa->SetBinContent(6793,2.63922); - ssigpTa->SetBinContent(6794,2.68529); - ssigpTa->SetBinContent(6795,2.73552); - ssigpTa->SetBinContent(6796,2.79544); - ssigpTa->SetBinContent(6797,2.86098); - ssigpTa->SetBinContent(6798,2.92805); - ssigpTa->SetBinContent(6799,2.99567); - ssigpTa->SetBinContent(6800,3.06394); - ssigpTa->SetBinContent(6801,3.13588); - ssigpTa->SetBinContent(6802,3.21496); - ssigpTa->SetBinContent(6803,3.29997); - ssigpTa->SetBinContent(6804,3.38924); - ssigpTa->SetBinContent(6805,3.48008); - ssigpTa->SetBinContent(6806,3.56786); - ssigpTa->SetBinContent(6807,3.65075); - ssigpTa->SetBinContent(6808,3.73015); - ssigpTa->SetBinContent(6809,3.80687); - ssigpTa->SetBinContent(6810,3.88119); - ssigpTa->SetBinContent(6811,3.95463); - ssigpTa->SetBinContent(6812,4.03167); - ssigpTa->SetBinContent(6813,4.11757); - ssigpTa->SetBinContent(6814,4.21037); - ssigpTa->SetBinContent(6815,4.30378); - ssigpTa->SetBinContent(6816,4.39564); - ssigpTa->SetBinContent(6817,4.48602); - ssigpTa->SetBinContent(6818,4.57447); - ssigpTa->SetBinContent(6819,4.66113); - ssigpTa->SetBinContent(6820,4.74607); - ssigpTa->SetBinContent(6821,4.82768); - ssigpTa->SetBinContent(6822,4.90706); - ssigpTa->SetBinContent(6823,4.99187); - ssigpTa->SetBinContent(6824,5.09262); - ssigpTa->SetBinContent(6825,5.2111); - ssigpTa->SetBinContent(6826,5.34095); - ssigpTa->SetBinContent(6827,5.47923); - ssigpTa->SetBinContent(6828,5.6844); - ssigpTa->SetBinContent(6829,6.34307); - ssigpTa->SetBinContent(6830,7.6044); - ssigpTa->SetBinContent(6831,8.29642); - ssigpTa->SetBinContent(6832,8.54768); - ssigpTa->SetBinContent(6833,8.74965); - ssigpTa->SetBinContent(6834,8.97765); - ssigpTa->SetBinContent(6835,9.22756); - ssigpTa->SetBinContent(6836,9.4946); - ssigpTa->SetBinContent(6837,9.77613); - ssigpTa->SetBinContent(6838,10.0634); - ssigpTa->SetBinContent(6839,10.3455); - ssigpTa->SetBinContent(6840,10.6241); - ssigpTa->SetBinContent(6841,10.9108); - ssigpTa->SetBinContent(6842,11.2219); - ssigpTa->SetBinContent(6843,11.5561); - ssigpTa->SetBinContent(6844,11.9008); - ssigpTa->SetBinContent(6845,12.2532); - ssigpTa->SetBinContent(6846,12.6024); - ssigpTa->SetBinContent(6847,13.0781); - ssigpTa->SetBinContent(6848,14.6201); - ssigpTa->SetBinContent(6849,17.4466); - ssigpTa->SetBinContent(6852,0.0556794); - ssigpTa->SetBinContent(6853,0.0549179); - ssigpTa->SetBinContent(6854,0.0543132); - ssigpTa->SetBinContent(6855,0.0543132); - ssigpTa->SetBinContent(6856,0.0543132); - ssigpTa->SetBinContent(6857,0.0543132); - ssigpTa->SetBinContent(6858,0.0543132); - ssigpTa->SetBinContent(6859,0.0543132); - ssigpTa->SetBinContent(6860,0.0543132); - ssigpTa->SetBinContent(6861,0.0543132); - ssigpTa->SetBinContent(6862,0.0543132); - ssigpTa->SetBinContent(6863,0.0543132); - ssigpTa->SetBinContent(6864,0.0543132); - ssigpTa->SetBinContent(6865,0.0543132); - ssigpTa->SetBinContent(6866,0.0543132); - ssigpTa->SetBinContent(6867,0.0543168); - ssigpTa->SetBinContent(6868,0.0543168); - ssigpTa->SetBinContent(6869,0.0543168); - ssigpTa->SetBinContent(6870,0.0543168); - ssigpTa->SetBinContent(6871,0.0543168); - ssigpTa->SetBinContent(6872,0.0543248); - ssigpTa->SetBinContent(6873,0.0543328); - ssigpTa->SetBinContent(6874,0.0543408); - ssigpTa->SetBinContent(6875,0.0543408); - ssigpTa->SetBinContent(6876,0.0543408); - ssigpTa->SetBinContent(6877,0.0543808); - ssigpTa->SetBinContent(6878,0.0544644); - ssigpTa->SetBinContent(6879,0.0545044); - ssigpTa->SetBinContent(6880,0.0545124); - ssigpTa->SetBinContent(6881,0.0545284); - ssigpTa->SetBinContent(6882,0.0545764); - ssigpTa->SetBinContent(6883,0.0546004); - ssigpTa->SetBinContent(6884,0.0546164); - ssigpTa->SetBinContent(6885,0.0546164); - ssigpTa->SetBinContent(6886,0.05462); - ssigpTa->SetBinContent(6887,0.05462); - ssigpTa->SetBinContent(6888,0.05462); - ssigpTa->SetBinContent(6889,0.05462); - ssigpTa->SetBinContent(6890,0.054628); - ssigpTa->SetBinContent(6891,0.054636); - ssigpTa->SetBinContent(6892,0.0546476); - ssigpTa->SetBinContent(6893,0.0546476); - ssigpTa->SetBinContent(6894,0.0546476); - ssigpTa->SetBinContent(6895,0.0546476); - ssigpTa->SetBinContent(6896,0.0546636); - ssigpTa->SetBinContent(6897,0.0546912); - ssigpTa->SetBinContent(6898,0.0547392); - ssigpTa->SetBinContent(6899,0.0547552); - ssigpTa->SetBinContent(6900,0.0547632); - ssigpTa->SetBinContent(6901,0.0547748); - ssigpTa->SetBinContent(6902,0.0547828); - ssigpTa->SetBinContent(6903,0.0547908); - ssigpTa->SetBinContent(6904,0.0548308); - ssigpTa->SetBinContent(6905,0.0548708); - ssigpTa->SetBinContent(6906,0.0549224); - ssigpTa->SetBinContent(6907,0.0549784); - ssigpTa->SetBinContent(6908,0.0550024); - ssigpTa->SetBinContent(6909,0.055046); - ssigpTa->SetBinContent(6910,0.05507); - ssigpTa->SetBinContent(6911,0.055086); - ssigpTa->SetBinContent(6912,0.055094); - ssigpTa->SetBinContent(6913,0.0550976); - ssigpTa->SetBinContent(6914,0.0551056); - ssigpTa->SetBinContent(6915,0.0551216); - ssigpTa->SetBinContent(6916,0.0551492); - ssigpTa->SetBinContent(6917,0.0551972); - ssigpTa->SetBinContent(6918,0.0552612); - ssigpTa->SetBinContent(6919,0.0553208); - ssigpTa->SetBinContent(6920,0.0553608); - ssigpTa->SetBinContent(6921,0.0553688); - ssigpTa->SetBinContent(6922,0.0554284); - ssigpTa->SetBinContent(6923,0.0554524); - ssigpTa->SetBinContent(6924,0.0555004); - ssigpTa->SetBinContent(6925,0.055528); - ssigpTa->SetBinContent(6926,0.055544); - ssigpTa->SetBinContent(6927,0.0555556); - ssigpTa->SetBinContent(6928,0.0555636); - ssigpTa->SetBinContent(6929,0.0556276); - ssigpTa->SetBinContent(6930,0.0556952); - ssigpTa->SetBinContent(6931,0.0557832); - ssigpTa->SetBinContent(6932,0.0558108); - ssigpTa->SetBinContent(6933,0.0558668); - ssigpTa->SetBinContent(6934,0.0558944); - ssigpTa->SetBinContent(6935,0.0559184); - ssigpTa->SetBinContent(6936,0.05597); - ssigpTa->SetBinContent(6937,0.056034); - ssigpTa->SetBinContent(6938,0.0560936); - ssigpTa->SetBinContent(6939,0.0561576); - ssigpTa->SetBinContent(6940,0.0561852); - ssigpTa->SetBinContent(6941,0.0562812); - ssigpTa->SetBinContent(6942,0.0563088); - ssigpTa->SetBinContent(6943,0.0563408); - ssigpTa->SetBinContent(6944,0.0564084); - ssigpTa->SetBinContent(6945,0.0565044); - ssigpTa->SetBinContent(6946,0.056572); - ssigpTa->SetBinContent(6947,0.056604); - ssigpTa->SetBinContent(6948,0.0566716); - ssigpTa->SetBinContent(6949,0.0567312); - ssigpTa->SetBinContent(6950,0.0568032); - ssigpTa->SetBinContent(6951,0.0568868); - ssigpTa->SetBinContent(6952,0.0569748); - ssigpTa->SetBinContent(6953,0.0570104); - ssigpTa->SetBinContent(6954,0.057078); - ssigpTa->SetBinContent(6955,0.057142); - ssigpTa->SetBinContent(6956,0.0571456); - ssigpTa->SetBinContent(6957,0.0576888); - ssigpTa->SetBinContent(6958,0.0625848); - ssigpTa->SetBinContent(6959,0.0727764); - ssigpTa->SetBinContent(6960,0.077804); - ssigpTa->SetBinContent(6961,0.078484); - ssigpTa->SetBinContent(6962,0.0785916); - ssigpTa->SetBinContent(6963,0.0786832); - ssigpTa->SetBinContent(6964,0.0787908); - ssigpTa->SetBinContent(6965,0.0788708); - ssigpTa->SetBinContent(6966,0.0789544); - ssigpTa->SetBinContent(6967,0.079054); - ssigpTa->SetBinContent(6968,0.0786976); - ssigpTa->SetBinContent(6969,0.0749812); - ssigpTa->SetBinContent(6970,0.0678028); - ssigpTa->SetBinContent(6971,0.0658156); - ssigpTa->SetBinContent(6972,0.0673688); - ssigpTa->SetBinContent(6973,0.069194); - ssigpTa->SetBinContent(6974,0.0710556); - ssigpTa->SetBinContent(6975,0.0729288); - ssigpTa->SetBinContent(6976,0.074802); - ssigpTa->SetBinContent(6977,0.0761472); - ssigpTa->SetBinContent(6978,0.0739964); - ssigpTa->SetBinContent(6979,0.067588); - ssigpTa->SetBinContent(6980,0.0653456); - ssigpTa->SetBinContent(6981,0.066592); - ssigpTa->SetBinContent(6982,0.0683656); - ssigpTa->SetBinContent(6983,0.0701988); - ssigpTa->SetBinContent(6984,0.072072); - ssigpTa->SetBinContent(6985,0.0739932); - ssigpTa->SetBinContent(6986,0.0759304); - ssigpTa->SetBinContent(6987,0.0779752); - ssigpTa->SetBinContent(6988,0.0795444); - ssigpTa->SetBinContent(6989,0.0772052); - ssigpTa->SetBinContent(6990,0.0699156); - ssigpTa->SetBinContent(6991,0.0672012); - ssigpTa->SetBinContent(6992,0.0683304); - ssigpTa->SetBinContent(6993,0.0700676); - ssigpTa->SetBinContent(6994,0.0718448); - ssigpTa->SetBinContent(6995,0.073726); - ssigpTa->SetBinContent(6996,0.0756952); - ssigpTa->SetBinContent(6997,0.0780004); - ssigpTa->SetBinContent(6998,0.0807356); - ssigpTa->SetBinContent(6999,0.0824924); - ssigpTa->SetBinContent(7000,0.0799176); - ssigpTa->SetBinContent(7001,0.0724332); - ssigpTa->SetBinContent(7002,0.0695144); - ssigpTa->SetBinContent(7003,0.070576); - ssigpTa->SetBinContent(7004,0.0721932); - ssigpTa->SetBinContent(7005,0.0738344); - ssigpTa->SetBinContent(7006,0.0755236); - ssigpTa->SetBinContent(7007,0.0773008); - ssigpTa->SetBinContent(7008,0.0790736); - ssigpTa->SetBinContent(7009,0.0809628); - ssigpTa->SetBinContent(7010,0.0828556); - ssigpTa->SetBinContent(7011,0.0842444); - ssigpTa->SetBinContent(7012,0.0815932); - ssigpTa->SetBinContent(7013,0.0740228); - ssigpTa->SetBinContent(7014,0.071208); - ssigpTa->SetBinContent(7015,0.0729692); - ssigpTa->SetBinContent(7016,0.0761376); - ssigpTa->SetBinContent(7017,0.0784828); - ssigpTa->SetBinContent(7018,0.0802556); - ssigpTa->SetBinContent(7019,0.0820488); - ssigpTa->SetBinContent(7020,0.0838296); - ssigpTa->SetBinContent(7021,0.0856068); - ssigpTa->SetBinContent(7022,0.0869556); - ssigpTa->SetBinContent(7023,0.0847124); - ssigpTa->SetBinContent(7024,0.0781032); - ssigpTa->SetBinContent(7025,0.0756004); - ssigpTa->SetBinContent(7026,0.0761572); - ssigpTa->SetBinContent(7027,0.0765264); - ssigpTa->SetBinContent(7028,0.0776592); - ssigpTa->SetBinContent(7029,0.079328); - ssigpTa->SetBinContent(7030,0.0812652); - ssigpTa->SetBinContent(7031,0.08349); - ssigpTa->SetBinContent(7032,0.0855588); - ssigpTa->SetBinContent(7033,0.0875432); - ssigpTa->SetBinContent(7034,0.089564); - ssigpTa->SetBinContent(7035,0.0912088); - ssigpTa->SetBinContent(7036,0.0898172); - ssigpTa->SetBinContent(7037,0.0848648); - ssigpTa->SetBinContent(7038,0.0838216); - ssigpTa->SetBinContent(7039,0.0864408); - ssigpTa->SetBinContent(7040,0.088818); - ssigpTa->SetBinContent(7041,0.0908512); - ssigpTa->SetBinContent(7042,0.092936); - ssigpTa->SetBinContent(7043,0.0949168); - ssigpTa->SetBinContent(7044,0.0960256); - ssigpTa->SetBinContent(7045,0.096104); - ssigpTa->SetBinContent(7046,0.0972448); - ssigpTa->SetBinContent(7047,0.0993456); - ssigpTa->SetBinContent(7048,0.101586); - ssigpTa->SetBinContent(7049,0.103946); - ssigpTa->SetBinContent(7050,0.106259); - ssigpTa->SetBinContent(7051,0.108683); - ssigpTa->SetBinContent(7052,0.111284); - ssigpTa->SetBinContent(7053,0.115216); - ssigpTa->SetBinContent(7054,0.120752); - ssigpTa->SetBinContent(7055,0.124964); - ssigpTa->SetBinContent(7056,0.127828); - ssigpTa->SetBinContent(7057,0.129156); - ssigpTa->SetBinContent(7058,0.128715); - ssigpTa->SetBinContent(7059,0.130066); - ssigpTa->SetBinContent(7060,0.132862); - ssigpTa->SetBinContent(7061,0.135941); - ssigpTa->SetBinContent(7062,0.139056); - ssigpTa->SetBinContent(7063,0.142444); - ssigpTa->SetBinContent(7064,0.147306); - ssigpTa->SetBinContent(7065,0.154028); - ssigpTa->SetBinContent(7066,0.159115); - ssigpTa->SetBinContent(7067,0.16279); - ssigpTa->SetBinContent(7068,0.164484); - ssigpTa->SetBinContent(7069,0.163924); - ssigpTa->SetBinContent(7070,0.165574); - ssigpTa->SetBinContent(7071,0.169128); - ssigpTa->SetBinContent(7072,0.173006); - ssigpTa->SetBinContent(7073,0.176972); - ssigpTa->SetBinContent(7074,0.18115); - ssigpTa->SetBinContent(7075,0.18552); - ssigpTa->SetBinContent(7076,0.191069); - ssigpTa->SetBinContent(7077,0.198015); - ssigpTa->SetBinContent(7078,0.203508); - ssigpTa->SetBinContent(7079,0.205977); - ssigpTa->SetBinContent(7080,0.205642); - ssigpTa->SetBinContent(7081,0.208019); - ssigpTa->SetBinContent(7082,0.212748); - ssigpTa->SetBinContent(7083,0.217792); - ssigpTa->SetBinContent(7084,0.222913); - ssigpTa->SetBinContent(7085,0.228117); - ssigpTa->SetBinContent(7086,0.233477); - ssigpTa->SetBinContent(7087,0.23893); - ssigpTa->SetBinContent(7088,0.244842); - ssigpTa->SetBinContent(7089,0.249799); - ssigpTa->SetBinContent(7090,0.251925); - ssigpTa->SetBinContent(7091,0.255908); - ssigpTa->SetBinContent(7092,0.261771); - ssigpTa->SetBinContent(7093,0.268038); - ssigpTa->SetBinContent(7094,0.274329); - ssigpTa->SetBinContent(7095,0.280732); - ssigpTa->SetBinContent(7096,0.287234); - ssigpTa->SetBinContent(7097,0.29406); - ssigpTa->SetBinContent(7098,0.301218); - ssigpTa->SetBinContent(7099,0.308499); - ssigpTa->SetBinContent(7100,0.31484); - ssigpTa->SetBinContent(7101,0.319919); - ssigpTa->SetBinContent(7102,0.326393); - ssigpTa->SetBinContent(7103,0.333998); - ssigpTa->SetBinContent(7104,0.341846); - ssigpTa->SetBinContent(7105,0.349854); - ssigpTa->SetBinContent(7106,0.358114); - ssigpTa->SetBinContent(7107,0.366862); - ssigpTa->SetBinContent(7108,0.375952); - ssigpTa->SetBinContent(7109,0.385282); - ssigpTa->SetBinContent(7110,0.394576); - ssigpTa->SetBinContent(7111,0.403788); - ssigpTa->SetBinContent(7112,0.413806); - ssigpTa->SetBinContent(7113,0.427631); - ssigpTa->SetBinContent(7114,0.445938); - ssigpTa->SetBinContent(7115,0.460431); - ssigpTa->SetBinContent(7116,0.471791); - ssigpTa->SetBinContent(7117,0.483146); - ssigpTa->SetBinContent(7118,0.495092); - ssigpTa->SetBinContent(7119,0.507166); - ssigpTa->SetBinContent(7120,0.519216); - ssigpTa->SetBinContent(7121,0.531892); - ssigpTa->SetBinContent(7122,0.545173); - ssigpTa->SetBinContent(7123,0.558621); - ssigpTa->SetBinContent(7124,0.572238); - ssigpTa->SetBinContent(7125,0.586221); - ssigpTa->SetBinContent(7126,0.608252); - ssigpTa->SetBinContent(7127,0.680611); - ssigpTa->SetBinContent(7128,0.790847); - ssigpTa->SetBinContent(7129,0.803502); - ssigpTa->SetBinContent(7130,0.798485); - ssigpTa->SetBinContent(7131,0.815362); - ssigpTa->SetBinContent(7132,0.836854); - ssigpTa->SetBinContent(7133,0.858726); - ssigpTa->SetBinContent(7134,0.88081); - ssigpTa->SetBinContent(7135,0.90323); - ssigpTa->SetBinContent(7136,0.92606); - ssigpTa->SetBinContent(7137,0.945454); - ssigpTa->SetBinContent(7138,0.937996); - ssigpTa->SetBinContent(7139,0.897247); - ssigpTa->SetBinContent(7140,0.888041); - ssigpTa->SetBinContent(7141,0.905826); - ssigpTa->SetBinContent(7142,0.928685); - ssigpTa->SetBinContent(7143,0.95356); - ssigpTa->SetBinContent(7144,0.979529); - ssigpTa->SetBinContent(7145,1.00277); - ssigpTa->SetBinContent(7146,1.00425); - ssigpTa->SetBinContent(7147,0.980635); - ssigpTa->SetBinContent(7148,0.986049); - ssigpTa->SetBinContent(7149,1.01085); - ssigpTa->SetBinContent(7150,1.03682); - ssigpTa->SetBinContent(7151,1.06294); - ssigpTa->SetBinContent(7152,1.08968); - ssigpTa->SetBinContent(7153,1.11688); - ssigpTa->SetBinContent(7154,1.14453); - ssigpTa->SetBinContent(7155,1.1724); - ssigpTa->SetBinContent(7156,1.20056); - ssigpTa->SetBinContent(7157,1.22999); - ssigpTa->SetBinContent(7158,1.26199); - ssigpTa->SetBinContent(7159,1.29635); - ssigpTa->SetBinContent(7160,1.33201); - ssigpTa->SetBinContent(7161,1.36857); - ssigpTa->SetBinContent(7162,1.40591); - ssigpTa->SetBinContent(7163,1.44424); - ssigpTa->SetBinContent(7164,1.48361); - ssigpTa->SetBinContent(7165,1.52378); - ssigpTa->SetBinContent(7166,1.60273); - ssigpTa->SetBinContent(7167,1.9499); - ssigpTa->SetBinContent(7168,2.62486); - ssigpTa->SetBinContent(7169,2.98724); - ssigpTa->SetBinContent(7170,3.08656); - ssigpTa->SetBinContent(7171,3.1488); - ssigpTa->SetBinContent(7172,3.21156); - ssigpTa->SetBinContent(7173,3.27373); - ssigpTa->SetBinContent(7174,3.335); - ssigpTa->SetBinContent(7175,3.39745); - ssigpTa->SetBinContent(7176,3.46568); - ssigpTa->SetBinContent(7177,3.5419); - ssigpTa->SetBinContent(7178,3.62273); - ssigpTa->SetBinContent(7179,3.70721); - ssigpTa->SetBinContent(7180,3.79412); - ssigpTa->SetBinContent(7181,3.88067); - ssigpTa->SetBinContent(7182,3.96681); - ssigpTa->SetBinContent(7183,4.05437); - ssigpTa->SetBinContent(7184,4.14538); - ssigpTa->SetBinContent(7185,4.24108); - ssigpTa->SetBinContent(7186,4.34029); - ssigpTa->SetBinContent(7187,4.44123); - ssigpTa->SetBinContent(7188,4.5423); - ssigpTa->SetBinContent(7189,4.64471); - ssigpTa->SetBinContent(7190,4.74694); - ssigpTa->SetBinContent(7191,4.84334); - ssigpTa->SetBinContent(7192,4.93382); - ssigpTa->SetBinContent(7193,5.02273); - ssigpTa->SetBinContent(7194,5.11399); - ssigpTa->SetBinContent(7195,5.20798); - ssigpTa->SetBinContent(7196,5.30182); - ssigpTa->SetBinContent(7197,5.39469); - ssigpTa->SetBinContent(7198,5.49603); - ssigpTa->SetBinContent(7199,5.61654); - ssigpTa->SetBinContent(7200,5.74847); - ssigpTa->SetBinContent(7201,5.88363); - ssigpTa->SetBinContent(7202,6.01971); - ssigpTa->SetBinContent(7203,6.15731); - ssigpTa->SetBinContent(7204,6.30218); - ssigpTa->SetBinContent(7205,6.46138); - ssigpTa->SetBinContent(7206,6.63256); - ssigpTa->SetBinContent(7207,6.81225); - ssigpTa->SetBinContent(7208,6.99508); - ssigpTa->SetBinContent(7209,7.17182); - ssigpTa->SetBinContent(7210,7.3388); - ssigpTa->SetBinContent(7211,7.49874); - ssigpTa->SetBinContent(7212,7.65334); - ssigpTa->SetBinContent(7213,7.80306); - ssigpTa->SetBinContent(7214,7.95107); - ssigpTa->SetBinContent(7215,8.10641); - ssigpTa->SetBinContent(7216,8.27939); - ssigpTa->SetBinContent(7217,8.4663); - ssigpTa->SetBinContent(7218,8.65446); - ssigpTa->SetBinContent(7219,8.83951); - ssigpTa->SetBinContent(7220,9.02162); - ssigpTa->SetBinContent(7221,9.19977); - ssigpTa->SetBinContent(7222,9.37442); - ssigpTa->SetBinContent(7223,9.54551); - ssigpTa->SetBinContent(7224,9.70995); - ssigpTa->SetBinContent(7225,9.86993); - ssigpTa->SetBinContent(7226,10.041); - ssigpTa->SetBinContent(7227,10.2439); - ssigpTa->SetBinContent(7228,10.4824); - ssigpTa->SetBinContent(7229,10.7439); - ssigpTa->SetBinContent(7230,11.0223); - ssigpTa->SetBinContent(7231,11.4345); - ssigpTa->SetBinContent(7232,12.7809); - ssigpTa->SetBinContent(7233,15.2859); - ssigpTa->SetBinContent(7234,16.6991); - ssigpTa->SetBinContent(7235,17.2043); - ssigpTa->SetBinContent(7236,17.6114); - ssigpTa->SetBinContent(7237,18.0704); - ssigpTa->SetBinContent(7238,18.5738); - ssigpTa->SetBinContent(7239,19.1117); - ssigpTa->SetBinContent(7240,19.6786); - ssigpTa->SetBinContent(7241,20.257); - ssigpTa->SetBinContent(7242,20.8253); - ssigpTa->SetBinContent(7243,21.3866); - ssigpTa->SetBinContent(7244,21.9642); - ssigpTa->SetBinContent(7245,22.5909); - ssigpTa->SetBinContent(7246,23.2636); - ssigpTa->SetBinContent(7247,23.9581); - ssigpTa->SetBinContent(7248,24.6679); - ssigpTa->SetBinContent(7249,25.3709); - ssigpTa->SetBinContent(7250,26.3268); - ssigpTa->SetBinContent(7251,29.49); - ssigpTa->SetBinContent(7252,34.8598); - ssigpTa->SetBinContent(7255,0.169461); - ssigpTa->SetBinContent(7256,0.154329); - ssigpTa->SetBinContent(7257,0.151996); - ssigpTa->SetBinContent(7258,0.151996); - ssigpTa->SetBinContent(7259,0.151996); - ssigpTa->SetBinContent(7260,0.151996); - ssigpTa->SetBinContent(7261,0.151996); - ssigpTa->SetBinContent(7262,0.151996); - ssigpTa->SetBinContent(7263,0.151996); - ssigpTa->SetBinContent(7264,0.151996); - ssigpTa->SetBinContent(7265,0.151996); - ssigpTa->SetBinContent(7266,0.151996); - ssigpTa->SetBinContent(7267,0.151996); - ssigpTa->SetBinContent(7268,0.151996); - ssigpTa->SetBinContent(7269,0.151996); - ssigpTa->SetBinContent(7270,0.151996); - ssigpTa->SetBinContent(7271,0.151996); - ssigpTa->SetBinContent(7272,0.151996); - ssigpTa->SetBinContent(7273,0.151996); - ssigpTa->SetBinContent(7274,0.151996); - ssigpTa->SetBinContent(7275,0.151996); - ssigpTa->SetBinContent(7276,0.152); - ssigpTa->SetBinContent(7277,0.152); - ssigpTa->SetBinContent(7278,0.152); - ssigpTa->SetBinContent(7279,0.15202); - ssigpTa->SetBinContent(7280,0.15214); - ssigpTa->SetBinContent(7281,0.15232); - ssigpTa->SetBinContent(7282,0.15244); - ssigpTa->SetBinContent(7283,0.15246); - ssigpTa->SetBinContent(7284,0.152476); - ssigpTa->SetBinContent(7285,0.152492); - ssigpTa->SetBinContent(7286,0.152512); - ssigpTa->SetBinContent(7287,0.152512); - ssigpTa->SetBinContent(7288,0.152512); - ssigpTa->SetBinContent(7289,0.152512); - ssigpTa->SetBinContent(7290,0.152512); - ssigpTa->SetBinContent(7291,0.152512); - ssigpTa->SetBinContent(7292,0.152512); - ssigpTa->SetBinContent(7293,0.152512); - ssigpTa->SetBinContent(7294,0.152796); - ssigpTa->SetBinContent(7295,0.152796); - ssigpTa->SetBinContent(7296,0.152796); - ssigpTa->SetBinContent(7297,0.152796); - ssigpTa->SetBinContent(7298,0.152796); - ssigpTa->SetBinContent(7299,0.152796); - ssigpTa->SetBinContent(7300,0.152816); - ssigpTa->SetBinContent(7301,0.152832); - ssigpTa->SetBinContent(7302,0.152848); - ssigpTa->SetBinContent(7303,0.152848); - ssigpTa->SetBinContent(7304,0.152848); - ssigpTa->SetBinContent(7305,0.152852); - ssigpTa->SetBinContent(7306,0.152872); - ssigpTa->SetBinContent(7307,0.152912); - ssigpTa->SetBinContent(7308,0.153012); - ssigpTa->SetBinContent(7309,0.153132); - ssigpTa->SetBinContent(7310,0.153236); - ssigpTa->SetBinContent(7311,0.153332); - ssigpTa->SetBinContent(7312,0.153348); - ssigpTa->SetBinContent(7313,0.153364); - ssigpTa->SetBinContent(7314,0.153368); - ssigpTa->SetBinContent(7315,0.153368); - ssigpTa->SetBinContent(7316,0.153368); - ssigpTa->SetBinContent(7317,0.153648); - ssigpTa->SetBinContent(7318,0.153652); - ssigpTa->SetBinContent(7319,0.153668); - ssigpTa->SetBinContent(7320,0.153704); - ssigpTa->SetBinContent(7321,0.153764); - ssigpTa->SetBinContent(7322,0.153864); - ssigpTa->SetBinContent(7323,0.153904); - ssigpTa->SetBinContent(7324,0.154004); - ssigpTa->SetBinContent(7325,0.154088); - ssigpTa->SetBinContent(7326,0.154184); - ssigpTa->SetBinContent(7327,0.1542); - ssigpTa->SetBinContent(7328,0.15422); - ssigpTa->SetBinContent(7329,0.15422); - ssigpTa->SetBinContent(7330,0.1545); - ssigpTa->SetBinContent(7331,0.154524); - ssigpTa->SetBinContent(7332,0.154564); - ssigpTa->SetBinContent(7333,0.154684); - ssigpTa->SetBinContent(7334,0.15474); - ssigpTa->SetBinContent(7335,0.154856); - ssigpTa->SetBinContent(7336,0.15494); - ssigpTa->SetBinContent(7337,0.15502); - ssigpTa->SetBinContent(7338,0.15504); - ssigpTa->SetBinContent(7339,0.155076); - ssigpTa->SetBinContent(7340,0.155412); - ssigpTa->SetBinContent(7341,0.155516); - ssigpTa->SetBinContent(7342,0.155556); - ssigpTa->SetBinContent(7343,0.155676); - ssigpTa->SetBinContent(7344,0.155772); - ssigpTa->SetBinContent(7345,0.155872); - ssigpTa->SetBinContent(7346,0.155892); - ssigpTa->SetBinContent(7347,0.155952); - ssigpTa->SetBinContent(7348,0.156348); - ssigpTa->SetBinContent(7349,0.156408); - ssigpTa->SetBinContent(7350,0.156508); - ssigpTa->SetBinContent(7351,0.156608); - ssigpTa->SetBinContent(7352,0.156724); - ssigpTa->SetBinContent(7353,0.156784); - ssigpTa->SetBinContent(7354,0.15718); - ssigpTa->SetBinContent(7355,0.15724); - ssigpTa->SetBinContent(7356,0.157356); - ssigpTa->SetBinContent(7357,0.15746); - ssigpTa->SetBinContent(7358,0.157556); - ssigpTa->SetBinContent(7359,0.15778); - ssigpTa->SetBinContent(7360,0.158564); - ssigpTa->SetBinContent(7361,0.169044); - ssigpTa->SetBinContent(7362,0.206864); - ssigpTa->SetBinContent(7363,0.217596); - ssigpTa->SetBinContent(7364,0.219316); - ssigpTa->SetBinContent(7365,0.219712); - ssigpTa->SetBinContent(7366,0.219868); - ssigpTa->SetBinContent(7367,0.220008); - ssigpTa->SetBinContent(7368,0.220144); - ssigpTa->SetBinContent(7369,0.220544); - ssigpTa->SetBinContent(7370,0.220704); - ssigpTa->SetBinContent(7371,0.21962); - ssigpTa->SetBinContent(7372,0.21164); - ssigpTa->SetBinContent(7373,0.1839); - ssigpTa->SetBinContent(7374,0.18186); - ssigpTa->SetBinContent(7375,0.186136); - ssigpTa->SetBinContent(7376,0.19156); - ssigpTa->SetBinContent(7377,0.196948); - ssigpTa->SetBinContent(7378,0.202152); - ssigpTa->SetBinContent(7379,0.20758); - ssigpTa->SetBinContent(7380,0.211708); - ssigpTa->SetBinContent(7381,0.20844); - ssigpTa->SetBinContent(7382,0.182828); - ssigpTa->SetBinContent(7383,0.179468); - ssigpTa->SetBinContent(7384,0.183168); - ssigpTa->SetBinContent(7385,0.188476); - ssigpTa->SetBinContent(7386,0.193584); - ssigpTa->SetBinContent(7387,0.199072); - ssigpTa->SetBinContent(7388,0.204556); - ssigpTa->SetBinContent(7389,0.21018); - ssigpTa->SetBinContent(7390,0.2159); - ssigpTa->SetBinContent(7391,0.22066); - ssigpTa->SetBinContent(7392,0.217096); - ssigpTa->SetBinContent(7393,0.18854); - ssigpTa->SetBinContent(7394,0.183764); - ssigpTa->SetBinContent(7395,0.1872); - ssigpTa->SetBinContent(7396,0.192068); - ssigpTa->SetBinContent(7397,0.197076); - ssigpTa->SetBinContent(7398,0.20248); - ssigpTa->SetBinContent(7399,0.208164); - ssigpTa->SetBinContent(7400,0.214748); - ssigpTa->SetBinContent(7401,0.22432); - ssigpTa->SetBinContent(7402,0.229468); - ssigpTa->SetBinContent(7403,0.225392); - ssigpTa->SetBinContent(7404,0.195876); - ssigpTa->SetBinContent(7405,0.190892); - ssigpTa->SetBinContent(7406,0.193748); - ssigpTa->SetBinContent(7407,0.198384); - ssigpTa->SetBinContent(7408,0.203036); - ssigpTa->SetBinContent(7409,0.207808); - ssigpTa->SetBinContent(7410,0.21268); - ssigpTa->SetBinContent(7411,0.217692); - ssigpTa->SetBinContent(7412,0.223); - ssigpTa->SetBinContent(7413,0.228168); - ssigpTa->SetBinContent(7414,0.232152); - ssigpTa->SetBinContent(7415,0.22768); - ssigpTa->SetBinContent(7416,0.197636); - ssigpTa->SetBinContent(7417,0.192768); - ssigpTa->SetBinContent(7418,0.197832); - ssigpTa->SetBinContent(7419,0.21062); - ssigpTa->SetBinContent(7420,0.21746); - ssigpTa->SetBinContent(7421,0.222572); - ssigpTa->SetBinContent(7422,0.227504); - ssigpTa->SetBinContent(7423,0.23242); - ssigpTa->SetBinContent(7424,0.237348); - ssigpTa->SetBinContent(7425,0.2413); - ssigpTa->SetBinContent(7426,0.2377); - ssigpTa->SetBinContent(7427,0.210996); - ssigpTa->SetBinContent(7428,0.20634); - ssigpTa->SetBinContent(7429,0.208072); - ssigpTa->SetBinContent(7430,0.207232); - ssigpTa->SetBinContent(7431,0.210444); - ssigpTa->SetBinContent(7432,0.215116); - ssigpTa->SetBinContent(7433,0.220644); - ssigpTa->SetBinContent(7434,0.228296); - ssigpTa->SetBinContent(7435,0.234372); - ssigpTa->SetBinContent(7436,0.24002); - ssigpTa->SetBinContent(7437,0.245668); - ssigpTa->SetBinContent(7438,0.250152); - ssigpTa->SetBinContent(7439,0.248216); - ssigpTa->SetBinContent(7440,0.226968); - ssigpTa->SetBinContent(7441,0.226924); - ssigpTa->SetBinContent(7442,0.238828); - ssigpTa->SetBinContent(7443,0.246416); - ssigpTa->SetBinContent(7444,0.252676); - ssigpTa->SetBinContent(7445,0.258456); - ssigpTa->SetBinContent(7446,0.264216); - ssigpTa->SetBinContent(7447,0.267736); - ssigpTa->SetBinContent(7448,0.265408); - ssigpTa->SetBinContent(7449,0.269264); - ssigpTa->SetBinContent(7450,0.27488); - ssigpTa->SetBinContent(7451,0.281616); - ssigpTa->SetBinContent(7452,0.288092); - ssigpTa->SetBinContent(7453,0.294744); - ssigpTa->SetBinContent(7454,0.301656); - ssigpTa->SetBinContent(7455,0.309244); - ssigpTa->SetBinContent(7456,0.319708); - ssigpTa->SetBinContent(7457,0.339192); - ssigpTa->SetBinContent(7458,0.350428); - ssigpTa->SetBinContent(7459,0.358504); - ssigpTa->SetBinContent(7460,0.362876); - ssigpTa->SetBinContent(7461,0.35802); - ssigpTa->SetBinContent(7462,0.362492); - ssigpTa->SetBinContent(7463,0.370608); - ssigpTa->SetBinContent(7464,0.379344); - ssigpTa->SetBinContent(7465,0.388192); - ssigpTa->SetBinContent(7466,0.39794); - ssigpTa->SetBinContent(7467,0.410768); - ssigpTa->SetBinContent(7468,0.433556); - ssigpTa->SetBinContent(7469,0.447436); - ssigpTa->SetBinContent(7470,0.457692); - ssigpTa->SetBinContent(7471,0.463792); - ssigpTa->SetBinContent(7472,0.45722); - ssigpTa->SetBinContent(7473,0.462936); - ssigpTa->SetBinContent(7474,0.473168); - ssigpTa->SetBinContent(7475,0.484256); - ssigpTa->SetBinContent(7476,0.49554); - ssigpTa->SetBinContent(7477,0.507324); - ssigpTa->SetBinContent(7478,0.5199); - ssigpTa->SetBinContent(7479,0.535528); - ssigpTa->SetBinContent(7480,0.559872); - ssigpTa->SetBinContent(7481,0.575572); - ssigpTa->SetBinContent(7482,0.583988); - ssigpTa->SetBinContent(7483,0.577664); - ssigpTa->SetBinContent(7484,0.585808); - ssigpTa->SetBinContent(7485,0.599508); - ssigpTa->SetBinContent(7486,0.613976); - ssigpTa->SetBinContent(7487,0.628732); - ssigpTa->SetBinContent(7488,0.6435); - ssigpTa->SetBinContent(7489,0.659008); - ssigpTa->SetBinContent(7490,0.674592); - ssigpTa->SetBinContent(7491,0.691212); - ssigpTa->SetBinContent(7492,0.708096); - ssigpTa->SetBinContent(7493,0.7092); - ssigpTa->SetBinContent(7494,0.721872); - ssigpTa->SetBinContent(7495,0.738716); - ssigpTa->SetBinContent(7496,0.756692); - ssigpTa->SetBinContent(7497,0.774608); - ssigpTa->SetBinContent(7498,0.793148); - ssigpTa->SetBinContent(7499,0.811776); - ssigpTa->SetBinContent(7500,0.83144); - ssigpTa->SetBinContent(7501,0.852012); - ssigpTa->SetBinContent(7502,0.872856); - ssigpTa->SetBinContent(7503,0.891552); - ssigpTa->SetBinContent(7504,0.903248); - ssigpTa->SetBinContent(7505,0.922572); - ssigpTa->SetBinContent(7506,0.944728); - ssigpTa->SetBinContent(7507,0.967164); - ssigpTa->SetBinContent(7508,0.990092); - ssigpTa->SetBinContent(7509,1.01364); - ssigpTa->SetBinContent(7510,1.03908); - ssigpTa->SetBinContent(7511,1.06525); - ssigpTa->SetBinContent(7512,1.09168); - ssigpTa->SetBinContent(7513,1.1185); - ssigpTa->SetBinContent(7514,1.14381); - ssigpTa->SetBinContent(7515,1.17232); - ssigpTa->SetBinContent(7516,1.20918); - ssigpTa->SetBinContent(7517,1.26833); - ssigpTa->SetBinContent(7518,1.30732); - ssigpTa->SetBinContent(7519,1.33975); - ssigpTa->SetBinContent(7520,1.37206); - ssigpTa->SetBinContent(7521,1.40676); - ssigpTa->SetBinContent(7522,1.44158); - ssigpTa->SetBinContent(7523,1.47486); - ssigpTa->SetBinContent(7524,1.51166); - ssigpTa->SetBinContent(7525,1.54958); - ssigpTa->SetBinContent(7526,1.58827); - ssigpTa->SetBinContent(7527,1.62737); - ssigpTa->SetBinContent(7528,1.66733); - ssigpTa->SetBinContent(7529,1.7282); - ssigpTa->SetBinContent(7530,1.89218); - ssigpTa->SetBinContent(7531,2.33352); - ssigpTa->SetBinContent(7532,2.27192); - ssigpTa->SetBinContent(7533,2.27902); - ssigpTa->SetBinContent(7534,2.32918); - ssigpTa->SetBinContent(7535,2.39092); - ssigpTa->SetBinContent(7536,2.45353); - ssigpTa->SetBinContent(7537,2.51699); - ssigpTa->SetBinContent(7538,2.58125); - ssigpTa->SetBinContent(7539,2.64687); - ssigpTa->SetBinContent(7540,2.70384); - ssigpTa->SetBinContent(7541,2.70523); - ssigpTa->SetBinContent(7542,2.53782); - ssigpTa->SetBinContent(7543,2.5336); - ssigpTa->SetBinContent(7544,2.58598); - ssigpTa->SetBinContent(7545,2.65105); - ssigpTa->SetBinContent(7546,2.72296); - ssigpTa->SetBinContent(7547,2.79742); - ssigpTa->SetBinContent(7548,2.86529); - ssigpTa->SetBinContent(7549,2.88808); - ssigpTa->SetBinContent(7550,2.77683); - ssigpTa->SetBinContent(7551,2.81699); - ssigpTa->SetBinContent(7552,2.88767); - ssigpTa->SetBinContent(7553,2.96257); - ssigpTa->SetBinContent(7554,3.03747); - ssigpTa->SetBinContent(7555,3.11422); - ssigpTa->SetBinContent(7556,3.1925); - ssigpTa->SetBinContent(7557,3.27204); - ssigpTa->SetBinContent(7558,3.35206); - ssigpTa->SetBinContent(7559,3.43278); - ssigpTa->SetBinContent(7560,3.51688); - ssigpTa->SetBinContent(7561,3.60905); - ssigpTa->SetBinContent(7562,3.7082); - ssigpTa->SetBinContent(7563,3.81054); - ssigpTa->SetBinContent(7564,3.91561); - ssigpTa->SetBinContent(7565,4.02284); - ssigpTa->SetBinContent(7566,4.13295); - ssigpTa->SetBinContent(7567,4.24603); - ssigpTa->SetBinContent(7568,4.36148); - ssigpTa->SetBinContent(7569,4.5741); - ssigpTa->SetBinContent(7570,5.34325); - ssigpTa->SetBinContent(7571,7.76535); - ssigpTa->SetBinContent(7572,8.58304); - ssigpTa->SetBinContent(7573,8.85348); - ssigpTa->SetBinContent(7574,9.03258); - ssigpTa->SetBinContent(7575,9.21342); - ssigpTa->SetBinContent(7576,9.39213); - ssigpTa->SetBinContent(7577,9.56779); - ssigpTa->SetBinContent(7578,9.74591); - ssigpTa->SetBinContent(7579,9.94078); - ssigpTa->SetBinContent(7580,10.1621); - ssigpTa->SetBinContent(7581,10.3937); - ssigpTa->SetBinContent(7582,10.6364); - ssigpTa->SetBinContent(7583,10.8877); - ssigpTa->SetBinContent(7584,11.1359); - ssigpTa->SetBinContent(7585,11.383); - ssigpTa->SetBinContent(7586,11.6341); - ssigpTa->SetBinContent(7587,11.8951); - ssigpTa->SetBinContent(7588,12.1705); - ssigpTa->SetBinContent(7589,12.456); - ssigpTa->SetBinContent(7590,12.7466); - ssigpTa->SetBinContent(7591,13.0364); - ssigpTa->SetBinContent(7592,13.3302); - ssigpTa->SetBinContent(7593,13.6271); - ssigpTa->SetBinContent(7594,13.9033); - ssigpTa->SetBinContent(7595,14.1623); - ssigpTa->SetBinContent(7596,14.4166); - ssigpTa->SetBinContent(7597,14.6789); - ssigpTa->SetBinContent(7598,14.9498); - ssigpTa->SetBinContent(7599,15.2206); - ssigpTa->SetBinContent(7600,15.4858); - ssigpTa->SetBinContent(7601,15.7702); - ssigpTa->SetBinContent(7602,16.1226); - ssigpTa->SetBinContent(7603,16.5028); - ssigpTa->SetBinContent(7604,16.8908); - ssigpTa->SetBinContent(7605,17.2828); - ssigpTa->SetBinContent(7606,17.6765); - ssigpTa->SetBinContent(7607,18.0894); - ssigpTa->SetBinContent(7608,18.5495); - ssigpTa->SetBinContent(7609,19.0411); - ssigpTa->SetBinContent(7610,19.5582); - ssigpTa->SetBinContent(7611,20.0866); - ssigpTa->SetBinContent(7612,20.5953); - ssigpTa->SetBinContent(7613,21.0734); - ssigpTa->SetBinContent(7614,21.5331); - ssigpTa->SetBinContent(7615,21.9773); - ssigpTa->SetBinContent(7616,22.4074); - ssigpTa->SetBinContent(7617,22.8311); - ssigpTa->SetBinContent(7618,23.2728); - ssigpTa->SetBinContent(7619,23.7716); - ssigpTa->SetBinContent(7620,24.3135); - ssigpTa->SetBinContent(7621,24.8542); - ssigpTa->SetBinContent(7622,25.3856); - ssigpTa->SetBinContent(7623,25.9094); - ssigpTa->SetBinContent(7624,26.4214); - ssigpTa->SetBinContent(7625,26.9225); - ssigpTa->SetBinContent(7626,27.4159); - ssigpTa->SetBinContent(7627,27.8885); - ssigpTa->SetBinContent(7628,28.3448); - ssigpTa->SetBinContent(7629,28.8294); - ssigpTa->SetBinContent(7630,29.4111); - ssigpTa->SetBinContent(7631,30.1041); - ssigpTa->SetBinContent(7632,30.8515); - ssigpTa->SetBinContent(7633,31.6582); - ssigpTa->SetBinContent(7634,32.7977); - ssigpTa->SetBinContent(7635,35.85); - ssigpTa->SetBinContent(7636,44.751); - ssigpTa->SetBinContent(7637,48.0176); - ssigpTa->SetBinContent(7638,49.4174); - ssigpTa->SetBinContent(7639,50.5774); - ssigpTa->SetBinContent(7640,51.9037); - ssigpTa->SetBinContent(7641,53.3516); - ssigpTa->SetBinContent(7642,54.8965); - ssigpTa->SetBinContent(7643,56.5292); - ssigpTa->SetBinContent(7644,58.2009); - ssigpTa->SetBinContent(7645,59.8292); - ssigpTa->SetBinContent(7646,61.4402); - ssigpTa->SetBinContent(7647,63.0855); - ssigpTa->SetBinContent(7648,64.8892); - ssigpTa->SetBinContent(7649,66.8338); - ssigpTa->SetBinContent(7650,68.8257); - ssigpTa->SetBinContent(7651,70.8651); - ssigpTa->SetBinContent(7652,72.9081); - ssigpTa->SetBinContent(7653,75.5443); - ssigpTa->SetBinContent(7654,83.0524); - ssigpTa->SetBinContent(7655,112.877); - ssigpTa->SetBinContent(7658,0.4294); - ssigpTa->SetBinContent(7659,0.4586); - ssigpTa->SetBinContent(7660,0.44745); - ssigpTa->SetBinContent(7661,0.44745); - ssigpTa->SetBinContent(7662,0.44745); - ssigpTa->SetBinContent(7663,0.44745); - ssigpTa->SetBinContent(7664,0.44745); - ssigpTa->SetBinContent(7665,0.44745); - ssigpTa->SetBinContent(7666,0.44745); - ssigpTa->SetBinContent(7667,0.44745); - ssigpTa->SetBinContent(7668,0.44745); - ssigpTa->SetBinContent(7669,0.44745); - ssigpTa->SetBinContent(7670,0.44745); - ssigpTa->SetBinContent(7671,0.44745); - ssigpTa->SetBinContent(7672,0.44745); - ssigpTa->SetBinContent(7673,0.44745); - ssigpTa->SetBinContent(7674,0.44745); - ssigpTa->SetBinContent(7675,0.44745); - ssigpTa->SetBinContent(7676,0.44745); - ssigpTa->SetBinContent(7677,0.44745); - ssigpTa->SetBinContent(7678,0.44745); - ssigpTa->SetBinContent(7679,0.44745); - ssigpTa->SetBinContent(7680,0.44745); - ssigpTa->SetBinContent(7681,0.44745); - ssigpTa->SetBinContent(7682,0.447492); - ssigpTa->SetBinContent(7683,0.447617); - ssigpTa->SetBinContent(7684,0.447867); - ssigpTa->SetBinContent(7685,0.447992); - ssigpTa->SetBinContent(7686,0.448033); - ssigpTa->SetBinContent(7687,0.448033); - ssigpTa->SetBinContent(7688,0.448042); - ssigpTa->SetBinContent(7689,0.448042); - ssigpTa->SetBinContent(7690,0.448042); - ssigpTa->SetBinContent(7691,0.448042); - ssigpTa->SetBinContent(7692,0.448042); - ssigpTa->SetBinContent(7693,0.448042); - ssigpTa->SetBinContent(7694,0.448042); - ssigpTa->SetBinContent(7695,0.448042); - ssigpTa->SetBinContent(7696,0.448625); - ssigpTa->SetBinContent(7697,0.449208); - ssigpTa->SetBinContent(7698,0.449792); - ssigpTa->SetBinContent(7699,0.449792); - ssigpTa->SetBinContent(7700,0.449792); - ssigpTa->SetBinContent(7701,0.449792); - ssigpTa->SetBinContent(7702,0.449792); - ssigpTa->SetBinContent(7703,0.449792); - ssigpTa->SetBinContent(7704,0.4498); - ssigpTa->SetBinContent(7705,0.4498); - ssigpTa->SetBinContent(7706,0.4498); - ssigpTa->SetBinContent(7707,0.4498); - ssigpTa->SetBinContent(7708,0.4498); - ssigpTa->SetBinContent(7709,0.4498); - ssigpTa->SetBinContent(7710,0.449842); - ssigpTa->SetBinContent(7711,0.449925); - ssigpTa->SetBinContent(7712,0.45005); - ssigpTa->SetBinContent(7713,0.450258); - ssigpTa->SetBinContent(7714,0.450342); - ssigpTa->SetBinContent(7715,0.450392); - ssigpTa->SetBinContent(7716,0.450392); - ssigpTa->SetBinContent(7717,0.450392); - ssigpTa->SetBinContent(7718,0.450392); - ssigpTa->SetBinContent(7719,0.450975); - ssigpTa->SetBinContent(7720,0.451558); - ssigpTa->SetBinContent(7721,0.452142); - ssigpTa->SetBinContent(7722,0.452142); - ssigpTa->SetBinContent(7723,0.45215); - ssigpTa->SetBinContent(7724,0.452192); - ssigpTa->SetBinContent(7725,0.452233); - ssigpTa->SetBinContent(7726,0.452317); - ssigpTa->SetBinContent(7727,0.4524); - ssigpTa->SetBinContent(7728,0.452608); - ssigpTa->SetBinContent(7729,0.452692); - ssigpTa->SetBinContent(7730,0.452742); - ssigpTa->SetBinContent(7731,0.452742); - ssigpTa->SetBinContent(7732,0.453325); - ssigpTa->SetBinContent(7733,0.453908); - ssigpTa->SetBinContent(7734,0.454492); - ssigpTa->SetBinContent(7735,0.454533); - ssigpTa->SetBinContent(7736,0.454575); - ssigpTa->SetBinContent(7737,0.454667); - ssigpTa->SetBinContent(7738,0.45475); - ssigpTa->SetBinContent(7739,0.454958); - ssigpTa->SetBinContent(7740,0.455042); - ssigpTa->SetBinContent(7741,0.455083); - ssigpTa->SetBinContent(7742,0.455675); - ssigpTa->SetBinContent(7743,0.4563); - ssigpTa->SetBinContent(7744,0.456925); - ssigpTa->SetBinContent(7745,0.457008); - ssigpTa->SetBinContent(7746,0.457092); - ssigpTa->SetBinContent(7747,0.457308); - ssigpTa->SetBinContent(7748,0.457392); - ssigpTa->SetBinContent(7749,0.457433); - ssigpTa->SetBinContent(7750,0.458058); - ssigpTa->SetBinContent(7751,0.458692); - ssigpTa->SetBinContent(7752,0.459358); - ssigpTa->SetBinContent(7753,0.459442); - ssigpTa->SetBinContent(7754,0.45965); - ssigpTa->SetBinContent(7755,0.459742); - ssigpTa->SetBinContent(7756,0.460408); - ssigpTa->SetBinContent(7757,0.461033); - ssigpTa->SetBinContent(7758,0.461708); - ssigpTa->SetBinContent(7759,0.461792); - ssigpTa->SetBinContent(7760,0.462); - ssigpTa->SetBinContent(7761,0.462667); - ssigpTa->SetBinContent(7762,0.462008); - ssigpTa->SetBinContent(7763,0.464417); - ssigpTa->SetBinContent(7764,0.519); - ssigpTa->SetBinContent(7765,0.585308); - ssigpTa->SetBinContent(7766,0.641392); - ssigpTa->SetBinContent(7767,0.64535); - ssigpTa->SetBinContent(7768,0.646067); - ssigpTa->SetBinContent(7769,0.646775); - ssigpTa->SetBinContent(7770,0.646992); - ssigpTa->SetBinContent(7771,0.6477); - ssigpTa->SetBinContent(7772,0.648408); - ssigpTa->SetBinContent(7773,0.649125); - ssigpTa->SetBinContent(7774,0.646792); - ssigpTa->SetBinContent(7775,0.604042); - ssigpTa->SetBinContent(7776,0.560633); - ssigpTa->SetBinContent(7777,0.531175); - ssigpTa->SetBinContent(7778,0.546817); - ssigpTa->SetBinContent(7779,0.562533); - ssigpTa->SetBinContent(7780,0.578217); - ssigpTa->SetBinContent(7781,0.593942); - ssigpTa->SetBinContent(7782,0.609667); - ssigpTa->SetBinContent(7783,0.623258); - ssigpTa->SetBinContent(7784,0.593483); - ssigpTa->SetBinContent(7785,0.555233); - ssigpTa->SetBinContent(7786,0.524783); - ssigpTa->SetBinContent(7787,0.537667); - ssigpTa->SetBinContent(7788,0.5526); - ssigpTa->SetBinContent(7789,0.568275); - ssigpTa->SetBinContent(7790,0.584); - ssigpTa->SetBinContent(7791,0.600392); - ssigpTa->SetBinContent(7792,0.616825); - ssigpTa->SetBinContent(7793,0.634008); - ssigpTa->SetBinContent(7794,0.64895); - ssigpTa->SetBinContent(7795,0.616475); - ssigpTa->SetBinContent(7796,0.572917); - ssigpTa->SetBinContent(7797,0.537425); - ssigpTa->SetBinContent(7798,0.5486); - ssigpTa->SetBinContent(7799,0.5629); - ssigpTa->SetBinContent(7800,0.577792); - ssigpTa->SetBinContent(7801,0.593475); - ssigpTa->SetBinContent(7802,0.610158); - ssigpTa->SetBinContent(7803,0.6328); - ssigpTa->SetBinContent(7804,0.656483); - ssigpTa->SetBinContent(7805,0.676125); - ssigpTa->SetBinContent(7806,0.641183); - ssigpTa->SetBinContent(7807,0.595575); - ssigpTa->SetBinContent(7808,0.55795); - ssigpTa->SetBinContent(7809,0.568292); - ssigpTa->SetBinContent(7810,0.581592); - ssigpTa->SetBinContent(7811,0.595475); - ssigpTa->SetBinContent(7812,0.609525); - ssigpTa->SetBinContent(7813,0.623792); - ssigpTa->SetBinContent(7814,0.638633); - ssigpTa->SetBinContent(7815,0.65365); - ssigpTa->SetBinContent(7816,0.669208); - ssigpTa->SetBinContent(7817,0.68185); - ssigpTa->SetBinContent(7818,0.645742); - ssigpTa->SetBinContent(7819,0.599092); - ssigpTa->SetBinContent(7820,0.561517); - ssigpTa->SetBinContent(7821,0.584358); - ssigpTa->SetBinContent(7822,0.6126); - ssigpTa->SetBinContent(7823,0.639117); - ssigpTa->SetBinContent(7824,0.653917); - ssigpTa->SetBinContent(7825,0.668175); - ssigpTa->SetBinContent(7826,0.6824); - ssigpTa->SetBinContent(7827,0.6972); - ssigpTa->SetBinContent(7828,0.709967); - ssigpTa->SetBinContent(7829,0.67865); - ssigpTa->SetBinContent(7830,0.637392); - ssigpTa->SetBinContent(7831,0.603483); - ssigpTa->SetBinContent(7832,0.605658); - ssigpTa->SetBinContent(7833,0.609592); - ssigpTa->SetBinContent(7834,0.615192); - ssigpTa->SetBinContent(7835,0.628992); - ssigpTa->SetBinContent(7836,0.647333); - ssigpTa->SetBinContent(7837,0.667117); - ssigpTa->SetBinContent(7838,0.686967); - ssigpTa->SetBinContent(7839,0.703567); - ssigpTa->SetBinContent(7840,0.72); - ssigpTa->SetBinContent(7841,0.734108); - ssigpTa->SetBinContent(7842,0.710208); - ssigpTa->SetBinContent(7843,0.679558); - ssigpTa->SetBinContent(7844,0.667442); - ssigpTa->SetBinContent(7845,0.695533); - ssigpTa->SetBinContent(7846,0.724467); - ssigpTa->SetBinContent(7847,0.742275); - ssigpTa->SetBinContent(7848,0.760133); - ssigpTa->SetBinContent(7849,0.776658); - ssigpTa->SetBinContent(7850,0.781883); - ssigpTa->SetBinContent(7851,0.784783); - ssigpTa->SetBinContent(7852,0.789975); - ssigpTa->SetBinContent(7853,0.807917); - ssigpTa->SetBinContent(7854,0.826692); - ssigpTa->SetBinContent(7855,0.846308); - ssigpTa->SetBinContent(7856,0.865875); - ssigpTa->SetBinContent(7857,0.886242); - ssigpTa->SetBinContent(7858,0.908275); - ssigpTa->SetBinContent(7859,0.947683); - ssigpTa->SetBinContent(7860,0.991142); - ssigpTa->SetBinContent(7861,1.03223); - ssigpTa->SetBinContent(7862,1.05573); - ssigpTa->SetBinContent(7863,1.06012); - ssigpTa->SetBinContent(7864,1.0608); - ssigpTa->SetBinContent(7865,1.06597); - ssigpTa->SetBinContent(7866,1.08989); - ssigpTa->SetBinContent(7867,1.11569); - ssigpTa->SetBinContent(7868,1.14212); - ssigpTa->SetBinContent(7869,1.16984); - ssigpTa->SetBinContent(7870,1.21698); - ssigpTa->SetBinContent(7871,1.26866); - ssigpTa->SetBinContent(7872,1.31806); - ssigpTa->SetBinContent(7873,1.34897); - ssigpTa->SetBinContent(7874,1.35482); - ssigpTa->SetBinContent(7875,1.35585); - ssigpTa->SetBinContent(7876,1.36162); - ssigpTa->SetBinContent(7877,1.39216); - ssigpTa->SetBinContent(7878,1.42494); - ssigpTa->SetBinContent(7879,1.45847); - ssigpTa->SetBinContent(7880,1.49294); - ssigpTa->SetBinContent(7881,1.52978); - ssigpTa->SetBinContent(7882,1.58412); - ssigpTa->SetBinContent(7883,1.64302); - ssigpTa->SetBinContent(7884,1.69798); - ssigpTa->SetBinContent(7885,1.70926); - ssigpTa->SetBinContent(7886,1.71397); - ssigpTa->SetBinContent(7887,1.72553); - ssigpTa->SetBinContent(7888,1.76602); - ssigpTa->SetBinContent(7889,1.80946); - ssigpTa->SetBinContent(7890,1.85249); - ssigpTa->SetBinContent(7891,1.89693); - ssigpTa->SetBinContent(7892,1.94168); - ssigpTa->SetBinContent(7893,1.98813); - ssigpTa->SetBinContent(7894,2.0413); - ssigpTa->SetBinContent(7895,2.07347); - ssigpTa->SetBinContent(7896,2.10088); - ssigpTa->SetBinContent(7897,2.12665); - ssigpTa->SetBinContent(7898,2.17733); - ssigpTa->SetBinContent(7899,2.22982); - ssigpTa->SetBinContent(7900,2.28351); - ssigpTa->SetBinContent(7901,2.33758); - ssigpTa->SetBinContent(7902,2.3936); - ssigpTa->SetBinContent(7903,2.45148); - ssigpTa->SetBinContent(7904,2.51227); - ssigpTa->SetBinContent(7905,2.57388); - ssigpTa->SetBinContent(7906,2.62232); - ssigpTa->SetBinContent(7907,2.66877); - ssigpTa->SetBinContent(7908,2.7195); - ssigpTa->SetBinContent(7909,2.7849); - ssigpTa->SetBinContent(7910,2.85188); - ssigpTa->SetBinContent(7911,2.91925); - ssigpTa->SetBinContent(7912,2.99008); - ssigpTa->SetBinContent(7913,3.06435); - ssigpTa->SetBinContent(7914,3.14158); - ssigpTa->SetBinContent(7915,3.22032); - ssigpTa->SetBinContent(7916,3.29715); - ssigpTa->SetBinContent(7917,3.37484); - ssigpTa->SetBinContent(7918,3.45659); - ssigpTa->SetBinContent(7919,3.58468); - ssigpTa->SetBinContent(7920,3.72421); - ssigpTa->SetBinContent(7921,3.85798); - ssigpTa->SetBinContent(7922,3.95282); - ssigpTa->SetBinContent(7923,4.04961); - ssigpTa->SetBinContent(7924,4.15085); - ssigpTa->SetBinContent(7925,4.25189); - ssigpTa->SetBinContent(7926,4.35458); - ssigpTa->SetBinContent(7927,4.46038); - ssigpTa->SetBinContent(7928,4.57313); - ssigpTa->SetBinContent(7929,4.68716); - ssigpTa->SetBinContent(7930,4.80281); - ssigpTa->SetBinContent(7931,4.92153); - ssigpTa->SetBinContent(7932,5.08375); - ssigpTa->SetBinContent(7933,5.87607); - ssigpTa->SetBinContent(7934,6.46704); - ssigpTa->SetBinContent(7935,6.87637); - ssigpTa->SetBinContent(7936,6.72314); - ssigpTa->SetBinContent(7937,6.87965); - ssigpTa->SetBinContent(7938,7.06218); - ssigpTa->SetBinContent(7939,7.24722); - ssigpTa->SetBinContent(7940,7.43459); - ssigpTa->SetBinContent(7941,7.62502); - ssigpTa->SetBinContent(7942,7.81867); - ssigpTa->SetBinContent(7943,7.99575); - ssigpTa->SetBinContent(7944,7.84962); - ssigpTa->SetBinContent(7945,7.63295); - ssigpTa->SetBinContent(7946,7.47424); - ssigpTa->SetBinContent(7947,7.63743); - ssigpTa->SetBinContent(7948,7.83298); - ssigpTa->SetBinContent(7949,8.04184); - ssigpTa->SetBinContent(7950,8.26237); - ssigpTa->SetBinContent(7951,8.46959); - ssigpTa->SetBinContent(7952,8.41224); - ssigpTa->SetBinContent(7953,8.32828); - ssigpTa->SetBinContent(7954,8.29907); - ssigpTa->SetBinContent(7955,8.53046); - ssigpTa->SetBinContent(7956,8.75023); - ssigpTa->SetBinContent(7957,8.97256); - ssigpTa->SetBinContent(7958,9.19912); - ssigpTa->SetBinContent(7959,9.43069); - ssigpTa->SetBinContent(7960,9.66553); - ssigpTa->SetBinContent(7961,9.90205); - ssigpTa->SetBinContent(7962,10.1414); - ssigpTa->SetBinContent(7963,10.3928); - ssigpTa->SetBinContent(7964,10.6645); - ssigpTa->SetBinContent(7965,10.9555); - ssigpTa->SetBinContent(7966,11.2587); - ssigpTa->SetBinContent(7967,11.5688); - ssigpTa->SetBinContent(7968,11.8864); - ssigpTa->SetBinContent(7969,12.2119); - ssigpTa->SetBinContent(7970,12.5459); - ssigpTa->SetBinContent(7971,12.887); - ssigpTa->SetBinContent(7972,13.4323); - ssigpTa->SetBinContent(7973,17.1662); - ssigpTa->SetBinContent(7974,21.5949); - ssigpTa->SetBinContent(7975,25.4473); - ssigpTa->SetBinContent(7976,26.1707); - ssigpTa->SetBinContent(7977,26.6988); - ssigpTa->SetBinContent(7978,27.2316); - ssigpTa->SetBinContent(7979,27.7593); - ssigpTa->SetBinContent(7980,28.2795); - ssigpTa->SetBinContent(7981,28.8118); - ssigpTa->SetBinContent(7982,29.3956); - ssigpTa->SetBinContent(7983,30.0367); - ssigpTa->SetBinContent(7984,30.7265); - ssigpTa->SetBinContent(7985,31.4441); - ssigpTa->SetBinContent(7986,32.1794); - ssigpTa->SetBinContent(7987,32.9163); - ssigpTa->SetBinContent(7988,33.6484); - ssigpTa->SetBinContent(7989,34.3924); - ssigpTa->SetBinContent(7990,35.1667); - ssigpTa->SetBinContent(7991,35.978); - ssigpTa->SetBinContent(7992,36.8214); - ssigpTa->SetBinContent(7993,37.6764); - ssigpTa->SetBinContent(7994,38.5372); - ssigpTa->SetBinContent(7995,39.4096); - ssigpTa->SetBinContent(7996,40.271); - ssigpTa->SetBinContent(7997,41.093); - ssigpTa->SetBinContent(7998,41.8629); - ssigpTa->SetBinContent(7999,42.6202); - ssigpTa->SetBinContent(8000,43.3956); - ssigpTa->SetBinContent(8001,44.1931); - ssigpTa->SetBinContent(8002,44.988); - ssigpTa->SetBinContent(8003,45.7773); - ssigpTa->SetBinContent(8004,46.6548); - ssigpTa->SetBinContent(8005,47.6627); - ssigpTa->SetBinContent(8006,48.7849); - ssigpTa->SetBinContent(8007,49.9337); - ssigpTa->SetBinContent(8008,51.0882); - ssigpTa->SetBinContent(8009,52.2578); - ssigpTa->SetBinContent(8010,53.4973); - ssigpTa->SetBinContent(8011,54.8416); - ssigpTa->SetBinContent(8012,56.2979); - ssigpTa->SetBinContent(8013,57.8245); - ssigpTa->SetBinContent(8014,59.3714); - ssigpTa->SetBinContent(8015,60.8718); - ssigpTa->SetBinContent(8016,62.2945); - ssigpTa->SetBinContent(8017,63.6524); - ssigpTa->SetBinContent(8018,64.9656); - ssigpTa->SetBinContent(8019,66.2381); - ssigpTa->SetBinContent(8020,67.4965); - ssigpTa->SetBinContent(8021,68.8259); - ssigpTa->SetBinContent(8022,70.2928); - ssigpTa->SetBinContent(8023,71.8709); - ssigpTa->SetBinContent(8024,73.4731); - ssigpTa->SetBinContent(8025,75.0466); - ssigpTa->SetBinContent(8026,76.5917); - ssigpTa->SetBinContent(8027,78.106); - ssigpTa->SetBinContent(8028,79.5926); - ssigpTa->SetBinContent(8029,81.0422); - ssigpTa->SetBinContent(8030,82.4381); - ssigpTa->SetBinContent(8031,83.8011); - ssigpTa->SetBinContent(8032,85.266); - ssigpTa->SetBinContent(8033,86.9948); - ssigpTa->SetBinContent(8034,88.9998); - ssigpTa->SetBinContent(8035,91.24); - ssigpTa->SetBinContent(8036,93.59); - ssigpTa->SetBinContent(8037,96.6358); - ssigpTa->SetBinContent(8038,110.863); - ssigpTa->SetBinContent(8039,127.52); - ssigpTa->SetBinContent(8040,142.265); - ssigpTa->SetBinContent(8041,146.12); - ssigpTa->SetBinContent(8042,149.602); - ssigpTa->SetBinContent(8043,153.482); - ssigpTa->SetBinContent(8044,157.759); - ssigpTa->SetBinContent(8045,162.333); - ssigpTa->SetBinContent(8046,167.147); - ssigpTa->SetBinContent(8047,172.039); - ssigpTa->SetBinContent(8048,176.882); - ssigpTa->SetBinContent(8049,181.642); - ssigpTa->SetBinContent(8050,186.582); - ssigpTa->SetBinContent(8051,191.898); - ssigpTa->SetBinContent(8052,197.59); - ssigpTa->SetBinContent(8053,203.503); - ssigpTa->SetBinContent(8054,209.544); - ssigpTa->SetBinContent(8055,215.474); - ssigpTa->SetBinContent(8056,222.529); - ssigpTa->SetBinContent(8057,260.533); - ssigpTa->SetBinContent(8058,265.985); - ssigpTa->SetBinContent(8061,0.888923); - ssigpTa->SetBinContent(8062,0.859529); - ssigpTa->SetBinContent(8063,0.886056); - ssigpTa->SetBinContent(8064,0.886056); - ssigpTa->SetBinContent(8065,0.886056); - ssigpTa->SetBinContent(8066,0.886056); - ssigpTa->SetBinContent(8067,0.886056); - ssigpTa->SetBinContent(8068,0.886056); - ssigpTa->SetBinContent(8069,0.886056); - ssigpTa->SetBinContent(8070,0.886056); - ssigpTa->SetBinContent(8071,0.886056); - ssigpTa->SetBinContent(8072,0.886056); - ssigpTa->SetBinContent(8073,0.886056); - ssigpTa->SetBinContent(8074,0.886056); - ssigpTa->SetBinContent(8075,0.886056); - ssigpTa->SetBinContent(8076,0.886056); - ssigpTa->SetBinContent(8077,0.886056); - ssigpTa->SetBinContent(8078,0.886056); - ssigpTa->SetBinContent(8079,0.886056); - ssigpTa->SetBinContent(8080,0.886056); - ssigpTa->SetBinContent(8081,0.886056); - ssigpTa->SetBinContent(8082,0.886056); - ssigpTa->SetBinContent(8083,0.886056); - ssigpTa->SetBinContent(8084,0.886056); - ssigpTa->SetBinContent(8085,0.886056); - ssigpTa->SetBinContent(8086,0.886167); - ssigpTa->SetBinContent(8087,0.886306); - ssigpTa->SetBinContent(8088,0.886417); - ssigpTa->SetBinContent(8089,0.886417); - ssigpTa->SetBinContent(8090,0.886417); - ssigpTa->SetBinContent(8091,0.886417); - ssigpTa->SetBinContent(8092,0.886417); - ssigpTa->SetBinContent(8093,0.886417); - ssigpTa->SetBinContent(8094,0.886417); - ssigpTa->SetBinContent(8095,0.886417); - ssigpTa->SetBinContent(8096,0.886417); - ssigpTa->SetBinContent(8097,0.886417); - ssigpTa->SetBinContent(8098,0.886806); - ssigpTa->SetBinContent(8099,0.887583); - ssigpTa->SetBinContent(8100,0.889528); - ssigpTa->SetBinContent(8101,0.890306); - ssigpTa->SetBinContent(8102,0.890694); - ssigpTa->SetBinContent(8103,0.890694); - ssigpTa->SetBinContent(8104,0.890694); - ssigpTa->SetBinContent(8105,0.890694); - ssigpTa->SetBinContent(8106,0.890694); - ssigpTa->SetBinContent(8107,0.890694); - ssigpTa->SetBinContent(8108,0.890694); - ssigpTa->SetBinContent(8109,0.890694); - ssigpTa->SetBinContent(8110,0.890694); - ssigpTa->SetBinContent(8111,0.890694); - ssigpTa->SetBinContent(8112,0.890694); - ssigpTa->SetBinContent(8113,0.890694); - ssigpTa->SetBinContent(8114,0.890722); - ssigpTa->SetBinContent(8115,0.890833); - ssigpTa->SetBinContent(8116,0.890944); - ssigpTa->SetBinContent(8117,0.891056); - ssigpTa->SetBinContent(8118,0.891056); - ssigpTa->SetBinContent(8119,0.891056); - ssigpTa->SetBinContent(8120,0.891056); - ssigpTa->SetBinContent(8121,0.891444); - ssigpTa->SetBinContent(8122,0.892222); - ssigpTa->SetBinContent(8123,0.894167); - ssigpTa->SetBinContent(8124,0.894944); - ssigpTa->SetBinContent(8125,0.895333); - ssigpTa->SetBinContent(8126,0.895333); - ssigpTa->SetBinContent(8127,0.895333); - ssigpTa->SetBinContent(8128,0.895361); - ssigpTa->SetBinContent(8129,0.895361); - ssigpTa->SetBinContent(8130,0.895472); - ssigpTa->SetBinContent(8131,0.895583); - ssigpTa->SetBinContent(8132,0.895694); - ssigpTa->SetBinContent(8133,0.895694); - ssigpTa->SetBinContent(8134,0.896083); - ssigpTa->SetBinContent(8135,0.896861); - ssigpTa->SetBinContent(8136,0.898806); - ssigpTa->SetBinContent(8137,0.899583); - ssigpTa->SetBinContent(8138,0.899972); - ssigpTa->SetBinContent(8139,0.9); - ssigpTa->SetBinContent(8140,0.9); - ssigpTa->SetBinContent(8141,0.900111); - ssigpTa->SetBinContent(8142,0.900222); - ssigpTa->SetBinContent(8143,0.900333); - ssigpTa->SetBinContent(8144,0.900722); - ssigpTa->SetBinContent(8145,0.9015); - ssigpTa->SetBinContent(8146,0.903444); - ssigpTa->SetBinContent(8147,0.90425); - ssigpTa->SetBinContent(8148,0.904639); - ssigpTa->SetBinContent(8149,0.90475); - ssigpTa->SetBinContent(8150,0.904861); - ssigpTa->SetBinContent(8151,0.904972); - ssigpTa->SetBinContent(8152,0.905361); - ssigpTa->SetBinContent(8153,0.906139); - ssigpTa->SetBinContent(8154,0.908111); - ssigpTa->SetBinContent(8155,0.908889); - ssigpTa->SetBinContent(8156,0.909389); - ssigpTa->SetBinContent(8157,0.9095); - ssigpTa->SetBinContent(8158,0.91); - ssigpTa->SetBinContent(8159,0.910778); - ssigpTa->SetBinContent(8160,0.91275); - ssigpTa->SetBinContent(8161,0.913528); - ssigpTa->SetBinContent(8162,0.914028); - ssigpTa->SetBinContent(8163,0.914528); - ssigpTa->SetBinContent(8164,0.914639); - ssigpTa->SetBinContent(8165,0.914944); - ssigpTa->SetBinContent(8166,0.942389); - ssigpTa->SetBinContent(8167,1.01122); - ssigpTa->SetBinContent(8168,1.17503); - ssigpTa->SetBinContent(8169,1.24564); - ssigpTa->SetBinContent(8170,1.27725); - ssigpTa->SetBinContent(8171,1.27922); - ssigpTa->SetBinContent(8172,1.28011); - ssigpTa->SetBinContent(8173,1.281); - ssigpTa->SetBinContent(8174,1.28189); - ssigpTa->SetBinContent(8175,1.28386); - ssigpTa->SetBinContent(8176,1.28475); - ssigpTa->SetBinContent(8177,1.26153); - ssigpTa->SetBinContent(8178,1.21161); - ssigpTa->SetBinContent(8179,1.0965); - ssigpTa->SetBinContent(8180,1.07325); - ssigpTa->SetBinContent(8181,1.08078); - ssigpTa->SetBinContent(8182,1.1135); - ssigpTa->SetBinContent(8183,1.14469); - ssigpTa->SetBinContent(8184,1.17522); - ssigpTa->SetBinContent(8185,1.20689); - ssigpTa->SetBinContent(8186,1.21358); - ssigpTa->SetBinContent(8187,1.18828); - ssigpTa->SetBinContent(8188,1.08486); - ssigpTa->SetBinContent(8189,1.05875); - ssigpTa->SetBinContent(8190,1.06339); - ssigpTa->SetBinContent(8191,1.09417); - ssigpTa->SetBinContent(8192,1.12419); - ssigpTa->SetBinContent(8193,1.15589); - ssigpTa->SetBinContent(8194,1.18794); - ssigpTa->SetBinContent(8195,1.22083); - ssigpTa->SetBinContent(8196,1.25458); - ssigpTa->SetBinContent(8197,1.26242); - ssigpTa->SetBinContent(8198,1.23425); - ssigpTa->SetBinContent(8199,1.11869); - ssigpTa->SetBinContent(8200,1.08497); - ssigpTa->SetBinContent(8201,1.08569); - ssigpTa->SetBinContent(8202,1.11403); - ssigpTa->SetBinContent(8203,1.14325); - ssigpTa->SetBinContent(8204,1.17444); - ssigpTa->SetBinContent(8205,1.21003); - ssigpTa->SetBinContent(8206,1.25039); - ssigpTa->SetBinContent(8207,1.30147); - ssigpTa->SetBinContent(8208,1.31344); - ssigpTa->SetBinContent(8209,1.28425); - ssigpTa->SetBinContent(8210,1.163); - ssigpTa->SetBinContent(8211,1.12644); - ssigpTa->SetBinContent(8212,1.12419); - ssigpTa->SetBinContent(8213,1.15114); - ssigpTa->SetBinContent(8214,1.17847); - ssigpTa->SetBinContent(8215,1.20631); - ssigpTa->SetBinContent(8216,1.23464); - ssigpTa->SetBinContent(8217,1.26347); - ssigpTa->SetBinContent(8218,1.29378); - ssigpTa->SetBinContent(8219,1.32381); - ssigpTa->SetBinContent(8220,1.32661); - ssigpTa->SetBinContent(8221,1.29253); - ssigpTa->SetBinContent(8222,1.16917); - ssigpTa->SetBinContent(8223,1.13861); - ssigpTa->SetBinContent(8224,1.15197); - ssigpTa->SetBinContent(8225,1.21628); - ssigpTa->SetBinContent(8226,1.25958); - ssigpTa->SetBinContent(8227,1.29442); - ssigpTa->SetBinContent(8228,1.32239); - ssigpTa->SetBinContent(8229,1.35072); - ssigpTa->SetBinContent(8230,1.37983); - ssigpTa->SetBinContent(8231,1.38486); - ssigpTa->SetBinContent(8232,1.35658); - ssigpTa->SetBinContent(8233,1.24733); - ssigpTa->SetBinContent(8234,1.21028); - ssigpTa->SetBinContent(8235,1.20086); - ssigpTa->SetBinContent(8236,1.20333); - ssigpTa->SetBinContent(8237,1.2205); - ssigpTa->SetBinContent(8238,1.246); - ssigpTa->SetBinContent(8239,1.27956); - ssigpTa->SetBinContent(8240,1.32117); - ssigpTa->SetBinContent(8241,1.35767); - ssigpTa->SetBinContent(8242,1.39208); - ssigpTa->SetBinContent(8243,1.42458); - ssigpTa->SetBinContent(8244,1.43489); - ssigpTa->SetBinContent(8245,1.41681); - ssigpTa->SetBinContent(8246,1.33717); - ssigpTa->SetBinContent(8247,1.33408); - ssigpTa->SetBinContent(8248,1.38003); - ssigpTa->SetBinContent(8249,1.42839); - ssigpTa->SetBinContent(8250,1.46992); - ssigpTa->SetBinContent(8251,1.50408); - ssigpTa->SetBinContent(8252,1.5325); - ssigpTa->SetBinContent(8253,1.55117); - ssigpTa->SetBinContent(8254,1.5495); - ssigpTa->SetBinContent(8255,1.56972); - ssigpTa->SetBinContent(8256,1.59856); - ssigpTa->SetBinContent(8257,1.63694); - ssigpTa->SetBinContent(8258,1.67494); - ssigpTa->SetBinContent(8259,1.71386); - ssigpTa->SetBinContent(8260,1.75431); - ssigpTa->SetBinContent(8261,1.80578); - ssigpTa->SetBinContent(8262,1.87092); - ssigpTa->SetBinContent(8263,1.96797); - ssigpTa->SetBinContent(8264,2.03619); - ssigpTa->SetBinContent(8265,2.08194); - ssigpTa->SetBinContent(8266,2.10433); - ssigpTa->SetBinContent(8267,2.09486); - ssigpTa->SetBinContent(8268,2.11853); - ssigpTa->SetBinContent(8269,2.15789); - ssigpTa->SetBinContent(8270,2.20892); - ssigpTa->SetBinContent(8271,2.26075); - ssigpTa->SetBinContent(8272,2.32511); - ssigpTa->SetBinContent(8273,2.40361); - ssigpTa->SetBinContent(8274,2.51797); - ssigpTa->SetBinContent(8275,2.60189); - ssigpTa->SetBinContent(8276,2.65958); - ssigpTa->SetBinContent(8277,2.69008); - ssigpTa->SetBinContent(8278,2.67669); - ssigpTa->SetBinContent(8279,2.70667); - ssigpTa->SetBinContent(8280,2.75633); - ssigpTa->SetBinContent(8281,2.82128); - ssigpTa->SetBinContent(8282,2.8875); - ssigpTa->SetBinContent(8283,2.95619); - ssigpTa->SetBinContent(8284,3.03642); - ssigpTa->SetBinContent(8285,3.13183); - ssigpTa->SetBinContent(8286,3.25889); - ssigpTa->SetBinContent(8287,3.34236); - ssigpTa->SetBinContent(8288,3.39333); - ssigpTa->SetBinContent(8289,3.38561); - ssigpTa->SetBinContent(8290,3.42931); - ssigpTa->SetBinContent(8291,3.49764); - ssigpTa->SetBinContent(8292,3.58244); - ssigpTa->SetBinContent(8293,3.66917); - ssigpTa->SetBinContent(8294,3.75575); - ssigpTa->SetBinContent(8295,3.84558); - ssigpTa->SetBinContent(8296,3.94017); - ssigpTa->SetBinContent(8297,4.02911); - ssigpTa->SetBinContent(8298,4.11617); - ssigpTa->SetBinContent(8299,4.14925); - ssigpTa->SetBinContent(8300,4.22269); - ssigpTa->SetBinContent(8301,4.31125); - ssigpTa->SetBinContent(8302,4.41617); - ssigpTa->SetBinContent(8303,4.52131); - ssigpTa->SetBinContent(8304,4.62994); - ssigpTa->SetBinContent(8305,4.74008); - ssigpTa->SetBinContent(8306,4.85556); - ssigpTa->SetBinContent(8307,4.97539); - ssigpTa->SetBinContent(8308,5.09081); - ssigpTa->SetBinContent(8309,5.19742); - ssigpTa->SetBinContent(8310,5.28069); - ssigpTa->SetBinContent(8311,5.39153); - ssigpTa->SetBinContent(8312,5.51531); - ssigpTa->SetBinContent(8313,5.64728); - ssigpTa->SetBinContent(8314,5.78247); - ssigpTa->SetBinContent(8315,5.92172); - ssigpTa->SetBinContent(8316,6.06967); - ssigpTa->SetBinContent(8317,6.22208); - ssigpTa->SetBinContent(8318,6.37581); - ssigpTa->SetBinContent(8319,6.53117); - ssigpTa->SetBinContent(8320,6.68261); - ssigpTa->SetBinContent(8321,6.86631); - ssigpTa->SetBinContent(8322,7.08725); - ssigpTa->SetBinContent(8323,7.38894); - ssigpTa->SetBinContent(8324,7.62242); - ssigpTa->SetBinContent(8325,7.83); - ssigpTa->SetBinContent(8326,8.02067); - ssigpTa->SetBinContent(8327,8.22031); - ssigpTa->SetBinContent(8328,8.42294); - ssigpTa->SetBinContent(8329,8.62303); - ssigpTa->SetBinContent(8330,8.83692); - ssigpTa->SetBinContent(8331,9.05725); - ssigpTa->SetBinContent(8332,9.28367); - ssigpTa->SetBinContent(8333,9.51314); - ssigpTa->SetBinContent(8334,9.74767); - ssigpTa->SetBinContent(8335,10.3677); - ssigpTa->SetBinContent(8336,11.2835); - ssigpTa->SetBinContent(8337,13.1215); - ssigpTa->SetBinContent(8338,13.2219); - ssigpTa->SetBinContent(8339,13.4762); - ssigpTa->SetBinContent(8340,13.6285); - ssigpTa->SetBinContent(8341,13.9891); - ssigpTa->SetBinContent(8342,14.3556); - ssigpTa->SetBinContent(8343,14.7271); - ssigpTa->SetBinContent(8344,15.1041); - ssigpTa->SetBinContent(8345,15.4883); - ssigpTa->SetBinContent(8346,15.6887); - ssigpTa->SetBinContent(8347,15.6471); - ssigpTa->SetBinContent(8348,15.0167); - ssigpTa->SetBinContent(8349,14.9515); - ssigpTa->SetBinContent(8350,15.1324); - ssigpTa->SetBinContent(8351,15.5172); - ssigpTa->SetBinContent(8352,15.9334); - ssigpTa->SetBinContent(8353,16.3661); - ssigpTa->SetBinContent(8354,16.6531); - ssigpTa->SetBinContent(8355,16.7584); - ssigpTa->SetBinContent(8356,16.4016); - ssigpTa->SetBinContent(8357,16.5702); - ssigpTa->SetBinContent(8358,16.8826); - ssigpTa->SetBinContent(8359,17.3338); - ssigpTa->SetBinContent(8360,17.7733); - ssigpTa->SetBinContent(8361,18.2228); - ssigpTa->SetBinContent(8362,18.6809); - ssigpTa->SetBinContent(8363,19.1459); - ssigpTa->SetBinContent(8364,19.6149); - ssigpTa->SetBinContent(8365,20.0923); - ssigpTa->SetBinContent(8366,20.5914); - ssigpTa->SetBinContent(8367,21.1299); - ssigpTa->SetBinContent(8368,21.7053); - ssigpTa->SetBinContent(8369,22.3032); - ssigpTa->SetBinContent(8370,22.9184); - ssigpTa->SetBinContent(8371,23.5472); - ssigpTa->SetBinContent(8372,24.1924); - ssigpTa->SetBinContent(8373,24.8537); - ssigpTa->SetBinContent(8374,25.5289); - ssigpTa->SetBinContent(8375,28.0705); - ssigpTa->SetBinContent(8376,33.0371); - ssigpTa->SetBinContent(8377,43.7748); - ssigpTa->SetBinContent(8378,48.9733); - ssigpTa->SetBinContent(8379,51.8406); - ssigpTa->SetBinContent(8380,52.8903); - ssigpTa->SetBinContent(8381,53.9429); - ssigpTa->SetBinContent(8382,54.9873); - ssigpTa->SetBinContent(8383,56.0245); - ssigpTa->SetBinContent(8384,57.0908); - ssigpTa->SetBinContent(8385,58.2426); - ssigpTa->SetBinContent(8386,59.5212); - ssigpTa->SetBinContent(8387,60.8744); - ssigpTa->SetBinContent(8388,62.2926); - ssigpTa->SetBinContent(8389,63.7491); - ssigpTa->SetBinContent(8390,65.2037); - ssigpTa->SetBinContent(8391,66.6596); - ssigpTa->SetBinContent(8392,68.1395); - ssigpTa->SetBinContent(8393,69.6733); - ssigpTa->SetBinContent(8394,71.2813); - ssigpTa->SetBinContent(8395,72.9439); - ssigpTa->SetBinContent(8396,74.6391); - ssigpTa->SetBinContent(8397,76.3444); - ssigpTa->SetBinContent(8398,78.0602); - ssigpTa->SetBinContent(8399,79.7693); - ssigpTa->SetBinContent(8400,81.3872); - ssigpTa->SetBinContent(8401,82.9257); - ssigpTa->SetBinContent(8402,84.4336); - ssigpTa->SetBinContent(8403,85.9714); - ssigpTa->SetBinContent(8404,87.5436); - ssigpTa->SetBinContent(8405,89.12); - ssigpTa->SetBinContent(8406,90.7194); - ssigpTa->SetBinContent(8407,92.4425); - ssigpTa->SetBinContent(8408,94.4628); - ssigpTa->SetBinContent(8409,96.6497); - ssigpTa->SetBinContent(8410,98.9172); - ssigpTa->SetBinContent(8411,101.211); - ssigpTa->SetBinContent(8412,103.547); - ssigpTa->SetBinContent(8413,105.999); - ssigpTa->SetBinContent(8414,108.68); - ssigpTa->SetBinContent(8415,111.545); - ssigpTa->SetBinContent(8416,114.552); - ssigpTa->SetBinContent(8417,117.602); - ssigpTa->SetBinContent(8418,120.565); - ssigpTa->SetBinContent(8419,123.382); - ssigpTa->SetBinContent(8420,126.081); - ssigpTa->SetBinContent(8421,128.684); - ssigpTa->SetBinContent(8422,131.213); - ssigpTa->SetBinContent(8423,133.736); - ssigpTa->SetBinContent(8424,136.378); - ssigpTa->SetBinContent(8425,139.279); - ssigpTa->SetBinContent(8426,142.39); - ssigpTa->SetBinContent(8427,145.54); - ssigpTa->SetBinContent(8428,148.656); - ssigpTa->SetBinContent(8429,151.719); - ssigpTa->SetBinContent(8430,154.72); - ssigpTa->SetBinContent(8431,157.657); - ssigpTa->SetBinContent(8432,160.529); - ssigpTa->SetBinContent(8433,163.302); - ssigpTa->SetBinContent(8434,166.045); - ssigpTa->SetBinContent(8435,168.987); - ssigpTa->SetBinContent(8436,172.406); - ssigpTa->SetBinContent(8437,176.401); - ssigpTa->SetBinContent(8438,180.761); - ssigpTa->SetBinContent(8439,185.401); - ssigpTa->SetBinContent(8440,196.598); - ssigpTa->SetBinContent(8441,216.18); - ssigpTa->SetBinContent(8442,256.185); - ssigpTa->SetBinContent(8443,276.793); - ssigpTa->SetBinContent(8444,289.575); - ssigpTa->SetBinContent(8445,296.458); - ssigpTa->SetBinContent(8446,304.181); - ssigpTa->SetBinContent(8447,312.614); - ssigpTa->SetBinContent(8448,321.651); - ssigpTa->SetBinContent(8449,331.132); - ssigpTa->SetBinContent(8450,340.817); - ssigpTa->SetBinContent(8451,350.367); - ssigpTa->SetBinContent(8452,359.912); - ssigpTa->SetBinContent(8453,369.712); - ssigpTa->SetBinContent(8454,380.257); - ssigpTa->SetBinContent(8455,391.516); - ssigpTa->SetBinContent(8456,403.178); - ssigpTa->SetBinContent(8457,415.043); - ssigpTa->SetBinContent(8458,426.708); - ssigpTa->SetBinContent(8459,452.886); - ssigpTa->SetBinContent(8460,469.388); - ssigpTa->SetBinContent(8461,567.76); - ssigpTa->SetEntries(7620); - - init = true; - } - - double percent = ssigpTa->Interpolate(eta, ptGeV); - return percent; // This is relative, so we don't convert it. -} - - -// Fractional resolution in % -double UpgradePerformance::ITKPercentageresol_LoIfix(double ptMeV, double eta){ - double ptGeV = ptMeV/1000.; - static TH2D *ssigpTa; - static bool init = false; - - if (fabs(eta)>2.7) return 0.; - - - if(!init){ - Double_t xAxis1[273] = {0, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.075, 0.085, 0.095, 0.105, 0.115, 0.125, 0.135, 0.145, 0.155, 0.165, 0.175, 0.185, 0.195, 0.205, 0.215, 0.225, 0.235, 0.245, 0.255, 0.265, 0.275, 0.285, 0.295, 0.305, 0.315, 0.325, 0.335, 0.345, 0.355, 0.365, 0.375, 0.385, 0.395, 0.405, 0.415, 0.425, 0.435, 0.445, 0.455, 0.465, 0.475, 0.485, 0.495, 0.505, 0.515, 0.525, 0.535, 0.545, 0.555, 0.565, 0.575, 0.585, 0.595, 0.605, 0.615, 0.625, 0.635, 0.645, 0.655, 0.665, 0.675, 0.685, 0.695, 0.705, 0.715, 0.725, 0.735, 0.745, 0.755, 0.765, 0.775, 0.785, 0.795, 0.805, 0.815, 0.825, 0.835, 0.845, 0.855, 0.865, 0.875, 0.885, 0.895, 0.905, 0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005, 1.015, 1.025, 1.035, 1.045, 1.055, 1.065, 1.075, 1.085, 1.095, 1.105, 1.115, 1.125, 1.135, 1.145, 1.155, 1.165, 1.175, 1.185, 1.195, 1.205, 1.215, 1.225, 1.235, 1.245, 1.255, 1.265, 1.275, 1.285, 1.295, 1.305, 1.315, 1.325, 1.335, 1.345, 1.355, 1.365, 1.375, 1.385, 1.395, 1.405, 1.415, 1.425, 1.435, 1.445, 1.455, 1.465, 1.475, 1.485, 1.495, 1.505, 1.515, 1.525, 1.535, 1.545, 1.555, 1.565, 1.575, 1.585, 1.595, 1.605, 1.615, 1.625, 1.635, 1.645, 1.655, 1.665, 1.675, 1.685, 1.695, 1.705, 1.715, 1.725, 1.735, 1.745, 1.755, 1.765, 1.775, 1.785, 1.795, 1.805, 1.815, 1.825, 1.835, 1.845, 1.855, 1.865, 1.875, 1.885, 1.895, 1.905, 1.915, 1.925, 1.935, 1.945, 1.955, 1.965, 1.975, 1.985, 1.995, 2.005, 2.015, 2.025, 2.035, 2.045, 2.055, 2.065, 2.075, 2.085, 2.095, 2.105, 2.115, 2.125, 2.135, 2.145, 2.155, 2.165, 2.175, 2.185, 2.195, 2.205, 2.215, 2.225, 2.235, 2.245, 2.255, 2.265, 2.275, 2.285, 2.295, 2.305, 2.315, 2.325, 2.335, 2.345, 2.355, 2.365, 2.375, 2.385, 2.395, 2.405, 2.415, 2.425, 2.435, 2.445, 2.455, 2.465, 2.475, 2.485, 2.495, 2.505, 2.515, 2.525, 2.535, 2.545, 2.555, 2.565, 2.575, 2.585, 2.595, 2.605, 2.615, 2.625, 2.635, 2.645, 2.655, 2.665, 2.675, 2.685, 2.695, 2.705, 2.7371}; - Double_t yAxis1[21] = {0, 0.1, 0.35, 0.75, 1.5, 3.5, 7.5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 150, 350, 750, 4000, 7070}; - - ssigpTa = new TH2D("ssigpTa","ssigpTa",272, xAxis1,20, yAxis1); - ssigpTa->SetDirectory(0); - ssigpTa->SetBinContent(275,0.00382782); - ssigpTa->SetBinContent(276,0.00409805); - ssigpTa->SetBinContent(277,0.00387075); - ssigpTa->SetBinContent(278,0.00387132); - ssigpTa->SetBinContent(279,0.00387212); - ssigpTa->SetBinContent(280,0.00387313); - ssigpTa->SetBinContent(281,0.00387434); - ssigpTa->SetBinContent(282,0.00387581); - ssigpTa->SetBinContent(283,0.0038775); - ssigpTa->SetBinContent(284,0.00387939); - ssigpTa->SetBinContent(285,0.00388154); - ssigpTa->SetBinContent(286,0.00388393); - ssigpTa->SetBinContent(287,0.00388651); - ssigpTa->SetBinContent(288,0.0038893); - ssigpTa->SetBinContent(289,0.00389234); - ssigpTa->SetBinContent(290,0.00389562); - ssigpTa->SetBinContent(291,0.00389912); - ssigpTa->SetBinContent(292,0.00390284); - ssigpTa->SetBinContent(293,0.00390678); - ssigpTa->SetBinContent(294,0.00391094); - ssigpTa->SetBinContent(295,0.00391533); - ssigpTa->SetBinContent(296,0.00391996); - ssigpTa->SetBinContent(297,0.00392481); - ssigpTa->SetBinContent(298,0.00392988); - ssigpTa->SetBinContent(299,0.00393519); - ssigpTa->SetBinContent(300,0.0039407); - ssigpTa->SetBinContent(301,0.00394647); - ssigpTa->SetBinContent(302,0.00395244); - ssigpTa->SetBinContent(303,0.00395864); - ssigpTa->SetBinContent(304,0.00396507); - ssigpTa->SetBinContent(305,0.00397174); - ssigpTa->SetBinContent(306,0.00397863); - ssigpTa->SetBinContent(307,0.00398577); - ssigpTa->SetBinContent(308,0.00399311); - ssigpTa->SetBinContent(309,0.00400068); - ssigpTa->SetBinContent(310,0.00400848); - ssigpTa->SetBinContent(311,0.00401651); - ssigpTa->SetBinContent(312,0.00402479); - ssigpTa->SetBinContent(313,0.00403328); - ssigpTa->SetBinContent(314,0.00404202); - ssigpTa->SetBinContent(315,0.00405098); - ssigpTa->SetBinContent(316,0.00406018); - ssigpTa->SetBinContent(317,0.00406958); - ssigpTa->SetBinContent(318,0.00407926); - ssigpTa->SetBinContent(319,0.00408917); - ssigpTa->SetBinContent(320,0.0040993); - ssigpTa->SetBinContent(321,0.00410964); - ssigpTa->SetBinContent(322,0.00412023); - ssigpTa->SetBinContent(323,0.00413107); - ssigpTa->SetBinContent(324,0.00414214); - ssigpTa->SetBinContent(325,0.00415344); - ssigpTa->SetBinContent(326,0.00416497); - ssigpTa->SetBinContent(327,0.00417678); - ssigpTa->SetBinContent(328,0.00418881); - ssigpTa->SetBinContent(329,0.00420107); - ssigpTa->SetBinContent(330,0.00421356); - ssigpTa->SetBinContent(331,0.00422628); - ssigpTa->SetBinContent(332,0.00423927); - ssigpTa->SetBinContent(333,0.00425252); - ssigpTa->SetBinContent(334,0.00426599); - ssigpTa->SetBinContent(335,0.00427974); - ssigpTa->SetBinContent(336,0.00429372); - ssigpTa->SetBinContent(337,0.00430794); - ssigpTa->SetBinContent(338,0.0043224); - ssigpTa->SetBinContent(339,0.00433713); - ssigpTa->SetBinContent(340,0.00435212); - ssigpTa->SetBinContent(341,0.00436735); - ssigpTa->SetBinContent(342,0.00438286); - ssigpTa->SetBinContent(343,0.00439862); - ssigpTa->SetBinContent(344,0.00441463); - ssigpTa->SetBinContent(345,0.00443092); - ssigpTa->SetBinContent(346,0.00444746); - ssigpTa->SetBinContent(347,0.00446425); - ssigpTa->SetBinContent(348,0.00448132); - ssigpTa->SetBinContent(349,0.00449866); - ssigpTa->SetBinContent(350,0.00451627); - ssigpTa->SetBinContent(351,0.00453416); - ssigpTa->SetBinContent(352,0.00455234); - ssigpTa->SetBinContent(353,0.00457076); - ssigpTa->SetBinContent(354,0.00458952); - ssigpTa->SetBinContent(355,0.0046085); - ssigpTa->SetBinContent(356,0.00462781); - ssigpTa->SetBinContent(357,0.00464741); - ssigpTa->SetBinContent(358,0.00466729); - ssigpTa->SetBinContent(359,0.00468749); - ssigpTa->SetBinContent(360,0.00470796); - ssigpTa->SetBinContent(361,0.00472878); - ssigpTa->SetBinContent(362,0.00474987); - ssigpTa->SetBinContent(363,0.0047713); - ssigpTa->SetBinContent(364,0.00479303); - ssigpTa->SetBinContent(365,0.00481508); - ssigpTa->SetBinContent(366,0.00483746); - ssigpTa->SetBinContent(367,0.00486014); - ssigpTa->SetBinContent(368,0.00488321); - ssigpTa->SetBinContent(369,0.00490656); - ssigpTa->SetBinContent(370,0.00493028); - ssigpTa->SetBinContent(371,0.00495437); - ssigpTa->SetBinContent(372,0.00497882); - ssigpTa->SetBinContent(373,0.00500364); - ssigpTa->SetBinContent(374,0.0050288); - ssigpTa->SetBinContent(375,0.00505435); - ssigpTa->SetBinContent(376,0.00508027); - ssigpTa->SetBinContent(377,0.00510659); - ssigpTa->SetBinContent(378,0.00513331); - ssigpTa->SetBinContent(379,0.00521016); - ssigpTa->SetBinContent(380,0.00531242); - ssigpTa->SetBinContent(381,0.0055079); - ssigpTa->SetBinContent(382,0.00571333); - ssigpTa->SetBinContent(383,0.00586047); - ssigpTa->SetBinContent(384,0.00589078); - ssigpTa->SetBinContent(385,0.00592148); - ssigpTa->SetBinContent(386,0.00595259); - ssigpTa->SetBinContent(387,0.00598416); - ssigpTa->SetBinContent(388,0.00601613); - ssigpTa->SetBinContent(389,0.00604855); - ssigpTa->SetBinContent(390,0.00608142); - ssigpTa->SetBinContent(391,0.00611477); - ssigpTa->SetBinContent(392,0.00606422); - ssigpTa->SetBinContent(393,0.00595209); - ssigpTa->SetBinContent(394,0.00588726); - ssigpTa->SetBinContent(395,0.00593802); - ssigpTa->SetBinContent(396,0.00602229); - ssigpTa->SetBinContent(397,0.00610598); - ssigpTa->SetBinContent(398,0.00618897); - ssigpTa->SetBinContent(399,0.00627133); - ssigpTa->SetBinContent(400,0.00635307); - ssigpTa->SetBinContent(401,0.00629745); - ssigpTa->SetBinContent(402,0.00618147); - ssigpTa->SetBinContent(403,0.0059658); - ssigpTa->SetBinContent(404,0.00580556); - ssigpTa->SetBinContent(405,0.00573848); - ssigpTa->SetBinContent(406,0.00585468); - ssigpTa->SetBinContent(407,0.00597174); - ssigpTa->SetBinContent(408,0.00609028); - ssigpTa->SetBinContent(409,0.00621034); - ssigpTa->SetBinContent(410,0.00633098); - ssigpTa->SetBinContent(411,0.00645171); - ssigpTa->SetBinContent(412,0.00644008); - ssigpTa->SetBinContent(413,0.00635753); - ssigpTa->SetBinContent(414,0.00633787); - ssigpTa->SetBinContent(415,0.00644857); - ssigpTa->SetBinContent(416,0.00655986); - ssigpTa->SetBinContent(417,0.00667019); - ssigpTa->SetBinContent(418,0.00678004); - ssigpTa->SetBinContent(419,0.00689042); - ssigpTa->SetBinContent(420,0.00679079); - ssigpTa->SetBinContent(421,0.00658744); - ssigpTa->SetBinContent(422,0.00649454); - ssigpTa->SetBinContent(423,0.00650313); - ssigpTa->SetBinContent(424,0.00645118); - ssigpTa->SetBinContent(425,0.0064543); - ssigpTa->SetBinContent(426,0.00656751); - ssigpTa->SetBinContent(427,0.00668111); - ssigpTa->SetBinContent(428,0.00679511); - ssigpTa->SetBinContent(429,0.00691075); - ssigpTa->SetBinContent(430,0.00702742); - ssigpTa->SetBinContent(431,0.00714473); - ssigpTa->SetBinContent(432,0.0072624); - ssigpTa->SetBinContent(433,0.00738087); - ssigpTa->SetBinContent(434,0.00749966); - ssigpTa->SetBinContent(435,0.00753616); - ssigpTa->SetBinContent(436,0.00752502); - ssigpTa->SetBinContent(437,0.00755896); - ssigpTa->SetBinContent(438,0.00742836); - ssigpTa->SetBinContent(439,0.00717596); - ssigpTa->SetBinContent(440,0.00705018); - ssigpTa->SetBinContent(441,0.00717507); - ssigpTa->SetBinContent(442,0.00730402); - ssigpTa->SetBinContent(443,0.00743333); - ssigpTa->SetBinContent(444,0.00756337); - ssigpTa->SetBinContent(445,0.00769505); - ssigpTa->SetBinContent(446,0.00782649); - ssigpTa->SetBinContent(447,0.00795322); - ssigpTa->SetBinContent(448,0.00808562); - ssigpTa->SetBinContent(449,0.00825337); - ssigpTa->SetBinContent(450,0.00843649); - ssigpTa->SetBinContent(451,0.00860362); - ssigpTa->SetBinContent(452,0.00873772); - ssigpTa->SetBinContent(453,0.00850923); - ssigpTa->SetBinContent(454,0.00809174); - ssigpTa->SetBinContent(455,0.00783707); - ssigpTa->SetBinContent(456,0.0079325); - ssigpTa->SetBinContent(457,0.00802488); - ssigpTa->SetBinContent(458,0.0081143); - ssigpTa->SetBinContent(459,0.00816844); - ssigpTa->SetBinContent(460,0.00821514); - ssigpTa->SetBinContent(461,0.00789541); - ssigpTa->SetBinContent(462,0.00742346); - ssigpTa->SetBinContent(463,0.0071435); - ssigpTa->SetBinContent(464,0.00724445); - ssigpTa->SetBinContent(465,0.00734877); - ssigpTa->SetBinContent(466,0.0074562); - ssigpTa->SetBinContent(467,0.0079088); - ssigpTa->SetBinContent(468,0.00853573); - ssigpTa->SetBinContent(469,0.00899717); - ssigpTa->SetBinContent(470,0.00912217); - ssigpTa->SetBinContent(471,0.00925395); - ssigpTa->SetBinContent(472,0.00939054); - ssigpTa->SetBinContent(473,0.00952517); - ssigpTa->SetBinContent(474,0.00965713); - ssigpTa->SetBinContent(475,0.00978903); - ssigpTa->SetBinContent(476,0.00967237); - ssigpTa->SetBinContent(477,0.00942958); - ssigpTa->SetBinContent(478,0.00930904); - ssigpTa->SetBinContent(479,0.00943541); - ssigpTa->SetBinContent(480,0.00987267); - ssigpTa->SetBinContent(481,0.0104725); - ssigpTa->SetBinContent(482,0.0109316); - ssigpTa->SetBinContent(483,0.0110924); - ssigpTa->SetBinContent(484,0.0112563); - ssigpTa->SetBinContent(485,0.0114147); - ssigpTa->SetBinContent(486,0.0115712); - ssigpTa->SetBinContent(487,0.0114252); - ssigpTa->SetBinContent(488,0.0111246); - ssigpTa->SetBinContent(489,0.0109768); - ssigpTa->SetBinContent(490,0.0111285); - ssigpTa->SetBinContent(491,0.0116403); - ssigpTa->SetBinContent(492,0.0123414); - ssigpTa->SetBinContent(493,0.0128735); - ssigpTa->SetBinContent(494,0.0130474); - ssigpTa->SetBinContent(495,0.0132213); - ssigpTa->SetBinContent(496,0.0134029); - ssigpTa->SetBinContent(497,0.0135987); - ssigpTa->SetBinContent(498,0.0137991); - ssigpTa->SetBinContent(499,0.0131813); - ssigpTa->SetBinContent(500,0.0121344); - ssigpTa->SetBinContent(501,0.0114808); - ssigpTa->SetBinContent(502,0.0118932); - ssigpTa->SetBinContent(503,0.012456); - ssigpTa->SetBinContent(504,0.0129046); - ssigpTa->SetBinContent(505,0.0130985); - ssigpTa->SetBinContent(506,0.0132816); - ssigpTa->SetBinContent(507,0.0134633); - ssigpTa->SetBinContent(508,0.0136496); - ssigpTa->SetBinContent(509,0.0138305); - ssigpTa->SetBinContent(510,0.0140007); - ssigpTa->SetBinContent(511,0.0140496); - ssigpTa->SetBinContent(512,0.0143241); - ssigpTa->SetBinContent(513,0.0148419); - ssigpTa->SetBinContent(514,0.0153527); - ssigpTa->SetBinContent(515,0.015581); - ssigpTa->SetBinContent(516,0.015787); - ssigpTa->SetBinContent(517,0.015982); - ssigpTa->SetBinContent(518,0.0161925); - ssigpTa->SetBinContent(519,0.016424); - ssigpTa->SetBinContent(520,0.016666); - ssigpTa->SetBinContent(521,0.0166058); - ssigpTa->SetBinContent(522,0.0164177); - ssigpTa->SetBinContent(523,0.0163843); - ssigpTa->SetBinContent(524,0.0166434); - ssigpTa->SetBinContent(525,0.0168702); - ssigpTa->SetBinContent(526,0.0171106); - ssigpTa->SetBinContent(527,0.0173598); - ssigpTa->SetBinContent(528,0.0176061); - ssigpTa->SetBinContent(529,0.0178493); - ssigpTa->SetBinContent(530,0.0181099); - ssigpTa->SetBinContent(531,0.0183976); - ssigpTa->SetBinContent(532,0.018699); - ssigpTa->SetBinContent(533,0.0189965); - ssigpTa->SetBinContent(534,0.0192877); - ssigpTa->SetBinContent(535,0.0195609); - ssigpTa->SetBinContent(536,0.0197934); - ssigpTa->SetBinContent(537,0.020014); - ssigpTa->SetBinContent(538,0.0202832); - ssigpTa->SetBinContent(539,0.0205993); - ssigpTa->SetBinContent(540,0.0205291); - ssigpTa->SetBinContent(541,0.0202446); - ssigpTa->SetBinContent(542,0.0201367); - ssigpTa->SetBinContent(543,0.0204468); - ssigpTa->SetBinContent(544,0.0208142); - ssigpTa->SetBinContent(545,0.0224464); - ssigpTa->SetBinContent(546,0.0211893); - ssigpTa->SetBinContent(549,0.00761233); - ssigpTa->SetBinContent(550,0.00735792); - ssigpTa->SetBinContent(551,0.00746668); - ssigpTa->SetBinContent(552,0.00746783); - ssigpTa->SetBinContent(553,0.00746935); - ssigpTa->SetBinContent(554,0.00747125); - ssigpTa->SetBinContent(555,0.00747362); - ssigpTa->SetBinContent(556,0.00747644); - ssigpTa->SetBinContent(557,0.00747968); - ssigpTa->SetBinContent(558,0.00748337); - ssigpTa->SetBinContent(559,0.00748751); - ssigpTa->SetBinContent(560,0.0074921); - ssigpTa->SetBinContent(561,0.0074971); - ssigpTa->SetBinContent(562,0.00750249); - ssigpTa->SetBinContent(563,0.00750836); - ssigpTa->SetBinContent(564,0.00751467); - ssigpTa->SetBinContent(565,0.00752142); - ssigpTa->SetBinContent(566,0.00752856); - ssigpTa->SetBinContent(567,0.00753618); - ssigpTa->SetBinContent(568,0.00754416); - ssigpTa->SetBinContent(569,0.00755267); - ssigpTa->SetBinContent(570,0.00756157); - ssigpTa->SetBinContent(571,0.00757094); - ssigpTa->SetBinContent(572,0.00758073); - ssigpTa->SetBinContent(573,0.0075909); - ssigpTa->SetBinContent(574,0.00760158); - ssigpTa->SetBinContent(575,0.00761265); - ssigpTa->SetBinContent(576,0.00762423); - ssigpTa->SetBinContent(577,0.00763619); - ssigpTa->SetBinContent(578,0.00764857); - ssigpTa->SetBinContent(579,0.0076614); - ssigpTa->SetBinContent(580,0.00767471); - ssigpTa->SetBinContent(581,0.00768843); - ssigpTa->SetBinContent(582,0.00770263); - ssigpTa->SetBinContent(583,0.00771726); - ssigpTa->SetBinContent(584,0.00773228); - ssigpTa->SetBinContent(585,0.00774777); - ssigpTa->SetBinContent(586,0.00776372); - ssigpTa->SetBinContent(587,0.00778007); - ssigpTa->SetBinContent(588,0.00779692); - ssigpTa->SetBinContent(589,0.00781423); - ssigpTa->SetBinContent(590,0.00783193); - ssigpTa->SetBinContent(591,0.00785015); - ssigpTa->SetBinContent(592,0.00786874); - ssigpTa->SetBinContent(593,0.00788788); - ssigpTa->SetBinContent(594,0.0079074); - ssigpTa->SetBinContent(595,0.00792732); - ssigpTa->SetBinContent(596,0.00794776); - ssigpTa->SetBinContent(597,0.00796863); - ssigpTa->SetBinContent(598,0.00799); - ssigpTa->SetBinContent(599,0.00801178); - ssigpTa->SetBinContent(600,0.00803402); - ssigpTa->SetBinContent(601,0.00805678); - ssigpTa->SetBinContent(602,0.00808); - ssigpTa->SetBinContent(603,0.00810362); - ssigpTa->SetBinContent(604,0.00812768); - ssigpTa->SetBinContent(605,0.00815223); - ssigpTa->SetBinContent(606,0.00817725); - ssigpTa->SetBinContent(607,0.00820277); - ssigpTa->SetBinContent(608,0.0082288); - ssigpTa->SetBinContent(609,0.00825527); - ssigpTa->SetBinContent(610,0.00828225); - ssigpTa->SetBinContent(611,0.00830964); - ssigpTa->SetBinContent(612,0.00833758); - ssigpTa->SetBinContent(613,0.00836592); - ssigpTa->SetBinContent(614,0.00839484); - ssigpTa->SetBinContent(615,0.00842422); - ssigpTa->SetBinContent(616,0.00845412); - ssigpTa->SetBinContent(617,0.00848449); - ssigpTa->SetBinContent(618,0.00851538); - ssigpTa->SetBinContent(619,0.00854677); - ssigpTa->SetBinContent(620,0.00857864); - ssigpTa->SetBinContent(621,0.00861107); - ssigpTa->SetBinContent(622,0.00864393); - ssigpTa->SetBinContent(623,0.00867737); - ssigpTa->SetBinContent(624,0.00871131); - ssigpTa->SetBinContent(625,0.00874582); - ssigpTa->SetBinContent(626,0.00878084); - ssigpTa->SetBinContent(627,0.00881643); - ssigpTa->SetBinContent(628,0.00885249); - ssigpTa->SetBinContent(629,0.00888917); - ssigpTa->SetBinContent(630,0.00892633); - ssigpTa->SetBinContent(631,0.00896414); - ssigpTa->SetBinContent(632,0.00900251); - ssigpTa->SetBinContent(633,0.00904137); - ssigpTa->SetBinContent(634,0.00908092); - ssigpTa->SetBinContent(635,0.00912097); - ssigpTa->SetBinContent(636,0.00916166); - ssigpTa->SetBinContent(637,0.00920294); - ssigpTa->SetBinContent(638,0.00924487); - ssigpTa->SetBinContent(639,0.00928739); - ssigpTa->SetBinContent(640,0.00933048); - ssigpTa->SetBinContent(641,0.00937425); - ssigpTa->SetBinContent(642,0.00941865); - ssigpTa->SetBinContent(643,0.00946372); - ssigpTa->SetBinContent(644,0.00950942); - ssigpTa->SetBinContent(645,0.00955584); - ssigpTa->SetBinContent(646,0.00960299); - ssigpTa->SetBinContent(647,0.00965078); - ssigpTa->SetBinContent(648,0.00969934); - ssigpTa->SetBinContent(649,0.00974853); - ssigpTa->SetBinContent(650,0.00979853); - ssigpTa->SetBinContent(651,0.00984923); - ssigpTa->SetBinContent(652,0.00991942); - ssigpTa->SetBinContent(653,0.0100463); - ssigpTa->SetBinContent(654,0.0102927); - ssigpTa->SetBinContent(655,0.0105985); - ssigpTa->SetBinContent(656,0.0110262); - ssigpTa->SetBinContent(657,0.0112599); - ssigpTa->SetBinContent(658,0.0113623); - ssigpTa->SetBinContent(659,0.0114215); - ssigpTa->SetBinContent(660,0.0114815); - ssigpTa->SetBinContent(661,0.0115423); - ssigpTa->SetBinContent(662,0.0116039); - ssigpTa->SetBinContent(663,0.0116665); - ssigpTa->SetBinContent(664,0.0117298); - ssigpTa->SetBinContent(665,0.0117624); - ssigpTa->SetBinContent(666,0.0116934); - ssigpTa->SetBinContent(667,0.0114815); - ssigpTa->SetBinContent(668,0.0113893); - ssigpTa->SetBinContent(669,0.0114647); - ssigpTa->SetBinContent(670,0.0116145); - ssigpTa->SetBinContent(671,0.0117759); - ssigpTa->SetBinContent(672,0.011936); - ssigpTa->SetBinContent(673,0.0120949); - ssigpTa->SetBinContent(674,0.0122013); - ssigpTa->SetBinContent(675,0.0121555); - ssigpTa->SetBinContent(676,0.0118488); - ssigpTa->SetBinContent(677,0.0115691); - ssigpTa->SetBinContent(678,0.0111866); - ssigpTa->SetBinContent(679,0.0111347); - ssigpTa->SetBinContent(680,0.0112907); - ssigpTa->SetBinContent(681,0.0115168); - ssigpTa->SetBinContent(682,0.0117455); - ssigpTa->SetBinContent(683,0.0119772); - ssigpTa->SetBinContent(684,0.0122098); - ssigpTa->SetBinContent(685,0.012393); - ssigpTa->SetBinContent(686,0.0124245); - ssigpTa->SetBinContent(687,0.0122501); - ssigpTa->SetBinContent(688,0.0122673); - ssigpTa->SetBinContent(689,0.0124324); - ssigpTa->SetBinContent(690,0.0126468); - ssigpTa->SetBinContent(691,0.0128601); - ssigpTa->SetBinContent(692,0.0130722); - ssigpTa->SetBinContent(693,0.0132066); - ssigpTa->SetBinContent(694,0.0131045); - ssigpTa->SetBinContent(695,0.0126895); - ssigpTa->SetBinContent(696,0.0125575); - ssigpTa->SetBinContent(697,0.0125381); - ssigpTa->SetBinContent(698,0.012425); - ssigpTa->SetBinContent(699,0.0124756); - ssigpTa->SetBinContent(700,0.012653); - ssigpTa->SetBinContent(701,0.0128719); - ssigpTa->SetBinContent(702,0.0130926); - ssigpTa->SetBinContent(703,0.0133151); - ssigpTa->SetBinContent(704,0.0135406); - ssigpTa->SetBinContent(705,0.0137666); - ssigpTa->SetBinContent(706,0.0139939); - ssigpTa->SetBinContent(707,0.0142225); - ssigpTa->SetBinContent(708,0.0144206); - ssigpTa->SetBinContent(709,0.0145181); - ssigpTa->SetBinContent(710,0.0144852); - ssigpTa->SetBinContent(711,0.0144857); - ssigpTa->SetBinContent(712,0.0143098); - ssigpTa->SetBinContent(713,0.0137976); - ssigpTa->SetBinContent(714,0.0136608); - ssigpTa->SetBinContent(715,0.0138098); - ssigpTa->SetBinContent(716,0.0140564); - ssigpTa->SetBinContent(717,0.0143067); - ssigpTa->SetBinContent(718,0.0145568); - ssigpTa->SetBinContent(719,0.0148102); - ssigpTa->SetBinContent(720,0.0150588); - ssigpTa->SetBinContent(721,0.0153007); - ssigpTa->SetBinContent(722,0.0155633); - ssigpTa->SetBinContent(723,0.0158719); - ssigpTa->SetBinContent(724,0.0162297); - ssigpTa->SetBinContent(725,0.0165377); - ssigpTa->SetBinContent(726,0.0166738); - ssigpTa->SetBinContent(727,0.0163887); - ssigpTa->SetBinContent(728,0.0155485); - ssigpTa->SetBinContent(729,0.0152158); - ssigpTa->SetBinContent(730,0.0152684); - ssigpTa->SetBinContent(731,0.0154466); - ssigpTa->SetBinContent(732,0.0156064); - ssigpTa->SetBinContent(733,0.0157384); - ssigpTa->SetBinContent(734,0.0156846); - ssigpTa->SetBinContent(735,0.0152559); - ssigpTa->SetBinContent(736,0.014289); - ssigpTa->SetBinContent(737,0.0139107); - ssigpTa->SetBinContent(738,0.0139637); - ssigpTa->SetBinContent(739,0.0141638); - ssigpTa->SetBinContent(740,0.0145002); - ssigpTa->SetBinContent(741,0.0152245); - ssigpTa->SetBinContent(742,0.0164696); - ssigpTa->SetBinContent(743,0.0172128); - ssigpTa->SetBinContent(744,0.0175811); - ssigpTa->SetBinContent(745,0.0178349); - ssigpTa->SetBinContent(746,0.0180956); - ssigpTa->SetBinContent(747,0.0183547); - ssigpTa->SetBinContent(748,0.0186096); - ssigpTa->SetBinContent(749,0.0187705); - ssigpTa->SetBinContent(750,0.0186506); - ssigpTa->SetBinContent(751,0.0181536); - ssigpTa->SetBinContent(752,0.018027); - ssigpTa->SetBinContent(753,0.0182936); - ssigpTa->SetBinContent(754,0.0190068); - ssigpTa->SetBinContent(755,0.0202004); - ssigpTa->SetBinContent(756,0.0209513); - ssigpTa->SetBinContent(757,0.0213765); - ssigpTa->SetBinContent(758,0.0216879); - ssigpTa->SetBinContent(759,0.0219948); - ssigpTa->SetBinContent(760,0.0221831); - ssigpTa->SetBinContent(761,0.0220277); - ssigpTa->SetBinContent(762,0.0214168); - ssigpTa->SetBinContent(763,0.0212551); - ssigpTa->SetBinContent(764,0.0215723); - ssigpTa->SetBinContent(765,0.0224066); - ssigpTa->SetBinContent(766,0.0237972); - ssigpTa->SetBinContent(767,0.0246693); - ssigpTa->SetBinContent(768,0.025138); - ssigpTa->SetBinContent(769,0.0254757); - ssigpTa->SetBinContent(770,0.0258284); - ssigpTa->SetBinContent(771,0.0262007); - ssigpTa->SetBinContent(772,0.026282); - ssigpTa->SetBinContent(773,0.0254282); - ssigpTa->SetBinContent(774,0.0233299); - ssigpTa->SetBinContent(775,0.0225118); - ssigpTa->SetBinContent(776,0.0229058); - ssigpTa->SetBinContent(777,0.0240162); - ssigpTa->SetBinContent(778,0.0247717); - ssigpTa->SetBinContent(779,0.0252383); - ssigpTa->SetBinContent(780,0.0255932); - ssigpTa->SetBinContent(781,0.0259456); - ssigpTa->SetBinContent(782,0.0263026); - ssigpTa->SetBinContent(783,0.0266497); - ssigpTa->SetBinContent(784,0.0269359); - ssigpTa->SetBinContent(785,0.0271777); - ssigpTa->SetBinContent(786,0.027586); - ssigpTa->SetBinContent(787,0.0286488); - ssigpTa->SetBinContent(788,0.0294716); - ssigpTa->SetBinContent(789,0.0300103); - ssigpTa->SetBinContent(790,0.0304124); - ssigpTa->SetBinContent(791,0.0307957); - ssigpTa->SetBinContent(792,0.0312049); - ssigpTa->SetBinContent(793,0.0316503); - ssigpTa->SetBinContent(794,0.031997); - ssigpTa->SetBinContent(795,0.0320272); - ssigpTa->SetBinContent(796,0.0316315); - ssigpTa->SetBinContent(797,0.0317045); - ssigpTa->SetBinContent(798,0.032069); - ssigpTa->SetBinContent(799,0.0325069); - ssigpTa->SetBinContent(800,0.0329568); - ssigpTa->SetBinContent(801,0.033435); - ssigpTa->SetBinContent(802,0.0339114); - ssigpTa->SetBinContent(803,0.0343862); - ssigpTa->SetBinContent(804,0.0348902); - ssigpTa->SetBinContent(805,0.0354422); - ssigpTa->SetBinContent(806,0.0360163); - ssigpTa->SetBinContent(807,0.0365889); - ssigpTa->SetBinContent(808,0.0371458); - ssigpTa->SetBinContent(809,0.0376671); - ssigpTa->SetBinContent(810,0.0381192); - ssigpTa->SetBinContent(811,0.0385437); - ssigpTa->SetBinContent(812,0.0390613); - ssigpTa->SetBinContent(813,0.0395057); - ssigpTa->SetBinContent(814,0.0395424); - ssigpTa->SetBinContent(815,0.0389771); - ssigpTa->SetBinContent(816,0.0389537); - ssigpTa->SetBinContent(817,0.0394254); - ssigpTa->SetBinContent(818,0.0401159); - ssigpTa->SetBinContent(819,0.0401758); - ssigpTa->SetBinContent(820,0.0420796); - ssigpTa->SetBinContent(823,0.00940978); - ssigpTa->SetBinContent(824,0.00954779); - ssigpTa->SetBinContent(825,0.0095651); - ssigpTa->SetBinContent(826,0.00956651); - ssigpTa->SetBinContent(827,0.00956845); - ssigpTa->SetBinContent(828,0.00957091); - ssigpTa->SetBinContent(829,0.00957384); - ssigpTa->SetBinContent(830,0.00957746); - ssigpTa->SetBinContent(831,0.00958162); - ssigpTa->SetBinContent(832,0.00958636); - ssigpTa->SetBinContent(833,0.00959163); - ssigpTa->SetBinContent(834,0.00959757); - ssigpTa->SetBinContent(835,0.00960401); - ssigpTa->SetBinContent(836,0.0096109); - ssigpTa->SetBinContent(837,0.00961839); - ssigpTa->SetBinContent(838,0.00962644); - ssigpTa->SetBinContent(839,0.00963504); - ssigpTa->SetBinContent(840,0.00964425); - ssigpTa->SetBinContent(841,0.0096539); - ssigpTa->SetBinContent(842,0.0096642); - ssigpTa->SetBinContent(843,0.00967502); - ssigpTa->SetBinContent(844,0.00968649); - ssigpTa->SetBinContent(845,0.00969842); - ssigpTa->SetBinContent(846,0.00971088); - ssigpTa->SetBinContent(847,0.00972396); - ssigpTa->SetBinContent(848,0.0097375); - ssigpTa->SetBinContent(849,0.00975184); - ssigpTa->SetBinContent(850,0.00976656); - ssigpTa->SetBinContent(851,0.0097819); - ssigpTa->SetBinContent(852,0.00979769); - ssigpTa->SetBinContent(853,0.00981412); - ssigpTa->SetBinContent(854,0.00983109); - ssigpTa->SetBinContent(855,0.00984869); - ssigpTa->SetBinContent(856,0.00986684); - ssigpTa->SetBinContent(857,0.00988561); - ssigpTa->SetBinContent(858,0.00990485); - ssigpTa->SetBinContent(859,0.00992463); - ssigpTa->SetBinContent(860,0.00994501); - ssigpTa->SetBinContent(861,0.00996598); - ssigpTa->SetBinContent(862,0.00998749); - ssigpTa->SetBinContent(863,0.0100096); - ssigpTa->SetBinContent(864,0.0100323); - ssigpTa->SetBinContent(865,0.0100555); - ssigpTa->SetBinContent(866,0.0100795); - ssigpTa->SetBinContent(867,0.0101038); - ssigpTa->SetBinContent(868,0.0101288); - ssigpTa->SetBinContent(869,0.0101543); - ssigpTa->SetBinContent(870,0.0101804); - ssigpTa->SetBinContent(871,0.0102072); - ssigpTa->SetBinContent(872,0.0102345); - ssigpTa->SetBinContent(873,0.0102624); - ssigpTa->SetBinContent(874,0.0102908); - ssigpTa->SetBinContent(875,0.0103199); - ssigpTa->SetBinContent(876,0.0103497); - ssigpTa->SetBinContent(877,0.0103798); - ssigpTa->SetBinContent(878,0.0104106); - ssigpTa->SetBinContent(879,0.010442); - ssigpTa->SetBinContent(880,0.010474); - ssigpTa->SetBinContent(881,0.0105066); - ssigpTa->SetBinContent(882,0.01054); - ssigpTa->SetBinContent(883,0.0105738); - ssigpTa->SetBinContent(884,0.0106083); - ssigpTa->SetBinContent(885,0.0106434); - ssigpTa->SetBinContent(886,0.010679); - ssigpTa->SetBinContent(887,0.0107154); - ssigpTa->SetBinContent(888,0.0107523); - ssigpTa->SetBinContent(889,0.0107899); - ssigpTa->SetBinContent(890,0.0108282); - ssigpTa->SetBinContent(891,0.010867); - ssigpTa->SetBinContent(892,0.0109065); - ssigpTa->SetBinContent(893,0.0109466); - ssigpTa->SetBinContent(894,0.0109875); - ssigpTa->SetBinContent(895,0.0110288); - ssigpTa->SetBinContent(896,0.011071); - ssigpTa->SetBinContent(897,0.0111137); - ssigpTa->SetBinContent(898,0.0111571); - ssigpTa->SetBinContent(899,0.0112013); - ssigpTa->SetBinContent(900,0.0112461); - ssigpTa->SetBinContent(901,0.0112916); - ssigpTa->SetBinContent(902,0.0113378); - ssigpTa->SetBinContent(903,0.0113846); - ssigpTa->SetBinContent(904,0.0114322); - ssigpTa->SetBinContent(905,0.0114805); - ssigpTa->SetBinContent(906,0.0115295); - ssigpTa->SetBinContent(907,0.0115793); - ssigpTa->SetBinContent(908,0.0116298); - ssigpTa->SetBinContent(909,0.011681); - ssigpTa->SetBinContent(910,0.011733); - ssigpTa->SetBinContent(911,0.0117859); - ssigpTa->SetBinContent(912,0.0118395); - ssigpTa->SetBinContent(913,0.0118939); - ssigpTa->SetBinContent(914,0.011949); - ssigpTa->SetBinContent(915,0.0120049); - ssigpTa->SetBinContent(916,0.0120617); - ssigpTa->SetBinContent(917,0.0121193); - ssigpTa->SetBinContent(918,0.0121778); - ssigpTa->SetBinContent(919,0.0122372); - ssigpTa->SetBinContent(920,0.0122974); - ssigpTa->SetBinContent(921,0.0123586); - ssigpTa->SetBinContent(922,0.0124206); - ssigpTa->SetBinContent(923,0.0124836); - ssigpTa->SetBinContent(924,0.0125474); - ssigpTa->SetBinContent(925,0.0126123); - ssigpTa->SetBinContent(926,0.012696); - ssigpTa->SetBinContent(927,0.0128702); - ssigpTa->SetBinContent(928,0.0131592); - ssigpTa->SetBinContent(929,0.0135913); - ssigpTa->SetBinContent(930,0.0141066); - ssigpTa->SetBinContent(931,0.0144347); - ssigpTa->SetBinContent(932,0.0145517); - ssigpTa->SetBinContent(933,0.0146275); - ssigpTa->SetBinContent(934,0.0147042); - ssigpTa->SetBinContent(935,0.0147819); - ssigpTa->SetBinContent(936,0.0148607); - ssigpTa->SetBinContent(937,0.0149407); - ssigpTa->SetBinContent(938,0.0150217); - ssigpTa->SetBinContent(939,0.0150733); - ssigpTa->SetBinContent(940,0.0149662); - ssigpTa->SetBinContent(941,0.0147071); - ssigpTa->SetBinContent(942,0.014575); - ssigpTa->SetBinContent(943,0.0146753); - ssigpTa->SetBinContent(944,0.0148713); - ssigpTa->SetBinContent(945,0.0150781); - ssigpTa->SetBinContent(946,0.0152833); - ssigpTa->SetBinContent(947,0.0154869); - ssigpTa->SetBinContent(948,0.0156394); - ssigpTa->SetBinContent(949,0.015547); - ssigpTa->SetBinContent(950,0.0152093); - ssigpTa->SetBinContent(951,0.0147741); - ssigpTa->SetBinContent(952,0.0143466); - ssigpTa->SetBinContent(953,0.0142374); - ssigpTa->SetBinContent(954,0.0144593); - ssigpTa->SetBinContent(955,0.0147493); - ssigpTa->SetBinContent(956,0.0150428); - ssigpTa->SetBinContent(957,0.0153398); - ssigpTa->SetBinContent(958,0.0156383); - ssigpTa->SetBinContent(959,0.0158884); - ssigpTa->SetBinContent(960,0.0158946); - ssigpTa->SetBinContent(961,0.0156952); - ssigpTa->SetBinContent(962,0.0156833); - ssigpTa->SetBinContent(963,0.0159099); - ssigpTa->SetBinContent(964,0.0161853); - ssigpTa->SetBinContent(965,0.0164591); - ssigpTa->SetBinContent(966,0.0167316); - ssigpTa->SetBinContent(967,0.0169291); - ssigpTa->SetBinContent(968,0.016747); - ssigpTa->SetBinContent(969,0.0162632); - ssigpTa->SetBinContent(970,0.0160543); - ssigpTa->SetBinContent(971,0.0160255); - ssigpTa->SetBinContent(972,0.0159004); - ssigpTa->SetBinContent(973,0.015936); - ssigpTa->SetBinContent(974,0.0161748); - ssigpTa->SetBinContent(975,0.0164556); - ssigpTa->SetBinContent(976,0.0167381); - ssigpTa->SetBinContent(977,0.0170237); - ssigpTa->SetBinContent(978,0.0173125); - ssigpTa->SetBinContent(979,0.0176025); - ssigpTa->SetBinContent(980,0.0178939); - ssigpTa->SetBinContent(981,0.018187); - ssigpTa->SetBinContent(982,0.0184473); - ssigpTa->SetBinContent(983,0.0185458); - ssigpTa->SetBinContent(984,0.0185056); - ssigpTa->SetBinContent(985,0.0185099); - ssigpTa->SetBinContent(986,0.0182322); - ssigpTa->SetBinContent(987,0.0176368); - ssigpTa->SetBinContent(988,0.0174032); - ssigpTa->SetBinContent(989,0.017623); - ssigpTa->SetBinContent(990,0.0179393); - ssigpTa->SetBinContent(991,0.0182587); - ssigpTa->SetBinContent(992,0.0185794); - ssigpTa->SetBinContent(993,0.018901); - ssigpTa->SetBinContent(994,0.0192134); - ssigpTa->SetBinContent(995,0.0195109); - ssigpTa->SetBinContent(996,0.0198375); - ssigpTa->SetBinContent(997,0.0202395); - ssigpTa->SetBinContent(998,0.0206954); - ssigpTa->SetBinContent(999,0.0211007); - ssigpTa->SetBinContent(1000,0.0213175); - ssigpTa->SetBinContent(1001,0.0208725); - ssigpTa->SetBinContent(1002,0.019892); - ssigpTa->SetBinContent(1003,0.0193854); - ssigpTa->SetBinContent(1004,0.0194977); - ssigpTa->SetBinContent(1005,0.0197264); - ssigpTa->SetBinContent(1006,0.0199411); - ssigpTa->SetBinContent(1007,0.0201099); - ssigpTa->SetBinContent(1008,0.0201182); - ssigpTa->SetBinContent(1009,0.0194748); - ssigpTa->SetBinContent(1010,0.0183299); - ssigpTa->SetBinContent(1011,0.0177514); - ssigpTa->SetBinContent(1012,0.0178642); - ssigpTa->SetBinContent(1013,0.018121); - ssigpTa->SetBinContent(1014,0.0185088); - ssigpTa->SetBinContent(1015,0.0195168); - ssigpTa->SetBinContent(1016,0.0210234); - ssigpTa->SetBinContent(1017,0.0220541); - ssigpTa->SetBinContent(1018,0.0224846); - ssigpTa->SetBinContent(1019,0.0228083); - ssigpTa->SetBinContent(1020,0.0231415); - ssigpTa->SetBinContent(1021,0.0234725); - ssigpTa->SetBinContent(1022,0.0237986); - ssigpTa->SetBinContent(1023,0.0240337); - ssigpTa->SetBinContent(1024,0.023819); - ssigpTa->SetBinContent(1025,0.0232402); - ssigpTa->SetBinContent(1026,0.0230162); - ssigpTa->SetBinContent(1027,0.02335); - ssigpTa->SetBinContent(1028,0.0243391); - ssigpTa->SetBinContent(1029,0.0257969); - ssigpTa->SetBinContent(1030,0.0268357); - ssigpTa->SetBinContent(1031,0.0273412); - ssigpTa->SetBinContent(1032,0.0277405); - ssigpTa->SetBinContent(1033,0.0281323); - ssigpTa->SetBinContent(1034,0.0284088); - ssigpTa->SetBinContent(1035,0.0281374); - ssigpTa->SetBinContent(1036,0.0274258); - ssigpTa->SetBinContent(1037,0.0271476); - ssigpTa->SetBinContent(1038,0.0275434); - ssigpTa->SetBinContent(1039,0.0286988); - ssigpTa->SetBinContent(1040,0.0303934); - ssigpTa->SetBinContent(1041,0.031595); - ssigpTa->SetBinContent(1042,0.0321542); - ssigpTa->SetBinContent(1043,0.0325872); - ssigpTa->SetBinContent(1044,0.0330384); - ssigpTa->SetBinContent(1045,0.033517); - ssigpTa->SetBinContent(1046,0.0337152); - ssigpTa->SetBinContent(1047,0.0324349); - ssigpTa->SetBinContent(1048,0.0299501); - ssigpTa->SetBinContent(1049,0.0286855); - ssigpTa->SetBinContent(1050,0.029347); - ssigpTa->SetBinContent(1051,0.0307129); - ssigpTa->SetBinContent(1052,0.0317416); - ssigpTa->SetBinContent(1053,0.0323103); - ssigpTa->SetBinContent(1054,0.0327673); - ssigpTa->SetBinContent(1055,0.0332206); - ssigpTa->SetBinContent(1056,0.0336775); - ssigpTa->SetBinContent(1057,0.0341224); - ssigpTa->SetBinContent(1058,0.0344983); - ssigpTa->SetBinContent(1059,0.0347477); - ssigpTa->SetBinContent(1060,0.0353537); - ssigpTa->SetBinContent(1061,0.0366233); - ssigpTa->SetBinContent(1062,0.0377535); - ssigpTa->SetBinContent(1063,0.0384141); - ssigpTa->SetBinContent(1064,0.0389303); - ssigpTa->SetBinContent(1065,0.0394278); - ssigpTa->SetBinContent(1066,0.0399555); - ssigpTa->SetBinContent(1067,0.040525); - ssigpTa->SetBinContent(1068,0.0410119); - ssigpTa->SetBinContent(1069,0.0409924); - ssigpTa->SetBinContent(1070,0.0406024); - ssigpTa->SetBinContent(1071,0.0406298); - ssigpTa->SetBinContent(1072,0.0411262); - ssigpTa->SetBinContent(1073,0.0416526); - ssigpTa->SetBinContent(1074,0.0422164); - ssigpTa->SetBinContent(1075,0.0428242); - ssigpTa->SetBinContent(1076,0.0434368); - ssigpTa->SetBinContent(1077,0.0440477); - ssigpTa->SetBinContent(1078,0.0446961); - ssigpTa->SetBinContent(1079,0.0454026); - ssigpTa->SetBinContent(1080,0.046139); - ssigpTa->SetBinContent(1081,0.0468728); - ssigpTa->SetBinContent(1082,0.0475894); - ssigpTa->SetBinContent(1083,0.0482548); - ssigpTa->SetBinContent(1084,0.0488261); - ssigpTa->SetBinContent(1085,0.0493575); - ssigpTa->SetBinContent(1086,0.0500054); - ssigpTa->SetBinContent(1087,0.0506285); - ssigpTa->SetBinContent(1088,0.0506121); - ssigpTa->SetBinContent(1089,0.0500347); - ssigpTa->SetBinContent(1090,0.0499572); - ssigpTa->SetBinContent(1091,0.050615); - ssigpTa->SetBinContent(1092,0.0515069); - ssigpTa->SetBinContent(1093,0.0522949); - ssigpTa->SetBinContent(1094,0.0521184); - ssigpTa->SetBinContent(1097,0.00999712); - ssigpTa->SetBinContent(1098,0.00999473); - ssigpTa->SetBinContent(1099,0.00999474); - ssigpTa->SetBinContent(1100,0.0099962); - ssigpTa->SetBinContent(1101,0.00999832); - ssigpTa->SetBinContent(1102,0.0100007); - ssigpTa->SetBinContent(1103,0.0100039); - ssigpTa->SetBinContent(1104,0.0100076); - ssigpTa->SetBinContent(1105,0.010012); - ssigpTa->SetBinContent(1106,0.0100167); - ssigpTa->SetBinContent(1107,0.0100224); - ssigpTa->SetBinContent(1108,0.0100285); - ssigpTa->SetBinContent(1109,0.0100352); - ssigpTa->SetBinContent(1110,0.0100425); - ssigpTa->SetBinContent(1111,0.0100501); - ssigpTa->SetBinContent(1112,0.0100586); - ssigpTa->SetBinContent(1113,0.0100675); - ssigpTa->SetBinContent(1114,0.010077); - ssigpTa->SetBinContent(1115,0.0100872); - ssigpTa->SetBinContent(1116,0.010098); - ssigpTa->SetBinContent(1117,0.0101093); - ssigpTa->SetBinContent(1118,0.0101211); - ssigpTa->SetBinContent(1119,0.0101336); - ssigpTa->SetBinContent(1120,0.0101464); - ssigpTa->SetBinContent(1121,0.0101599); - ssigpTa->SetBinContent(1122,0.0101743); - ssigpTa->SetBinContent(1123,0.010189); - ssigpTa->SetBinContent(1124,0.0102045); - ssigpTa->SetBinContent(1125,0.0102202); - ssigpTa->SetBinContent(1126,0.0102366); - ssigpTa->SetBinContent(1127,0.0102536); - ssigpTa->SetBinContent(1128,0.0102715); - ssigpTa->SetBinContent(1129,0.0102898); - ssigpTa->SetBinContent(1130,0.0103086); - ssigpTa->SetBinContent(1131,0.0103281); - ssigpTa->SetBinContent(1132,0.0103481); - ssigpTa->SetBinContent(1133,0.0103687); - ssigpTa->SetBinContent(1134,0.0103899); - ssigpTa->SetBinContent(1135,0.0104119); - ssigpTa->SetBinContent(1136,0.0104341); - ssigpTa->SetBinContent(1137,0.0104572); - ssigpTa->SetBinContent(1138,0.0104805); - ssigpTa->SetBinContent(1139,0.010505); - ssigpTa->SetBinContent(1140,0.0105297); - ssigpTa->SetBinContent(1141,0.0105551); - ssigpTa->SetBinContent(1142,0.0105809); - ssigpTa->SetBinContent(1143,0.0106076); - ssigpTa->SetBinContent(1144,0.0106348); - ssigpTa->SetBinContent(1145,0.0106625); - ssigpTa->SetBinContent(1146,0.0106911); - ssigpTa->SetBinContent(1147,0.0107201); - ssigpTa->SetBinContent(1148,0.0107496); - ssigpTa->SetBinContent(1149,0.0107799); - ssigpTa->SetBinContent(1150,0.0108107); - ssigpTa->SetBinContent(1151,0.0108421); - ssigpTa->SetBinContent(1152,0.010874); - ssigpTa->SetBinContent(1153,0.0109068); - ssigpTa->SetBinContent(1154,0.01094); - ssigpTa->SetBinContent(1155,0.010974); - ssigpTa->SetBinContent(1156,0.0110087); - ssigpTa->SetBinContent(1157,0.011044); - ssigpTa->SetBinContent(1158,0.0110797); - ssigpTa->SetBinContent(1159,0.0111162); - ssigpTa->SetBinContent(1160,0.0111536); - ssigpTa->SetBinContent(1161,0.0111912); - ssigpTa->SetBinContent(1162,0.0112297); - ssigpTa->SetBinContent(1163,0.0112688); - ssigpTa->SetBinContent(1164,0.0113085); - ssigpTa->SetBinContent(1165,0.0113489); - ssigpTa->SetBinContent(1166,0.01139); - ssigpTa->SetBinContent(1167,0.0114318); - ssigpTa->SetBinContent(1168,0.011474); - ssigpTa->SetBinContent(1169,0.0115172); - ssigpTa->SetBinContent(1170,0.0115611); - ssigpTa->SetBinContent(1171,0.0116057); - ssigpTa->SetBinContent(1172,0.0116507); - ssigpTa->SetBinContent(1173,0.0116967); - ssigpTa->SetBinContent(1174,0.0117433); - ssigpTa->SetBinContent(1175,0.0117906); - ssigpTa->SetBinContent(1176,0.0118387); - ssigpTa->SetBinContent(1177,0.0118873); - ssigpTa->SetBinContent(1178,0.0119368); - ssigpTa->SetBinContent(1179,0.0119871); - ssigpTa->SetBinContent(1180,0.012038); - ssigpTa->SetBinContent(1181,0.0120899); - ssigpTa->SetBinContent(1182,0.0121424); - ssigpTa->SetBinContent(1183,0.0121957); - ssigpTa->SetBinContent(1184,0.0122497); - ssigpTa->SetBinContent(1185,0.0123046); - ssigpTa->SetBinContent(1186,0.0123605); - ssigpTa->SetBinContent(1187,0.0124171); - ssigpTa->SetBinContent(1188,0.0124743); - ssigpTa->SetBinContent(1189,0.0125326); - ssigpTa->SetBinContent(1190,0.0125915); - ssigpTa->SetBinContent(1191,0.0126515); - ssigpTa->SetBinContent(1192,0.0127124); - ssigpTa->SetBinContent(1193,0.0127742); - ssigpTa->SetBinContent(1194,0.0128369); - ssigpTa->SetBinContent(1195,0.0129004); - ssigpTa->SetBinContent(1196,0.0129651); - ssigpTa->SetBinContent(1197,0.0130305); - ssigpTa->SetBinContent(1198,0.013097); - ssigpTa->SetBinContent(1199,0.0131644); - ssigpTa->SetBinContent(1200,0.0132509); - ssigpTa->SetBinContent(1201,0.0134269); - ssigpTa->SetBinContent(1202,0.0137341); - ssigpTa->SetBinContent(1203,0.0141712); - ssigpTa->SetBinContent(1204,0.0147402); - ssigpTa->SetBinContent(1205,0.015074); - ssigpTa->SetBinContent(1206,0.0151944); - ssigpTa->SetBinContent(1207,0.0152732); - ssigpTa->SetBinContent(1208,0.0153531); - ssigpTa->SetBinContent(1209,0.0154338); - ssigpTa->SetBinContent(1210,0.0155156); - ssigpTa->SetBinContent(1211,0.0155988); - ssigpTa->SetBinContent(1212,0.0156831); - ssigpTa->SetBinContent(1213,0.0157378); - ssigpTa->SetBinContent(1214,0.0156318); - ssigpTa->SetBinContent(1215,0.0153398); - ssigpTa->SetBinContent(1216,0.0152038); - ssigpTa->SetBinContent(1217,0.0153134); - ssigpTa->SetBinContent(1218,0.0155187); - ssigpTa->SetBinContent(1219,0.0157349); - ssigpTa->SetBinContent(1220,0.0159497); - ssigpTa->SetBinContent(1221,0.0161626); - ssigpTa->SetBinContent(1222,0.0163246); - ssigpTa->SetBinContent(1223,0.0162416); - ssigpTa->SetBinContent(1224,0.0158652); - ssigpTa->SetBinContent(1225,0.0154452); - ssigpTa->SetBinContent(1226,0.014979); - ssigpTa->SetBinContent(1227,0.014886); - ssigpTa->SetBinContent(1228,0.0151215); - ssigpTa->SetBinContent(1229,0.015425); - ssigpTa->SetBinContent(1230,0.0157319); - ssigpTa->SetBinContent(1231,0.0160426); - ssigpTa->SetBinContent(1232,0.0163546); - ssigpTa->SetBinContent(1233,0.0166172); - ssigpTa->SetBinContent(1234,0.0166274); - ssigpTa->SetBinContent(1235,0.0163706); - ssigpTa->SetBinContent(1236,0.0163623); - ssigpTa->SetBinContent(1237,0.0166015); - ssigpTa->SetBinContent(1238,0.0168908); - ssigpTa->SetBinContent(1239,0.0171787); - ssigpTa->SetBinContent(1240,0.0174653); - ssigpTa->SetBinContent(1241,0.0176769); - ssigpTa->SetBinContent(1242,0.0175047); - ssigpTa->SetBinContent(1243,0.0169489); - ssigpTa->SetBinContent(1244,0.0167495); - ssigpTa->SetBinContent(1245,0.0167298); - ssigpTa->SetBinContent(1246,0.0165689); - ssigpTa->SetBinContent(1247,0.0166129); - ssigpTa->SetBinContent(1248,0.0168642); - ssigpTa->SetBinContent(1249,0.0171579); - ssigpTa->SetBinContent(1250,0.0174535); - ssigpTa->SetBinContent(1251,0.0177524); - ssigpTa->SetBinContent(1252,0.018055); - ssigpTa->SetBinContent(1253,0.0183586); - ssigpTa->SetBinContent(1254,0.018664); - ssigpTa->SetBinContent(1255,0.0189715); - ssigpTa->SetBinContent(1256,0.0192452); - ssigpTa->SetBinContent(1257,0.019346); - ssigpTa->SetBinContent(1258,0.019269); - ssigpTa->SetBinContent(1259,0.0192748); - ssigpTa->SetBinContent(1260,0.0190104); - ssigpTa->SetBinContent(1261,0.0183372); - ssigpTa->SetBinContent(1262,0.0181169); - ssigpTa->SetBinContent(1263,0.0183499); - ssigpTa->SetBinContent(1264,0.0186798); - ssigpTa->SetBinContent(1265,0.0190131); - ssigpTa->SetBinContent(1266,0.0193473); - ssigpTa->SetBinContent(1267,0.0196823); - ssigpTa->SetBinContent(1268,0.0200009); - ssigpTa->SetBinContent(1269,0.0202983); - ssigpTa->SetBinContent(1270,0.0206314); - ssigpTa->SetBinContent(1271,0.0210562); - ssigpTa->SetBinContent(1272,0.0215616); - ssigpTa->SetBinContent(1273,0.0219932); - ssigpTa->SetBinContent(1274,0.0222294); - ssigpTa->SetBinContent(1275,0.0218053); - ssigpTa->SetBinContent(1276,0.0207187); - ssigpTa->SetBinContent(1277,0.0202273); - ssigpTa->SetBinContent(1278,0.0203513); - ssigpTa->SetBinContent(1279,0.0205917); - ssigpTa->SetBinContent(1280,0.0208183); - ssigpTa->SetBinContent(1281,0.0210124); - ssigpTa->SetBinContent(1282,0.0210375); - ssigpTa->SetBinContent(1283,0.0204083); - ssigpTa->SetBinContent(1284,0.0191037); - ssigpTa->SetBinContent(1285,0.0185261); - ssigpTa->SetBinContent(1286,0.0186504); - ssigpTa->SetBinContent(1287,0.0189197); - ssigpTa->SetBinContent(1288,0.0193202); - ssigpTa->SetBinContent(1289,0.020335); - ssigpTa->SetBinContent(1290,0.0219618); - ssigpTa->SetBinContent(1291,0.0230002); - ssigpTa->SetBinContent(1292,0.0234432); - ssigpTa->SetBinContent(1293,0.0237811); - ssigpTa->SetBinContent(1294,0.0241284); - ssigpTa->SetBinContent(1295,0.0244737); - ssigpTa->SetBinContent(1296,0.0248146); - ssigpTa->SetBinContent(1297,0.0250645); - ssigpTa->SetBinContent(1298,0.0248639); - ssigpTa->SetBinContent(1299,0.0242113); - ssigpTa->SetBinContent(1300,0.0240014); - ssigpTa->SetBinContent(1301,0.0243507); - ssigpTa->SetBinContent(1302,0.0253613); - ssigpTa->SetBinContent(1303,0.0269562); - ssigpTa->SetBinContent(1304,0.0280174); - ssigpTa->SetBinContent(1305,0.0285414); - ssigpTa->SetBinContent(1306,0.0289576); - ssigpTa->SetBinContent(1307,0.0293677); - ssigpTa->SetBinContent(1308,0.0296636); - ssigpTa->SetBinContent(1309,0.0294158); - ssigpTa->SetBinContent(1310,0.0286306); - ssigpTa->SetBinContent(1311,0.0283749); - ssigpTa->SetBinContent(1312,0.0287912); - ssigpTa->SetBinContent(1313,0.0299644); - ssigpTa->SetBinContent(1314,0.0318042); - ssigpTa->SetBinContent(1315,0.0330255); - ssigpTa->SetBinContent(1316,0.0336054); - ssigpTa->SetBinContent(1317,0.0340609); - ssigpTa->SetBinContent(1318,0.0345358); - ssigpTa->SetBinContent(1319,0.0350371); - ssigpTa->SetBinContent(1320,0.0352623); - ssigpTa->SetBinContent(1321,0.0340253); - ssigpTa->SetBinContent(1322,0.0313216); - ssigpTa->SetBinContent(1323,0.0300954); - ssigpTa->SetBinContent(1324,0.0307764); - ssigpTa->SetBinContent(1325,0.0322538); - ssigpTa->SetBinContent(1326,0.0333012); - ssigpTa->SetBinContent(1327,0.0338927); - ssigpTa->SetBinContent(1328,0.0343757); - ssigpTa->SetBinContent(1329,0.0348548); - ssigpTa->SetBinContent(1330,0.035335); - ssigpTa->SetBinContent(1331,0.0358024); - ssigpTa->SetBinContent(1332,0.0362069); - ssigpTa->SetBinContent(1333,0.0364887); - ssigpTa->SetBinContent(1334,0.0370926); - ssigpTa->SetBinContent(1335,0.0384767); - ssigpTa->SetBinContent(1336,0.039627); - ssigpTa->SetBinContent(1337,0.0403114); - ssigpTa->SetBinContent(1338,0.0408593); - ssigpTa->SetBinContent(1339,0.0413923); - ssigpTa->SetBinContent(1340,0.0419546); - ssigpTa->SetBinContent(1341,0.0425542); - ssigpTa->SetBinContent(1342,0.0430748); - ssigpTa->SetBinContent(1343,0.0431314); - ssigpTa->SetBinContent(1344,0.0427391); - ssigpTa->SetBinContent(1345,0.0428419); - ssigpTa->SetBinContent(1346,0.0433538); - ssigpTa->SetBinContent(1347,0.0438803); - ssigpTa->SetBinContent(1348,0.0444561); - ssigpTa->SetBinContent(1349,0.0450974); - ssigpTa->SetBinContent(1350,0.0457451); - ssigpTa->SetBinContent(1351,0.0463921); - ssigpTa->SetBinContent(1352,0.0470792); - ssigpTa->SetBinContent(1353,0.0478248); - ssigpTa->SetBinContent(1354,0.0485976); - ssigpTa->SetBinContent(1355,0.0493685); - ssigpTa->SetBinContent(1356,0.0501235); - ssigpTa->SetBinContent(1357,0.0508333); - ssigpTa->SetBinContent(1358,0.0514424); - ssigpTa->SetBinContent(1359,0.0520053); - ssigpTa->SetBinContent(1360,0.052687); - ssigpTa->SetBinContent(1361,0.0533567); - ssigpTa->SetBinContent(1362,0.0534313); - ssigpTa->SetBinContent(1363,0.0528334); - ssigpTa->SetBinContent(1364,0.0528609); - ssigpTa->SetBinContent(1365,0.0535848); - ssigpTa->SetBinContent(1366,0.0545166); - ssigpTa->SetBinContent(1367,0.0554273); - ssigpTa->SetBinContent(1368,0.0560769); - ssigpTa->SetBinContent(1371,0.0101069); - ssigpTa->SetBinContent(1372,0.0101034); - ssigpTa->SetBinContent(1373,0.0101012); - ssigpTa->SetBinContent(1374,0.0101025); - ssigpTa->SetBinContent(1375,0.0101048); - ssigpTa->SetBinContent(1376,0.0101075); - ssigpTa->SetBinContent(1377,0.0101104); - ssigpTa->SetBinContent(1378,0.0101147); - ssigpTa->SetBinContent(1379,0.0101186); - ssigpTa->SetBinContent(1380,0.0101234); - ssigpTa->SetBinContent(1381,0.0101288); - ssigpTa->SetBinContent(1382,0.0101353); - ssigpTa->SetBinContent(1383,0.0101418); - ssigpTa->SetBinContent(1384,0.0101488); - ssigpTa->SetBinContent(1385,0.0101568); - ssigpTa->SetBinContent(1386,0.0101649); - ssigpTa->SetBinContent(1387,0.0101735); - ssigpTa->SetBinContent(1388,0.0101829); - ssigpTa->SetBinContent(1389,0.0101934); - ssigpTa->SetBinContent(1390,0.0102043); - ssigpTa->SetBinContent(1391,0.010216); - ssigpTa->SetBinContent(1392,0.0102278); - ssigpTa->SetBinContent(1393,0.0102398); - ssigpTa->SetBinContent(1394,0.0102525); - ssigpTa->SetBinContent(1395,0.0102664); - ssigpTa->SetBinContent(1396,0.0102805); - ssigpTa->SetBinContent(1397,0.0102958); - ssigpTa->SetBinContent(1398,0.0103106); - ssigpTa->SetBinContent(1399,0.0103265); - ssigpTa->SetBinContent(1400,0.0103422); - ssigpTa->SetBinContent(1401,0.0103595); - ssigpTa->SetBinContent(1402,0.0103775); - ssigpTa->SetBinContent(1403,0.0103958); - ssigpTa->SetBinContent(1404,0.0104141); - ssigpTa->SetBinContent(1405,0.0104333); - ssigpTa->SetBinContent(1406,0.0104533); - ssigpTa->SetBinContent(1407,0.0104738); - ssigpTa->SetBinContent(1408,0.0104951); - ssigpTa->SetBinContent(1409,0.0105172); - ssigpTa->SetBinContent(1410,0.0105397); - ssigpTa->SetBinContent(1411,0.010562); - ssigpTa->SetBinContent(1412,0.0105855); - ssigpTa->SetBinContent(1413,0.0106096); - ssigpTa->SetBinContent(1414,0.0106345); - ssigpTa->SetBinContent(1415,0.0106597); - ssigpTa->SetBinContent(1416,0.0106856); - ssigpTa->SetBinContent(1417,0.0107122); - ssigpTa->SetBinContent(1418,0.0107395); - ssigpTa->SetBinContent(1419,0.0107672); - ssigpTa->SetBinContent(1420,0.0107952); - ssigpTa->SetBinContent(1421,0.0108246); - ssigpTa->SetBinContent(1422,0.0108541); - ssigpTa->SetBinContent(1423,0.0108842); - ssigpTa->SetBinContent(1424,0.0109148); - ssigpTa->SetBinContent(1425,0.0109457); - ssigpTa->SetBinContent(1426,0.0109779); - ssigpTa->SetBinContent(1427,0.0110104); - ssigpTa->SetBinContent(1428,0.0110435); - ssigpTa->SetBinContent(1429,0.0110771); - ssigpTa->SetBinContent(1430,0.0111122); - ssigpTa->SetBinContent(1431,0.0111471); - ssigpTa->SetBinContent(1432,0.0111828); - ssigpTa->SetBinContent(1433,0.0112195); - ssigpTa->SetBinContent(1434,0.0112563); - ssigpTa->SetBinContent(1435,0.0112944); - ssigpTa->SetBinContent(1436,0.0113327); - ssigpTa->SetBinContent(1437,0.0113719); - ssigpTa->SetBinContent(1438,0.0114117); - ssigpTa->SetBinContent(1439,0.0114519); - ssigpTa->SetBinContent(1440,0.0114928); - ssigpTa->SetBinContent(1441,0.0115341); - ssigpTa->SetBinContent(1442,0.0115762); - ssigpTa->SetBinContent(1443,0.0116191); - ssigpTa->SetBinContent(1444,0.0116635); - ssigpTa->SetBinContent(1445,0.0117076); - ssigpTa->SetBinContent(1446,0.0117529); - ssigpTa->SetBinContent(1447,0.0117983); - ssigpTa->SetBinContent(1448,0.011845); - ssigpTa->SetBinContent(1449,0.0118919); - ssigpTa->SetBinContent(1450,0.0119397); - ssigpTa->SetBinContent(1451,0.0119883); - ssigpTa->SetBinContent(1452,0.0120375); - ssigpTa->SetBinContent(1453,0.0120876); - ssigpTa->SetBinContent(1454,0.0121386); - ssigpTa->SetBinContent(1455,0.0121903); - ssigpTa->SetBinContent(1456,0.0122431); - ssigpTa->SetBinContent(1457,0.0122962); - ssigpTa->SetBinContent(1458,0.0123498); - ssigpTa->SetBinContent(1459,0.0124043); - ssigpTa->SetBinContent(1460,0.0124603); - ssigpTa->SetBinContent(1461,0.0125171); - ssigpTa->SetBinContent(1462,0.0125742); - ssigpTa->SetBinContent(1463,0.012632); - ssigpTa->SetBinContent(1464,0.0126911); - ssigpTa->SetBinContent(1465,0.0127507); - ssigpTa->SetBinContent(1466,0.0128116); - ssigpTa->SetBinContent(1467,0.0128732); - ssigpTa->SetBinContent(1468,0.0129358); - ssigpTa->SetBinContent(1469,0.0129997); - ssigpTa->SetBinContent(1470,0.013064); - ssigpTa->SetBinContent(1471,0.0131293); - ssigpTa->SetBinContent(1472,0.0131954); - ssigpTa->SetBinContent(1473,0.0132629); - ssigpTa->SetBinContent(1474,0.0133485); - ssigpTa->SetBinContent(1475,0.0135202); - ssigpTa->SetBinContent(1476,0.0138201); - ssigpTa->SetBinContent(1477,0.0142646); - ssigpTa->SetBinContent(1478,0.0148553); - ssigpTa->SetBinContent(1479,0.0152011); - ssigpTa->SetBinContent(1480,0.0153222); - ssigpTa->SetBinContent(1481,0.0154007); - ssigpTa->SetBinContent(1482,0.0154805); - ssigpTa->SetBinContent(1483,0.015561); - ssigpTa->SetBinContent(1484,0.0156426); - ssigpTa->SetBinContent(1485,0.0157259); - ssigpTa->SetBinContent(1486,0.0158101); - ssigpTa->SetBinContent(1487,0.0158637); - ssigpTa->SetBinContent(1488,0.0157486); - ssigpTa->SetBinContent(1489,0.0154423); - ssigpTa->SetBinContent(1490,0.0153033); - ssigpTa->SetBinContent(1491,0.0154162); - ssigpTa->SetBinContent(1492,0.0156234); - ssigpTa->SetBinContent(1493,0.0158422); - ssigpTa->SetBinContent(1494,0.0160594); - ssigpTa->SetBinContent(1495,0.0162755); - ssigpTa->SetBinContent(1496,0.0164412); - ssigpTa->SetBinContent(1497,0.0163635); - ssigpTa->SetBinContent(1498,0.0159924); - ssigpTa->SetBinContent(1499,0.015599); - ssigpTa->SetBinContent(1500,0.0151809); - ssigpTa->SetBinContent(1501,0.0151138); - ssigpTa->SetBinContent(1502,0.0153527); - ssigpTa->SetBinContent(1503,0.0156582); - ssigpTa->SetBinContent(1504,0.0159667); - ssigpTa->SetBinContent(1505,0.0162784); - ssigpTa->SetBinContent(1506,0.0165912); - ssigpTa->SetBinContent(1507,0.0168513); - ssigpTa->SetBinContent(1508,0.0168323); - ssigpTa->SetBinContent(1509,0.0165294); - ssigpTa->SetBinContent(1510,0.0164961); - ssigpTa->SetBinContent(1511,0.0167384); - ssigpTa->SetBinContent(1512,0.0170341); - ssigpTa->SetBinContent(1513,0.0173296); - ssigpTa->SetBinContent(1514,0.0176241); - ssigpTa->SetBinContent(1515,0.0178426); - ssigpTa->SetBinContent(1516,0.0176661); - ssigpTa->SetBinContent(1517,0.0171011); - ssigpTa->SetBinContent(1518,0.0168955); - ssigpTa->SetBinContent(1519,0.0168708); - ssigpTa->SetBinContent(1520,0.0166908); - ssigpTa->SetBinContent(1521,0.0167297); - ssigpTa->SetBinContent(1522,0.0169852); - ssigpTa->SetBinContent(1523,0.0172835); - ssigpTa->SetBinContent(1524,0.0175845); - ssigpTa->SetBinContent(1525,0.017889); - ssigpTa->SetBinContent(1526,0.0181972); - ssigpTa->SetBinContent(1527,0.0185072); - ssigpTa->SetBinContent(1528,0.0188192); - ssigpTa->SetBinContent(1529,0.019134); - ssigpTa->SetBinContent(1530,0.0194149); - ssigpTa->SetBinContent(1531,0.0195067); - ssigpTa->SetBinContent(1532,0.0194014); - ssigpTa->SetBinContent(1533,0.0193965); - ssigpTa->SetBinContent(1534,0.0191309); - ssigpTa->SetBinContent(1535,0.018445); - ssigpTa->SetBinContent(1536,0.0182213); - ssigpTa->SetBinContent(1537,0.0184567); - ssigpTa->SetBinContent(1538,0.0187885); - ssigpTa->SetBinContent(1539,0.0191247); - ssigpTa->SetBinContent(1540,0.0194617); - ssigpTa->SetBinContent(1541,0.019799); - ssigpTa->SetBinContent(1542,0.0201115); - ssigpTa->SetBinContent(1543,0.0203909); - ssigpTa->SetBinContent(1544,0.0207209); - ssigpTa->SetBinContent(1545,0.0211771); - ssigpTa->SetBinContent(1546,0.0217359); - ssigpTa->SetBinContent(1547,0.0222059); - ssigpTa->SetBinContent(1548,0.0224555); - ssigpTa->SetBinContent(1549,0.0220481); - ssigpTa->SetBinContent(1550,0.0209902); - ssigpTa->SetBinContent(1551,0.0205114); - ssigpTa->SetBinContent(1552,0.0206409); - ssigpTa->SetBinContent(1553,0.0208882); - ssigpTa->SetBinContent(1554,0.0211236); - ssigpTa->SetBinContent(1555,0.0213346); - ssigpTa->SetBinContent(1556,0.0213836); - ssigpTa->SetBinContent(1557,0.0207198); - ssigpTa->SetBinContent(1558,0.0193254); - ssigpTa->SetBinContent(1559,0.0187029); - ssigpTa->SetBinContent(1560,0.0188299); - ssigpTa->SetBinContent(1561,0.0191062); - ssigpTa->SetBinContent(1562,0.0195117); - ssigpTa->SetBinContent(1563,0.0205115); - ssigpTa->SetBinContent(1564,0.0221033); - ssigpTa->SetBinContent(1565,0.023124); - ssigpTa->SetBinContent(1566,0.0235685); - ssigpTa->SetBinContent(1567,0.0239089); - ssigpTa->SetBinContent(1568,0.0242587); - ssigpTa->SetBinContent(1569,0.0246073); - ssigpTa->SetBinContent(1570,0.0249528); - ssigpTa->SetBinContent(1571,0.0252079); - ssigpTa->SetBinContent(1572,0.0250167); - ssigpTa->SetBinContent(1573,0.0243808); - ssigpTa->SetBinContent(1574,0.0241826); - ssigpTa->SetBinContent(1575,0.0245419); - ssigpTa->SetBinContent(1576,0.0255671); - ssigpTa->SetBinContent(1577,0.0271765); - ssigpTa->SetBinContent(1578,0.0282497); - ssigpTa->SetBinContent(1579,0.0287788); - ssigpTa->SetBinContent(1580,0.0291986); - ssigpTa->SetBinContent(1581,0.0296147); - ssigpTa->SetBinContent(1582,0.029921); - ssigpTa->SetBinContent(1583,0.0297063); - ssigpTa->SetBinContent(1584,0.028975); - ssigpTa->SetBinContent(1585,0.0287543); - ssigpTa->SetBinContent(1586,0.0291843); - ssigpTa->SetBinContent(1587,0.0303664); - ssigpTa->SetBinContent(1588,0.032203); - ssigpTa->SetBinContent(1589,0.0334278); - ssigpTa->SetBinContent(1590,0.0340161); - ssigpTa->SetBinContent(1591,0.0344836); - ssigpTa->SetBinContent(1592,0.0349705); - ssigpTa->SetBinContent(1593,0.0354819); - ssigpTa->SetBinContent(1594,0.0357244); - ssigpTa->SetBinContent(1595,0.0345655); - ssigpTa->SetBinContent(1596,0.0319796); - ssigpTa->SetBinContent(1597,0.0308274); - ssigpTa->SetBinContent(1598,0.0315278); - ssigpTa->SetBinContent(1599,0.0330206); - ssigpTa->SetBinContent(1600,0.0340745); - ssigpTa->SetBinContent(1601,0.0346709); - ssigpTa->SetBinContent(1602,0.0351674); - ssigpTa->SetBinContent(1603,0.0356602); - ssigpTa->SetBinContent(1604,0.0361501); - ssigpTa->SetBinContent(1605,0.0366289); - ssigpTa->SetBinContent(1606,0.0370587); - ssigpTa->SetBinContent(1607,0.0373914); - ssigpTa->SetBinContent(1608,0.0380329); - ssigpTa->SetBinContent(1609,0.0394279); - ssigpTa->SetBinContent(1610,0.0405618); - ssigpTa->SetBinContent(1611,0.0412471); - ssigpTa->SetBinContent(1612,0.0418142); - ssigpTa->SetBinContent(1613,0.0423748); - ssigpTa->SetBinContent(1614,0.0429582); - ssigpTa->SetBinContent(1615,0.0435694); - ssigpTa->SetBinContent(1616,0.0441118); - ssigpTa->SetBinContent(1617,0.0442457); - ssigpTa->SetBinContent(1618,0.0439713); - ssigpTa->SetBinContent(1619,0.0441402); - ssigpTa->SetBinContent(1620,0.0446556); - ssigpTa->SetBinContent(1621,0.0451629); - ssigpTa->SetBinContent(1622,0.0457382); - ssigpTa->SetBinContent(1623,0.0463905); - ssigpTa->SetBinContent(1624,0.0470514); - ssigpTa->SetBinContent(1625,0.0477175); - ssigpTa->SetBinContent(1626,0.0484269); - ssigpTa->SetBinContent(1627,0.0491886); - ssigpTa->SetBinContent(1628,0.0499718); - ssigpTa->SetBinContent(1629,0.0507524); - ssigpTa->SetBinContent(1630,0.0515219); - ssigpTa->SetBinContent(1631,0.0522587); - ssigpTa->SetBinContent(1632,0.0529131); - ssigpTa->SetBinContent(1633,0.0535184); - ssigpTa->SetBinContent(1634,0.0542264); - ssigpTa->SetBinContent(1635,0.0549135); - ssigpTa->SetBinContent(1636,0.0550172); - ssigpTa->SetBinContent(1637,0.0545056); - ssigpTa->SetBinContent(1638,0.0545974); - ssigpTa->SetBinContent(1639,0.0553595); - ssigpTa->SetBinContent(1640,0.0562923); - ssigpTa->SetBinContent(1641,0.057188); - ssigpTa->SetBinContent(1642,0.0578266); - ssigpTa->SetBinContent(1645,0.0103836); - ssigpTa->SetBinContent(1646,0.0103756); - ssigpTa->SetBinContent(1647,0.010372); - ssigpTa->SetBinContent(1648,0.0103736); - ssigpTa->SetBinContent(1649,0.0103762); - ssigpTa->SetBinContent(1650,0.0103787); - ssigpTa->SetBinContent(1651,0.010383); - ssigpTa->SetBinContent(1652,0.0103866); - ssigpTa->SetBinContent(1653,0.0103906); - ssigpTa->SetBinContent(1654,0.0103944); - ssigpTa->SetBinContent(1655,0.0104011); - ssigpTa->SetBinContent(1656,0.010407); - ssigpTa->SetBinContent(1657,0.0104132); - ssigpTa->SetBinContent(1658,0.0104211); - ssigpTa->SetBinContent(1659,0.0104286); - ssigpTa->SetBinContent(1660,0.0104362); - ssigpTa->SetBinContent(1661,0.0104444); - ssigpTa->SetBinContent(1662,0.0104529); - ssigpTa->SetBinContent(1663,0.0104636); - ssigpTa->SetBinContent(1664,0.0104751); - ssigpTa->SetBinContent(1665,0.0104873); - ssigpTa->SetBinContent(1666,0.0104988); - ssigpTa->SetBinContent(1667,0.010511); - ssigpTa->SetBinContent(1668,0.010524); - ssigpTa->SetBinContent(1669,0.0105371); - ssigpTa->SetBinContent(1670,0.0105524); - ssigpTa->SetBinContent(1671,0.0105671); - ssigpTa->SetBinContent(1672,0.0105828); - ssigpTa->SetBinContent(1673,0.010597); - ssigpTa->SetBinContent(1674,0.0106132); - ssigpTa->SetBinContent(1675,0.01063); - ssigpTa->SetBinContent(1676,0.0106487); - ssigpTa->SetBinContent(1677,0.0106667); - ssigpTa->SetBinContent(1678,0.0106846); - ssigpTa->SetBinContent(1679,0.0107032); - ssigpTa->SetBinContent(1680,0.010723); - ssigpTa->SetBinContent(1681,0.0107434); - ssigpTa->SetBinContent(1682,0.010765); - ssigpTa->SetBinContent(1683,0.0107875); - ssigpTa->SetBinContent(1684,0.0108097); - ssigpTa->SetBinContent(1685,0.0108318); - ssigpTa->SetBinContent(1686,0.0108554); - ssigpTa->SetBinContent(1687,0.0108793); - ssigpTa->SetBinContent(1688,0.0109042); - ssigpTa->SetBinContent(1689,0.0109289); - ssigpTa->SetBinContent(1690,0.0109554); - ssigpTa->SetBinContent(1691,0.010982); - ssigpTa->SetBinContent(1692,0.0110093); - ssigpTa->SetBinContent(1693,0.0110369); - ssigpTa->SetBinContent(1694,0.0110648); - ssigpTa->SetBinContent(1695,0.0110938); - ssigpTa->SetBinContent(1696,0.0111232); - ssigpTa->SetBinContent(1697,0.0111536); - ssigpTa->SetBinContent(1698,0.0111834); - ssigpTa->SetBinContent(1699,0.0112152); - ssigpTa->SetBinContent(1700,0.0112466); - ssigpTa->SetBinContent(1701,0.0112797); - ssigpTa->SetBinContent(1702,0.011312); - ssigpTa->SetBinContent(1703,0.0113454); - ssigpTa->SetBinContent(1704,0.0113799); - ssigpTa->SetBinContent(1705,0.0114156); - ssigpTa->SetBinContent(1706,0.0114515); - ssigpTa->SetBinContent(1707,0.0114879); - ssigpTa->SetBinContent(1708,0.0115254); - ssigpTa->SetBinContent(1709,0.011562); - ssigpTa->SetBinContent(1710,0.0116011); - ssigpTa->SetBinContent(1711,0.0116405); - ssigpTa->SetBinContent(1712,0.0116804); - ssigpTa->SetBinContent(1713,0.0117205); - ssigpTa->SetBinContent(1714,0.0117609); - ssigpTa->SetBinContent(1715,0.0118024); - ssigpTa->SetBinContent(1716,0.0118436); - ssigpTa->SetBinContent(1717,0.0118868); - ssigpTa->SetBinContent(1718,0.0119305); - ssigpTa->SetBinContent(1719,0.0119754); - ssigpTa->SetBinContent(1720,0.0120201); - ssigpTa->SetBinContent(1721,0.012066); - ssigpTa->SetBinContent(1722,0.0121113); - ssigpTa->SetBinContent(1723,0.0121585); - ssigpTa->SetBinContent(1724,0.0122058); - ssigpTa->SetBinContent(1725,0.0122546); - ssigpTa->SetBinContent(1726,0.0123036); - ssigpTa->SetBinContent(1727,0.012354); - ssigpTa->SetBinContent(1728,0.0124042); - ssigpTa->SetBinContent(1729,0.0124564); - ssigpTa->SetBinContent(1730,0.0125083); - ssigpTa->SetBinContent(1731,0.0125618); - ssigpTa->SetBinContent(1732,0.0126152); - ssigpTa->SetBinContent(1733,0.0126697); - ssigpTa->SetBinContent(1734,0.012725); - ssigpTa->SetBinContent(1735,0.0127821); - ssigpTa->SetBinContent(1736,0.0128391); - ssigpTa->SetBinContent(1737,0.012897); - ssigpTa->SetBinContent(1738,0.0129556); - ssigpTa->SetBinContent(1739,0.0130154); - ssigpTa->SetBinContent(1740,0.0130758); - ssigpTa->SetBinContent(1741,0.0131374); - ssigpTa->SetBinContent(1742,0.0131999); - ssigpTa->SetBinContent(1743,0.0132642); - ssigpTa->SetBinContent(1744,0.0133284); - ssigpTa->SetBinContent(1745,0.0133928); - ssigpTa->SetBinContent(1746,0.0134595); - ssigpTa->SetBinContent(1747,0.013526); - ssigpTa->SetBinContent(1748,0.0136094); - ssigpTa->SetBinContent(1749,0.0137706); - ssigpTa->SetBinContent(1750,0.0140564); - ssigpTa->SetBinContent(1751,0.0145164); - ssigpTa->SetBinContent(1752,0.0151564); - ssigpTa->SetBinContent(1753,0.0155278); - ssigpTa->SetBinContent(1754,0.0156524); - ssigpTa->SetBinContent(1755,0.0157307); - ssigpTa->SetBinContent(1756,0.0158097); - ssigpTa->SetBinContent(1757,0.01589); - ssigpTa->SetBinContent(1758,0.0159718); - ssigpTa->SetBinContent(1759,0.0160558); - ssigpTa->SetBinContent(1760,0.0161398); - ssigpTa->SetBinContent(1761,0.0161892); - ssigpTa->SetBinContent(1762,0.0160549); - ssigpTa->SetBinContent(1763,0.0157179); - ssigpTa->SetBinContent(1764,0.0155735); - ssigpTa->SetBinContent(1765,0.015694); - ssigpTa->SetBinContent(1766,0.015907); - ssigpTa->SetBinContent(1767,0.016131); - ssigpTa->SetBinContent(1768,0.0163542); - ssigpTa->SetBinContent(1769,0.0165776); - ssigpTa->SetBinContent(1770,0.0167511); - ssigpTa->SetBinContent(1771,0.0166812); - ssigpTa->SetBinContent(1772,0.016321); - ssigpTa->SetBinContent(1773,0.0159887); - ssigpTa->SetBinContent(1774,0.015676); - ssigpTa->SetBinContent(1775,0.0156686); - ssigpTa->SetBinContent(1776,0.0159181); - ssigpTa->SetBinContent(1777,0.0162222); - ssigpTa->SetBinContent(1778,0.0165297); - ssigpTa->SetBinContent(1779,0.0168384); - ssigpTa->SetBinContent(1780,0.0171479); - ssigpTa->SetBinContent(1781,0.017393); - ssigpTa->SetBinContent(1782,0.017326); - ssigpTa->SetBinContent(1783,0.0169426); - ssigpTa->SetBinContent(1784,0.0168724); - ssigpTa->SetBinContent(1785,0.0171142); - ssigpTa->SetBinContent(1786,0.0174217); - ssigpTa->SetBinContent(1787,0.0177302); - ssigpTa->SetBinContent(1788,0.0180384); - ssigpTa->SetBinContent(1789,0.0182652); - ssigpTa->SetBinContent(1790,0.0180908); - ssigpTa->SetBinContent(1791,0.0175248); - ssigpTa->SetBinContent(1792,0.017317); - ssigpTa->SetBinContent(1793,0.0172672); - ssigpTa->SetBinContent(1794,0.017036); - ssigpTa->SetBinContent(1795,0.0170539); - ssigpTa->SetBinContent(1796,0.017317); - ssigpTa->SetBinContent(1797,0.0176294); - ssigpTa->SetBinContent(1798,0.0179438); - ssigpTa->SetBinContent(1799,0.0182632); - ssigpTa->SetBinContent(1800,0.0185868); - ssigpTa->SetBinContent(1801,0.0189129); - ssigpTa->SetBinContent(1802,0.0192415); - ssigpTa->SetBinContent(1803,0.0195748); - ssigpTa->SetBinContent(1804,0.0198688); - ssigpTa->SetBinContent(1805,0.0199436); - ssigpTa->SetBinContent(1806,0.0197885); - ssigpTa->SetBinContent(1807,0.0197604); - ssigpTa->SetBinContent(1808,0.0194747); - ssigpTa->SetBinContent(1809,0.0187413); - ssigpTa->SetBinContent(1810,0.0184984); - ssigpTa->SetBinContent(1811,0.0187373); - ssigpTa->SetBinContent(1812,0.0190782); - ssigpTa->SetBinContent(1813,0.0194231); - ssigpTa->SetBinContent(1814,0.01977); - ssigpTa->SetBinContent(1815,0.0201134); - ssigpTa->SetBinContent(1816,0.0204146); - ssigpTa->SetBinContent(1817,0.0206574); - ssigpTa->SetBinContent(1818,0.0209855); - ssigpTa->SetBinContent(1819,0.0214906); - ssigpTa->SetBinContent(1820,0.0221401); - ssigpTa->SetBinContent(1821,0.02267); - ssigpTa->SetBinContent(1822,0.0229531); - ssigpTa->SetBinContent(1823,0.0226013); - ssigpTa->SetBinContent(1824,0.0216294); - ssigpTa->SetBinContent(1825,0.0212032); - ssigpTa->SetBinContent(1826,0.0213555); - ssigpTa->SetBinContent(1827,0.0216227); - ssigpTa->SetBinContent(1828,0.0218823); - ssigpTa->SetBinContent(1829,0.0221279); - ssigpTa->SetBinContent(1830,0.0221985); - ssigpTa->SetBinContent(1831,0.0214518); - ssigpTa->SetBinContent(1832,0.0198656); - ssigpTa->SetBinContent(1833,0.0191403); - ssigpTa->SetBinContent(1834,0.0192602); - ssigpTa->SetBinContent(1835,0.0195504); - ssigpTa->SetBinContent(1836,0.0199612); - ssigpTa->SetBinContent(1837,0.0209291); - ssigpTa->SetBinContent(1838,0.0224382); - ssigpTa->SetBinContent(1839,0.0234208); - ssigpTa->SetBinContent(1840,0.023864); - ssigpTa->SetBinContent(1841,0.024211); - ssigpTa->SetBinContent(1842,0.024567); - ssigpTa->SetBinContent(1843,0.0249232); - ssigpTa->SetBinContent(1844,0.0252786); - ssigpTa->SetBinContent(1845,0.0255458); - ssigpTa->SetBinContent(1846,0.0253817); - ssigpTa->SetBinContent(1847,0.0247914); - ssigpTa->SetBinContent(1848,0.0246254); - ssigpTa->SetBinContent(1849,0.0250047); - ssigpTa->SetBinContent(1850,0.0260416); - ssigpTa->SetBinContent(1851,0.027648); - ssigpTa->SetBinContent(1852,0.0287274); - ssigpTa->SetBinContent(1853,0.0292659); - ssigpTa->SetBinContent(1854,0.0296957); - ssigpTa->SetBinContent(1855,0.0301238); - ssigpTa->SetBinContent(1856,0.0304539); - ssigpTa->SetBinContent(1857,0.0303039); - ssigpTa->SetBinContent(1858,0.0296829); - ssigpTa->SetBinContent(1859,0.0295328); - ssigpTa->SetBinContent(1860,0.0299953); - ssigpTa->SetBinContent(1861,0.0311852); - ssigpTa->SetBinContent(1862,0.0330054); - ssigpTa->SetBinContent(1863,0.03423); - ssigpTa->SetBinContent(1864,0.0348376); - ssigpTa->SetBinContent(1865,0.0353271); - ssigpTa->SetBinContent(1866,0.0358371); - ssigpTa->SetBinContent(1867,0.0363699); - ssigpTa->SetBinContent(1868,0.0366544); - ssigpTa->SetBinContent(1869,0.0356083); - ssigpTa->SetBinContent(1870,0.0332219); - ssigpTa->SetBinContent(1871,0.0321828); - ssigpTa->SetBinContent(1872,0.0329485); - ssigpTa->SetBinContent(1873,0.0344953); - ssigpTa->SetBinContent(1874,0.0355882); - ssigpTa->SetBinContent(1875,0.0362008); - ssigpTa->SetBinContent(1876,0.0367143); - ssigpTa->SetBinContent(1877,0.0372261); - ssigpTa->SetBinContent(1878,0.0377326); - ssigpTa->SetBinContent(1879,0.0382316); - ssigpTa->SetBinContent(1880,0.0386948); - ssigpTa->SetBinContent(1881,0.0390749); - ssigpTa->SetBinContent(1882,0.0397827); - ssigpTa->SetBinContent(1883,0.0411914); - ssigpTa->SetBinContent(1884,0.0423362); - ssigpTa->SetBinContent(1885,0.0430308); - ssigpTa->SetBinContent(1886,0.0436244); - ssigpTa->SetBinContent(1887,0.0442178); - ssigpTa->SetBinContent(1888,0.0448282); - ssigpTa->SetBinContent(1889,0.0454561); - ssigpTa->SetBinContent(1890,0.0460322); - ssigpTa->SetBinContent(1891,0.046248); - ssigpTa->SetBinContent(1892,0.0461086); - ssigpTa->SetBinContent(1893,0.0463408); - ssigpTa->SetBinContent(1894,0.0468602); - ssigpTa->SetBinContent(1895,0.0473466); - ssigpTa->SetBinContent(1896,0.0479206); - ssigpTa->SetBinContent(1897,0.0485866); - ssigpTa->SetBinContent(1898,0.0492647); - ssigpTa->SetBinContent(1899,0.0499569); - ssigpTa->SetBinContent(1900,0.0506976); - ssigpTa->SetBinContent(1901,0.0514856); - ssigpTa->SetBinContent(1902,0.0522878); - ssigpTa->SetBinContent(1903,0.0530866); - ssigpTa->SetBinContent(1904,0.053879); - ssigpTa->SetBinContent(1905,0.0546557); - ssigpTa->SetBinContent(1906,0.055371); - ssigpTa->SetBinContent(1907,0.0560526); - ssigpTa->SetBinContent(1908,0.0567985); - ssigpTa->SetBinContent(1909,0.0574962); - ssigpTa->SetBinContent(1910,0.0576296); - ssigpTa->SetBinContent(1911,0.0571842); - ssigpTa->SetBinContent(1912,0.0573462); - ssigpTa->SetBinContent(1913,0.0581433); - ssigpTa->SetBinContent(1914,0.0590947); - ssigpTa->SetBinContent(1915,0.0600088); - ssigpTa->SetBinContent(1916,0.0607425); - ssigpTa->SetBinContent(1919,0.0108971); - ssigpTa->SetBinContent(1920,0.0108933); - ssigpTa->SetBinContent(1921,0.010888); - ssigpTa->SetBinContent(1922,0.0108892); - ssigpTa->SetBinContent(1923,0.0108917); - ssigpTa->SetBinContent(1924,0.0108954); - ssigpTa->SetBinContent(1925,0.0108991); - ssigpTa->SetBinContent(1926,0.0109041); - ssigpTa->SetBinContent(1927,0.0109062); - ssigpTa->SetBinContent(1928,0.0109109); - ssigpTa->SetBinContent(1929,0.0109178); - ssigpTa->SetBinContent(1930,0.0109245); - ssigpTa->SetBinContent(1931,0.0109304); - ssigpTa->SetBinContent(1932,0.0109374); - ssigpTa->SetBinContent(1933,0.010945); - ssigpTa->SetBinContent(1934,0.0109533); - ssigpTa->SetBinContent(1935,0.0109597); - ssigpTa->SetBinContent(1936,0.0109689); - ssigpTa->SetBinContent(1937,0.0109793); - ssigpTa->SetBinContent(1938,0.0109909); - ssigpTa->SetBinContent(1939,0.0110022); - ssigpTa->SetBinContent(1940,0.011015); - ssigpTa->SetBinContent(1941,0.0110267); - ssigpTa->SetBinContent(1942,0.01104); - ssigpTa->SetBinContent(1943,0.0110538); - ssigpTa->SetBinContent(1944,0.0110683); - ssigpTa->SetBinContent(1945,0.0110846); - ssigpTa->SetBinContent(1946,0.0110991); - ssigpTa->SetBinContent(1947,0.0111138); - ssigpTa->SetBinContent(1948,0.0111288); - ssigpTa->SetBinContent(1949,0.0111463); - ssigpTa->SetBinContent(1950,0.0111654); - ssigpTa->SetBinContent(1951,0.0111834); - ssigpTa->SetBinContent(1952,0.0112013); - ssigpTa->SetBinContent(1953,0.0112205); - ssigpTa->SetBinContent(1954,0.0112393); - ssigpTa->SetBinContent(1955,0.0112601); - ssigpTa->SetBinContent(1956,0.0112818); - ssigpTa->SetBinContent(1957,0.0113034); - ssigpTa->SetBinContent(1958,0.0113255); - ssigpTa->SetBinContent(1959,0.0113488); - ssigpTa->SetBinContent(1960,0.0113726); - ssigpTa->SetBinContent(1961,0.0113967); - ssigpTa->SetBinContent(1962,0.0114202); - ssigpTa->SetBinContent(1963,0.0114463); - ssigpTa->SetBinContent(1964,0.0114722); - ssigpTa->SetBinContent(1965,0.0114996); - ssigpTa->SetBinContent(1966,0.0115271); - ssigpTa->SetBinContent(1967,0.0115546); - ssigpTa->SetBinContent(1968,0.011583); - ssigpTa->SetBinContent(1969,0.0116114); - ssigpTa->SetBinContent(1970,0.0116417); - ssigpTa->SetBinContent(1971,0.0116709); - ssigpTa->SetBinContent(1972,0.0117022); - ssigpTa->SetBinContent(1973,0.0117322); - ssigpTa->SetBinContent(1974,0.0117654); - ssigpTa->SetBinContent(1975,0.0117976); - ssigpTa->SetBinContent(1976,0.0118301); - ssigpTa->SetBinContent(1977,0.0118626); - ssigpTa->SetBinContent(1978,0.0118973); - ssigpTa->SetBinContent(1979,0.011933); - ssigpTa->SetBinContent(1980,0.0119701); - ssigpTa->SetBinContent(1981,0.0120087); - ssigpTa->SetBinContent(1982,0.0120438); - ssigpTa->SetBinContent(1983,0.0120806); - ssigpTa->SetBinContent(1984,0.0121177); - ssigpTa->SetBinContent(1985,0.0121584); - ssigpTa->SetBinContent(1986,0.012198); - ssigpTa->SetBinContent(1987,0.0122376); - ssigpTa->SetBinContent(1988,0.0122801); - ssigpTa->SetBinContent(1989,0.0123214); - ssigpTa->SetBinContent(1990,0.0123646); - ssigpTa->SetBinContent(1991,0.0124059); - ssigpTa->SetBinContent(1992,0.0124493); - ssigpTa->SetBinContent(1993,0.0124943); - ssigpTa->SetBinContent(1994,0.0125397); - ssigpTa->SetBinContent(1995,0.0125851); - ssigpTa->SetBinContent(1996,0.0126322); - ssigpTa->SetBinContent(1997,0.0126773); - ssigpTa->SetBinContent(1998,0.0127268); - ssigpTa->SetBinContent(1999,0.0127743); - ssigpTa->SetBinContent(2000,0.0128251); - ssigpTa->SetBinContent(2001,0.0128747); - ssigpTa->SetBinContent(2002,0.0129251); - ssigpTa->SetBinContent(2003,0.0129756); - ssigpTa->SetBinContent(2004,0.0130286); - ssigpTa->SetBinContent(2005,0.0130822); - ssigpTa->SetBinContent(2006,0.0131372); - ssigpTa->SetBinContent(2007,0.0131898); - ssigpTa->SetBinContent(2008,0.0132456); - ssigpTa->SetBinContent(2009,0.0133019); - ssigpTa->SetBinContent(2010,0.0133594); - ssigpTa->SetBinContent(2011,0.0134177); - ssigpTa->SetBinContent(2012,0.0134769); - ssigpTa->SetBinContent(2013,0.0135365); - ssigpTa->SetBinContent(2014,0.0135969); - ssigpTa->SetBinContent(2015,0.0136578); - ssigpTa->SetBinContent(2016,0.013721); - ssigpTa->SetBinContent(2017,0.0137856); - ssigpTa->SetBinContent(2018,0.013851); - ssigpTa->SetBinContent(2019,0.0139156); - ssigpTa->SetBinContent(2020,0.0139814); - ssigpTa->SetBinContent(2021,0.0140482); - ssigpTa->SetBinContent(2022,0.0141285); - ssigpTa->SetBinContent(2023,0.0142741); - ssigpTa->SetBinContent(2024,0.0145432); - ssigpTa->SetBinContent(2025,0.0150346); - ssigpTa->SetBinContent(2026,0.015756); - ssigpTa->SetBinContent(2027,0.0161727); - ssigpTa->SetBinContent(2028,0.0163038); - ssigpTa->SetBinContent(2029,0.0163802); - ssigpTa->SetBinContent(2030,0.0164586); - ssigpTa->SetBinContent(2031,0.016539); - ssigpTa->SetBinContent(2032,0.0166222); - ssigpTa->SetBinContent(2033,0.0167071); - ssigpTa->SetBinContent(2034,0.0167905); - ssigpTa->SetBinContent(2035,0.0168331); - ssigpTa->SetBinContent(2036,0.0166674); - ssigpTa->SetBinContent(2037,0.0162774); - ssigpTa->SetBinContent(2038,0.0161242); - ssigpTa->SetBinContent(2039,0.0162573); - ssigpTa->SetBinContent(2040,0.0164844); - ssigpTa->SetBinContent(2041,0.0167179); - ssigpTa->SetBinContent(2042,0.016953); - ssigpTa->SetBinContent(2043,0.0171879); - ssigpTa->SetBinContent(2044,0.0173744); - ssigpTa->SetBinContent(2045,0.0173053); - ssigpTa->SetBinContent(2046,0.0169489); - ssigpTa->SetBinContent(2047,0.0166912); - ssigpTa->SetBinContent(2048,0.0165206); - ssigpTa->SetBinContent(2049,0.016597); - ssigpTa->SetBinContent(2050,0.0168583); - ssigpTa->SetBinContent(2051,0.0171585); - ssigpTa->SetBinContent(2052,0.0174592); - ssigpTa->SetBinContent(2053,0.017761); - ssigpTa->SetBinContent(2054,0.0180624); - ssigpTa->SetBinContent(2055,0.0182921); - ssigpTa->SetBinContent(2056,0.0181731); - ssigpTa->SetBinContent(2057,0.0177084); - ssigpTa->SetBinContent(2058,0.0176014); - ssigpTa->SetBinContent(2059,0.0178462); - ssigpTa->SetBinContent(2060,0.0181652); - ssigpTa->SetBinContent(2061,0.0184869); - ssigpTa->SetBinContent(2062,0.0188067); - ssigpTa->SetBinContent(2063,0.0190457); - ssigpTa->SetBinContent(2064,0.0188942); - ssigpTa->SetBinContent(2065,0.0183622); - ssigpTa->SetBinContent(2066,0.0181698); - ssigpTa->SetBinContent(2067,0.0180698); - ssigpTa->SetBinContent(2068,0.0177385); - ssigpTa->SetBinContent(2069,0.0177082); - ssigpTa->SetBinContent(2070,0.0179832); - ssigpTa->SetBinContent(2071,0.0183181); - ssigpTa->SetBinContent(2072,0.0186592); - ssigpTa->SetBinContent(2073,0.0190023); - ssigpTa->SetBinContent(2074,0.019353); - ssigpTa->SetBinContent(2075,0.0197059); - ssigpTa->SetBinContent(2076,0.0200626); - ssigpTa->SetBinContent(2077,0.0204234); - ssigpTa->SetBinContent(2078,0.0207362); - ssigpTa->SetBinContent(2079,0.0207847); - ssigpTa->SetBinContent(2080,0.0205553); - ssigpTa->SetBinContent(2081,0.0204889); - ssigpTa->SetBinContent(2082,0.0201466); - ssigpTa->SetBinContent(2083,0.0193246); - ssigpTa->SetBinContent(2084,0.0190281); - ssigpTa->SetBinContent(2085,0.0192756); - ssigpTa->SetBinContent(2086,0.0196343); - ssigpTa->SetBinContent(2087,0.0200011); - ssigpTa->SetBinContent(2088,0.0203682); - ssigpTa->SetBinContent(2089,0.0207266); - ssigpTa->SetBinContent(2090,0.020999); - ssigpTa->SetBinContent(2091,0.0211765); - ssigpTa->SetBinContent(2092,0.0214816); - ssigpTa->SetBinContent(2093,0.022044); - ssigpTa->SetBinContent(2094,0.0227832); - ssigpTa->SetBinContent(2095,0.023381); - ssigpTa->SetBinContent(2096,0.0237148); - ssigpTa->SetBinContent(2097,0.0234707); - ssigpTa->SetBinContent(2098,0.0226631); - ssigpTa->SetBinContent(2099,0.022351); - ssigpTa->SetBinContent(2100,0.0225545); - ssigpTa->SetBinContent(2101,0.0228645); - ssigpTa->SetBinContent(2102,0.0231685); - ssigpTa->SetBinContent(2103,0.0234652); - ssigpTa->SetBinContent(2104,0.0235513); - ssigpTa->SetBinContent(2105,0.022677); - ssigpTa->SetBinContent(2106,0.0208411); - ssigpTa->SetBinContent(2107,0.0199656); - ssigpTa->SetBinContent(2108,0.0200714); - ssigpTa->SetBinContent(2109,0.0203814); - ssigpTa->SetBinContent(2110,0.0208009); - ssigpTa->SetBinContent(2111,0.021701); - ssigpTa->SetBinContent(2112,0.0230838); - ssigpTa->SetBinContent(2113,0.023994); - ssigpTa->SetBinContent(2114,0.0244365); - ssigpTa->SetBinContent(2115,0.0247964); - ssigpTa->SetBinContent(2116,0.0251649); - ssigpTa->SetBinContent(2117,0.0255356); - ssigpTa->SetBinContent(2118,0.025908); - ssigpTa->SetBinContent(2119,0.0261988); - ssigpTa->SetBinContent(2120,0.0260903); - ssigpTa->SetBinContent(2121,0.0255898); - ssigpTa->SetBinContent(2122,0.0254857); - ssigpTa->SetBinContent(2123,0.0258954); - ssigpTa->SetBinContent(2124,0.026921); - ssigpTa->SetBinContent(2125,0.0284812); - ssigpTa->SetBinContent(2126,0.0295424); - ssigpTa->SetBinContent(2127,0.030095); - ssigpTa->SetBinContent(2128,0.0305447); - ssigpTa->SetBinContent(2129,0.0309966); - ssigpTa->SetBinContent(2130,0.0313644); - ssigpTa->SetBinContent(2131,0.0313179); - ssigpTa->SetBinContent(2132,0.0308601); - ssigpTa->SetBinContent(2133,0.0308218); - ssigpTa->SetBinContent(2134,0.0313326); - ssigpTa->SetBinContent(2135,0.0325148); - ssigpTa->SetBinContent(2136,0.0342785); - ssigpTa->SetBinContent(2137,0.0354862); - ssigpTa->SetBinContent(2138,0.0361217); - ssigpTa->SetBinContent(2139,0.0366499); - ssigpTa->SetBinContent(2140,0.0372001); - ssigpTa->SetBinContent(2141,0.0377714); - ssigpTa->SetBinContent(2142,0.0381105); - ssigpTa->SetBinContent(2143,0.0372141); - ssigpTa->SetBinContent(2144,0.0350542); - ssigpTa->SetBinContent(2145,0.0341724); - ssigpTa->SetBinContent(2146,0.035016); - ssigpTa->SetBinContent(2147,0.036639); - ssigpTa->SetBinContent(2148,0.0377908); - ssigpTa->SetBinContent(2149,0.0384414); - ssigpTa->SetBinContent(2150,0.0389862); - ssigpTa->SetBinContent(2151,0.0395276); - ssigpTa->SetBinContent(2152,0.0400685); - ssigpTa->SetBinContent(2153,0.040603); - ssigpTa->SetBinContent(2154,0.0411051); - ssigpTa->SetBinContent(2155,0.0415438); - ssigpTa->SetBinContent(2156,0.0423129); - ssigpTa->SetBinContent(2157,0.0437726); - ssigpTa->SetBinContent(2158,0.044953); - ssigpTa->SetBinContent(2159,0.0456922); - ssigpTa->SetBinContent(2160,0.0463289); - ssigpTa->SetBinContent(2161,0.04697); - ssigpTa->SetBinContent(2162,0.0476206); - ssigpTa->SetBinContent(2163,0.0482878); - ssigpTa->SetBinContent(2164,0.0489076); - ssigpTa->SetBinContent(2165,0.0492266); - ssigpTa->SetBinContent(2166,0.04922); - ssigpTa->SetBinContent(2167,0.0495405); - ssigpTa->SetBinContent(2168,0.0500814); - ssigpTa->SetBinContent(2169,0.0505789); - ssigpTa->SetBinContent(2170,0.0511818); - ssigpTa->SetBinContent(2171,0.0518907); - ssigpTa->SetBinContent(2172,0.0526206); - ssigpTa->SetBinContent(2173,0.0533709); - ssigpTa->SetBinContent(2174,0.0541796); - ssigpTa->SetBinContent(2175,0.0550343); - ssigpTa->SetBinContent(2176,0.0559001); - ssigpTa->SetBinContent(2177,0.0567602); - ssigpTa->SetBinContent(2178,0.0576226); - ssigpTa->SetBinContent(2179,0.0584811); - ssigpTa->SetBinContent(2180,0.0593225); - ssigpTa->SetBinContent(2181,0.0601538); - ssigpTa->SetBinContent(2182,0.0610155); - ssigpTa->SetBinContent(2183,0.0617923); - ssigpTa->SetBinContent(2184,0.062061); - ssigpTa->SetBinContent(2185,0.0618306); - ssigpTa->SetBinContent(2186,0.0621661); - ssigpTa->SetBinContent(2187,0.0630838); - ssigpTa->SetBinContent(2188,0.0641381); - ssigpTa->SetBinContent(2189,0.0652258); - ssigpTa->SetBinContent(2190,0.0659904); - ssigpTa->SetBinContent(2193,0.0116664); - ssigpTa->SetBinContent(2194,0.011659); - ssigpTa->SetBinContent(2195,0.0116574); - ssigpTa->SetBinContent(2196,0.0116582); - ssigpTa->SetBinContent(2197,0.01166); - ssigpTa->SetBinContent(2198,0.0116624); - ssigpTa->SetBinContent(2199,0.0116674); - ssigpTa->SetBinContent(2200,0.01167); - ssigpTa->SetBinContent(2201,0.0116726); - ssigpTa->SetBinContent(2202,0.0116774); - ssigpTa->SetBinContent(2203,0.0116858); - ssigpTa->SetBinContent(2204,0.011694); - ssigpTa->SetBinContent(2205,0.0116982); - ssigpTa->SetBinContent(2206,0.0117042); - ssigpTa->SetBinContent(2207,0.0117116); - ssigpTa->SetBinContent(2208,0.0117184); - ssigpTa->SetBinContent(2209,0.0117274); - ssigpTa->SetBinContent(2210,0.0117366); - ssigpTa->SetBinContent(2211,0.0117474); - ssigpTa->SetBinContent(2212,0.0117568); - ssigpTa->SetBinContent(2213,0.0117684); - ssigpTa->SetBinContent(2214,0.01178); - ssigpTa->SetBinContent(2215,0.0117942); - ssigpTa->SetBinContent(2216,0.0118066); - ssigpTa->SetBinContent(2217,0.0118216); - ssigpTa->SetBinContent(2218,0.0118358); - ssigpTa->SetBinContent(2219,0.0118516); - ssigpTa->SetBinContent(2220,0.0118674); - ssigpTa->SetBinContent(2221,0.0118808); - ssigpTa->SetBinContent(2222,0.011895); - ssigpTa->SetBinContent(2223,0.011914); - ssigpTa->SetBinContent(2224,0.0119308); - ssigpTa->SetBinContent(2225,0.0119508); - ssigpTa->SetBinContent(2226,0.011969); - ssigpTa->SetBinContent(2227,0.011989); - ssigpTa->SetBinContent(2228,0.0120082); - ssigpTa->SetBinContent(2229,0.012029); - ssigpTa->SetBinContent(2230,0.012049); - ssigpTa->SetBinContent(2231,0.0120708); - ssigpTa->SetBinContent(2232,0.0120916); - ssigpTa->SetBinContent(2233,0.0121166); - ssigpTa->SetBinContent(2234,0.0121406); - ssigpTa->SetBinContent(2235,0.012164); - ssigpTa->SetBinContent(2236,0.0121866); - ssigpTa->SetBinContent(2237,0.0122124); - ssigpTa->SetBinContent(2238,0.0122414); - ssigpTa->SetBinContent(2239,0.0122674); - ssigpTa->SetBinContent(2240,0.0122956); - ssigpTa->SetBinContent(2241,0.0123254); - ssigpTa->SetBinContent(2242,0.0123522); - ssigpTa->SetBinContent(2243,0.012383); - ssigpTa->SetBinContent(2244,0.0124122); - ssigpTa->SetBinContent(2245,0.0124422); - ssigpTa->SetBinContent(2246,0.0124714); - ssigpTa->SetBinContent(2247,0.0125038); - ssigpTa->SetBinContent(2248,0.0125346); - ssigpTa->SetBinContent(2249,0.0125664); - ssigpTa->SetBinContent(2250,0.0125988); - ssigpTa->SetBinContent(2251,0.0126306); - ssigpTa->SetBinContent(2252,0.0126648); - ssigpTa->SetBinContent(2253,0.0127006); - ssigpTa->SetBinContent(2254,0.0127396); - ssigpTa->SetBinContent(2255,0.0127762); - ssigpTa->SetBinContent(2256,0.0128138); - ssigpTa->SetBinContent(2257,0.0128464); - ssigpTa->SetBinContent(2258,0.0128848); - ssigpTa->SetBinContent(2259,0.012924); - ssigpTa->SetBinContent(2260,0.012964); - ssigpTa->SetBinContent(2261,0.0130048); - ssigpTa->SetBinContent(2262,0.0130464); - ssigpTa->SetBinContent(2263,0.0130928); - ssigpTa->SetBinContent(2264,0.0131344); - ssigpTa->SetBinContent(2265,0.0131762); - ssigpTa->SetBinContent(2266,0.013218); - ssigpTa->SetBinContent(2267,0.0132614); - ssigpTa->SetBinContent(2268,0.0133086); - ssigpTa->SetBinContent(2269,0.0133554); - ssigpTa->SetBinContent(2270,0.0134028); - ssigpTa->SetBinContent(2271,0.0134518); - ssigpTa->SetBinContent(2272,0.013497); - ssigpTa->SetBinContent(2273,0.0135476); - ssigpTa->SetBinContent(2274,0.013596); - ssigpTa->SetBinContent(2275,0.0136484); - ssigpTa->SetBinContent(2276,0.0136968); - ssigpTa->SetBinContent(2277,0.0137478); - ssigpTa->SetBinContent(2278,0.0138002); - ssigpTa->SetBinContent(2279,0.0138576); - ssigpTa->SetBinContent(2280,0.0139108); - ssigpTa->SetBinContent(2281,0.0139642); - ssigpTa->SetBinContent(2282,0.0140176); - ssigpTa->SetBinContent(2283,0.0140744); - ssigpTa->SetBinContent(2284,0.0141334); - ssigpTa->SetBinContent(2285,0.0141918); - ssigpTa->SetBinContent(2286,0.0142508); - ssigpTa->SetBinContent(2287,0.0143116); - ssigpTa->SetBinContent(2288,0.0143708); - ssigpTa->SetBinContent(2289,0.0144326); - ssigpTa->SetBinContent(2290,0.0144958); - ssigpTa->SetBinContent(2291,0.0145624); - ssigpTa->SetBinContent(2292,0.014629); - ssigpTa->SetBinContent(2293,0.014694); - ssigpTa->SetBinContent(2294,0.0147606); - ssigpTa->SetBinContent(2295,0.014828); - ssigpTa->SetBinContent(2296,0.0149044); - ssigpTa->SetBinContent(2297,0.01504); - ssigpTa->SetBinContent(2298,0.0152968); - ssigpTa->SetBinContent(2299,0.0158454); - ssigpTa->SetBinContent(2300,0.0166952); - ssigpTa->SetBinContent(2301,0.0171798); - ssigpTa->SetBinContent(2302,0.0173196); - ssigpTa->SetBinContent(2303,0.0173948); - ssigpTa->SetBinContent(2304,0.0174732); - ssigpTa->SetBinContent(2305,0.017554); - ssigpTa->SetBinContent(2306,0.0176388); - ssigpTa->SetBinContent(2307,0.0177238); - ssigpTa->SetBinContent(2308,0.0178064); - ssigpTa->SetBinContent(2309,0.0178402); - ssigpTa->SetBinContent(2310,0.0176236); - ssigpTa->SetBinContent(2311,0.0171528); - ssigpTa->SetBinContent(2312,0.0169756); - ssigpTa->SetBinContent(2313,0.0171316); - ssigpTa->SetBinContent(2314,0.0173774); - ssigpTa->SetBinContent(2315,0.0176326); - ssigpTa->SetBinContent(2316,0.0178856); - ssigpTa->SetBinContent(2317,0.0181432); - ssigpTa->SetBinContent(2318,0.0183448); - ssigpTa->SetBinContent(2319,0.018264); - ssigpTa->SetBinContent(2320,0.0178714); - ssigpTa->SetBinContent(2321,0.0176596); - ssigpTa->SetBinContent(2322,0.0176128); - ssigpTa->SetBinContent(2323,0.0177594); - ssigpTa->SetBinContent(2324,0.018039); - ssigpTa->SetBinContent(2325,0.0183378); - ssigpTa->SetBinContent(2326,0.0186398); - ssigpTa->SetBinContent(2327,0.018942); - ssigpTa->SetBinContent(2328,0.0192458); - ssigpTa->SetBinContent(2329,0.0194728); - ssigpTa->SetBinContent(2330,0.0193174); - ssigpTa->SetBinContent(2331,0.01878); - ssigpTa->SetBinContent(2332,0.0186448); - ssigpTa->SetBinContent(2333,0.018897); - ssigpTa->SetBinContent(2334,0.0192262); - ssigpTa->SetBinContent(2335,0.019557); - ssigpTa->SetBinContent(2336,0.01989); - ssigpTa->SetBinContent(2337,0.0201466); - ssigpTa->SetBinContent(2338,0.0200456); - ssigpTa->SetBinContent(2339,0.0195956); - ssigpTa->SetBinContent(2340,0.0194406); - ssigpTa->SetBinContent(2341,0.0192786); - ssigpTa->SetBinContent(2342,0.0188018); - ssigpTa->SetBinContent(2343,0.0187082); - ssigpTa->SetBinContent(2344,0.0189916); - ssigpTa->SetBinContent(2345,0.019359); - ssigpTa->SetBinContent(2346,0.0197282); - ssigpTa->SetBinContent(2347,0.0201054); - ssigpTa->SetBinContent(2348,0.0204856); - ssigpTa->SetBinContent(2349,0.0208726); - ssigpTa->SetBinContent(2350,0.0212616); - ssigpTa->SetBinContent(2351,0.021654); - ssigpTa->SetBinContent(2352,0.0219888); - ssigpTa->SetBinContent(2353,0.0220006); - ssigpTa->SetBinContent(2354,0.0216828); - ssigpTa->SetBinContent(2355,0.0215594); - ssigpTa->SetBinContent(2356,0.021165); - ssigpTa->SetBinContent(2357,0.0202292); - ssigpTa->SetBinContent(2358,0.0198858); - ssigpTa->SetBinContent(2359,0.020138); - ssigpTa->SetBinContent(2360,0.0205292); - ssigpTa->SetBinContent(2361,0.020926); - ssigpTa->SetBinContent(2362,0.0213276); - ssigpTa->SetBinContent(2363,0.0217022); - ssigpTa->SetBinContent(2364,0.021931); - ssigpTa->SetBinContent(2365,0.021992); - ssigpTa->SetBinContent(2366,0.0222564); - ssigpTa->SetBinContent(2367,0.0228498); - ssigpTa->SetBinContent(2368,0.0236594); - ssigpTa->SetBinContent(2369,0.0243082); - ssigpTa->SetBinContent(2370,0.0246996); - ssigpTa->SetBinContent(2371,0.0245866); - ssigpTa->SetBinContent(2372,0.0239878); - ssigpTa->SetBinContent(2373,0.0238174); - ssigpTa->SetBinContent(2374,0.0240994); - ssigpTa->SetBinContent(2375,0.0244666); - ssigpTa->SetBinContent(2376,0.0248332); - ssigpTa->SetBinContent(2377,0.0251722); - ssigpTa->SetBinContent(2378,0.025254); - ssigpTa->SetBinContent(2379,0.0242768); - ssigpTa->SetBinContent(2380,0.0222334); - ssigpTa->SetBinContent(2381,0.0212494); - ssigpTa->SetBinContent(2382,0.0213502); - ssigpTa->SetBinContent(2383,0.021688); - ssigpTa->SetBinContent(2384,0.0221104); - ssigpTa->SetBinContent(2385,0.0229338); - ssigpTa->SetBinContent(2386,0.0241476); - ssigpTa->SetBinContent(2387,0.0249774); - ssigpTa->SetBinContent(2388,0.0254222); - ssigpTa->SetBinContent(2389,0.0258028); - ssigpTa->SetBinContent(2390,0.0261954); - ssigpTa->SetBinContent(2391,0.0265912); - ssigpTa->SetBinContent(2392,0.0269902); - ssigpTa->SetBinContent(2393,0.027321); - ssigpTa->SetBinContent(2394,0.0273024); - ssigpTa->SetBinContent(2395,0.02694); - ssigpTa->SetBinContent(2396,0.0269348); - ssigpTa->SetBinContent(2397,0.0273798); - ssigpTa->SetBinContent(2398,0.028372); - ssigpTa->SetBinContent(2399,0.0298316); - ssigpTa->SetBinContent(2400,0.0308522); - ssigpTa->SetBinContent(2401,0.0314272); - ssigpTa->SetBinContent(2402,0.0319146); - ssigpTa->SetBinContent(2403,0.0324044); - ssigpTa->SetBinContent(2404,0.0328326); - ssigpTa->SetBinContent(2405,0.0329182); - ssigpTa->SetBinContent(2406,0.0326692); - ssigpTa->SetBinContent(2407,0.0327766); - ssigpTa->SetBinContent(2408,0.0333478); - ssigpTa->SetBinContent(2409,0.0345038); - ssigpTa->SetBinContent(2410,0.0361618); - ssigpTa->SetBinContent(2411,0.037333); - ssigpTa->SetBinContent(2412,0.038007); - ssigpTa->SetBinContent(2413,0.0385956); - ssigpTa->SetBinContent(2414,0.039208); - ssigpTa->SetBinContent(2415,0.039845); - ssigpTa->SetBinContent(2416,0.0402656); - ssigpTa->SetBinContent(2417,0.0395548); - ssigpTa->SetBinContent(2418,0.0376854); - ssigpTa->SetBinContent(2419,0.0369888); - ssigpTa->SetBinContent(2420,0.0379014); - ssigpTa->SetBinContent(2421,0.0395478); - ssigpTa->SetBinContent(2422,0.040745); - ssigpTa->SetBinContent(2423,0.041459); - ssigpTa->SetBinContent(2424,0.0420656); - ssigpTa->SetBinContent(2425,0.0426768); - ssigpTa->SetBinContent(2426,0.0432858); - ssigpTa->SetBinContent(2427,0.0438984); - ssigpTa->SetBinContent(2428,0.044474); - ssigpTa->SetBinContent(2429,0.0450024); - ssigpTa->SetBinContent(2430,0.0458558); - ssigpTa->SetBinContent(2431,0.0473592); - ssigpTa->SetBinContent(2432,0.0486012); - ssigpTa->SetBinContent(2433,0.049422); - ssigpTa->SetBinContent(2434,0.0501472); - ssigpTa->SetBinContent(2435,0.0508764); - ssigpTa->SetBinContent(2436,0.0516162); - ssigpTa->SetBinContent(2437,0.052366); - ssigpTa->SetBinContent(2438,0.0530908); - ssigpTa->SetBinContent(2439,0.053553); - ssigpTa->SetBinContent(2440,0.0537458); - ssigpTa->SetBinContent(2441,0.0542108); - ssigpTa->SetBinContent(2442,0.0548582); - ssigpTa->SetBinContent(2443,0.0554518); - ssigpTa->SetBinContent(2444,0.056162); - ssigpTa->SetBinContent(2445,0.0569918); - ssigpTa->SetBinContent(2446,0.057844); - ssigpTa->SetBinContent(2447,0.0587302); - ssigpTa->SetBinContent(2448,0.059685); - ssigpTa->SetBinContent(2449,0.0606904); - ssigpTa->SetBinContent(2450,0.0617086); - ssigpTa->SetBinContent(2451,0.0627248); - ssigpTa->SetBinContent(2452,0.0637472); - ssigpTa->SetBinContent(2453,0.0647936); - ssigpTa->SetBinContent(2454,0.0658844); - ssigpTa->SetBinContent(2455,0.0670358); - ssigpTa->SetBinContent(2456,0.0681522); - ssigpTa->SetBinContent(2457,0.0691648); - ssigpTa->SetBinContent(2458,0.0697766); - ssigpTa->SetBinContent(2459,0.070027); - ssigpTa->SetBinContent(2460,0.0707496); - ssigpTa->SetBinContent(2461,0.0719462); - ssigpTa->SetBinContent(2462,0.0732532); - ssigpTa->SetBinContent(2463,0.0745431); - ssigpTa->SetBinContent(2464,0.0755447); - ssigpTa->SetBinContent(2467,0.0125972); - ssigpTa->SetBinContent(2468,0.0125946); - ssigpTa->SetBinContent(2469,0.0125924); - ssigpTa->SetBinContent(2470,0.0125924); - ssigpTa->SetBinContent(2471,0.0125928); - ssigpTa->SetBinContent(2472,0.0125944); - ssigpTa->SetBinContent(2473,0.012596); - ssigpTa->SetBinContent(2474,0.012598); - ssigpTa->SetBinContent(2475,0.0125992); - ssigpTa->SetBinContent(2476,0.0126032); - ssigpTa->SetBinContent(2477,0.0126164); - ssigpTa->SetBinContent(2478,0.012624); - ssigpTa->SetBinContent(2479,0.01263); - ssigpTa->SetBinContent(2480,0.0126332); - ssigpTa->SetBinContent(2481,0.0126376); - ssigpTa->SetBinContent(2482,0.0126456); - ssigpTa->SetBinContent(2483,0.012654); - ssigpTa->SetBinContent(2484,0.0126664); - ssigpTa->SetBinContent(2485,0.0126776); - ssigpTa->SetBinContent(2486,0.0126848); - ssigpTa->SetBinContent(2487,0.012694); - ssigpTa->SetBinContent(2488,0.012708); - ssigpTa->SetBinContent(2489,0.0127216); - ssigpTa->SetBinContent(2490,0.0127368); - ssigpTa->SetBinContent(2491,0.0127488); - ssigpTa->SetBinContent(2492,0.012764); - ssigpTa->SetBinContent(2493,0.0127796); - ssigpTa->SetBinContent(2494,0.0127948); - ssigpTa->SetBinContent(2495,0.0128068); - ssigpTa->SetBinContent(2496,0.012822); - ssigpTa->SetBinContent(2497,0.0128376); - ssigpTa->SetBinContent(2498,0.012858); - ssigpTa->SetBinContent(2499,0.0128728); - ssigpTa->SetBinContent(2500,0.012896); - ssigpTa->SetBinContent(2501,0.0129144); - ssigpTa->SetBinContent(2502,0.0129336); - ssigpTa->SetBinContent(2503,0.012954); - ssigpTa->SetBinContent(2504,0.0129756); - ssigpTa->SetBinContent(2505,0.012994); - ssigpTa->SetBinContent(2506,0.0130168); - ssigpTa->SetBinContent(2507,0.013038); - ssigpTa->SetBinContent(2508,0.0130644); - ssigpTa->SetBinContent(2509,0.0130824); - ssigpTa->SetBinContent(2510,0.0131072); - ssigpTa->SetBinContent(2511,0.0131332); - ssigpTa->SetBinContent(2512,0.013162); - ssigpTa->SetBinContent(2513,0.0131892); - ssigpTa->SetBinContent(2514,0.0132184); - ssigpTa->SetBinContent(2515,0.0132456); - ssigpTa->SetBinContent(2516,0.013276); - ssigpTa->SetBinContent(2517,0.0133032); - ssigpTa->SetBinContent(2518,0.013334); - ssigpTa->SetBinContent(2519,0.0133612); - ssigpTa->SetBinContent(2520,0.013392); - ssigpTa->SetBinContent(2521,0.0134224); - ssigpTa->SetBinContent(2522,0.0134536); - ssigpTa->SetBinContent(2523,0.0134844); - ssigpTa->SetBinContent(2524,0.0135132); - ssigpTa->SetBinContent(2525,0.0135472); - ssigpTa->SetBinContent(2526,0.0135796); - ssigpTa->SetBinContent(2527,0.0136164); - ssigpTa->SetBinContent(2528,0.0136516); - ssigpTa->SetBinContent(2529,0.0136884); - ssigpTa->SetBinContent(2530,0.0137216); - ssigpTa->SetBinContent(2531,0.0137584); - ssigpTa->SetBinContent(2532,0.0137932); - ssigpTa->SetBinContent(2533,0.0138352); - ssigpTa->SetBinContent(2534,0.0138748); - ssigpTa->SetBinContent(2535,0.0139144); - ssigpTa->SetBinContent(2536,0.0139572); - ssigpTa->SetBinContent(2537,0.0139996); - ssigpTa->SetBinContent(2538,0.0140444); - ssigpTa->SetBinContent(2539,0.014084); - ssigpTa->SetBinContent(2540,0.014124); - ssigpTa->SetBinContent(2541,0.0141668); - ssigpTa->SetBinContent(2542,0.0142108); - ssigpTa->SetBinContent(2543,0.0142612); - ssigpTa->SetBinContent(2544,0.014312); - ssigpTa->SetBinContent(2545,0.0143588); - ssigpTa->SetBinContent(2546,0.0144068); - ssigpTa->SetBinContent(2547,0.0144508); - ssigpTa->SetBinContent(2548,0.0145032); - ssigpTa->SetBinContent(2549,0.014554); - ssigpTa->SetBinContent(2550,0.014604); - ssigpTa->SetBinContent(2551,0.0146528); - ssigpTa->SetBinContent(2552,0.0147076); - ssigpTa->SetBinContent(2553,0.0147628); - ssigpTa->SetBinContent(2554,0.014818); - ssigpTa->SetBinContent(2555,0.014868); - ssigpTa->SetBinContent(2556,0.014922); - ssigpTa->SetBinContent(2557,0.0149804); - ssigpTa->SetBinContent(2558,0.015038); - ssigpTa->SetBinContent(2559,0.015096); - ssigpTa->SetBinContent(2560,0.015154); - ssigpTa->SetBinContent(2561,0.015212); - ssigpTa->SetBinContent(2562,0.0152752); - ssigpTa->SetBinContent(2563,0.0153364); - ssigpTa->SetBinContent(2564,0.0154004); - ssigpTa->SetBinContent(2565,0.015466); - ssigpTa->SetBinContent(2566,0.0155316); - ssigpTa->SetBinContent(2567,0.0155988); - ssigpTa->SetBinContent(2568,0.0156644); - ssigpTa->SetBinContent(2569,0.01573); - ssigpTa->SetBinContent(2570,0.0158104); - ssigpTa->SetBinContent(2571,0.0159332); - ssigpTa->SetBinContent(2572,0.0161932); - ssigpTa->SetBinContent(2573,0.016836); - ssigpTa->SetBinContent(2574,0.0178656); - ssigpTa->SetBinContent(2575,0.0184488); - ssigpTa->SetBinContent(2576,0.0186036); - ssigpTa->SetBinContent(2577,0.0186768); - ssigpTa->SetBinContent(2578,0.0187548); - ssigpTa->SetBinContent(2579,0.0188356); - ssigpTa->SetBinContent(2580,0.01892); - ssigpTa->SetBinContent(2581,0.0190028); - ssigpTa->SetBinContent(2582,0.0190836); - ssigpTa->SetBinContent(2583,0.0191052); - ssigpTa->SetBinContent(2584,0.0188136); - ssigpTa->SetBinContent(2585,0.0182172); - ssigpTa->SetBinContent(2586,0.0180028); - ssigpTa->SetBinContent(2587,0.0181788); - ssigpTa->SetBinContent(2588,0.0184604); - ssigpTa->SetBinContent(2589,0.018742); - ssigpTa->SetBinContent(2590,0.0190304); - ssigpTa->SetBinContent(2591,0.0193188); - ssigpTa->SetBinContent(2592,0.019544); - ssigpTa->SetBinContent(2593,0.0194276); - ssigpTa->SetBinContent(2594,0.0189468); - ssigpTa->SetBinContent(2595,0.018728); - ssigpTa->SetBinContent(2596,0.0187508); - ssigpTa->SetBinContent(2597,0.0189528); - ssigpTa->SetBinContent(2598,0.01925); - ssigpTa->SetBinContent(2599,0.0195704); - ssigpTa->SetBinContent(2600,0.0198928); - ssigpTa->SetBinContent(2601,0.0202156); - ssigpTa->SetBinContent(2602,0.0205424); - ssigpTa->SetBinContent(2603,0.0207844); - ssigpTa->SetBinContent(2604,0.0205916); - ssigpTa->SetBinContent(2605,0.0199636); - ssigpTa->SetBinContent(2606,0.0197888); - ssigpTa->SetBinContent(2607,0.0200504); - ssigpTa->SetBinContent(2608,0.0203928); - ssigpTa->SetBinContent(2609,0.0207444); - ssigpTa->SetBinContent(2610,0.0210912); - ssigpTa->SetBinContent(2611,0.021382); - ssigpTa->SetBinContent(2612,0.0213468); - ssigpTa->SetBinContent(2613,0.0210064); - ssigpTa->SetBinContent(2614,0.0209056); - ssigpTa->SetBinContent(2615,0.0206732); - ssigpTa->SetBinContent(2616,0.020034); - ssigpTa->SetBinContent(2617,0.0198608); - ssigpTa->SetBinContent(2618,0.0201584); - ssigpTa->SetBinContent(2619,0.0205528); - ssigpTa->SetBinContent(2620,0.0209552); - ssigpTa->SetBinContent(2621,0.0213616); - ssigpTa->SetBinContent(2622,0.0217744); - ssigpTa->SetBinContent(2623,0.0221936); - ssigpTa->SetBinContent(2624,0.0226156); - ssigpTa->SetBinContent(2625,0.0230424); - ssigpTa->SetBinContent(2626,0.0233956); - ssigpTa->SetBinContent(2627,0.0233652); - ssigpTa->SetBinContent(2628,0.022926); - ssigpTa->SetBinContent(2629,0.0227556); - ssigpTa->SetBinContent(2630,0.0223308); - ssigpTa->SetBinContent(2631,0.0213608); - ssigpTa->SetBinContent(2632,0.0209964); - ssigpTa->SetBinContent(2633,0.0212784); - ssigpTa->SetBinContent(2634,0.0217004); - ssigpTa->SetBinContent(2635,0.0221348); - ssigpTa->SetBinContent(2636,0.0225712); - ssigpTa->SetBinContent(2637,0.0229692); - ssigpTa->SetBinContent(2638,0.0231256); - ssigpTa->SetBinContent(2639,0.02304); - ssigpTa->SetBinContent(2640,0.0232252); - ssigpTa->SetBinContent(2641,0.0238356); - ssigpTa->SetBinContent(2642,0.0246684); - ssigpTa->SetBinContent(2643,0.0253488); - ssigpTa->SetBinContent(2644,0.025784); - ssigpTa->SetBinContent(2645,0.0257872); - ssigpTa->SetBinContent(2646,0.0253692); - ssigpTa->SetBinContent(2647,0.0253332); - ssigpTa->SetBinContent(2648,0.0256832); - ssigpTa->SetBinContent(2649,0.0261172); - ssigpTa->SetBinContent(2650,0.026536); - ssigpTa->SetBinContent(2651,0.0268932); - ssigpTa->SetBinContent(2652,0.026942); - ssigpTa->SetBinContent(2653,0.0259232); - ssigpTa->SetBinContent(2654,0.023834); - ssigpTa->SetBinContent(2655,0.0228348); - ssigpTa->SetBinContent(2656,0.0229668); - ssigpTa->SetBinContent(2657,0.0233372); - ssigpTa->SetBinContent(2658,0.023778); - ssigpTa->SetBinContent(2659,0.0245236); - ssigpTa->SetBinContent(2660,0.0255852); - ssigpTa->SetBinContent(2661,0.0263436); - ssigpTa->SetBinContent(2662,0.026804); - ssigpTa->SetBinContent(2663,0.0272196); - ssigpTa->SetBinContent(2664,0.027646); - ssigpTa->SetBinContent(2665,0.0280792); - ssigpTa->SetBinContent(2666,0.0285176); - ssigpTa->SetBinContent(2667,0.0289008); - ssigpTa->SetBinContent(2668,0.0289976); - ssigpTa->SetBinContent(2669,0.0288168); - ssigpTa->SetBinContent(2670,0.0289336); - ssigpTa->SetBinContent(2671,0.0294304); - ssigpTa->SetBinContent(2672,0.0303736); - ssigpTa->SetBinContent(2673,0.0317056); - ssigpTa->SetBinContent(2674,0.0326796); - ssigpTa->SetBinContent(2675,0.0332912); - ssigpTa->SetBinContent(2676,0.0338336); - ssigpTa->SetBinContent(2677,0.034382); - ssigpTa->SetBinContent(2678,0.0348844); - ssigpTa->SetBinContent(2679,0.0351268); - ssigpTa->SetBinContent(2680,0.0351128); - ssigpTa->SetBinContent(2681,0.035386); - ssigpTa->SetBinContent(2682,0.036034); - ssigpTa->SetBinContent(2683,0.0371536); - ssigpTa->SetBinContent(2684,0.0386764); - ssigpTa->SetBinContent(2685,0.0398044); - ssigpTa->SetBinContent(2686,0.040534); - ssigpTa->SetBinContent(2687,0.0412016); - ssigpTa->SetBinContent(2688,0.0418972); - ssigpTa->SetBinContent(2689,0.0426176); - ssigpTa->SetBinContent(2690,0.0431512); - ssigpTa->SetBinContent(2691,0.0426724); - ssigpTa->SetBinContent(2692,0.0411664); - ssigpTa->SetBinContent(2693,0.0407); - ssigpTa->SetBinContent(2694,0.04165); - ssigpTa->SetBinContent(2695,0.0432336); - ssigpTa->SetBinContent(2696,0.0444396); - ssigpTa->SetBinContent(2697,0.0452356); - ssigpTa->SetBinContent(2698,0.0459512); - ssigpTa->SetBinContent(2699,0.0466696); - ssigpTa->SetBinContent(2700,0.0473972); - ssigpTa->SetBinContent(2701,0.048122); - ssigpTa->SetBinContent(2702,0.0488288); - ssigpTa->SetBinContent(2703,0.0494884); - ssigpTa->SetBinContent(2704,0.050446); - ssigpTa->SetBinContent(2705,0.0519596); - ssigpTa->SetBinContent(2706,0.0532556); - ssigpTa->SetBinContent(2707,0.054194); - ssigpTa->SetBinContent(2708,0.055054); - ssigpTa->SetBinContent(2709,0.0559268); - ssigpTa->SetBinContent(2710,0.056804); - ssigpTa->SetBinContent(2711,0.057702); - ssigpTa->SetBinContent(2712,0.0585824); - ssigpTa->SetBinContent(2713,0.0592648); - ssigpTa->SetBinContent(2714,0.0597192); - ssigpTa->SetBinContent(2715,0.0604144); - ssigpTa->SetBinContent(2716,0.0612524); - ssigpTa->SetBinContent(2717,0.0620356); - ssigpTa->SetBinContent(2718,0.062942); - ssigpTa->SetBinContent(2719,0.0639644); - ssigpTa->SetBinContent(2720,0.0650192); - ssigpTa->SetBinContent(2721,0.0661176); - ssigpTa->SetBinContent(2722,0.0672964); - ssigpTa->SetBinContent(2723,0.0685368); - ssigpTa->SetBinContent(2724,0.0697928); - ssigpTa->SetBinContent(2725,0.0710512); - ssigpTa->SetBinContent(2726,0.072328); - ssigpTa->SetBinContent(2727,0.073654); - ssigpTa->SetBinContent(2728,0.0751268); - ssigpTa->SetBinContent(2729,0.0767496); - ssigpTa->SetBinContent(2730,0.0782636); - ssigpTa->SetBinContent(2731,0.0796244); - ssigpTa->SetBinContent(2732,0.0807492); - ssigpTa->SetBinContent(2733,0.0816836); - ssigpTa->SetBinContent(2734,0.0829608); - ssigpTa->SetBinContent(2735,0.084564); - ssigpTa->SetBinContent(2736,0.0862444); - ssigpTa->SetBinContent(2737,0.0878608); - ssigpTa->SetBinContent(2738,0.0890528); - ssigpTa->SetBinContent(2741,0.0136622); - ssigpTa->SetBinContent(2742,0.0136583); - ssigpTa->SetBinContent(2743,0.013656); - ssigpTa->SetBinContent(2744,0.013656); - ssigpTa->SetBinContent(2745,0.013656); - ssigpTa->SetBinContent(2746,0.013656); - ssigpTa->SetBinContent(2747,0.0136568); - ssigpTa->SetBinContent(2748,0.0136568); - ssigpTa->SetBinContent(2749,0.0136568); - ssigpTa->SetBinContent(2750,0.0136672); - ssigpTa->SetBinContent(2751,0.0136776); - ssigpTa->SetBinContent(2752,0.013692); - ssigpTa->SetBinContent(2753,0.0136952); - ssigpTa->SetBinContent(2754,0.0136976); - ssigpTa->SetBinContent(2755,0.0137); - ssigpTa->SetBinContent(2756,0.013704); - ssigpTa->SetBinContent(2757,0.0137144); - ssigpTa->SetBinContent(2758,0.0137288); - ssigpTa->SetBinContent(2759,0.0137416); - ssigpTa->SetBinContent(2760,0.0137472); - ssigpTa->SetBinContent(2761,0.0137536); - ssigpTa->SetBinContent(2762,0.013768); - ssigpTa->SetBinContent(2763,0.0137824); - ssigpTa->SetBinContent(2764,0.0137944); - ssigpTa->SetBinContent(2765,0.0138096); - ssigpTa->SetBinContent(2766,0.0138216); - ssigpTa->SetBinContent(2767,0.013836); - ssigpTa->SetBinContent(2768,0.0138512); - ssigpTa->SetBinContent(2769,0.0138608); - ssigpTa->SetBinContent(2770,0.0138752); - ssigpTa->SetBinContent(2771,0.0138944); - ssigpTa->SetBinContent(2772,0.013908); - ssigpTa->SetBinContent(2773,0.0139288); - ssigpTa->SetBinContent(2774,0.0139472); - ssigpTa->SetBinContent(2775,0.013968); - ssigpTa->SetBinContent(2776,0.013984); - ssigpTa->SetBinContent(2777,0.0140048); - ssigpTa->SetBinContent(2778,0.0140272); - ssigpTa->SetBinContent(2779,0.014048); - ssigpTa->SetBinContent(2780,0.014064); - ssigpTa->SetBinContent(2781,0.0140896); - ssigpTa->SetBinContent(2782,0.0141064); - ssigpTa->SetBinContent(2783,0.0141312); - ssigpTa->SetBinContent(2784,0.0141512); - ssigpTa->SetBinContent(2785,0.01418); - ssigpTa->SetBinContent(2786,0.0142056); - ssigpTa->SetBinContent(2787,0.0142336); - ssigpTa->SetBinContent(2788,0.0142584); - ssigpTa->SetBinContent(2789,0.0142904); - ssigpTa->SetBinContent(2790,0.014312); - ssigpTa->SetBinContent(2791,0.0143416); - ssigpTa->SetBinContent(2792,0.0143688); - ssigpTa->SetBinContent(2793,0.0143952); - ssigpTa->SetBinContent(2794,0.014424); - ssigpTa->SetBinContent(2795,0.0144552); - ssigpTa->SetBinContent(2796,0.014488); - ssigpTa->SetBinContent(2797,0.0145144); - ssigpTa->SetBinContent(2798,0.014548); - ssigpTa->SetBinContent(2799,0.014576); - ssigpTa->SetBinContent(2800,0.0146128); - ssigpTa->SetBinContent(2801,0.0146456); - ssigpTa->SetBinContent(2802,0.0146816); - ssigpTa->SetBinContent(2803,0.0147104); - ssigpTa->SetBinContent(2804,0.0147464); - ssigpTa->SetBinContent(2805,0.0147784); - ssigpTa->SetBinContent(2806,0.0148176); - ssigpTa->SetBinContent(2807,0.0148544); - ssigpTa->SetBinContent(2808,0.0148976); - ssigpTa->SetBinContent(2809,0.0149368); - ssigpTa->SetBinContent(2810,0.0149736); - ssigpTa->SetBinContent(2811,0.015016); - ssigpTa->SetBinContent(2812,0.0150592); - ssigpTa->SetBinContent(2813,0.0151); - ssigpTa->SetBinContent(2814,0.0151392); - ssigpTa->SetBinContent(2815,0.0151784); - ssigpTa->SetBinContent(2816,0.01522); - ssigpTa->SetBinContent(2817,0.0152688); - ssigpTa->SetBinContent(2818,0.0153224); - ssigpTa->SetBinContent(2819,0.0153696); - ssigpTa->SetBinContent(2820,0.0154144); - ssigpTa->SetBinContent(2821,0.0154624); - ssigpTa->SetBinContent(2822,0.0155112); - ssigpTa->SetBinContent(2823,0.0155632); - ssigpTa->SetBinContent(2824,0.015612); - ssigpTa->SetBinContent(2825,0.0156616); - ssigpTa->SetBinContent(2826,0.0157128); - ssigpTa->SetBinContent(2827,0.0157672); - ssigpTa->SetBinContent(2828,0.0158184); - ssigpTa->SetBinContent(2829,0.0158696); - ssigpTa->SetBinContent(2830,0.0159248); - ssigpTa->SetBinContent(2831,0.01598); - ssigpTa->SetBinContent(2832,0.0160384); - ssigpTa->SetBinContent(2833,0.016092); - ssigpTa->SetBinContent(2834,0.0161456); - ssigpTa->SetBinContent(2835,0.016208); - ssigpTa->SetBinContent(2836,0.0162664); - ssigpTa->SetBinContent(2837,0.016332); - ssigpTa->SetBinContent(2838,0.0163936); - ssigpTa->SetBinContent(2839,0.0164536); - ssigpTa->SetBinContent(2840,0.01652); - ssigpTa->SetBinContent(2841,0.0165832); - ssigpTa->SetBinContent(2842,0.016652); - ssigpTa->SetBinContent(2843,0.01672); - ssigpTa->SetBinContent(2844,0.0167928); - ssigpTa->SetBinContent(2845,0.0169144); - ssigpTa->SetBinContent(2846,0.017184); - ssigpTa->SetBinContent(2847,0.0179496); - ssigpTa->SetBinContent(2848,0.0192168); - ssigpTa->SetBinContent(2849,0.019928); - ssigpTa->SetBinContent(2850,0.0201008); - ssigpTa->SetBinContent(2851,0.0201776); - ssigpTa->SetBinContent(2852,0.020252); - ssigpTa->SetBinContent(2853,0.020332); - ssigpTa->SetBinContent(2854,0.0204104); - ssigpTa->SetBinContent(2855,0.0204912); - ssigpTa->SetBinContent(2856,0.0205736); - ssigpTa->SetBinContent(2857,0.0205752); - ssigpTa->SetBinContent(2858,0.0201832); - ssigpTa->SetBinContent(2859,0.0194208); - ssigpTa->SetBinContent(2860,0.0191448); - ssigpTa->SetBinContent(2861,0.0193544); - ssigpTa->SetBinContent(2862,0.019672); - ssigpTa->SetBinContent(2863,0.0200008); - ssigpTa->SetBinContent(2864,0.0203288); - ssigpTa->SetBinContent(2865,0.020664); - ssigpTa->SetBinContent(2866,0.0209104); - ssigpTa->SetBinContent(2867,0.0207384); - ssigpTa->SetBinContent(2868,0.020124); - ssigpTa->SetBinContent(2869,0.0198552); - ssigpTa->SetBinContent(2870,0.0199248); - ssigpTa->SetBinContent(2871,0.0201648); - ssigpTa->SetBinContent(2872,0.0205); - ssigpTa->SetBinContent(2873,0.0208552); - ssigpTa->SetBinContent(2874,0.0212152); - ssigpTa->SetBinContent(2875,0.0215808); - ssigpTa->SetBinContent(2876,0.0219472); - ssigpTa->SetBinContent(2877,0.022216); - ssigpTa->SetBinContent(2878,0.0219704); - ssigpTa->SetBinContent(2879,0.0212048); - ssigpTa->SetBinContent(2880,0.0209656); - ssigpTa->SetBinContent(2881,0.021236); - ssigpTa->SetBinContent(2882,0.0216088); - ssigpTa->SetBinContent(2883,0.0219848); - ssigpTa->SetBinContent(2884,0.0223728); - ssigpTa->SetBinContent(2885,0.0226952); - ssigpTa->SetBinContent(2886,0.0227472); - ssigpTa->SetBinContent(2887,0.0225152); - ssigpTa->SetBinContent(2888,0.0224832); - ssigpTa->SetBinContent(2889,0.0221728); - ssigpTa->SetBinContent(2890,0.021352); - ssigpTa->SetBinContent(2891,0.0210928); - ssigpTa->SetBinContent(2892,0.0214008); - ssigpTa->SetBinContent(2893,0.0218232); - ssigpTa->SetBinContent(2894,0.0222576); - ssigpTa->SetBinContent(2895,0.0226944); - ssigpTa->SetBinContent(2896,0.0231408); - ssigpTa->SetBinContent(2897,0.023592); - ssigpTa->SetBinContent(2898,0.0240528); - ssigpTa->SetBinContent(2899,0.0245128); - ssigpTa->SetBinContent(2900,0.0248912); - ssigpTa->SetBinContent(2901,0.024792); - ssigpTa->SetBinContent(2902,0.024204); - ssigpTa->SetBinContent(2903,0.0239632); - ssigpTa->SetBinContent(2904,0.0235752); - ssigpTa->SetBinContent(2905,0.022644); - ssigpTa->SetBinContent(2906,0.0223304); - ssigpTa->SetBinContent(2907,0.0226456); - ssigpTa->SetBinContent(2908,0.0231048); - ssigpTa->SetBinContent(2909,0.0235744); - ssigpTa->SetBinContent(2910,0.0240512); - ssigpTa->SetBinContent(2911,0.0244624); - ssigpTa->SetBinContent(2912,0.0245424); - ssigpTa->SetBinContent(2913,0.0242648); - ssigpTa->SetBinContent(2914,0.0243664); - ssigpTa->SetBinContent(2915,0.0249608); - ssigpTa->SetBinContent(2916,0.0257944); - ssigpTa->SetBinContent(2917,0.0264824); - ssigpTa->SetBinContent(2918,0.0269544); - ssigpTa->SetBinContent(2919,0.0270464); - ssigpTa->SetBinContent(2920,0.0267776); - ssigpTa->SetBinContent(2921,0.0268464); - ssigpTa->SetBinContent(2922,0.0272624); - ssigpTa->SetBinContent(2923,0.0277512); - ssigpTa->SetBinContent(2924,0.0282184); - ssigpTa->SetBinContent(2925,0.0285528); - ssigpTa->SetBinContent(2926,0.028532); - ssigpTa->SetBinContent(2927,0.0275296); - ssigpTa->SetBinContent(2928,0.0255336); - ssigpTa->SetBinContent(2929,0.0246168); - ssigpTa->SetBinContent(2930,0.0247984); - ssigpTa->SetBinContent(2931,0.0252136); - ssigpTa->SetBinContent(2932,0.02568); - ssigpTa->SetBinContent(2933,0.0263768); - ssigpTa->SetBinContent(2934,0.0273104); - ssigpTa->SetBinContent(2935,0.0280208); - ssigpTa->SetBinContent(2936,0.0285128); - ssigpTa->SetBinContent(2937,0.0289728); - ssigpTa->SetBinContent(2938,0.029448); - ssigpTa->SetBinContent(2939,0.029932); - ssigpTa->SetBinContent(2940,0.03042); - ssigpTa->SetBinContent(2941,0.0308672); - ssigpTa->SetBinContent(2942,0.0311024); - ssigpTa->SetBinContent(2943,0.031128); - ssigpTa->SetBinContent(2944,0.0313936); - ssigpTa->SetBinContent(2945,0.031952); - ssigpTa->SetBinContent(2946,0.0328528); - ssigpTa->SetBinContent(2947,0.0340544); - ssigpTa->SetBinContent(2948,0.0349824); - ssigpTa->SetBinContent(2949,0.0356448); - ssigpTa->SetBinContent(2950,0.036256); - ssigpTa->SetBinContent(2951,0.0368744); - ssigpTa->SetBinContent(2952,0.0374704); - ssigpTa->SetBinContent(2953,0.037884); - ssigpTa->SetBinContent(2954,0.0381272); - ssigpTa->SetBinContent(2955,0.038588); - ssigpTa->SetBinContent(2956,0.0393272); - ssigpTa->SetBinContent(2957,0.0404104); - ssigpTa->SetBinContent(2958,0.041792); - ssigpTa->SetBinContent(2959,0.0428768); - ssigpTa->SetBinContent(2960,0.0436792); - ssigpTa->SetBinContent(2961,0.0444416); - ssigpTa->SetBinContent(2962,0.0452376); - ssigpTa->SetBinContent(2963,0.046056); - ssigpTa->SetBinContent(2964,0.0467184); - ssigpTa->SetBinContent(2965,0.046516); - ssigpTa->SetBinContent(2966,0.0454224); - ssigpTa->SetBinContent(2967,0.0452256); - ssigpTa->SetBinContent(2968,0.0461936); - ssigpTa->SetBinContent(2969,0.0476528); - ssigpTa->SetBinContent(2970,0.0488448); - ssigpTa->SetBinContent(2971,0.0497472); - ssigpTa->SetBinContent(2972,0.0506016); - ssigpTa->SetBinContent(2973,0.0514664); - ssigpTa->SetBinContent(2974,0.0523368); - ssigpTa->SetBinContent(2975,0.0532136); - ssigpTa->SetBinContent(2976,0.0540752); - ssigpTa->SetBinContent(2977,0.0549176); - ssigpTa->SetBinContent(2978,0.055984); - ssigpTa->SetBinContent(2979,0.0574832); - ssigpTa->SetBinContent(2980,0.0588272); - ssigpTa->SetBinContent(2981,0.0599064); - ssigpTa->SetBinContent(2982,0.0609448); - ssigpTa->SetBinContent(2983,0.0619888); - ssigpTa->SetBinContent(2984,0.0630512); - ssigpTa->SetBinContent(2985,0.0641288); - ssigpTa->SetBinContent(2986,0.0652192); - ssigpTa->SetBinContent(2987,0.0661568); - ssigpTa->SetBinContent(2988,0.0669304); - ssigpTa->SetBinContent(2989,0.0679032); - ssigpTa->SetBinContent(2990,0.0689888); - ssigpTa->SetBinContent(2991,0.0700248); - ssigpTa->SetBinContent(2992,0.07118); - ssigpTa->SetBinContent(2993,0.0724496); - ssigpTa->SetBinContent(2994,0.0737536); - ssigpTa->SetBinContent(2995,0.0751128); - ssigpTa->SetBinContent(2996,0.0765696); - ssigpTa->SetBinContent(2997,0.078096); - ssigpTa->SetBinContent(2998,0.0796464); - ssigpTa->SetBinContent(2999,0.081204); - ssigpTa->SetBinContent(3000,0.0827824); - ssigpTa->SetBinContent(3001,0.0844488); - ssigpTa->SetBinContent(3002,0.0863736); - ssigpTa->SetBinContent(3003,0.0885624); - ssigpTa->SetBinContent(3004,0.0905456); - ssigpTa->SetBinContent(3005,0.09232); - ssigpTa->SetBinContent(3006,0.0940224); - ssigpTa->SetBinContent(3007,0.095724); - ssigpTa->SetBinContent(3008,0.0976352); - ssigpTa->SetBinContent(3009,0.0997); - ssigpTa->SetBinContent(3010,0.101825); - ssigpTa->SetBinContent(3011,0.103833); - ssigpTa->SetBinContent(3012,0.105288); - ssigpTa->SetBinContent(3015,0.0148633); - ssigpTa->SetBinContent(3016,0.0148592); - ssigpTa->SetBinContent(3017,0.0148568); - ssigpTa->SetBinContent(3018,0.0148568); - ssigpTa->SetBinContent(3019,0.0148568); - ssigpTa->SetBinContent(3020,0.0148568); - ssigpTa->SetBinContent(3021,0.0148568); - ssigpTa->SetBinContent(3022,0.0148568); - ssigpTa->SetBinContent(3023,0.0148636); - ssigpTa->SetBinContent(3024,0.0148724); - ssigpTa->SetBinContent(3025,0.0148916); - ssigpTa->SetBinContent(3026,0.0148988); - ssigpTa->SetBinContent(3027,0.014904); - ssigpTa->SetBinContent(3028,0.014904); - ssigpTa->SetBinContent(3029,0.014904); - ssigpTa->SetBinContent(3030,0.0149072); - ssigpTa->SetBinContent(3031,0.0149144); - ssigpTa->SetBinContent(3032,0.0149324); - ssigpTa->SetBinContent(3033,0.0149484); - ssigpTa->SetBinContent(3034,0.0149552); - ssigpTa->SetBinContent(3035,0.0149604); - ssigpTa->SetBinContent(3036,0.0149688); - ssigpTa->SetBinContent(3037,0.014982); - ssigpTa->SetBinContent(3038,0.0149952); - ssigpTa->SetBinContent(3039,0.0150072); - ssigpTa->SetBinContent(3040,0.0150232); - ssigpTa->SetBinContent(3041,0.0150364); - ssigpTa->SetBinContent(3042,0.0150448); - ssigpTa->SetBinContent(3043,0.0150568); - ssigpTa->SetBinContent(3044,0.01507); - ssigpTa->SetBinContent(3045,0.015088); - ssigpTa->SetBinContent(3046,0.0151044); - ssigpTa->SetBinContent(3047,0.0151184); - ssigpTa->SetBinContent(3048,0.0151408); - ssigpTa->SetBinContent(3049,0.015156); - ssigpTa->SetBinContent(3050,0.0151712); - ssigpTa->SetBinContent(3051,0.0151924); - ssigpTa->SetBinContent(3052,0.0152128); - ssigpTa->SetBinContent(3053,0.0152328); - ssigpTa->SetBinContent(3054,0.015254); - ssigpTa->SetBinContent(3055,0.0152692); - ssigpTa->SetBinContent(3056,0.0152936); - ssigpTa->SetBinContent(3057,0.0153096); - ssigpTa->SetBinContent(3058,0.0153388); - ssigpTa->SetBinContent(3059,0.0153592); - ssigpTa->SetBinContent(3060,0.0153856); - ssigpTa->SetBinContent(3061,0.0154088); - ssigpTa->SetBinContent(3062,0.01544); - ssigpTa->SetBinContent(3063,0.0154604); - ssigpTa->SetBinContent(3064,0.0154896); - ssigpTa->SetBinContent(3065,0.01551); - ssigpTa->SetBinContent(3066,0.0155364); - ssigpTa->SetBinContent(3067,0.0155644); - ssigpTa->SetBinContent(3068,0.0155908); - ssigpTa->SetBinContent(3069,0.0156212); - ssigpTa->SetBinContent(3070,0.0156524); - ssigpTa->SetBinContent(3071,0.0156856); - ssigpTa->SetBinContent(3072,0.015708); - ssigpTa->SetBinContent(3073,0.0157452); - ssigpTa->SetBinContent(3074,0.0157708); - ssigpTa->SetBinContent(3075,0.01581); - ssigpTa->SetBinContent(3076,0.0158384); - ssigpTa->SetBinContent(3077,0.0158716); - ssigpTa->SetBinContent(3078,0.0159); - ssigpTa->SetBinContent(3079,0.0159364); - ssigpTa->SetBinContent(3080,0.0159668); - ssigpTa->SetBinContent(3081,0.0160064); - ssigpTa->SetBinContent(3082,0.0160476); - ssigpTa->SetBinContent(3083,0.016086); - ssigpTa->SetBinContent(3084,0.0161224); - ssigpTa->SetBinContent(3085,0.0161608); - ssigpTa->SetBinContent(3086,0.0162052); - ssigpTa->SetBinContent(3087,0.0162456); - ssigpTa->SetBinContent(3088,0.0162868); - ssigpTa->SetBinContent(3089,0.0163232); - ssigpTa->SetBinContent(3090,0.0163616); - ssigpTa->SetBinContent(3091,0.0164092); - ssigpTa->SetBinContent(3092,0.016456); - ssigpTa->SetBinContent(3093,0.0165044); - ssigpTa->SetBinContent(3094,0.016548); - ssigpTa->SetBinContent(3095,0.016598); - ssigpTa->SetBinContent(3096,0.0166476); - ssigpTa->SetBinContent(3097,0.0166944); - ssigpTa->SetBinContent(3098,0.0167428); - ssigpTa->SetBinContent(3099,0.016794); - ssigpTa->SetBinContent(3100,0.0168408); - ssigpTa->SetBinContent(3101,0.0168904); - ssigpTa->SetBinContent(3102,0.01694); - ssigpTa->SetBinContent(3103,0.0169904); - ssigpTa->SetBinContent(3104,0.0170448); - ssigpTa->SetBinContent(3105,0.0171024); - ssigpTa->SetBinContent(3106,0.0171568); - ssigpTa->SetBinContent(3107,0.0172084); - ssigpTa->SetBinContent(3108,0.0172648); - ssigpTa->SetBinContent(3109,0.0173184); - ssigpTa->SetBinContent(3110,0.0173812); - ssigpTa->SetBinContent(3111,0.0174352); - ssigpTa->SetBinContent(3112,0.0174948); - ssigpTa->SetBinContent(3113,0.0175544); - ssigpTa->SetBinContent(3114,0.017614); - ssigpTa->SetBinContent(3115,0.0176864); - ssigpTa->SetBinContent(3116,0.0177548); - ssigpTa->SetBinContent(3117,0.0178232); - ssigpTa->SetBinContent(3118,0.0178972); - ssigpTa->SetBinContent(3119,0.0180072); - ssigpTa->SetBinContent(3120,0.0182916); - ssigpTa->SetBinContent(3121,0.0192068); - ssigpTa->SetBinContent(3122,0.0207504); - ssigpTa->SetBinContent(3123,0.021612); - ssigpTa->SetBinContent(3124,0.0218184); - ssigpTa->SetBinContent(3125,0.02189); - ssigpTa->SetBinContent(3126,0.0219696); - ssigpTa->SetBinContent(3127,0.0220396); - ssigpTa->SetBinContent(3128,0.0221156); - ssigpTa->SetBinContent(3129,0.0221924); - ssigpTa->SetBinContent(3130,0.022274); - ssigpTa->SetBinContent(3131,0.0222568); - ssigpTa->SetBinContent(3132,0.021742); - ssigpTa->SetBinContent(3133,0.0207752); - ssigpTa->SetBinContent(3134,0.0204348); - ssigpTa->SetBinContent(3135,0.0206724); - ssigpTa->SetBinContent(3136,0.0210456); - ssigpTa->SetBinContent(3137,0.0214204); - ssigpTa->SetBinContent(3138,0.0218044); - ssigpTa->SetBinContent(3139,0.0221836); - ssigpTa->SetBinContent(3140,0.0224588); - ssigpTa->SetBinContent(3141,0.0222112); - ssigpTa->SetBinContent(3142,0.0214264); - ssigpTa->SetBinContent(3143,0.0210928); - ssigpTa->SetBinContent(3144,0.0211972); - ssigpTa->SetBinContent(3145,0.0214888); - ssigpTa->SetBinContent(3146,0.0218652); - ssigpTa->SetBinContent(3147,0.0222676); - ssigpTa->SetBinContent(3148,0.022678); - ssigpTa->SetBinContent(3149,0.0230912); - ssigpTa->SetBinContent(3150,0.0235164); - ssigpTa->SetBinContent(3151,0.0238156); - ssigpTa->SetBinContent(3152,0.0235012); - ssigpTa->SetBinContent(3153,0.0225548); - ssigpTa->SetBinContent(3154,0.0222256); - ssigpTa->SetBinContent(3155,0.0225124); - ssigpTa->SetBinContent(3156,0.022922); - ssigpTa->SetBinContent(3157,0.023344); - ssigpTa->SetBinContent(3158,0.0237684); - ssigpTa->SetBinContent(3159,0.0241504); - ssigpTa->SetBinContent(3160,0.0242784); - ssigpTa->SetBinContent(3161,0.0241816); - ssigpTa->SetBinContent(3162,0.0242068); - ssigpTa->SetBinContent(3163,0.0238212); - ssigpTa->SetBinContent(3164,0.0227936); - ssigpTa->SetBinContent(3165,0.0224364); - ssigpTa->SetBinContent(3166,0.02275); - ssigpTa->SetBinContent(3167,0.0232104); - ssigpTa->SetBinContent(3168,0.023674); - ssigpTa->SetBinContent(3169,0.0241524); - ssigpTa->SetBinContent(3170,0.02463); - ssigpTa->SetBinContent(3171,0.0251236); - ssigpTa->SetBinContent(3172,0.025622); - ssigpTa->SetBinContent(3173,0.0261248); - ssigpTa->SetBinContent(3174,0.0265212); - ssigpTa->SetBinContent(3175,0.02634); - ssigpTa->SetBinContent(3176,0.0255556); - ssigpTa->SetBinContent(3177,0.0252404); - ssigpTa->SetBinContent(3178,0.024908); - ssigpTa->SetBinContent(3179,0.0241052); - ssigpTa->SetBinContent(3180,0.0238668); - ssigpTa->SetBinContent(3181,0.0242324); - ssigpTa->SetBinContent(3182,0.024728); - ssigpTa->SetBinContent(3183,0.0252396); - ssigpTa->SetBinContent(3184,0.0257524); - ssigpTa->SetBinContent(3185,0.0261872); - ssigpTa->SetBinContent(3186,0.0261632); - ssigpTa->SetBinContent(3187,0.0256836); - ssigpTa->SetBinContent(3188,0.0256716); - ssigpTa->SetBinContent(3189,0.0262548); - ssigpTa->SetBinContent(3190,0.027064); - ssigpTa->SetBinContent(3191,0.0277584); - ssigpTa->SetBinContent(3192,0.0282656); - ssigpTa->SetBinContent(3193,0.0284388); - ssigpTa->SetBinContent(3194,0.0282972); - ssigpTa->SetBinContent(3195,0.0284616); - ssigpTa->SetBinContent(3196,0.0289388); - ssigpTa->SetBinContent(3197,0.0294824); - ssigpTa->SetBinContent(3198,0.0299876); - ssigpTa->SetBinContent(3199,0.0302772); - ssigpTa->SetBinContent(3200,0.0301408); - ssigpTa->SetBinContent(3201,0.0291784); - ssigpTa->SetBinContent(3202,0.027356); - ssigpTa->SetBinContent(3203,0.0265728); - ssigpTa->SetBinContent(3204,0.0268176); - ssigpTa->SetBinContent(3205,0.0272804); - ssigpTa->SetBinContent(3206,0.02779); - ssigpTa->SetBinContent(3207,0.0284576); - ssigpTa->SetBinContent(3208,0.02929); - ssigpTa->SetBinContent(3209,0.0299692); - ssigpTa->SetBinContent(3210,0.030502); - ssigpTa->SetBinContent(3211,0.0310208); - ssigpTa->SetBinContent(3212,0.0315548); - ssigpTa->SetBinContent(3213,0.0320988); - ssigpTa->SetBinContent(3214,0.032646); - ssigpTa->SetBinContent(3215,0.03317); - ssigpTa->SetBinContent(3216,0.0335556); - ssigpTa->SetBinContent(3217,0.0338124); - ssigpTa->SetBinContent(3218,0.0342408); - ssigpTa->SetBinContent(3219,0.0348728); - ssigpTa->SetBinContent(3220,0.0357432); - ssigpTa->SetBinContent(3221,0.0368172); - ssigpTa->SetBinContent(3222,0.0377112); - ssigpTa->SetBinContent(3223,0.0384316); - ssigpTa->SetBinContent(3224,0.0391192); - ssigpTa->SetBinContent(3225,0.0398244); - ssigpTa->SetBinContent(3226,0.0405208); - ssigpTa->SetBinContent(3227,0.0411248); - ssigpTa->SetBinContent(3228,0.0416448); - ssigpTa->SetBinContent(3229,0.0423132); - ssigpTa->SetBinContent(3230,0.0431536); - ssigpTa->SetBinContent(3231,0.0442124); - ssigpTa->SetBinContent(3232,0.045438); - ssigpTa->SetBinContent(3233,0.0464912); - ssigpTa->SetBinContent(3234,0.0473728); - ssigpTa->SetBinContent(3235,0.0482456); - ssigpTa->SetBinContent(3236,0.0491504); - ssigpTa->SetBinContent(3237,0.0500864); - ssigpTa->SetBinContent(3238,0.0508964); - ssigpTa->SetBinContent(3239,0.0509824); - ssigpTa->SetBinContent(3240,0.0503336); - ssigpTa->SetBinContent(3241,0.0504232); - ssigpTa->SetBinContent(3242,0.0514064); - ssigpTa->SetBinContent(3243,0.0527272); - ssigpTa->SetBinContent(3244,0.0538984); - ssigpTa->SetBinContent(3245,0.0549292); - ssigpTa->SetBinContent(3246,0.0559428); - ssigpTa->SetBinContent(3247,0.0569704); - ssigpTa->SetBinContent(3248,0.0580072); - ssigpTa->SetBinContent(3249,0.0590496); - ssigpTa->SetBinContent(3250,0.0600932); - ssigpTa->SetBinContent(3251,0.0611344); - ssigpTa->SetBinContent(3252,0.0623216); - ssigpTa->SetBinContent(3253,0.0637996); - ssigpTa->SetBinContent(3254,0.065192); - ssigpTa->SetBinContent(3255,0.066446); - ssigpTa->SetBinContent(3256,0.0676748); - ssigpTa->SetBinContent(3257,0.0689248); - ssigpTa->SetBinContent(3258,0.0701856); - ssigpTa->SetBinContent(3259,0.0714832); - ssigpTa->SetBinContent(3260,0.072796); - ssigpTa->SetBinContent(3261,0.074024); - ssigpTa->SetBinContent(3262,0.0751316); - ssigpTa->SetBinContent(3263,0.0764056); - ssigpTa->SetBinContent(3264,0.0777672); - ssigpTa->SetBinContent(3265,0.0790848); - ssigpTa->SetBinContent(3266,0.0805212); - ssigpTa->SetBinContent(3267,0.0820664); - ssigpTa->SetBinContent(3268,0.0836468); - ssigpTa->SetBinContent(3269,0.0852888); - ssigpTa->SetBinContent(3270,0.0870476); - ssigpTa->SetBinContent(3271,0.0888936); - ssigpTa->SetBinContent(3272,0.0907684); - ssigpTa->SetBinContent(3273,0.0926512); - ssigpTa->SetBinContent(3274,0.0945652); - ssigpTa->SetBinContent(3275,0.0965912); - ssigpTa->SetBinContent(3276,0.0990032); - ssigpTa->SetBinContent(3277,0.101793); - ssigpTa->SetBinContent(3278,0.104286); - ssigpTa->SetBinContent(3279,0.106492); - ssigpTa->SetBinContent(3280,0.108796); - ssigpTa->SetBinContent(3281,0.111281); - ssigpTa->SetBinContent(3282,0.113833); - ssigpTa->SetBinContent(3283,0.116399); - ssigpTa->SetBinContent(3284,0.118991); - ssigpTa->SetBinContent(3285,0.12143); - ssigpTa->SetBinContent(3286,0.123172); - ssigpTa->SetBinContent(3289,0.0162); - ssigpTa->SetBinContent(3290,0.0161983); - ssigpTa->SetBinContent(3291,0.016196); - ssigpTa->SetBinContent(3292,0.016196); - ssigpTa->SetBinContent(3293,0.016196); - ssigpTa->SetBinContent(3294,0.016196); - ssigpTa->SetBinContent(3295,0.016196); - ssigpTa->SetBinContent(3296,0.0161984); - ssigpTa->SetBinContent(3297,0.0162064); - ssigpTa->SetBinContent(3298,0.0162224); - ssigpTa->SetBinContent(3299,0.0162312); - ssigpTa->SetBinContent(3300,0.0162392); - ssigpTa->SetBinContent(3301,0.0162392); - ssigpTa->SetBinContent(3302,0.0162392); - ssigpTa->SetBinContent(3303,0.0162392); - ssigpTa->SetBinContent(3304,0.0162392); - ssigpTa->SetBinContent(3305,0.0162456); - ssigpTa->SetBinContent(3306,0.0162616); - ssigpTa->SetBinContent(3307,0.0162832); - ssigpTa->SetBinContent(3308,0.0162936); - ssigpTa->SetBinContent(3309,0.016296); - ssigpTa->SetBinContent(3310,0.0163048); - ssigpTa->SetBinContent(3311,0.0163112); - ssigpTa->SetBinContent(3312,0.01632); - ssigpTa->SetBinContent(3313,0.0163392); - ssigpTa->SetBinContent(3314,0.0163536); - ssigpTa->SetBinContent(3315,0.0163656); - ssigpTa->SetBinContent(3316,0.0163736); - ssigpTa->SetBinContent(3317,0.0163784); - ssigpTa->SetBinContent(3318,0.0163976); - ssigpTa->SetBinContent(3319,0.0164136); - ssigpTa->SetBinContent(3320,0.016428); - ssigpTa->SetBinContent(3321,0.016444); - ssigpTa->SetBinContent(3322,0.01646); - ssigpTa->SetBinContent(3323,0.016476); - ssigpTa->SetBinContent(3324,0.0164936); - ssigpTa->SetBinContent(3325,0.0165096); - ssigpTa->SetBinContent(3326,0.0165296); - ssigpTa->SetBinContent(3327,0.016548); - ssigpTa->SetBinContent(3328,0.0165648); - ssigpTa->SetBinContent(3329,0.0165912); - ssigpTa->SetBinContent(3330,0.0166024); - ssigpTa->SetBinContent(3331,0.0166248); - ssigpTa->SetBinContent(3332,0.0166464); - ssigpTa->SetBinContent(3333,0.016672); - ssigpTa->SetBinContent(3334,0.0166904); - ssigpTa->SetBinContent(3335,0.0167184); - ssigpTa->SetBinContent(3336,0.0167392); - ssigpTa->SetBinContent(3337,0.016772); - ssigpTa->SetBinContent(3338,0.0167888); - ssigpTa->SetBinContent(3339,0.0168112); - ssigpTa->SetBinContent(3340,0.01684); - ssigpTa->SetBinContent(3341,0.0168632); - ssigpTa->SetBinContent(3342,0.0168912); - ssigpTa->SetBinContent(3343,0.016916); - ssigpTa->SetBinContent(3344,0.0169512); - ssigpTa->SetBinContent(3345,0.0169744); - ssigpTa->SetBinContent(3346,0.0170064); - ssigpTa->SetBinContent(3347,0.0170304); - ssigpTa->SetBinContent(3348,0.017068); - ssigpTa->SetBinContent(3349,0.0170928); - ssigpTa->SetBinContent(3350,0.0171336); - ssigpTa->SetBinContent(3351,0.0171568); - ssigpTa->SetBinContent(3352,0.017192); - ssigpTa->SetBinContent(3353,0.0172168); - ssigpTa->SetBinContent(3354,0.0172488); - ssigpTa->SetBinContent(3355,0.0172848); - ssigpTa->SetBinContent(3356,0.0173232); - ssigpTa->SetBinContent(3357,0.0173664); - ssigpTa->SetBinContent(3358,0.017396); - ssigpTa->SetBinContent(3359,0.017436); - ssigpTa->SetBinContent(3360,0.0174776); - ssigpTa->SetBinContent(3361,0.0175168); - ssigpTa->SetBinContent(3362,0.01756); - ssigpTa->SetBinContent(3363,0.0176); - ssigpTa->SetBinContent(3364,0.0176384); - ssigpTa->SetBinContent(3365,0.0176768); - ssigpTa->SetBinContent(3366,0.0177256); - ssigpTa->SetBinContent(3367,0.0177592); - ssigpTa->SetBinContent(3368,0.0178088); - ssigpTa->SetBinContent(3369,0.0178552); - ssigpTa->SetBinContent(3370,0.0179048); - ssigpTa->SetBinContent(3371,0.0179456); - ssigpTa->SetBinContent(3372,0.0179952); - ssigpTa->SetBinContent(3373,0.0180416); - ssigpTa->SetBinContent(3374,0.0180912); - ssigpTa->SetBinContent(3375,0.018132); - ssigpTa->SetBinContent(3376,0.0181816); - ssigpTa->SetBinContent(3377,0.0182336); - ssigpTa->SetBinContent(3378,0.0182864); - ssigpTa->SetBinContent(3379,0.0183464); - ssigpTa->SetBinContent(3380,0.0184024); - ssigpTa->SetBinContent(3381,0.0184536); - ssigpTa->SetBinContent(3382,0.0185056); - ssigpTa->SetBinContent(3383,0.0185632); - ssigpTa->SetBinContent(3384,0.0186096); - ssigpTa->SetBinContent(3385,0.0186648); - ssigpTa->SetBinContent(3386,0.0187184); - ssigpTa->SetBinContent(3387,0.0187752); - ssigpTa->SetBinContent(3388,0.0188432); - ssigpTa->SetBinContent(3389,0.018912); - ssigpTa->SetBinContent(3390,0.0189864); - ssigpTa->SetBinContent(3391,0.0190512); - ssigpTa->SetBinContent(3392,0.0191192); - ssigpTa->SetBinContent(3393,0.0192208); - ssigpTa->SetBinContent(3394,0.0195216); - ssigpTa->SetBinContent(3395,0.0206008); - ssigpTa->SetBinContent(3396,0.0224576); - ssigpTa->SetBinContent(3397,0.0234944); - ssigpTa->SetBinContent(3398,0.023724); - ssigpTa->SetBinContent(3399,0.0238056); - ssigpTa->SetBinContent(3400,0.023876); - ssigpTa->SetBinContent(3401,0.023948); - ssigpTa->SetBinContent(3402,0.024016); - ssigpTa->SetBinContent(3403,0.0240872); - ssigpTa->SetBinContent(3404,0.0241688); - ssigpTa->SetBinContent(3405,0.0241232); - ssigpTa->SetBinContent(3406,0.0234704); - ssigpTa->SetBinContent(3407,0.0222856); - ssigpTa->SetBinContent(3408,0.0218616); - ssigpTa->SetBinContent(3409,0.0221496); - ssigpTa->SetBinContent(3410,0.0225752); - ssigpTa->SetBinContent(3411,0.0230096); - ssigpTa->SetBinContent(3412,0.0234472); - ssigpTa->SetBinContent(3413,0.0238832); - ssigpTa->SetBinContent(3414,0.0241864); - ssigpTa->SetBinContent(3415,0.023856); - ssigpTa->SetBinContent(3416,0.022876); - ssigpTa->SetBinContent(3417,0.0224608); - ssigpTa->SetBinContent(3418,0.0226072); - ssigpTa->SetBinContent(3419,0.0229496); - ssigpTa->SetBinContent(3420,0.0233808); - ssigpTa->SetBinContent(3421,0.0238368); - ssigpTa->SetBinContent(3422,0.0242992); - ssigpTa->SetBinContent(3423,0.0247736); - ssigpTa->SetBinContent(3424,0.0252536); - ssigpTa->SetBinContent(3425,0.0255968); - ssigpTa->SetBinContent(3426,0.025196); - ssigpTa->SetBinContent(3427,0.0240368); - ssigpTa->SetBinContent(3428,0.0236072); - ssigpTa->SetBinContent(3429,0.0239128); - ssigpTa->SetBinContent(3430,0.0243696); - ssigpTa->SetBinContent(3431,0.024836); - ssigpTa->SetBinContent(3432,0.0253104); - ssigpTa->SetBinContent(3433,0.0257472); - ssigpTa->SetBinContent(3434,0.0259784); - ssigpTa->SetBinContent(3435,0.0260072); - ssigpTa->SetBinContent(3436,0.0261128); - ssigpTa->SetBinContent(3437,0.0256312); - ssigpTa->SetBinContent(3438,0.0243776); - ssigpTa->SetBinContent(3439,0.0239064); - ssigpTa->SetBinContent(3440,0.0242328); - ssigpTa->SetBinContent(3441,0.024724); - ssigpTa->SetBinContent(3442,0.0252392); - ssigpTa->SetBinContent(3443,0.0257488); - ssigpTa->SetBinContent(3444,0.0262752); - ssigpTa->SetBinContent(3445,0.0268096); - ssigpTa->SetBinContent(3446,0.027352); - ssigpTa->SetBinContent(3447,0.0279008); - ssigpTa->SetBinContent(3448,0.0283192); - ssigpTa->SetBinContent(3449,0.0280376); - ssigpTa->SetBinContent(3450,0.0270312); - ssigpTa->SetBinContent(3451,0.0266176); - ssigpTa->SetBinContent(3452,0.0263792); - ssigpTa->SetBinContent(3453,0.0257248); - ssigpTa->SetBinContent(3454,0.025608); - ssigpTa->SetBinContent(3455,0.026016); - ssigpTa->SetBinContent(3456,0.0265568); - ssigpTa->SetBinContent(3457,0.0271088); - ssigpTa->SetBinContent(3458,0.027668); - ssigpTa->SetBinContent(3459,0.0281152); - ssigpTa->SetBinContent(3460,0.0279928); - ssigpTa->SetBinContent(3461,0.0272744); - ssigpTa->SetBinContent(3462,0.0271512); - ssigpTa->SetBinContent(3463,0.0277064); - ssigpTa->SetBinContent(3464,0.0284968); - ssigpTa->SetBinContent(3465,0.0291928); - ssigpTa->SetBinContent(3466,0.0297416); - ssigpTa->SetBinContent(3467,0.0299936); - ssigpTa->SetBinContent(3468,0.0299728); - ssigpTa->SetBinContent(3469,0.0302288); - ssigpTa->SetBinContent(3470,0.0307648); - ssigpTa->SetBinContent(3471,0.0313688); - ssigpTa->SetBinContent(3472,0.0319072); - ssigpTa->SetBinContent(3473,0.0321368); - ssigpTa->SetBinContent(3474,0.031856); - ssigpTa->SetBinContent(3475,0.0309224); - ssigpTa->SetBinContent(3476,0.0293208); - ssigpTa->SetBinContent(3477,0.0286912); - ssigpTa->SetBinContent(3478,0.0290032); - ssigpTa->SetBinContent(3479,0.0295272); - ssigpTa->SetBinContent(3480,0.0300856); - ssigpTa->SetBinContent(3481,0.0307416); - ssigpTa->SetBinContent(3482,0.0314928); - ssigpTa->SetBinContent(3483,0.0321544); - ssigpTa->SetBinContent(3484,0.0327328); - ssigpTa->SetBinContent(3485,0.0333168); - ssigpTa->SetBinContent(3486,0.03392); - ssigpTa->SetBinContent(3487,0.0345264); - ssigpTa->SetBinContent(3488,0.035144); - ssigpTa->SetBinContent(3489,0.0357488); - ssigpTa->SetBinContent(3490,0.0363016); - ssigpTa->SetBinContent(3491,0.0368048); - ssigpTa->SetBinContent(3492,0.0374056); - ssigpTa->SetBinContent(3493,0.0381208); - ssigpTa->SetBinContent(3494,0.0389688); - ssigpTa->SetBinContent(3495,0.0399232); - ssigpTa->SetBinContent(3496,0.0407912); - ssigpTa->SetBinContent(3497,0.0415744); - ssigpTa->SetBinContent(3498,0.04236); - ssigpTa->SetBinContent(3499,0.0431512); - ssigpTa->SetBinContent(3500,0.043964); - ssigpTa->SetBinContent(3501,0.0447624); - ssigpTa->SetBinContent(3502,0.045576); - ssigpTa->SetBinContent(3503,0.0464536); - ssigpTa->SetBinContent(3504,0.0474104); - ssigpTa->SetBinContent(3505,0.0484392); - ssigpTa->SetBinContent(3506,0.0495264); - ssigpTa->SetBinContent(3507,0.0505448); - ssigpTa->SetBinContent(3508,0.0515176); - ssigpTa->SetBinContent(3509,0.0525048); - ssigpTa->SetBinContent(3510,0.0535376); - ssigpTa->SetBinContent(3511,0.0545968); - ssigpTa->SetBinContent(3512,0.0555616); - ssigpTa->SetBinContent(3513,0.0559544); - ssigpTa->SetBinContent(3514,0.0557408); - ssigpTa->SetBinContent(3515,0.056128); - ssigpTa->SetBinContent(3516,0.0571384); - ssigpTa->SetBinContent(3517,0.0583176); - ssigpTa->SetBinContent(3518,0.0594888); - ssigpTa->SetBinContent(3519,0.060652); - ssigpTa->SetBinContent(3520,0.0618392); - ssigpTa->SetBinContent(3521,0.0630376); - ssigpTa->SetBinContent(3522,0.0642512); - ssigpTa->SetBinContent(3523,0.0654752); - ssigpTa->SetBinContent(3524,0.0667144); - ssigpTa->SetBinContent(3525,0.0679624); - ssigpTa->SetBinContent(3526,0.0692816); - ssigpTa->SetBinContent(3527,0.0707376); - ssigpTa->SetBinContent(3528,0.0721952); - ssigpTa->SetBinContent(3529,0.0736304); - ssigpTa->SetBinContent(3530,0.0750728); - ssigpTa->SetBinContent(3531,0.0765312); - ssigpTa->SetBinContent(3532,0.0780176); - ssigpTa->SetBinContent(3533,0.0795368); - ssigpTa->SetBinContent(3534,0.0811032); - ssigpTa->SetBinContent(3535,0.0826224); - ssigpTa->SetBinContent(3536,0.0840776); - ssigpTa->SetBinContent(3537,0.0856632); - ssigpTa->SetBinContent(3538,0.0873064); - ssigpTa->SetBinContent(3539,0.0889248); - ssigpTa->SetBinContent(3540,0.0906552); - ssigpTa->SetBinContent(3541,0.092492); - ssigpTa->SetBinContent(3542,0.0943584); - ssigpTa->SetBinContent(3543,0.096296); - ssigpTa->SetBinContent(3544,0.0983648); - ssigpTa->SetBinContent(3545,0.100546); - ssigpTa->SetBinContent(3546,0.102759); - ssigpTa->SetBinContent(3547,0.104988); - ssigpTa->SetBinContent(3548,0.107249); - ssigpTa->SetBinContent(3549,0.109657); - ssigpTa->SetBinContent(3550,0.112565); - ssigpTa->SetBinContent(3551,0.115974); - ssigpTa->SetBinContent(3552,0.118978); - ssigpTa->SetBinContent(3553,0.121645); - ssigpTa->SetBinContent(3554,0.124537); - ssigpTa->SetBinContent(3555,0.127799); - ssigpTa->SetBinContent(3556,0.130998); - ssigpTa->SetBinContent(3557,0.134066); - ssigpTa->SetBinContent(3558,0.137144); - ssigpTa->SetBinContent(3559,0.14003); - ssigpTa->SetBinContent(3560,0.142077); - ssigpTa->SetBinContent(3563,0.0176528); - ssigpTa->SetBinContent(3564,0.0176479); - ssigpTa->SetBinContent(3565,0.0176476); - ssigpTa->SetBinContent(3566,0.0176476); - ssigpTa->SetBinContent(3567,0.0176476); - ssigpTa->SetBinContent(3568,0.0176476); - ssigpTa->SetBinContent(3569,0.0176476); - ssigpTa->SetBinContent(3570,0.017654); - ssigpTa->SetBinContent(3571,0.0176652); - ssigpTa->SetBinContent(3572,0.0176764); - ssigpTa->SetBinContent(3573,0.0176832); - ssigpTa->SetBinContent(3574,0.0176832); - ssigpTa->SetBinContent(3575,0.0176832); - ssigpTa->SetBinContent(3576,0.0176832); - ssigpTa->SetBinContent(3577,0.0176832); - ssigpTa->SetBinContent(3578,0.0176832); - ssigpTa->SetBinContent(3579,0.017686); - ssigpTa->SetBinContent(3580,0.0176984); - ssigpTa->SetBinContent(3581,0.0177172); - ssigpTa->SetBinContent(3582,0.0177276); - ssigpTa->SetBinContent(3583,0.0177368); - ssigpTa->SetBinContent(3584,0.0177468); - ssigpTa->SetBinContent(3585,0.0177552); - ssigpTa->SetBinContent(3586,0.0177628); - ssigpTa->SetBinContent(3587,0.0177732); - ssigpTa->SetBinContent(3588,0.017792); - ssigpTa->SetBinContent(3589,0.0177996); - ssigpTa->SetBinContent(3590,0.0178024); - ssigpTa->SetBinContent(3591,0.0178136); - ssigpTa->SetBinContent(3592,0.0178312); - ssigpTa->SetBinContent(3593,0.01785); - ssigpTa->SetBinContent(3594,0.017864); - ssigpTa->SetBinContent(3595,0.0178744); - ssigpTa->SetBinContent(3596,0.0178868); - ssigpTa->SetBinContent(3597,0.0179036); - ssigpTa->SetBinContent(3598,0.017924); - ssigpTa->SetBinContent(3599,0.0179464); - ssigpTa->SetBinContent(3600,0.0179568); - ssigpTa->SetBinContent(3601,0.0179692); - ssigpTa->SetBinContent(3602,0.0179944); - ssigpTa->SetBinContent(3603,0.0180112); - ssigpTa->SetBinContent(3604,0.01803); - ssigpTa->SetBinContent(3605,0.018044); - ssigpTa->SetBinContent(3606,0.0180712); - ssigpTa->SetBinContent(3607,0.0180908); - ssigpTa->SetBinContent(3608,0.0181124); - ssigpTa->SetBinContent(3609,0.0181348); - ssigpTa->SetBinContent(3610,0.0181612); - ssigpTa->SetBinContent(3611,0.0181808); - ssigpTa->SetBinContent(3612,0.018208); - ssigpTa->SetBinContent(3613,0.0182276); - ssigpTa->SetBinContent(3614,0.0182528); - ssigpTa->SetBinContent(3615,0.0182828); - ssigpTa->SetBinContent(3616,0.018298); - ssigpTa->SetBinContent(3617,0.0183224); - ssigpTa->SetBinContent(3618,0.0183532); - ssigpTa->SetBinContent(3619,0.0183796); - ssigpTa->SetBinContent(3620,0.0183992); - ssigpTa->SetBinContent(3621,0.0184376); - ssigpTa->SetBinContent(3622,0.01846); - ssigpTa->SetBinContent(3623,0.0184976); - ssigpTa->SetBinContent(3624,0.0185256); - ssigpTa->SetBinContent(3625,0.0185648); - ssigpTa->SetBinContent(3626,0.0185864); - ssigpTa->SetBinContent(3627,0.0186128); - ssigpTa->SetBinContent(3628,0.0186444); - ssigpTa->SetBinContent(3629,0.0186736); - ssigpTa->SetBinContent(3630,0.0187212); - ssigpTa->SetBinContent(3631,0.0187504); - ssigpTa->SetBinContent(3632,0.018786); - ssigpTa->SetBinContent(3633,0.0188188); - ssigpTa->SetBinContent(3634,0.0188564); - ssigpTa->SetBinContent(3635,0.0188948); - ssigpTa->SetBinContent(3636,0.0189388); - ssigpTa->SetBinContent(3637,0.0189836); - ssigpTa->SetBinContent(3638,0.0190192); - ssigpTa->SetBinContent(3639,0.0190632); - ssigpTa->SetBinContent(3640,0.0190924); - ssigpTa->SetBinContent(3641,0.01914); - ssigpTa->SetBinContent(3642,0.019172); - ssigpTa->SetBinContent(3643,0.0192272); - ssigpTa->SetBinContent(3644,0.0192676); - ssigpTa->SetBinContent(3645,0.0193124); - ssigpTa->SetBinContent(3646,0.0193528); - ssigpTa->SetBinContent(3647,0.019408); - ssigpTa->SetBinContent(3648,0.0194428); - ssigpTa->SetBinContent(3649,0.0194932); - ssigpTa->SetBinContent(3650,0.01954); - ssigpTa->SetBinContent(3651,0.0195896); - ssigpTa->SetBinContent(3652,0.019644); - ssigpTa->SetBinContent(3653,0.019702); - ssigpTa->SetBinContent(3654,0.0197564); - ssigpTa->SetBinContent(3655,0.019806); - ssigpTa->SetBinContent(3656,0.019854); - ssigpTa->SetBinContent(3657,0.0199072); - ssigpTa->SetBinContent(3658,0.0199588); - ssigpTa->SetBinContent(3659,0.02001); - ssigpTa->SetBinContent(3660,0.020068); - ssigpTa->SetBinContent(3661,0.0201252); - ssigpTa->SetBinContent(3662,0.0201888); - ssigpTa->SetBinContent(3663,0.0202592); - ssigpTa->SetBinContent(3664,0.0203212); - ssigpTa->SetBinContent(3665,0.020384); - ssigpTa->SetBinContent(3666,0.0204476); - ssigpTa->SetBinContent(3667,0.0205404); - ssigpTa->SetBinContent(3668,0.0208612); - ssigpTa->SetBinContent(3669,0.0221212); - ssigpTa->SetBinContent(3670,0.02431); - ssigpTa->SetBinContent(3671,0.0255296); - ssigpTa->SetBinContent(3672,0.0257932); - ssigpTa->SetBinContent(3673,0.025868); - ssigpTa->SetBinContent(3674,0.0259412); - ssigpTa->SetBinContent(3675,0.0260112); - ssigpTa->SetBinContent(3676,0.0260768); - ssigpTa->SetBinContent(3677,0.0261452); - ssigpTa->SetBinContent(3678,0.026212); - ssigpTa->SetBinContent(3679,0.0261404); - ssigpTa->SetBinContent(3680,0.0253476); - ssigpTa->SetBinContent(3681,0.0239188); - ssigpTa->SetBinContent(3682,0.023426); - ssigpTa->SetBinContent(3683,0.023758); - ssigpTa->SetBinContent(3684,0.0242528); - ssigpTa->SetBinContent(3685,0.024744); - ssigpTa->SetBinContent(3686,0.0252408); - ssigpTa->SetBinContent(3687,0.0257356); - ssigpTa->SetBinContent(3688,0.0260764); - ssigpTa->SetBinContent(3689,0.025656); - ssigpTa->SetBinContent(3690,0.0244644); - ssigpTa->SetBinContent(3691,0.02396); - ssigpTa->SetBinContent(3692,0.0241432); - ssigpTa->SetBinContent(3693,0.0245456); - ssigpTa->SetBinContent(3694,0.0250312); - ssigpTa->SetBinContent(3695,0.0255448); - ssigpTa->SetBinContent(3696,0.0260696); - ssigpTa->SetBinContent(3697,0.0266); - ssigpTa->SetBinContent(3698,0.0271464); - ssigpTa->SetBinContent(3699,0.02753); - ssigpTa->SetBinContent(3700,0.0270368); - ssigpTa->SetBinContent(3701,0.025648); - ssigpTa->SetBinContent(3702,0.0251064); - ssigpTa->SetBinContent(3703,0.0254408); - ssigpTa->SetBinContent(3704,0.0259444); - ssigpTa->SetBinContent(3705,0.0264564); - ssigpTa->SetBinContent(3706,0.0269896); - ssigpTa->SetBinContent(3707,0.0274848); - ssigpTa->SetBinContent(3708,0.027818); - ssigpTa->SetBinContent(3709,0.027992); - ssigpTa->SetBinContent(3710,0.0281676); - ssigpTa->SetBinContent(3711,0.0275896); - ssigpTa->SetBinContent(3712,0.0260932); - ssigpTa->SetBinContent(3713,0.0255004); - ssigpTa->SetBinContent(3714,0.0258352); - ssigpTa->SetBinContent(3715,0.0263772); - ssigpTa->SetBinContent(3716,0.0269248); - ssigpTa->SetBinContent(3717,0.027492); - ssigpTa->SetBinContent(3718,0.0280564); - ssigpTa->SetBinContent(3719,0.0286404); - ssigpTa->SetBinContent(3720,0.029232); - ssigpTa->SetBinContent(3721,0.0298308); - ssigpTa->SetBinContent(3722,0.0302776); - ssigpTa->SetBinContent(3723,0.0298884); - ssigpTa->SetBinContent(3724,0.0286376); - ssigpTa->SetBinContent(3725,0.0281236); - ssigpTa->SetBinContent(3726,0.0279696); - ssigpTa->SetBinContent(3727,0.0275152); - ssigpTa->SetBinContent(3728,0.0275048); - ssigpTa->SetBinContent(3729,0.0279788); - ssigpTa->SetBinContent(3730,0.0285564); - ssigpTa->SetBinContent(3731,0.0291564); - ssigpTa->SetBinContent(3732,0.0297564); - ssigpTa->SetBinContent(3733,0.0302304); - ssigpTa->SetBinContent(3734,0.03); - ssigpTa->SetBinContent(3735,0.0290388); - ssigpTa->SetBinContent(3736,0.0287864); - ssigpTa->SetBinContent(3737,0.029322); - ssigpTa->SetBinContent(3738,0.0300796); - ssigpTa->SetBinContent(3739,0.0307832); - ssigpTa->SetBinContent(3740,0.0313676); - ssigpTa->SetBinContent(3741,0.0317032); - ssigpTa->SetBinContent(3742,0.031798); - ssigpTa->SetBinContent(3743,0.0321392); - ssigpTa->SetBinContent(3744,0.0327428); - ssigpTa->SetBinContent(3745,0.033396); - ssigpTa->SetBinContent(3746,0.03398); - ssigpTa->SetBinContent(3747,0.0341356); - ssigpTa->SetBinContent(3748,0.0336896); - ssigpTa->SetBinContent(3749,0.0327904); - ssigpTa->SetBinContent(3750,0.0314188); - ssigpTa->SetBinContent(3751,0.0309604); - ssigpTa->SetBinContent(3752,0.0313492); - ssigpTa->SetBinContent(3753,0.0319292); - ssigpTa->SetBinContent(3754,0.0325456); - ssigpTa->SetBinContent(3755,0.0331968); - ssigpTa->SetBinContent(3756,0.0338824); - ssigpTa->SetBinContent(3757,0.03453); - ssigpTa->SetBinContent(3758,0.0351624); - ssigpTa->SetBinContent(3759,0.035818); - ssigpTa->SetBinContent(3760,0.0364904); - ssigpTa->SetBinContent(3761,0.0371768); - ssigpTa->SetBinContent(3762,0.0378596); - ssigpTa->SetBinContent(3763,0.0385628); - ssigpTa->SetBinContent(3764,0.0392824); - ssigpTa->SetBinContent(3765,0.0400424); - ssigpTa->SetBinContent(3766,0.0408272); - ssigpTa->SetBinContent(3767,0.0416384); - ssigpTa->SetBinContent(3768,0.0424612); - ssigpTa->SetBinContent(3769,0.0433092); - ssigpTa->SetBinContent(3770,0.0441452); - ssigpTa->SetBinContent(3771,0.0450128); - ssigpTa->SetBinContent(3772,0.0458868); - ssigpTa->SetBinContent(3773,0.046788); - ssigpTa->SetBinContent(3774,0.0477116); - ssigpTa->SetBinContent(3775,0.048716); - ssigpTa->SetBinContent(3776,0.0498152); - ssigpTa->SetBinContent(3777,0.0509112); - ssigpTa->SetBinContent(3778,0.0519776); - ssigpTa->SetBinContent(3779,0.0529976); - ssigpTa->SetBinContent(3780,0.05395); - ssigpTa->SetBinContent(3781,0.0549532); - ssigpTa->SetBinContent(3782,0.0560252); - ssigpTa->SetBinContent(3783,0.0571384); - ssigpTa->SetBinContent(3784,0.0582964); - ssigpTa->SetBinContent(3785,0.05949); - ssigpTa->SetBinContent(3786,0.0606228); - ssigpTa->SetBinContent(3787,0.061302); - ssigpTa->SetBinContent(3788,0.0615344); - ssigpTa->SetBinContent(3789,0.0622012); - ssigpTa->SetBinContent(3790,0.063248); - ssigpTa->SetBinContent(3791,0.0643); - ssigpTa->SetBinContent(3792,0.0654748); - ssigpTa->SetBinContent(3793,0.0667892); - ssigpTa->SetBinContent(3794,0.0681512); - ssigpTa->SetBinContent(3795,0.0695328); - ssigpTa->SetBinContent(3796,0.0709284); - ssigpTa->SetBinContent(3797,0.0723436); - ssigpTa->SetBinContent(3798,0.073782); - ssigpTa->SetBinContent(3799,0.0752452); - ssigpTa->SetBinContent(3800,0.0767068); - ssigpTa->SetBinContent(3801,0.0781504); - ssigpTa->SetBinContent(3802,0.0796872); - ssigpTa->SetBinContent(3803,0.0813052); - ssigpTa->SetBinContent(3804,0.0829704); - ssigpTa->SetBinContent(3805,0.0846508); - ssigpTa->SetBinContent(3806,0.08636); - ssigpTa->SetBinContent(3807,0.0881188); - ssigpTa->SetBinContent(3808,0.0899352); - ssigpTa->SetBinContent(3809,0.0917612); - ssigpTa->SetBinContent(3810,0.0935636); - ssigpTa->SetBinContent(3811,0.0954596); - ssigpTa->SetBinContent(3812,0.0974036); - ssigpTa->SetBinContent(3813,0.0993224); - ssigpTa->SetBinContent(3814,0.101356); - ssigpTa->SetBinContent(3815,0.103482); - ssigpTa->SetBinContent(3816,0.105648); - ssigpTa->SetBinContent(3817,0.107874); - ssigpTa->SetBinContent(3818,0.110272); - ssigpTa->SetBinContent(3819,0.112786); - ssigpTa->SetBinContent(3820,0.115349); - ssigpTa->SetBinContent(3821,0.117932); - ssigpTa->SetBinContent(3822,0.120554); - ssigpTa->SetBinContent(3823,0.12335); - ssigpTa->SetBinContent(3824,0.126761); - ssigpTa->SetBinContent(3825,0.130787); - ssigpTa->SetBinContent(3826,0.134319); - ssigpTa->SetBinContent(3827,0.137432); - ssigpTa->SetBinContent(3828,0.140926); - ssigpTa->SetBinContent(3829,0.144945); - ssigpTa->SetBinContent(3830,0.148783); - ssigpTa->SetBinContent(3831,0.152362); - ssigpTa->SetBinContent(3832,0.15593); - ssigpTa->SetBinContent(3833,0.159265); - ssigpTa->SetBinContent(3834,0.161633); - ssigpTa->SetBinContent(3837,0.0191789); - ssigpTa->SetBinContent(3838,0.01918); - ssigpTa->SetBinContent(3839,0.0191776); - ssigpTa->SetBinContent(3840,0.0191776); - ssigpTa->SetBinContent(3841,0.0191776); - ssigpTa->SetBinContent(3842,0.0191776); - ssigpTa->SetBinContent(3843,0.0191808); - ssigpTa->SetBinContent(3844,0.0191872); - ssigpTa->SetBinContent(3845,0.0192032); - ssigpTa->SetBinContent(3846,0.019212); - ssigpTa->SetBinContent(3847,0.0192152); - ssigpTa->SetBinContent(3848,0.0192152); - ssigpTa->SetBinContent(3849,0.0192152); - ssigpTa->SetBinContent(3850,0.0192152); - ssigpTa->SetBinContent(3851,0.0192152); - ssigpTa->SetBinContent(3852,0.0192192); - ssigpTa->SetBinContent(3853,0.0192192); - ssigpTa->SetBinContent(3854,0.0192248); - ssigpTa->SetBinContent(3855,0.0192328); - ssigpTa->SetBinContent(3856,0.0192416); - ssigpTa->SetBinContent(3857,0.0192552); - ssigpTa->SetBinContent(3858,0.0192784); - ssigpTa->SetBinContent(3859,0.019292); - ssigpTa->SetBinContent(3860,0.0192952); - ssigpTa->SetBinContent(3861,0.0193032); - ssigpTa->SetBinContent(3862,0.0193088); - ssigpTa->SetBinContent(3863,0.0193144); - ssigpTa->SetBinContent(3864,0.0193216); - ssigpTa->SetBinContent(3865,0.0193352); - ssigpTa->SetBinContent(3866,0.0193608); - ssigpTa->SetBinContent(3867,0.01938); - ssigpTa->SetBinContent(3868,0.0193888); - ssigpTa->SetBinContent(3869,0.0193944); - ssigpTa->SetBinContent(3870,0.0194); - ssigpTa->SetBinContent(3871,0.019412); - ssigpTa->SetBinContent(3872,0.0194448); - ssigpTa->SetBinContent(3873,0.019464); - ssigpTa->SetBinContent(3874,0.0194768); - ssigpTa->SetBinContent(3875,0.0194856); - ssigpTa->SetBinContent(3876,0.0194976); - ssigpTa->SetBinContent(3877,0.0195216); - ssigpTa->SetBinContent(3878,0.0195352); - ssigpTa->SetBinContent(3879,0.0195584); - ssigpTa->SetBinContent(3880,0.01958); - ssigpTa->SetBinContent(3881,0.0196016); - ssigpTa->SetBinContent(3882,0.0196208); - ssigpTa->SetBinContent(3883,0.0196424); - ssigpTa->SetBinContent(3884,0.0196656); - ssigpTa->SetBinContent(3885,0.0196896); - ssigpTa->SetBinContent(3886,0.0197048); - ssigpTa->SetBinContent(3887,0.0197272); - ssigpTa->SetBinContent(3888,0.0197584); - ssigpTa->SetBinContent(3889,0.0197816); - ssigpTa->SetBinContent(3890,0.019796); - ssigpTa->SetBinContent(3891,0.0198152); - ssigpTa->SetBinContent(3892,0.0198464); - ssigpTa->SetBinContent(3893,0.0198728); - ssigpTa->SetBinContent(3894,0.0198976); - ssigpTa->SetBinContent(3895,0.0199264); - ssigpTa->SetBinContent(3896,0.0199568); - ssigpTa->SetBinContent(3897,0.0199832); - ssigpTa->SetBinContent(3898,0.0200232); - ssigpTa->SetBinContent(3899,0.0200488); - ssigpTa->SetBinContent(3900,0.020076); - ssigpTa->SetBinContent(3901,0.0201024); - ssigpTa->SetBinContent(3902,0.0201272); - ssigpTa->SetBinContent(3903,0.020172); - ssigpTa->SetBinContent(3904,0.020204); - ssigpTa->SetBinContent(3905,0.020244); - ssigpTa->SetBinContent(3906,0.0202664); - ssigpTa->SetBinContent(3907,0.0203008); - ssigpTa->SetBinContent(3908,0.0203352); - ssigpTa->SetBinContent(3909,0.0203664); - ssigpTa->SetBinContent(3910,0.0204136); - ssigpTa->SetBinContent(3911,0.0204544); - ssigpTa->SetBinContent(3912,0.0204952); - ssigpTa->SetBinContent(3913,0.0205272); - ssigpTa->SetBinContent(3914,0.0205704); - ssigpTa->SetBinContent(3915,0.020596); - ssigpTa->SetBinContent(3916,0.0206504); - ssigpTa->SetBinContent(3917,0.020684); - ssigpTa->SetBinContent(3918,0.0207384); - ssigpTa->SetBinContent(3919,0.0207696); - ssigpTa->SetBinContent(3920,0.02082); - ssigpTa->SetBinContent(3921,0.0208576); - ssigpTa->SetBinContent(3922,0.020908); - ssigpTa->SetBinContent(3923,0.0209464); - ssigpTa->SetBinContent(3924,0.021); - ssigpTa->SetBinContent(3925,0.0210504); - ssigpTa->SetBinContent(3926,0.0210976); - ssigpTa->SetBinContent(3927,0.0211496); - ssigpTa->SetBinContent(3928,0.0212072); - ssigpTa->SetBinContent(3929,0.021244); - ssigpTa->SetBinContent(3930,0.0212984); - ssigpTa->SetBinContent(3931,0.0213408); - ssigpTa->SetBinContent(3932,0.0213992); - ssigpTa->SetBinContent(3933,0.021456); - ssigpTa->SetBinContent(3934,0.0215168); - ssigpTa->SetBinContent(3935,0.0215736); - ssigpTa->SetBinContent(3936,0.0216328); - ssigpTa->SetBinContent(3937,0.021696); - ssigpTa->SetBinContent(3938,0.0217512); - ssigpTa->SetBinContent(3939,0.021812); - ssigpTa->SetBinContent(3940,0.0218752); - ssigpTa->SetBinContent(3941,0.0219672); - ssigpTa->SetBinContent(3942,0.0223056); - ssigpTa->SetBinContent(3943,0.0237456); - ssigpTa->SetBinContent(3944,0.0262816); - ssigpTa->SetBinContent(3945,0.02768); - ssigpTa->SetBinContent(3946,0.0279776); - ssigpTa->SetBinContent(3947,0.0280496); - ssigpTa->SetBinContent(3948,0.0281184); - ssigpTa->SetBinContent(3949,0.028188); - ssigpTa->SetBinContent(3950,0.0282616); - ssigpTa->SetBinContent(3951,0.0283144); - ssigpTa->SetBinContent(3952,0.0283832); - ssigpTa->SetBinContent(3953,0.02828); - ssigpTa->SetBinContent(3954,0.027344); - ssigpTa->SetBinContent(3955,0.0256728); - ssigpTa->SetBinContent(3956,0.0250944); - ssigpTa->SetBinContent(3957,0.0254816); - ssigpTa->SetBinContent(3958,0.0260336); - ssigpTa->SetBinContent(3959,0.0265864); - ssigpTa->SetBinContent(3960,0.0271416); - ssigpTa->SetBinContent(3961,0.0277016); - ssigpTa->SetBinContent(3962,0.0280824); - ssigpTa->SetBinContent(3963,0.0275784); - ssigpTa->SetBinContent(3964,0.02616); - ssigpTa->SetBinContent(3965,0.0255664); - ssigpTa->SetBinContent(3966,0.0257864); - ssigpTa->SetBinContent(3967,0.0262512); - ssigpTa->SetBinContent(3968,0.0267936); - ssigpTa->SetBinContent(3969,0.027372); - ssigpTa->SetBinContent(3970,0.0279568); - ssigpTa->SetBinContent(3971,0.0285504); - ssigpTa->SetBinContent(3972,0.029168); - ssigpTa->SetBinContent(3973,0.0295928); - ssigpTa->SetBinContent(3974,0.0290008); - ssigpTa->SetBinContent(3975,0.0273672); - ssigpTa->SetBinContent(3976,0.0267208); - ssigpTa->SetBinContent(3977,0.0270744); - ssigpTa->SetBinContent(3978,0.0276328); - ssigpTa->SetBinContent(3979,0.0282); - ssigpTa->SetBinContent(3980,0.0287816); - ssigpTa->SetBinContent(3981,0.0293568); - ssigpTa->SetBinContent(3982,0.0297856); - ssigpTa->SetBinContent(3983,0.0300984); - ssigpTa->SetBinContent(3984,0.0303552); - ssigpTa->SetBinContent(3985,0.0296736); - ssigpTa->SetBinContent(3986,0.0279224); - ssigpTa->SetBinContent(3987,0.027208); - ssigpTa->SetBinContent(3988,0.0275608); - ssigpTa->SetBinContent(3989,0.0281408); - ssigpTa->SetBinContent(3990,0.0287448); - ssigpTa->SetBinContent(3991,0.0293472); - ssigpTa->SetBinContent(3992,0.029976); - ssigpTa->SetBinContent(3993,0.0306024); - ssigpTa->SetBinContent(3994,0.0312464); - ssigpTa->SetBinContent(3995,0.0318952); - ssigpTa->SetBinContent(3996,0.0323768); - ssigpTa->SetBinContent(3997,0.031872); - ssigpTa->SetBinContent(3998,0.0303656); - ssigpTa->SetBinContent(3999,0.0297392); - ssigpTa->SetBinContent(4000,0.0296896); - ssigpTa->SetBinContent(4001,0.0294176); - ssigpTa->SetBinContent(4002,0.0295472); - ssigpTa->SetBinContent(4003,0.0300696); - ssigpTa->SetBinContent(4004,0.030704); - ssigpTa->SetBinContent(4005,0.0313432); - ssigpTa->SetBinContent(4006,0.031996); - ssigpTa->SetBinContent(4007,0.0324992); - ssigpTa->SetBinContent(4008,0.0321568); - ssigpTa->SetBinContent(4009,0.0309504); - ssigpTa->SetBinContent(4010,0.0305648); - ssigpTa->SetBinContent(4011,0.0310688); - ssigpTa->SetBinContent(4012,0.0318016); - ssigpTa->SetBinContent(4013,0.0325048); - ssigpTa->SetBinContent(4014,0.0331336); - ssigpTa->SetBinContent(4015,0.0335488); - ssigpTa->SetBinContent(4016,0.0337616); - ssigpTa->SetBinContent(4017,0.034196); - ssigpTa->SetBinContent(4018,0.034852); - ssigpTa->SetBinContent(4019,0.0355712); - ssigpTa->SetBinContent(4020,0.0361864); - ssigpTa->SetBinContent(4021,0.0362712); - ssigpTa->SetBinContent(4022,0.0356472); - ssigpTa->SetBinContent(4023,0.0347712); - ssigpTa->SetBinContent(4024,0.033648); - ssigpTa->SetBinContent(4025,0.0333616); - ssigpTa->SetBinContent(4026,0.0338312); - ssigpTa->SetBinContent(4027,0.0344792); - ssigpTa->SetBinContent(4028,0.0351496); - ssigpTa->SetBinContent(4029,0.0358016); - ssigpTa->SetBinContent(4030,0.0364264); - ssigpTa->SetBinContent(4031,0.0370752); - ssigpTa->SetBinContent(4032,0.0377576); - ssigpTa->SetBinContent(4033,0.0384856); - ssigpTa->SetBinContent(4034,0.0392424); - ssigpTa->SetBinContent(4035,0.039996); - ssigpTa->SetBinContent(4036,0.0407648); - ssigpTa->SetBinContent(4037,0.0415504); - ssigpTa->SetBinContent(4038,0.0424472); - ssigpTa->SetBinContent(4039,0.0434616); - ssigpTa->SetBinContent(4040,0.044444); - ssigpTa->SetBinContent(4041,0.0453456); - ssigpTa->SetBinContent(4042,0.0461712); - ssigpTa->SetBinContent(4043,0.0469032); - ssigpTa->SetBinContent(4044,0.0477344); - ssigpTa->SetBinContent(4045,0.0486704); - ssigpTa->SetBinContent(4046,0.04966); - ssigpTa->SetBinContent(4047,0.0506568); - ssigpTa->SetBinContent(4048,0.0517032); - ssigpTa->SetBinContent(4049,0.0529152); - ssigpTa->SetBinContent(4050,0.0543048); - ssigpTa->SetBinContent(4051,0.0556112); - ssigpTa->SetBinContent(4052,0.0567992); - ssigpTa->SetBinContent(4053,0.057812); - ssigpTa->SetBinContent(4054,0.0586488); - ssigpTa->SetBinContent(4055,0.0596456); - ssigpTa->SetBinContent(4056,0.0608248); - ssigpTa->SetBinContent(4057,0.0620672); - ssigpTa->SetBinContent(4058,0.063356); - ssigpTa->SetBinContent(4059,0.064684); - ssigpTa->SetBinContent(4060,0.0659776); - ssigpTa->SetBinContent(4061,0.066964); - ssigpTa->SetBinContent(4062,0.0676016); - ssigpTa->SetBinContent(4063,0.06856); - ssigpTa->SetBinContent(4064,0.0696336); - ssigpTa->SetBinContent(4065,0.0705744); - ssigpTa->SetBinContent(4066,0.0717704); - ssigpTa->SetBinContent(4067,0.0732312); - ssigpTa->SetBinContent(4068,0.0747824); - ssigpTa->SetBinContent(4069,0.0763504); - ssigpTa->SetBinContent(4070,0.0779328); - ssigpTa->SetBinContent(4071,0.0795384); - ssigpTa->SetBinContent(4072,0.0811752); - ssigpTa->SetBinContent(4073,0.0828608); - ssigpTa->SetBinContent(4074,0.0844672); - ssigpTa->SetBinContent(4075,0.0859256); - ssigpTa->SetBinContent(4076,0.0875384); - ssigpTa->SetBinContent(4077,0.089364); - ssigpTa->SetBinContent(4078,0.0912448); - ssigpTa->SetBinContent(4079,0.0931616); - ssigpTa->SetBinContent(4080,0.0950992); - ssigpTa->SetBinContent(4081,0.0970912); - ssigpTa->SetBinContent(4082,0.0991632); - ssigpTa->SetBinContent(4083,0.101287); - ssigpTa->SetBinContent(4084,0.103433); - ssigpTa->SetBinContent(4085,0.10565); - ssigpTa->SetBinContent(4086,0.107888); - ssigpTa->SetBinContent(4087,0.110123); - ssigpTa->SetBinContent(4088,0.112458); - ssigpTa->SetBinContent(4089,0.114885); - ssigpTa->SetBinContent(4090,0.117331); - ssigpTa->SetBinContent(4091,0.119882); - ssigpTa->SetBinContent(4092,0.122594); - ssigpTa->SetBinContent(4093,0.125456); - ssigpTa->SetBinContent(4094,0.12837); - ssigpTa->SetBinContent(4095,0.13131); - ssigpTa->SetBinContent(4096,0.134298); - ssigpTa->SetBinContent(4097,0.137481); - ssigpTa->SetBinContent(4098,0.141395); - ssigpTa->SetBinContent(4099,0.146038); - ssigpTa->SetBinContent(4100,0.15009); - ssigpTa->SetBinContent(4101,0.153663); - ssigpTa->SetBinContent(4102,0.157744); - ssigpTa->SetBinContent(4103,0.16251); - ssigpTa->SetBinContent(4104,0.166987); - ssigpTa->SetBinContent(4105,0.171075); - ssigpTa->SetBinContent(4106,0.175131); - ssigpTa->SetBinContent(4107,0.17893); - ssigpTa->SetBinContent(4108,0.181618); - ssigpTa->SetBinContent(4111,0.0216911); - ssigpTa->SetBinContent(4112,0.0214608); - ssigpTa->SetBinContent(4113,0.021434); - ssigpTa->SetBinContent(4114,0.021434); - ssigpTa->SetBinContent(4115,0.021434); - ssigpTa->SetBinContent(4116,0.021434); - ssigpTa->SetBinContent(4117,0.021434); - ssigpTa->SetBinContent(4118,0.0214404); - ssigpTa->SetBinContent(4119,0.0214468); - ssigpTa->SetBinContent(4120,0.0214532); - ssigpTa->SetBinContent(4121,0.0214532); - ssigpTa->SetBinContent(4122,0.0214532); - ssigpTa->SetBinContent(4123,0.0214532); - ssigpTa->SetBinContent(4124,0.0214532); - ssigpTa->SetBinContent(4125,0.0214612); - ssigpTa->SetBinContent(4126,0.0214692); - ssigpTa->SetBinContent(4127,0.0214772); - ssigpTa->SetBinContent(4128,0.0214772); - ssigpTa->SetBinContent(4129,0.02148); - ssigpTa->SetBinContent(4130,0.0214836); - ssigpTa->SetBinContent(4131,0.0214972); - ssigpTa->SetBinContent(4132,0.0215216); - ssigpTa->SetBinContent(4133,0.0215352); - ssigpTa->SetBinContent(4134,0.0215388); - ssigpTa->SetBinContent(4135,0.0215388); - ssigpTa->SetBinContent(4136,0.0215416); - ssigpTa->SetBinContent(4137,0.0215496); - ssigpTa->SetBinContent(4138,0.0215692); - ssigpTa->SetBinContent(4139,0.0215908); - ssigpTa->SetBinContent(4140,0.0216152); - ssigpTa->SetBinContent(4141,0.0216288); - ssigpTa->SetBinContent(4142,0.0216352); - ssigpTa->SetBinContent(4143,0.0216352); - ssigpTa->SetBinContent(4144,0.0216352); - ssigpTa->SetBinContent(4145,0.0216532); - ssigpTa->SetBinContent(4146,0.0216776); - ssigpTa->SetBinContent(4147,0.02171); - ssigpTa->SetBinContent(4148,0.0217172); - ssigpTa->SetBinContent(4149,0.0217208); - ssigpTa->SetBinContent(4150,0.02173); - ssigpTa->SetBinContent(4151,0.02174); - ssigpTa->SetBinContent(4152,0.0217616); - ssigpTa->SetBinContent(4153,0.0217876); - ssigpTa->SetBinContent(4154,0.021812); - ssigpTa->SetBinContent(4155,0.0218336); - ssigpTa->SetBinContent(4156,0.0218472); - ssigpTa->SetBinContent(4157,0.021876); - ssigpTa->SetBinContent(4158,0.0218976); - ssigpTa->SetBinContent(4159,0.0219156); - ssigpTa->SetBinContent(4160,0.0219284); - ssigpTa->SetBinContent(4161,0.021942); - ssigpTa->SetBinContent(4162,0.0219744); - ssigpTa->SetBinContent(4163,0.0219988); - ssigpTa->SetBinContent(4164,0.022014); - ssigpTa->SetBinContent(4165,0.0220276); - ssigpTa->SetBinContent(4166,0.0220708); - ssigpTa->SetBinContent(4167,0.022096); - ssigpTa->SetBinContent(4168,0.0221212); - ssigpTa->SetBinContent(4169,0.0221484); - ssigpTa->SetBinContent(4170,0.0221736); - ssigpTa->SetBinContent(4171,0.0222016); - ssigpTa->SetBinContent(4172,0.022234); - ssigpTa->SetBinContent(4173,0.0222568); - ssigpTa->SetBinContent(4174,0.0222864); - ssigpTa->SetBinContent(4175,0.022308); - ssigpTa->SetBinContent(4176,0.0223468); - ssigpTa->SetBinContent(4177,0.0223756); - ssigpTa->SetBinContent(4178,0.0224208); - ssigpTa->SetBinContent(4179,0.022446); - ssigpTa->SetBinContent(4180,0.022474); - ssigpTa->SetBinContent(4181,0.0225064); - ssigpTa->SetBinContent(4182,0.0225424); - ssigpTa->SetBinContent(4183,0.022574); - ssigpTa->SetBinContent(4184,0.0226128); - ssigpTa->SetBinContent(4185,0.0226508); - ssigpTa->SetBinContent(4186,0.0226868); - ssigpTa->SetBinContent(4187,0.0227212); - ssigpTa->SetBinContent(4188,0.0227544); - ssigpTa->SetBinContent(4189,0.0227996); - ssigpTa->SetBinContent(4190,0.0228284); - ssigpTa->SetBinContent(4191,0.0228852); - ssigpTa->SetBinContent(4192,0.0229168); - ssigpTa->SetBinContent(4193,0.0229708); - ssigpTa->SetBinContent(4194,0.0230024); - ssigpTa->SetBinContent(4195,0.0230512); - ssigpTa->SetBinContent(4196,0.023088); - ssigpTa->SetBinContent(4197,0.0231368); - ssigpTa->SetBinContent(4198,0.0231908); - ssigpTa->SetBinContent(4199,0.0232368); - ssigpTa->SetBinContent(4200,0.0232748); - ssigpTa->SetBinContent(4201,0.0233236); - ssigpTa->SetBinContent(4202,0.0233696); - ssigpTa->SetBinContent(4203,0.0234236); - ssigpTa->SetBinContent(4204,0.0234552); - ssigpTa->SetBinContent(4205,0.023512); - ssigpTa->SetBinContent(4206,0.0235616); - ssigpTa->SetBinContent(4207,0.0236256); - ssigpTa->SetBinContent(4208,0.023686); - ssigpTa->SetBinContent(4209,0.0237392); - ssigpTa->SetBinContent(4210,0.0238076); - ssigpTa->SetBinContent(4211,0.02386); - ssigpTa->SetBinContent(4212,0.0239132); - ssigpTa->SetBinContent(4213,0.0239736); - ssigpTa->SetBinContent(4214,0.0240412); - ssigpTa->SetBinContent(4215,0.0241144); - ssigpTa->SetBinContent(4216,0.0244668); - ssigpTa->SetBinContent(4217,0.0260984); - ssigpTa->SetBinContent(4218,0.0292664); - ssigpTa->SetBinContent(4219,0.0308736); - ssigpTa->SetBinContent(4220,0.0311932); - ssigpTa->SetBinContent(4221,0.0312716); - ssigpTa->SetBinContent(4222,0.0313312); - ssigpTa->SetBinContent(4223,0.0314016); - ssigpTa->SetBinContent(4224,0.0314736); - ssigpTa->SetBinContent(4225,0.0315376); - ssigpTa->SetBinContent(4226,0.0315908); - ssigpTa->SetBinContent(4227,0.0314792); - ssigpTa->SetBinContent(4228,0.0303888); - ssigpTa->SetBinContent(4229,0.0282352); - ssigpTa->SetBinContent(4230,0.0276088); - ssigpTa->SetBinContent(4231,0.0280624); - ssigpTa->SetBinContent(4232,0.028706); - ssigpTa->SetBinContent(4233,0.0293272); - ssigpTa->SetBinContent(4234,0.0299752); - ssigpTa->SetBinContent(4235,0.0306268); - ssigpTa->SetBinContent(4236,0.0310804); - ssigpTa->SetBinContent(4237,0.0305064); - ssigpTa->SetBinContent(4238,0.02865); - ssigpTa->SetBinContent(4239,0.0279708); - ssigpTa->SetBinContent(4240,0.02827); - ssigpTa->SetBinContent(4241,0.028826); - ssigpTa->SetBinContent(4242,0.0294552); - ssigpTa->SetBinContent(4243,0.0301168); - ssigpTa->SetBinContent(4244,0.0307884); - ssigpTa->SetBinContent(4245,0.0314876); - ssigpTa->SetBinContent(4246,0.0321924); - ssigpTa->SetBinContent(4247,0.032692); - ssigpTa->SetBinContent(4248,0.032028); - ssigpTa->SetBinContent(4249,0.0298944); - ssigpTa->SetBinContent(4250,0.0291548); - ssigpTa->SetBinContent(4251,0.0295592); - ssigpTa->SetBinContent(4252,0.030192); - ssigpTa->SetBinContent(4253,0.0308392); - ssigpTa->SetBinContent(4254,0.03151); - ssigpTa->SetBinContent(4255,0.0321688); - ssigpTa->SetBinContent(4256,0.0327452); - ssigpTa->SetBinContent(4257,0.0332696); - ssigpTa->SetBinContent(4258,0.0336212); - ssigpTa->SetBinContent(4259,0.0328708); - ssigpTa->SetBinContent(4260,0.0306056); - ssigpTa->SetBinContent(4261,0.0297896); - ssigpTa->SetBinContent(4262,0.0301804); - ssigpTa->SetBinContent(4263,0.0308288); - ssigpTa->SetBinContent(4264,0.0314844); - ssigpTa->SetBinContent(4265,0.0321688); - ssigpTa->SetBinContent(4266,0.032862); - ssigpTa->SetBinContent(4267,0.0335804); - ssigpTa->SetBinContent(4268,0.0342864); - ssigpTa->SetBinContent(4269,0.035022); - ssigpTa->SetBinContent(4270,0.0355408); - ssigpTa->SetBinContent(4271,0.0349492); - ssigpTa->SetBinContent(4272,0.0329124); - ssigpTa->SetBinContent(4273,0.0321904); - ssigpTa->SetBinContent(4274,0.0322624); - ssigpTa->SetBinContent(4275,0.032316); - ssigpTa->SetBinContent(4276,0.032594); - ssigpTa->SetBinContent(4277,0.0332108); - ssigpTa->SetBinContent(4278,0.0339148); - ssigpTa->SetBinContent(4279,0.0346316); - ssigpTa->SetBinContent(4280,0.0353564); - ssigpTa->SetBinContent(4281,0.0359084); - ssigpTa->SetBinContent(4282,0.0354844); - ssigpTa->SetBinContent(4283,0.0337844); - ssigpTa->SetBinContent(4284,0.0332884); - ssigpTa->SetBinContent(4285,0.0337816); - ssigpTa->SetBinContent(4286,0.0344408); - ssigpTa->SetBinContent(4287,0.035176); - ssigpTa->SetBinContent(4288,0.0358676); - ssigpTa->SetBinContent(4289,0.0363904); - ssigpTa->SetBinContent(4290,0.0367772); - ssigpTa->SetBinContent(4291,0.0373268); - ssigpTa->SetBinContent(4292,0.0380716); - ssigpTa->SetBinContent(4293,0.0388684); - ssigpTa->SetBinContent(4294,0.0395492); - ssigpTa->SetBinContent(4295,0.0395788); - ssigpTa->SetBinContent(4296,0.0385684); - ssigpTa->SetBinContent(4297,0.0377404); - ssigpTa->SetBinContent(4298,0.0370024); - ssigpTa->SetBinContent(4299,0.0369304); - ssigpTa->SetBinContent(4300,0.0375092); - ssigpTa->SetBinContent(4301,0.038258); - ssigpTa->SetBinContent(4302,0.039016); - ssigpTa->SetBinContent(4303,0.039698); - ssigpTa->SetBinContent(4304,0.0402108); - ssigpTa->SetBinContent(4305,0.0408864); - ssigpTa->SetBinContent(4306,0.0416588); - ssigpTa->SetBinContent(4307,0.0424924); - ssigpTa->SetBinContent(4308,0.0433476); - ssigpTa->SetBinContent(4309,0.0442164); - ssigpTa->SetBinContent(4310,0.0450868); - ssigpTa->SetBinContent(4311,0.0460068); - ssigpTa->SetBinContent(4312,0.0471016); - ssigpTa->SetBinContent(4313,0.0485264); - ssigpTa->SetBinContent(4314,0.0497336); - ssigpTa->SetBinContent(4315,0.0507868); - ssigpTa->SetBinContent(4316,0.0516372); - ssigpTa->SetBinContent(4317,0.052196); - ssigpTa->SetBinContent(4318,0.05305); - ssigpTa->SetBinContent(4319,0.0541248); - ssigpTa->SetBinContent(4320,0.0552464); - ssigpTa->SetBinContent(4321,0.0563924); - ssigpTa->SetBinContent(4322,0.0576076); - ssigpTa->SetBinContent(4323,0.0590616); - ssigpTa->SetBinContent(4324,0.0609096); - ssigpTa->SetBinContent(4325,0.0624824); - ssigpTa->SetBinContent(4326,0.0638372); - ssigpTa->SetBinContent(4327,0.0649012); - ssigpTa->SetBinContent(4328,0.065518); - ssigpTa->SetBinContent(4329,0.0665684); - ssigpTa->SetBinContent(4330,0.0679052); - ssigpTa->SetBinContent(4331,0.0693248); - ssigpTa->SetBinContent(4332,0.070794); - ssigpTa->SetBinContent(4333,0.0723144); - ssigpTa->SetBinContent(4334,0.0738384); - ssigpTa->SetBinContent(4335,0.0751556); - ssigpTa->SetBinContent(4336,0.0764032); - ssigpTa->SetBinContent(4337,0.0776896); - ssigpTa->SetBinContent(4338,0.0788724); - ssigpTa->SetBinContent(4339,0.0795936); - ssigpTa->SetBinContent(4340,0.080886); - ssigpTa->SetBinContent(4341,0.0825692); - ssigpTa->SetBinContent(4342,0.084364); - ssigpTa->SetBinContent(4343,0.0861884); - ssigpTa->SetBinContent(4344,0.0880388); - ssigpTa->SetBinContent(4345,0.0899028); - ssigpTa->SetBinContent(4346,0.0918216); - ssigpTa->SetBinContent(4347,0.0938004); - ssigpTa->SetBinContent(4348,0.095692); - ssigpTa->SetBinContent(4349,0.097076); - ssigpTa->SetBinContent(4350,0.0988796); - ssigpTa->SetBinContent(4351,0.100978); - ssigpTa->SetBinContent(4352,0.10318); - ssigpTa->SetBinContent(4353,0.105408); - ssigpTa->SetBinContent(4354,0.107668); - ssigpTa->SetBinContent(4355,0.109978); - ssigpTa->SetBinContent(4356,0.112396); - ssigpTa->SetBinContent(4357,0.114914); - ssigpTa->SetBinContent(4358,0.117539); - ssigpTa->SetBinContent(4359,0.12017); - ssigpTa->SetBinContent(4360,0.122816); - ssigpTa->SetBinContent(4361,0.125474); - ssigpTa->SetBinContent(4362,0.128226); - ssigpTa->SetBinContent(4363,0.131047); - ssigpTa->SetBinContent(4364,0.133923); - ssigpTa->SetBinContent(4365,0.136876); - ssigpTa->SetBinContent(4366,0.140061); - ssigpTa->SetBinContent(4367,0.143386); - ssigpTa->SetBinContent(4368,0.146775); - ssigpTa->SetBinContent(4369,0.150217); - ssigpTa->SetBinContent(4370,0.153689); - ssigpTa->SetBinContent(4371,0.157404); - ssigpTa->SetBinContent(4372,0.161963); - ssigpTa->SetBinContent(4373,0.167546); - ssigpTa->SetBinContent(4374,0.17227); - ssigpTa->SetBinContent(4375,0.176449); - ssigpTa->SetBinContent(4376,0.181259); - ssigpTa->SetBinContent(4377,0.187122); - ssigpTa->SetBinContent(4378,0.192396); - ssigpTa->SetBinContent(4379,0.19718); - ssigpTa->SetBinContent(4380,0.201913); - ssigpTa->SetBinContent(4381,0.206665); - ssigpTa->SetBinContent(4382,0.212544); - ssigpTa->SetBinContent(4385,0.0300322); - ssigpTa->SetBinContent(4386,0.02949); - ssigpTa->SetBinContent(4387,0.0292064); - ssigpTa->SetBinContent(4388,0.0292064); - ssigpTa->SetBinContent(4389,0.0292064); - ssigpTa->SetBinContent(4390,0.0292064); - ssigpTa->SetBinContent(4391,0.0292064); - ssigpTa->SetBinContent(4392,0.0292064); - ssigpTa->SetBinContent(4393,0.0292096); - ssigpTa->SetBinContent(4394,0.0292096); - ssigpTa->SetBinContent(4395,0.0292096); - ssigpTa->SetBinContent(4396,0.0292096); - ssigpTa->SetBinContent(4397,0.0292096); - ssigpTa->SetBinContent(4398,0.0292136); - ssigpTa->SetBinContent(4399,0.0292216); - ssigpTa->SetBinContent(4400,0.0292416); - ssigpTa->SetBinContent(4401,0.0292496); - ssigpTa->SetBinContent(4402,0.0292536); - ssigpTa->SetBinContent(4403,0.0292536); - ssigpTa->SetBinContent(4404,0.0292536); - ssigpTa->SetBinContent(4405,0.0292608); - ssigpTa->SetBinContent(4406,0.0292712); - ssigpTa->SetBinContent(4407,0.0292784); - ssigpTa->SetBinContent(4408,0.0292784); - ssigpTa->SetBinContent(4409,0.0292784); - ssigpTa->SetBinContent(4410,0.0293024); - ssigpTa->SetBinContent(4411,0.0293264); - ssigpTa->SetBinContent(4412,0.0293624); - ssigpTa->SetBinContent(4413,0.0293936); - ssigpTa->SetBinContent(4414,0.029408); - ssigpTa->SetBinContent(4415,0.0294152); - ssigpTa->SetBinContent(4416,0.0294152); - ssigpTa->SetBinContent(4417,0.0294152); - ssigpTa->SetBinContent(4418,0.0294192); - ssigpTa->SetBinContent(4419,0.0294272); - ssigpTa->SetBinContent(4420,0.0294576); - ssigpTa->SetBinContent(4421,0.0294728); - ssigpTa->SetBinContent(4422,0.029484); - ssigpTa->SetBinContent(4423,0.029484); - ssigpTa->SetBinContent(4424,0.029484); - ssigpTa->SetBinContent(4425,0.0294912); - ssigpTa->SetBinContent(4426,0.0295064); - ssigpTa->SetBinContent(4427,0.0295336); - ssigpTa->SetBinContent(4428,0.0295648); - ssigpTa->SetBinContent(4429,0.029588); - ssigpTa->SetBinContent(4430,0.0296152); - ssigpTa->SetBinContent(4431,0.0296304); - ssigpTa->SetBinContent(4432,0.0296576); - ssigpTa->SetBinContent(4433,0.0296688); - ssigpTa->SetBinContent(4434,0.0296728); - ssigpTa->SetBinContent(4435,0.029684); - ssigpTa->SetBinContent(4436,0.0297224); - ssigpTa->SetBinContent(4437,0.0297496); - ssigpTa->SetBinContent(4438,0.0297576); - ssigpTa->SetBinContent(4439,0.0297888); - ssigpTa->SetBinContent(4440,0.0298232); - ssigpTa->SetBinContent(4441,0.0298664); - ssigpTa->SetBinContent(4442,0.0298816); - ssigpTa->SetBinContent(4443,0.0299); - ssigpTa->SetBinContent(4444,0.0299152); - ssigpTa->SetBinContent(4445,0.0299424); - ssigpTa->SetBinContent(4446,0.0299608); - ssigpTa->SetBinContent(4447,0.029992); - ssigpTa->SetBinContent(4448,0.0300192); - ssigpTa->SetBinContent(4449,0.0300624); - ssigpTa->SetBinContent(4450,0.0300816); - ssigpTa->SetBinContent(4451,0.0301312); - ssigpTa->SetBinContent(4452,0.0301584); - ssigpTa->SetBinContent(4453,0.0301808); - ssigpTa->SetBinContent(4454,0.0302); - ssigpTa->SetBinContent(4455,0.0302432); - ssigpTa->SetBinContent(4456,0.0302816); - ssigpTa->SetBinContent(4457,0.0303168); - ssigpTa->SetBinContent(4458,0.0303472); - ssigpTa->SetBinContent(4459,0.0303736); - ssigpTa->SetBinContent(4460,0.030396); - ssigpTa->SetBinContent(4461,0.0304592); - ssigpTa->SetBinContent(4462,0.0304976); - ssigpTa->SetBinContent(4463,0.0305328); - ssigpTa->SetBinContent(4464,0.0305744); - ssigpTa->SetBinContent(4465,0.0305976); - ssigpTa->SetBinContent(4466,0.0306552); - ssigpTa->SetBinContent(4467,0.0306904); - ssigpTa->SetBinContent(4468,0.030736); - ssigpTa->SetBinContent(4469,0.0307672); - ssigpTa->SetBinContent(4470,0.0308208); - ssigpTa->SetBinContent(4471,0.030872); - ssigpTa->SetBinContent(4472,0.0309216); - ssigpTa->SetBinContent(4473,0.030972); - ssigpTa->SetBinContent(4474,0.0309984); - ssigpTa->SetBinContent(4475,0.0310368); - ssigpTa->SetBinContent(4476,0.0310944); - ssigpTa->SetBinContent(4477,0.0311536); - ssigpTa->SetBinContent(4478,0.0311992); - ssigpTa->SetBinContent(4479,0.0312384); - ssigpTa->SetBinContent(4480,0.0313); - ssigpTa->SetBinContent(4481,0.0313536); - ssigpTa->SetBinContent(4482,0.0314032); - ssigpTa->SetBinContent(4483,0.0314856); - ssigpTa->SetBinContent(4484,0.0315392); - ssigpTa->SetBinContent(4485,0.0316008); - ssigpTa->SetBinContent(4486,0.0316472); - ssigpTa->SetBinContent(4487,0.0317088); - ssigpTa->SetBinContent(4488,0.0317824); - ssigpTa->SetBinContent(4489,0.0318272); - ssigpTa->SetBinContent(4490,0.0321432); - ssigpTa->SetBinContent(4491,0.0345472); - ssigpTa->SetBinContent(4492,0.03962); - ssigpTa->SetBinContent(4493,0.0420136); - ssigpTa->SetBinContent(4494,0.0423904); - ssigpTa->SetBinContent(4495,0.042456); - ssigpTa->SetBinContent(4496,0.0425136); - ssigpTa->SetBinContent(4497,0.0425992); - ssigpTa->SetBinContent(4498,0.042672); - ssigpTa->SetBinContent(4499,0.0427264); - ssigpTa->SetBinContent(4500,0.042816); - ssigpTa->SetBinContent(4501,0.0426616); - ssigpTa->SetBinContent(4502,0.0409664); - ssigpTa->SetBinContent(4503,0.0374248); - ssigpTa->SetBinContent(4504,0.0365176); - ssigpTa->SetBinContent(4505,0.0372864); - ssigpTa->SetBinContent(4506,0.0381888); - ssigpTa->SetBinContent(4507,0.0391152); - ssigpTa->SetBinContent(4508,0.0400456); - ssigpTa->SetBinContent(4509,0.0410032); - ssigpTa->SetBinContent(4510,0.0417288); - ssigpTa->SetBinContent(4511,0.0408072); - ssigpTa->SetBinContent(4512,0.0376712); - ssigpTa->SetBinContent(4513,0.0366288); - ssigpTa->SetBinContent(4514,0.0372056); - ssigpTa->SetBinContent(4515,0.0380512); - ssigpTa->SetBinContent(4516,0.0389736); - ssigpTa->SetBinContent(4517,0.0399184); - ssigpTa->SetBinContent(4518,0.0409032); - ssigpTa->SetBinContent(4519,0.041896); - ssigpTa->SetBinContent(4520,0.0429512); - ssigpTa->SetBinContent(4521,0.0437304); - ssigpTa->SetBinContent(4522,0.0426728); - ssigpTa->SetBinContent(4523,0.0391512); - ssigpTa->SetBinContent(4524,0.037944); - ssigpTa->SetBinContent(4525,0.0385744); - ssigpTa->SetBinContent(4526,0.0394768); - ssigpTa->SetBinContent(4527,0.0404024); - ssigpTa->SetBinContent(4528,0.0413512); - ssigpTa->SetBinContent(4529,0.0423232); - ssigpTa->SetBinContent(4530,0.0433288); - ssigpTa->SetBinContent(4531,0.04444); - ssigpTa->SetBinContent(4532,0.0452032); - ssigpTa->SetBinContent(4533,0.044016); - ssigpTa->SetBinContent(4534,0.040344); - ssigpTa->SetBinContent(4535,0.039032); - ssigpTa->SetBinContent(4536,0.0396344); - ssigpTa->SetBinContent(4537,0.040512); - ssigpTa->SetBinContent(4538,0.041396); - ssigpTa->SetBinContent(4539,0.0423088); - ssigpTa->SetBinContent(4540,0.043268); - ssigpTa->SetBinContent(4541,0.044252); - ssigpTa->SetBinContent(4542,0.0452352); - ssigpTa->SetBinContent(4543,0.0462304); - ssigpTa->SetBinContent(4544,0.0470032); - ssigpTa->SetBinContent(4545,0.0459472); - ssigpTa->SetBinContent(4546,0.0423808); - ssigpTa->SetBinContent(4547,0.0411784); - ssigpTa->SetBinContent(4548,0.0417368); - ssigpTa->SetBinContent(4549,0.042644); - ssigpTa->SetBinContent(4550,0.0434512); - ssigpTa->SetBinContent(4551,0.044336); - ssigpTa->SetBinContent(4552,0.0453032); - ssigpTa->SetBinContent(4553,0.0462624); - ssigpTa->SetBinContent(4554,0.0472576); - ssigpTa->SetBinContent(4555,0.0480352); - ssigpTa->SetBinContent(4556,0.0472048); - ssigpTa->SetBinContent(4557,0.0441728); - ssigpTa->SetBinContent(4558,0.0432136); - ssigpTa->SetBinContent(4559,0.0437416); - ssigpTa->SetBinContent(4560,0.0442984); - ssigpTa->SetBinContent(4561,0.0451008); - ssigpTa->SetBinContent(4562,0.0460312); - ssigpTa->SetBinContent(4563,0.0468936); - ssigpTa->SetBinContent(4564,0.0477776); - ssigpTa->SetBinContent(4565,0.0487072); - ssigpTa->SetBinContent(4566,0.049748); - ssigpTa->SetBinContent(4567,0.05082); - ssigpTa->SetBinContent(4568,0.051788); - ssigpTa->SetBinContent(4569,0.0515048); - ssigpTa->SetBinContent(4570,0.0494088); - ssigpTa->SetBinContent(4571,0.0486296); - ssigpTa->SetBinContent(4572,0.0488952); - ssigpTa->SetBinContent(4573,0.049476); - ssigpTa->SetBinContent(4574,0.0504); - ssigpTa->SetBinContent(4575,0.0514744); - ssigpTa->SetBinContent(4576,0.0525552); - ssigpTa->SetBinContent(4577,0.053324); - ssigpTa->SetBinContent(4578,0.0536304); - ssigpTa->SetBinContent(4579,0.0543992); - ssigpTa->SetBinContent(4580,0.0555048); - ssigpTa->SetBinContent(4581,0.056692); - ssigpTa->SetBinContent(4582,0.0578936); - ssigpTa->SetBinContent(4583,0.05912); - ssigpTa->SetBinContent(4584,0.0603696); - ssigpTa->SetBinContent(4585,0.06168); - ssigpTa->SetBinContent(4586,0.0634816); - ssigpTa->SetBinContent(4587,0.0660496); - ssigpTa->SetBinContent(4588,0.0680152); - ssigpTa->SetBinContent(4589,0.0695232); - ssigpTa->SetBinContent(4590,0.0704776); - ssigpTa->SetBinContent(4591,0.0706696); - ssigpTa->SetBinContent(4592,0.0716128); - ssigpTa->SetBinContent(4593,0.0731392); - ssigpTa->SetBinContent(4594,0.074744); - ssigpTa->SetBinContent(4595,0.0763808); - ssigpTa->SetBinContent(4596,0.0781048); - ssigpTa->SetBinContent(4597,0.0804096); - ssigpTa->SetBinContent(4598,0.0835384); - ssigpTa->SetBinContent(4599,0.0859952); - ssigpTa->SetBinContent(4600,0.087932); - ssigpTa->SetBinContent(4601,0.089128); - ssigpTa->SetBinContent(4602,0.0893216); - ssigpTa->SetBinContent(4603,0.0905064); - ssigpTa->SetBinContent(4604,0.0924064); - ssigpTa->SetBinContent(4605,0.0944136); - ssigpTa->SetBinContent(4606,0.0965024); - ssigpTa->SetBinContent(4607,0.0986824); - ssigpTa->SetBinContent(4608,0.100873); - ssigpTa->SetBinContent(4609,0.103267); - ssigpTa->SetBinContent(4610,0.106059); - ssigpTa->SetBinContent(4611,0.108449); - ssigpTa->SetBinContent(4612,0.109909); - ssigpTa->SetBinContent(4613,0.110258); - ssigpTa->SetBinContent(4614,0.111824); - ssigpTa->SetBinContent(4615,0.114264); - ssigpTa->SetBinContent(4616,0.116858); - ssigpTa->SetBinContent(4617,0.119527); - ssigpTa->SetBinContent(4618,0.1222); - ssigpTa->SetBinContent(4619,0.124936); - ssigpTa->SetBinContent(4620,0.127732); - ssigpTa->SetBinContent(4621,0.13073); - ssigpTa->SetBinContent(4622,0.133384); - ssigpTa->SetBinContent(4623,0.134858); - ssigpTa->SetBinContent(4624,0.137171); - ssigpTa->SetBinContent(4625,0.140245); - ssigpTa->SetBinContent(4626,0.143434); - ssigpTa->SetBinContent(4627,0.146689); - ssigpTa->SetBinContent(4628,0.149976); - ssigpTa->SetBinContent(4629,0.153337); - ssigpTa->SetBinContent(4630,0.156866); - ssigpTa->SetBinContent(4631,0.160656); - ssigpTa->SetBinContent(4632,0.164721); - ssigpTa->SetBinContent(4633,0.168678); - ssigpTa->SetBinContent(4634,0.172592); - ssigpTa->SetBinContent(4635,0.176554); - ssigpTa->SetBinContent(4636,0.180613); - ssigpTa->SetBinContent(4637,0.184743); - ssigpTa->SetBinContent(4638,0.188902); - ssigpTa->SetBinContent(4639,0.193249); - ssigpTa->SetBinContent(4640,0.197861); - ssigpTa->SetBinContent(4641,0.20271); - ssigpTa->SetBinContent(4642,0.207654); - ssigpTa->SetBinContent(4643,0.212632); - ssigpTa->SetBinContent(4644,0.217709); - ssigpTa->SetBinContent(4645,0.223063); - ssigpTa->SetBinContent(4646,0.229761); - ssigpTa->SetBinContent(4647,0.238198); - ssigpTa->SetBinContent(4648,0.245158); - ssigpTa->SetBinContent(4649,0.251166); - ssigpTa->SetBinContent(4650,0.258366); - ssigpTa->SetBinContent(4651,0.267423); - ssigpTa->SetBinContent(4652,0.275315); - ssigpTa->SetBinContent(4653,0.282244); - ssigpTa->SetBinContent(4654,0.289138); - ssigpTa->SetBinContent(4655,0.298959); - ssigpTa->SetBinContent(4656,0.309827); - ssigpTa->SetBinContent(4659,0.0565328); - ssigpTa->SetBinContent(4660,0.0557579); - ssigpTa->SetBinContent(4661,0.0551436); - ssigpTa->SetBinContent(4662,0.0551436); - ssigpTa->SetBinContent(4663,0.0551436); - ssigpTa->SetBinContent(4664,0.0551436); - ssigpTa->SetBinContent(4665,0.0551436); - ssigpTa->SetBinContent(4666,0.0551436); - ssigpTa->SetBinContent(4667,0.0551436); - ssigpTa->SetBinContent(4668,0.0551436); - ssigpTa->SetBinContent(4669,0.0551436); - ssigpTa->SetBinContent(4670,0.0551436); - ssigpTa->SetBinContent(4671,0.0551436); - ssigpTa->SetBinContent(4672,0.0551436); - ssigpTa->SetBinContent(4673,0.0551516); - ssigpTa->SetBinContent(4674,0.0551596); - ssigpTa->SetBinContent(4675,0.0551676); - ssigpTa->SetBinContent(4676,0.0551676); - ssigpTa->SetBinContent(4677,0.0551676); - ssigpTa->SetBinContent(4678,0.0551676); - ssigpTa->SetBinContent(4679,0.0551676); - ssigpTa->SetBinContent(4680,0.0551712); - ssigpTa->SetBinContent(4681,0.0551712); - ssigpTa->SetBinContent(4682,0.0551712); - ssigpTa->SetBinContent(4683,0.0552112); - ssigpTa->SetBinContent(4684,0.0552592); - ssigpTa->SetBinContent(4685,0.0553632); - ssigpTa->SetBinContent(4686,0.0554112); - ssigpTa->SetBinContent(4687,0.0554352); - ssigpTa->SetBinContent(4688,0.0554468); - ssigpTa->SetBinContent(4689,0.0554468); - ssigpTa->SetBinContent(4690,0.0554468); - ssigpTa->SetBinContent(4691,0.0554468); - ssigpTa->SetBinContent(4692,0.0554468); - ssigpTa->SetBinContent(4693,0.0554548); - ssigpTa->SetBinContent(4694,0.0554628); - ssigpTa->SetBinContent(4695,0.0554744); - ssigpTa->SetBinContent(4696,0.0554744); - ssigpTa->SetBinContent(4697,0.0554744); - ssigpTa->SetBinContent(4698,0.0554744); - ssigpTa->SetBinContent(4699,0.0554744); - ssigpTa->SetBinContent(4700,0.0554824); - ssigpTa->SetBinContent(4701,0.055502); - ssigpTa->SetBinContent(4702,0.055526); - ssigpTa->SetBinContent(4703,0.055566); - ssigpTa->SetBinContent(4704,0.055582); - ssigpTa->SetBinContent(4705,0.0556016); - ssigpTa->SetBinContent(4706,0.0556096); - ssigpTa->SetBinContent(4707,0.0556176); - ssigpTa->SetBinContent(4708,0.0556176); - ssigpTa->SetBinContent(4709,0.0556576); - ssigpTa->SetBinContent(4710,0.0557092); - ssigpTa->SetBinContent(4711,0.0557572); - ssigpTa->SetBinContent(4712,0.0558132); - ssigpTa->SetBinContent(4713,0.0558292); - ssigpTa->SetBinContent(4714,0.0558808); - ssigpTa->SetBinContent(4715,0.0559048); - ssigpTa->SetBinContent(4716,0.0559208); - ssigpTa->SetBinContent(4717,0.0559244); - ssigpTa->SetBinContent(4718,0.0559324); - ssigpTa->SetBinContent(4719,0.0559404); - ssigpTa->SetBinContent(4720,0.05596); - ssigpTa->SetBinContent(4721,0.055976); - ssigpTa->SetBinContent(4722,0.056024); - ssigpTa->SetBinContent(4723,0.056048); - ssigpTa->SetBinContent(4724,0.0561076); - ssigpTa->SetBinContent(4725,0.0561556); - ssigpTa->SetBinContent(4726,0.0562072); - ssigpTa->SetBinContent(4727,0.0562152); - ssigpTa->SetBinContent(4728,0.0562712); - ssigpTa->SetBinContent(4729,0.0562988); - ssigpTa->SetBinContent(4730,0.0563468); - ssigpTa->SetBinContent(4731,0.0563708); - ssigpTa->SetBinContent(4732,0.0563904); - ssigpTa->SetBinContent(4733,0.0563984); - ssigpTa->SetBinContent(4734,0.056458); - ssigpTa->SetBinContent(4735,0.056522); - ssigpTa->SetBinContent(4736,0.05661); - ssigpTa->SetBinContent(4737,0.0566376); - ssigpTa->SetBinContent(4738,0.0566536); - ssigpTa->SetBinContent(4739,0.0567212); - ssigpTa->SetBinContent(4740,0.0567452); - ssigpTa->SetBinContent(4741,0.0567968); - ssigpTa->SetBinContent(4742,0.0568208); - ssigpTa->SetBinContent(4743,0.0568804); - ssigpTa->SetBinContent(4744,0.0569444); - ssigpTa->SetBinContent(4745,0.057012); - ssigpTa->SetBinContent(4746,0.057068); - ssigpTa->SetBinContent(4747,0.0571356); - ssigpTa->SetBinContent(4748,0.0571596); - ssigpTa->SetBinContent(4749,0.0571872); - ssigpTa->SetBinContent(4750,0.0572752); - ssigpTa->SetBinContent(4751,0.0573508); - ssigpTa->SetBinContent(4752,0.0574148); - ssigpTa->SetBinContent(4753,0.0574504); - ssigpTa->SetBinContent(4754,0.0575384); - ssigpTa->SetBinContent(4755,0.057574); - ssigpTa->SetBinContent(4756,0.0576496); - ssigpTa->SetBinContent(4757,0.0577216); - ssigpTa->SetBinContent(4758,0.0578212); - ssigpTa->SetBinContent(4759,0.0578568); - ssigpTa->SetBinContent(4760,0.0579368); - ssigpTa->SetBinContent(4761,0.0580284); - ssigpTa->SetBinContent(4762,0.058096); - ssigpTa->SetBinContent(4763,0.058072); - ssigpTa->SetBinContent(4764,0.0586152); - ssigpTa->SetBinContent(4765,0.0636028); - ssigpTa->SetBinContent(4766,0.0739944); - ssigpTa->SetBinContent(4767,0.079078); - ssigpTa->SetBinContent(4768,0.0797856); - ssigpTa->SetBinContent(4769,0.0798932); - ssigpTa->SetBinContent(4770,0.0799732); - ssigpTa->SetBinContent(4771,0.0800568); - ssigpTa->SetBinContent(4772,0.0801564); - ssigpTa->SetBinContent(4773,0.08028); - ssigpTa->SetBinContent(4774,0.08036); - ssigpTa->SetBinContent(4775,0.0799876); - ssigpTa->SetBinContent(4776,0.0762552); - ssigpTa->SetBinContent(4777,0.0689568); - ssigpTa->SetBinContent(4778,0.0669536); - ssigpTa->SetBinContent(4779,0.0685148); - ssigpTa->SetBinContent(4780,0.070364); - ssigpTa->SetBinContent(4781,0.0722016); - ssigpTa->SetBinContent(4782,0.0741148); - ssigpTa->SetBinContent(4783,0.076036); - ssigpTa->SetBinContent(4784,0.0774612); - ssigpTa->SetBinContent(4785,0.0753104); - ssigpTa->SetBinContent(4786,0.068782); - ssigpTa->SetBinContent(4787,0.0664676); - ssigpTa->SetBinContent(4788,0.067706); - ssigpTa->SetBinContent(4789,0.0694876); - ssigpTa->SetBinContent(4790,0.0713288); - ssigpTa->SetBinContent(4791,0.07325); - ssigpTa->SetBinContent(4792,0.0751872); - ssigpTa->SetBinContent(4793,0.077216); - ssigpTa->SetBinContent(4794,0.0792812); - ssigpTa->SetBinContent(4795,0.080814); - ssigpTa->SetBinContent(4796,0.0784108); - ssigpTa->SetBinContent(4797,0.0710696); - ssigpTa->SetBinContent(4798,0.0683508); - ssigpTa->SetBinContent(4799,0.069496); - ssigpTa->SetBinContent(4800,0.0713016); - ssigpTa->SetBinContent(4801,0.0731188); - ssigpTa->SetBinContent(4802,0.0750196); - ssigpTa->SetBinContent(4803,0.0769968); - ssigpTa->SetBinContent(4804,0.079342); - ssigpTa->SetBinContent(4805,0.0821412); - ssigpTa->SetBinContent(4806,0.083906); - ssigpTa->SetBinContent(4807,0.0813908); - ssigpTa->SetBinContent(4808,0.0737268); - ssigpTa->SetBinContent(4809,0.0708604); - ssigpTa->SetBinContent(4810,0.0719256); - ssigpTa->SetBinContent(4811,0.0735588); - ssigpTa->SetBinContent(4812,0.07524); - ssigpTa->SetBinContent(4813,0.0769488); - ssigpTa->SetBinContent(4814,0.078782); - ssigpTa->SetBinContent(4815,0.0806028); - ssigpTa->SetBinContent(4816,0.0825); - ssigpTa->SetBinContent(4817,0.0844088); - ssigpTa->SetBinContent(4818,0.0858296); - ssigpTa->SetBinContent(4819,0.083174); - ssigpTa->SetBinContent(4820,0.075528); - ssigpTa->SetBinContent(4821,0.0727132); - ssigpTa->SetBinContent(4822,0.07455); - ssigpTa->SetBinContent(4823,0.0777344); - ssigpTa->SetBinContent(4824,0.0801356); - ssigpTa->SetBinContent(4825,0.0819608); - ssigpTa->SetBinContent(4826,0.0837896); - ssigpTa->SetBinContent(4827,0.0856104); - ssigpTa->SetBinContent(4828,0.0874596); - ssigpTa->SetBinContent(4829,0.0888244); - ssigpTa->SetBinContent(4830,0.0866328); - ssigpTa->SetBinContent(4831,0.0799836); - ssigpTa->SetBinContent(4832,0.0775208); - ssigpTa->SetBinContent(4833,0.078042); - ssigpTa->SetBinContent(4834,0.0784628); - ssigpTa->SetBinContent(4835,0.0796116); - ssigpTa->SetBinContent(4836,0.0813284); - ssigpTa->SetBinContent(4837,0.0833012); - ssigpTa->SetBinContent(4838,0.085566); - ssigpTa->SetBinContent(4839,0.0877228); - ssigpTa->SetBinContent(4840,0.0897232); - ssigpTa->SetBinContent(4841,0.091784); - ssigpTa->SetBinContent(4842,0.0934724); - ssigpTa->SetBinContent(4843,0.0922248); - ssigpTa->SetBinContent(4844,0.087356); - ssigpTa->SetBinContent(4845,0.0864888); - ssigpTa->SetBinContent(4846,0.0892084); - ssigpTa->SetBinContent(4847,0.0916772); - ssigpTa->SetBinContent(4848,0.0937344); - ssigpTa->SetBinContent(4849,0.0958832); - ssigpTa->SetBinContent(4850,0.0979556); - ssigpTa->SetBinContent(4851,0.0990964); - ssigpTa->SetBinContent(4852,0.0990788); - ssigpTa->SetBinContent(4853,0.100228); - ssigpTa->SetBinContent(4854,0.102368); - ssigpTa->SetBinContent(4855,0.104681); - ssigpTa->SetBinContent(4856,0.107077); - ssigpTa->SetBinContent(4857,0.109501); - ssigpTa->SetBinContent(4858,0.111942); - ssigpTa->SetBinContent(4859,0.114658); - ssigpTa->SetBinContent(4860,0.118714); - ssigpTa->SetBinContent(4861,0.124518); - ssigpTa->SetBinContent(4862,0.128878); - ssigpTa->SetBinContent(4863,0.131841); - ssigpTa->SetBinContent(4864,0.133209); - ssigpTa->SetBinContent(4865,0.132704); - ssigpTa->SetBinContent(4866,0.134064); - ssigpTa->SetBinContent(4867,0.136947); - ssigpTa->SetBinContent(4868,0.140118); - ssigpTa->SetBinContent(4869,0.143369); - ssigpTa->SetBinContent(4870,0.14688); - ssigpTa->SetBinContent(4871,0.151859); - ssigpTa->SetBinContent(4872,0.158689); - ssigpTa->SetBinContent(4873,0.164011); - ssigpTa->SetBinContent(4874,0.167729); - ssigpTa->SetBinContent(4875,0.169511); - ssigpTa->SetBinContent(4876,0.1689); - ssigpTa->SetBinContent(4877,0.170634); - ssigpTa->SetBinContent(4878,0.174264); - ssigpTa->SetBinContent(4879,0.178222); - ssigpTa->SetBinContent(4880,0.182367); - ssigpTa->SetBinContent(4881,0.186625); - ssigpTa->SetBinContent(4882,0.191142); - ssigpTa->SetBinContent(4883,0.196779); - ssigpTa->SetBinContent(4884,0.203925); - ssigpTa->SetBinContent(4885,0.209562); - ssigpTa->SetBinContent(4886,0.212083); - ssigpTa->SetBinContent(4887,0.211868); - ssigpTa->SetBinContent(4888,0.214397); - ssigpTa->SetBinContent(4889,0.219193); - ssigpTa->SetBinContent(4890,0.224382); - ssigpTa->SetBinContent(4891,0.229726); - ssigpTa->SetBinContent(4892,0.235126); - ssigpTa->SetBinContent(4893,0.240594); - ssigpTa->SetBinContent(4894,0.246262); - ssigpTa->SetBinContent(4895,0.252366); - ssigpTa->SetBinContent(4896,0.257443); - ssigpTa->SetBinContent(4897,0.259708); - ssigpTa->SetBinContent(4898,0.263844); - ssigpTa->SetBinContent(4899,0.269878); - ssigpTa->SetBinContent(4900,0.276293); - ssigpTa->SetBinContent(4901,0.282835); - ssigpTa->SetBinContent(4902,0.289458); - ssigpTa->SetBinContent(4903,0.296224); - ssigpTa->SetBinContent(4904,0.303374); - ssigpTa->SetBinContent(4905,0.311223); - ssigpTa->SetBinContent(4906,0.319756); - ssigpTa->SetBinContent(4907,0.32796); - ssigpTa->SetBinContent(4908,0.335961); - ssigpTa->SetBinContent(4909,0.344082); - ssigpTa->SetBinContent(4910,0.352318); - ssigpTa->SetBinContent(4911,0.360602); - ssigpTa->SetBinContent(4912,0.369002); - ssigpTa->SetBinContent(4913,0.377694); - ssigpTa->SetBinContent(4914,0.387004); - ssigpTa->SetBinContent(4915,0.396741); - ssigpTa->SetBinContent(4916,0.406655); - ssigpTa->SetBinContent(4917,0.416684); - ssigpTa->SetBinContent(4918,0.426865); - ssigpTa->SetBinContent(4919,0.437658); - ssigpTa->SetBinContent(4920,0.451278); - ssigpTa->SetBinContent(4921,0.46839); - ssigpTa->SetBinContent(4922,0.482545); - ssigpTa->SetBinContent(4923,0.494733); - ssigpTa->SetBinContent(4924,0.509616); - ssigpTa->SetBinContent(4925,0.528387); - ssigpTa->SetBinContent(4926,0.54458); - ssigpTa->SetBinContent(4927,0.558592); - ssigpTa->SetBinContent(4928,0.57246); - ssigpTa->SetBinContent(4929,0.592432); - ssigpTa->SetBinContent(4930,0.610786); - ssigpTa->SetBinContent(4933,0.172111); - ssigpTa->SetBinContent(4934,0.156742); - ssigpTa->SetBinContent(4935,0.154372); - ssigpTa->SetBinContent(4936,0.154372); - ssigpTa->SetBinContent(4937,0.154372); - ssigpTa->SetBinContent(4938,0.154372); - ssigpTa->SetBinContent(4939,0.154372); - ssigpTa->SetBinContent(4940,0.154372); - ssigpTa->SetBinContent(4941,0.154372); - ssigpTa->SetBinContent(4942,0.154372); - ssigpTa->SetBinContent(4943,0.154372); - ssigpTa->SetBinContent(4944,0.154372); - ssigpTa->SetBinContent(4945,0.154372); - ssigpTa->SetBinContent(4946,0.154372); - ssigpTa->SetBinContent(4947,0.154372); - ssigpTa->SetBinContent(4948,0.154376); - ssigpTa->SetBinContent(4949,0.154376); - ssigpTa->SetBinContent(4950,0.154376); - ssigpTa->SetBinContent(4951,0.154376); - ssigpTa->SetBinContent(4952,0.154376); - ssigpTa->SetBinContent(4953,0.154376); - ssigpTa->SetBinContent(4954,0.154376); - ssigpTa->SetBinContent(4955,0.154376); - ssigpTa->SetBinContent(4956,0.154396); - ssigpTa->SetBinContent(4957,0.154436); - ssigpTa->SetBinContent(4958,0.154616); - ssigpTa->SetBinContent(4959,0.154752); - ssigpTa->SetBinContent(4960,0.154872); - ssigpTa->SetBinContent(4961,0.154888); - ssigpTa->SetBinContent(4962,0.154888); - ssigpTa->SetBinContent(4963,0.154888); - ssigpTa->SetBinContent(4964,0.154888); - ssigpTa->SetBinContent(4965,0.154888); - ssigpTa->SetBinContent(4966,0.154888); - ssigpTa->SetBinContent(4967,0.154888); - ssigpTa->SetBinContent(4968,0.154892); - ssigpTa->SetBinContent(4969,0.154892); - ssigpTa->SetBinContent(4970,0.154892); - ssigpTa->SetBinContent(4971,0.155172); - ssigpTa->SetBinContent(4972,0.155172); - ssigpTa->SetBinContent(4973,0.155172); - ssigpTa->SetBinContent(4974,0.155172); - ssigpTa->SetBinContent(4975,0.155176); - ssigpTa->SetBinContent(4976,0.155192); - ssigpTa->SetBinContent(4977,0.155208); - ssigpTa->SetBinContent(4978,0.155224); - ssigpTa->SetBinContent(4979,0.155224); - ssigpTa->SetBinContent(4980,0.155228); - ssigpTa->SetBinContent(4981,0.155228); - ssigpTa->SetBinContent(4982,0.155248); - ssigpTa->SetBinContent(4983,0.155288); - ssigpTa->SetBinContent(4984,0.155388); - ssigpTa->SetBinContent(4985,0.155512); - ssigpTa->SetBinContent(4986,0.155612); - ssigpTa->SetBinContent(4987,0.155708); - ssigpTa->SetBinContent(4988,0.155724); - ssigpTa->SetBinContent(4989,0.155744); - ssigpTa->SetBinContent(4990,0.155744); - ssigpTa->SetBinContent(4991,0.155744); - ssigpTa->SetBinContent(4992,0.155744); - ssigpTa->SetBinContent(4993,0.156028); - ssigpTa->SetBinContent(4994,0.156028); - ssigpTa->SetBinContent(4995,0.156044); - ssigpTa->SetBinContent(4996,0.15606); - ssigpTa->SetBinContent(4997,0.1561); - ssigpTa->SetBinContent(4998,0.15614); - ssigpTa->SetBinContent(4999,0.15624); - ssigpTa->SetBinContent(5000,0.156284); - ssigpTa->SetBinContent(5001,0.156384); - ssigpTa->SetBinContent(5002,0.156464); - ssigpTa->SetBinContent(5003,0.156564); - ssigpTa->SetBinContent(5004,0.15658); - ssigpTa->SetBinContent(5005,0.156596); - ssigpTa->SetBinContent(5006,0.1566); - ssigpTa->SetBinContent(5007,0.1569); - ssigpTa->SetBinContent(5008,0.15694); - ssigpTa->SetBinContent(5009,0.15706); - ssigpTa->SetBinContent(5010,0.157116); - ssigpTa->SetBinContent(5011,0.157152); - ssigpTa->SetBinContent(5012,0.157236); - ssigpTa->SetBinContent(5013,0.157316); - ssigpTa->SetBinContent(5014,0.157416); - ssigpTa->SetBinContent(5015,0.157432); - ssigpTa->SetBinContent(5016,0.157468); - ssigpTa->SetBinContent(5017,0.157792); - ssigpTa->SetBinContent(5018,0.157892); - ssigpTa->SetBinContent(5019,0.157952); - ssigpTa->SetBinContent(5020,0.158068); - ssigpTa->SetBinContent(5021,0.158168); - ssigpTa->SetBinContent(5022,0.158248); - ssigpTa->SetBinContent(5023,0.158284); - ssigpTa->SetBinContent(5024,0.158624); - ssigpTa->SetBinContent(5025,0.15874); - ssigpTa->SetBinContent(5026,0.158784); - ssigpTa->SetBinContent(5027,0.1589); - ssigpTa->SetBinContent(5028,0.159); - ssigpTa->SetBinContent(5029,0.159116); - ssigpTa->SetBinContent(5030,0.15916); - ssigpTa->SetBinContent(5031,0.15956); - ssigpTa->SetBinContent(5032,0.159616); - ssigpTa->SetBinContent(5033,0.159736); - ssigpTa->SetBinContent(5034,0.159852); - ssigpTa->SetBinContent(5035,0.159992); - ssigpTa->SetBinContent(5036,0.160348); - ssigpTa->SetBinContent(5037,0.160236); - ssigpTa->SetBinContent(5038,0.16104); - ssigpTa->SetBinContent(5039,0.171796); - ssigpTa->SetBinContent(5040,0.210092); - ssigpTa->SetBinContent(5041,0.2213); - ssigpTa->SetBinContent(5042,0.223036); - ssigpTa->SetBinContent(5043,0.223176); - ssigpTa->SetBinContent(5044,0.223312); - ssigpTa->SetBinContent(5045,0.223712); - ssigpTa->SetBinContent(5046,0.223872); - ssigpTa->SetBinContent(5047,0.224028); - ssigpTa->SetBinContent(5048,0.224228); - ssigpTa->SetBinContent(5049,0.223408); - ssigpTa->SetBinContent(5050,0.215268); - ssigpTa->SetBinContent(5051,0.186904); - ssigpTa->SetBinContent(5052,0.185032); - ssigpTa->SetBinContent(5053,0.189324); - ssigpTa->SetBinContent(5054,0.194748); - ssigpTa->SetBinContent(5055,0.200156); - ssigpTa->SetBinContent(5056,0.205384); - ssigpTa->SetBinContent(5057,0.210928); - ssigpTa->SetBinContent(5058,0.215172); - ssigpTa->SetBinContent(5059,0.211888); - ssigpTa->SetBinContent(5060,0.186156); - ssigpTa->SetBinContent(5061,0.182376); - ssigpTa->SetBinContent(5062,0.186336); - ssigpTa->SetBinContent(5063,0.191648); - ssigpTa->SetBinContent(5064,0.196776); - ssigpTa->SetBinContent(5065,0.202284); - ssigpTa->SetBinContent(5066,0.207864); - ssigpTa->SetBinContent(5067,0.213544); - ssigpTa->SetBinContent(5068,0.219604); - ssigpTa->SetBinContent(5069,0.224284); - ssigpTa->SetBinContent(5070,0.2206); - ssigpTa->SetBinContent(5071,0.191728); - ssigpTa->SetBinContent(5072,0.186656); - ssigpTa->SetBinContent(5073,0.190408); - ssigpTa->SetBinContent(5074,0.195336); - ssigpTa->SetBinContent(5075,0.20072); - ssigpTa->SetBinContent(5076,0.205868); - ssigpTa->SetBinContent(5077,0.211576); - ssigpTa->SetBinContent(5078,0.218536); - ssigpTa->SetBinContent(5079,0.228204); - ssigpTa->SetBinContent(5080,0.233528); - ssigpTa->SetBinContent(5081,0.229336); - ssigpTa->SetBinContent(5082,0.1998); - ssigpTa->SetBinContent(5083,0.194376); - ssigpTa->SetBinContent(5084,0.197592); - ssigpTa->SetBinContent(5085,0.202248); - ssigpTa->SetBinContent(5086,0.20664); - ssigpTa->SetBinContent(5087,0.211792); - ssigpTa->SetBinContent(5088,0.216704); - ssigpTa->SetBinContent(5089,0.221788); - ssigpTa->SetBinContent(5090,0.227136); - ssigpTa->SetBinContent(5091,0.23266); - ssigpTa->SetBinContent(5092,0.236728); - ssigpTa->SetBinContent(5093,0.23222); - ssigpTa->SetBinContent(5094,0.20176); - ssigpTa->SetBinContent(5095,0.196892); - ssigpTa->SetBinContent(5096,0.202312); - ssigpTa->SetBinContent(5097,0.215176); - ssigpTa->SetBinContent(5098,0.222096); - ssigpTa->SetBinContent(5099,0.227324); - ssigpTa->SetBinContent(5100,0.2323); - ssigpTa->SetBinContent(5101,0.237328); - ssigpTa->SetBinContent(5102,0.24262); - ssigpTa->SetBinContent(5103,0.246368); - ssigpTa->SetBinContent(5104,0.242748); - ssigpTa->SetBinContent(5105,0.216124); - ssigpTa->SetBinContent(5106,0.211628); - ssigpTa->SetBinContent(5107,0.21314); - ssigpTa->SetBinContent(5108,0.212244); - ssigpTa->SetBinContent(5109,0.215556); - ssigpTa->SetBinContent(5110,0.220324); - ssigpTa->SetBinContent(5111,0.226232); - ssigpTa->SetBinContent(5112,0.23394); - ssigpTa->SetBinContent(5113,0.2401); - ssigpTa->SetBinContent(5114,0.2458); - ssigpTa->SetBinContent(5115,0.251484); - ssigpTa->SetBinContent(5116,0.256428); - ssigpTa->SetBinContent(5117,0.254636); - ssigpTa->SetBinContent(5118,0.233924); - ssigpTa->SetBinContent(5119,0.233856); - ssigpTa->SetBinContent(5120,0.246628); - ssigpTa->SetBinContent(5121,0.254352); - ssigpTa->SetBinContent(5122,0.260672); - ssigpTa->SetBinContent(5123,0.266572); - ssigpTa->SetBinContent(5124,0.272508); - ssigpTa->SetBinContent(5125,0.276308); - ssigpTa->SetBinContent(5126,0.273624); - ssigpTa->SetBinContent(5127,0.277444); - ssigpTa->SetBinContent(5128,0.283456); - ssigpTa->SetBinContent(5129,0.290012); - ssigpTa->SetBinContent(5130,0.296924); - ssigpTa->SetBinContent(5131,0.303916); - ssigpTa->SetBinContent(5132,0.311024); - ssigpTa->SetBinContent(5133,0.318696); - ssigpTa->SetBinContent(5134,0.329532); - ssigpTa->SetBinContent(5135,0.349692); - ssigpTa->SetBinContent(5136,0.36124); - ssigpTa->SetBinContent(5137,0.369752); - ssigpTa->SetBinContent(5138,0.374464); - ssigpTa->SetBinContent(5139,0.368992); - ssigpTa->SetBinContent(5140,0.373684); - ssigpTa->SetBinContent(5141,0.3819); - ssigpTa->SetBinContent(5142,0.390808); - ssigpTa->SetBinContent(5143,0.400176); - ssigpTa->SetBinContent(5144,0.41022); - ssigpTa->SetBinContent(5145,0.423508); - ssigpTa->SetBinContent(5146,0.446628); - ssigpTa->SetBinContent(5147,0.46098); - ssigpTa->SetBinContent(5148,0.471812); - ssigpTa->SetBinContent(5149,0.477852); - ssigpTa->SetBinContent(5150,0.471056); - ssigpTa->SetBinContent(5151,0.477112); - ssigpTa->SetBinContent(5152,0.487484); - ssigpTa->SetBinContent(5153,0.498752); - ssigpTa->SetBinContent(5154,0.510532); - ssigpTa->SetBinContent(5155,0.522628); - ssigpTa->SetBinContent(5156,0.535604); - ssigpTa->SetBinContent(5157,0.551612); - ssigpTa->SetBinContent(5158,0.576568); - ssigpTa->SetBinContent(5159,0.592824); - ssigpTa->SetBinContent(5160,0.601396); - ssigpTa->SetBinContent(5161,0.595248); - ssigpTa->SetBinContent(5162,0.603896); - ssigpTa->SetBinContent(5163,0.617784); - ssigpTa->SetBinContent(5164,0.632796); - ssigpTa->SetBinContent(5165,0.647964); - ssigpTa->SetBinContent(5166,0.663304); - ssigpTa->SetBinContent(5167,0.679044); - ssigpTa->SetBinContent(5168,0.695244); - ssigpTa->SetBinContent(5169,0.712496); - ssigpTa->SetBinContent(5170,0.72966); - ssigpTa->SetBinContent(5171,0.73128); - ssigpTa->SetBinContent(5172,0.744232); - ssigpTa->SetBinContent(5173,0.761608); - ssigpTa->SetBinContent(5174,0.77996); - ssigpTa->SetBinContent(5175,0.798812); - ssigpTa->SetBinContent(5176,0.81784); - ssigpTa->SetBinContent(5177,0.83718); - ssigpTa->SetBinContent(5178,0.857796); - ssigpTa->SetBinContent(5179,0.880196); - ssigpTa->SetBinContent(5180,0.905996); - ssigpTa->SetBinContent(5181,0.929384); - ssigpTa->SetBinContent(5182,0.952496); - ssigpTa->SetBinContent(5183,0.976052); - ssigpTa->SetBinContent(5184,0.99978); - ssigpTa->SetBinContent(5185,1.02358); - ssigpTa->SetBinContent(5186,1.04755); - ssigpTa->SetBinContent(5187,1.07247); - ssigpTa->SetBinContent(5188,1.09921); - ssigpTa->SetBinContent(5189,1.12735); - ssigpTa->SetBinContent(5190,1.15584); - ssigpTa->SetBinContent(5191,1.18453); - ssigpTa->SetBinContent(5192,1.21384); - ssigpTa->SetBinContent(5193,1.24474); - ssigpTa->SetBinContent(5194,1.28162); - ssigpTa->SetBinContent(5195,1.33597); - ssigpTa->SetBinContent(5196,1.37438); - ssigpTa->SetBinContent(5197,1.40902); - ssigpTa->SetBinContent(5198,1.44986); - ssigpTa->SetBinContent(5199,1.50948); - ssigpTa->SetBinContent(5200,1.55407); - ssigpTa->SetBinContent(5201,1.59428); - ssigpTa->SetBinContent(5202,1.63405); - ssigpTa->SetBinContent(5203,1.69819); - ssigpTa->SetBinContent(5204,1.90111); - ssigpTa->SetBinContent(5207,0.436141); - ssigpTa->SetBinContent(5208,0.4658); - ssigpTa->SetBinContent(5209,0.454475); - ssigpTa->SetBinContent(5210,0.454475); - ssigpTa->SetBinContent(5211,0.454475); - ssigpTa->SetBinContent(5212,0.454475); - ssigpTa->SetBinContent(5213,0.454475); - ssigpTa->SetBinContent(5214,0.454475); - ssigpTa->SetBinContent(5215,0.454475); - ssigpTa->SetBinContent(5216,0.454475); - ssigpTa->SetBinContent(5217,0.454475); - ssigpTa->SetBinContent(5218,0.454475); - ssigpTa->SetBinContent(5219,0.454475); - ssigpTa->SetBinContent(5220,0.454475); - ssigpTa->SetBinContent(5221,0.454475); - ssigpTa->SetBinContent(5222,0.454475); - ssigpTa->SetBinContent(5223,0.454475); - ssigpTa->SetBinContent(5224,0.454475); - ssigpTa->SetBinContent(5225,0.454475); - ssigpTa->SetBinContent(5226,0.454475); - ssigpTa->SetBinContent(5227,0.454475); - ssigpTa->SetBinContent(5228,0.454475); - ssigpTa->SetBinContent(5229,0.454475); - ssigpTa->SetBinContent(5230,0.454475); - ssigpTa->SetBinContent(5231,0.454558); - ssigpTa->SetBinContent(5232,0.454683); - ssigpTa->SetBinContent(5233,0.454933); - ssigpTa->SetBinContent(5234,0.455025); - ssigpTa->SetBinContent(5235,0.455067); - ssigpTa->SetBinContent(5236,0.455067); - ssigpTa->SetBinContent(5237,0.455067); - ssigpTa->SetBinContent(5238,0.455067); - ssigpTa->SetBinContent(5239,0.455067); - ssigpTa->SetBinContent(5240,0.455067); - ssigpTa->SetBinContent(5241,0.455067); - ssigpTa->SetBinContent(5242,0.455067); - ssigpTa->SetBinContent(5243,0.455067); - ssigpTa->SetBinContent(5244,0.45565); - ssigpTa->SetBinContent(5245,0.456233); - ssigpTa->SetBinContent(5246,0.456817); - ssigpTa->SetBinContent(5247,0.456817); - ssigpTa->SetBinContent(5248,0.456817); - ssigpTa->SetBinContent(5249,0.456817); - ssigpTa->SetBinContent(5250,0.456817); - ssigpTa->SetBinContent(5251,0.456825); - ssigpTa->SetBinContent(5252,0.456825); - ssigpTa->SetBinContent(5253,0.456825); - ssigpTa->SetBinContent(5254,0.456825); - ssigpTa->SetBinContent(5255,0.456825); - ssigpTa->SetBinContent(5256,0.456825); - ssigpTa->SetBinContent(5257,0.456867); - ssigpTa->SetBinContent(5258,0.45695); - ssigpTa->SetBinContent(5259,0.457075); - ssigpTa->SetBinContent(5260,0.457283); - ssigpTa->SetBinContent(5261,0.457367); - ssigpTa->SetBinContent(5262,0.457417); - ssigpTa->SetBinContent(5263,0.457417); - ssigpTa->SetBinContent(5264,0.457417); - ssigpTa->SetBinContent(5265,0.457417); - ssigpTa->SetBinContent(5266,0.458); - ssigpTa->SetBinContent(5267,0.458583); - ssigpTa->SetBinContent(5268,0.459167); - ssigpTa->SetBinContent(5269,0.459167); - ssigpTa->SetBinContent(5270,0.459175); - ssigpTa->SetBinContent(5271,0.459175); - ssigpTa->SetBinContent(5272,0.459217); - ssigpTa->SetBinContent(5273,0.459258); - ssigpTa->SetBinContent(5274,0.459342); - ssigpTa->SetBinContent(5275,0.459425); - ssigpTa->SetBinContent(5276,0.459633); - ssigpTa->SetBinContent(5277,0.459717); - ssigpTa->SetBinContent(5278,0.459767); - ssigpTa->SetBinContent(5279,0.459767); - ssigpTa->SetBinContent(5280,0.46035); - ssigpTa->SetBinContent(5281,0.460933); - ssigpTa->SetBinContent(5282,0.461558); - ssigpTa->SetBinContent(5283,0.4616); - ssigpTa->SetBinContent(5284,0.46165); - ssigpTa->SetBinContent(5285,0.461692); - ssigpTa->SetBinContent(5286,0.461775); - ssigpTa->SetBinContent(5287,0.461983); - ssigpTa->SetBinContent(5288,0.462067); - ssigpTa->SetBinContent(5289,0.462117); - ssigpTa->SetBinContent(5290,0.4627); - ssigpTa->SetBinContent(5291,0.463325); - ssigpTa->SetBinContent(5292,0.46395); - ssigpTa->SetBinContent(5293,0.464033); - ssigpTa->SetBinContent(5294,0.464125); - ssigpTa->SetBinContent(5295,0.464333); - ssigpTa->SetBinContent(5296,0.464417); - ssigpTa->SetBinContent(5297,0.465042); - ssigpTa->SetBinContent(5298,0.465675); - ssigpTa->SetBinContent(5299,0.4663); - ssigpTa->SetBinContent(5300,0.466383); - ssigpTa->SetBinContent(5301,0.466467); - ssigpTa->SetBinContent(5302,0.466683); - ssigpTa->SetBinContent(5303,0.466767); - ssigpTa->SetBinContent(5304,0.467433); - ssigpTa->SetBinContent(5305,0.468058); - ssigpTa->SetBinContent(5306,0.468733); - ssigpTa->SetBinContent(5307,0.468817); - ssigpTa->SetBinContent(5308,0.469025); - ssigpTa->SetBinContent(5309,0.469742); - ssigpTa->SetBinContent(5310,0.470367); - ssigpTa->SetBinContent(5311,0.469658); - ssigpTa->SetBinContent(5312,0.471567); - ssigpTa->SetBinContent(5313,0.526908); - ssigpTa->SetBinContent(5314,0.5948); - ssigpTa->SetBinContent(5315,0.6521); - ssigpTa->SetBinContent(5316,0.656142); - ssigpTa->SetBinContent(5317,0.656358); - ssigpTa->SetBinContent(5318,0.657067); - ssigpTa->SetBinContent(5319,0.657775); - ssigpTa->SetBinContent(5320,0.658492); - ssigpTa->SetBinContent(5321,0.658742); - ssigpTa->SetBinContent(5322,0.659492); - ssigpTa->SetBinContent(5323,0.657625); - ssigpTa->SetBinContent(5324,0.614292); - ssigpTa->SetBinContent(5325,0.570083); - ssigpTa->SetBinContent(5326,0.54); - ssigpTa->SetBinContent(5327,0.556183); - ssigpTa->SetBinContent(5328,0.571908); - ssigpTa->SetBinContent(5329,0.587583); - ssigpTa->SetBinContent(5330,0.60335); - ssigpTa->SetBinContent(5331,0.619158); - ssigpTa->SetBinContent(5332,0.632842); - ssigpTa->SetBinContent(5333,0.60315); - ssigpTa->SetBinContent(5334,0.564142); - ssigpTa->SetBinContent(5335,0.533608); - ssigpTa->SetBinContent(5336,0.54645); - ssigpTa->SetBinContent(5337,0.561967); - ssigpTa->SetBinContent(5338,0.577642); - ssigpTa->SetBinContent(5339,0.593408); - ssigpTa->SetBinContent(5340,0.609842); - ssigpTa->SetBinContent(5341,0.62695); - ssigpTa->SetBinContent(5342,0.6448); - ssigpTa->SetBinContent(5343,0.6602); - ssigpTa->SetBinContent(5344,0.627058); - ssigpTa->SetBinContent(5345,0.582283); - ssigpTa->SetBinContent(5346,0.546208); - ssigpTa->SetBinContent(5347,0.557383); - ssigpTa->SetBinContent(5348,0.5729); - ssigpTa->SetBinContent(5349,0.587833); - ssigpTa->SetBinContent(5350,0.60355); - ssigpTa->SetBinContent(5351,0.620275); - ssigpTa->SetBinContent(5352,0.643592); - ssigpTa->SetBinContent(5353,0.668108); - ssigpTa->SetBinContent(5354,0.687833); - ssigpTa->SetBinContent(5355,0.653025); - ssigpTa->SetBinContent(5356,0.606525); - ssigpTa->SetBinContent(5357,0.56895); - ssigpTa->SetBinContent(5358,0.57925); - ssigpTa->SetBinContent(5359,0.592508); - ssigpTa->SetBinContent(5360,0.606517); - ssigpTa->SetBinContent(5361,0.620608); - ssigpTa->SetBinContent(5362,0.635542); - ssigpTa->SetBinContent(5363,0.650433); - ssigpTa->SetBinContent(5364,0.666117); - ssigpTa->SetBinContent(5365,0.682425); - ssigpTa->SetBinContent(5366,0.695733); - ssigpTa->SetBinContent(5367,0.659); - ssigpTa->SetBinContent(5368,0.611592); - ssigpTa->SetBinContent(5369,0.573975); - ssigpTa->SetBinContent(5370,0.597533); - ssigpTa->SetBinContent(5371,0.626358); - ssigpTa->SetBinContent(5372,0.653042); - ssigpTa->SetBinContent(5373,0.667925); - ssigpTa->SetBinContent(5374,0.682275); - ssigpTa->SetBinContent(5375,0.697158); - ssigpTa->SetBinContent(5376,0.712133); - ssigpTa->SetBinContent(5377,0.724858); - ssigpTa->SetBinContent(5378,0.693083); - ssigpTa->SetBinContent(5379,0.652283); - ssigpTa->SetBinContent(5380,0.618458); - ssigpTa->SetBinContent(5381,0.620467); - ssigpTa->SetBinContent(5382,0.623858); - ssigpTa->SetBinContent(5383,0.6295); - ssigpTa->SetBinContent(5384,0.644092); - ssigpTa->SetBinContent(5385,0.663108); - ssigpTa->SetBinContent(5386,0.68355); - ssigpTa->SetBinContent(5387,0.70345); - ssigpTa->SetBinContent(5388,0.720092); - ssigpTa->SetBinContent(5389,0.7372); - ssigpTa->SetBinContent(5390,0.752092); - ssigpTa->SetBinContent(5391,0.729575); - ssigpTa->SetBinContent(5392,0.699133); - ssigpTa->SetBinContent(5393,0.688567); - ssigpTa->SetBinContent(5394,0.717575); - ssigpTa->SetBinContent(5395,0.74785); - ssigpTa->SetBinContent(5396,0.765742); - ssigpTa->SetBinContent(5397,0.783725); - ssigpTa->SetBinContent(5398,0.801042); - ssigpTa->SetBinContent(5399,0.806317); - ssigpTa->SetBinContent(5400,0.809083); - ssigpTa->SetBinContent(5401,0.814358); - ssigpTa->SetBinContent(5402,0.832383); - ssigpTa->SetBinContent(5403,0.851875); - ssigpTa->SetBinContent(5404,0.87215); - ssigpTa->SetBinContent(5405,0.8931); - ssigpTa->SetBinContent(5406,0.91405); - ssigpTa->SetBinContent(5407,0.936375); - ssigpTa->SetBinContent(5408,0.976658); - ssigpTa->SetBinContent(5409,1.02126); - ssigpTa->SetBinContent(5410,1.06381); - ssigpTa->SetBinContent(5411,1.08865); - ssigpTa->SetBinContent(5412,1.09316); - ssigpTa->SetBinContent(5413,1.09371); - ssigpTa->SetBinContent(5414,1.09825); - ssigpTa->SetBinContent(5415,1.12281); - ssigpTa->SetBinContent(5416,1.14936); - ssigpTa->SetBinContent(5417,1.17671); - ssigpTa->SetBinContent(5418,1.20593); - ssigpTa->SetBinContent(5419,1.25395); - ssigpTa->SetBinContent(5420,1.30701); - ssigpTa->SetBinContent(5421,1.35804); - ssigpTa->SetBinContent(5422,1.39016); - ssigpTa->SetBinContent(5423,1.39619); - ssigpTa->SetBinContent(5424,1.39712); - ssigpTa->SetBinContent(5425,1.40307); - ssigpTa->SetBinContent(5426,1.43432); - ssigpTa->SetBinContent(5427,1.46785); - ssigpTa->SetBinContent(5428,1.50231); - ssigpTa->SetBinContent(5429,1.53815); - ssigpTa->SetBinContent(5430,1.57595); - ssigpTa->SetBinContent(5431,1.63175); - ssigpTa->SetBinContent(5432,1.69236); - ssigpTa->SetBinContent(5433,1.74876); - ssigpTa->SetBinContent(5434,1.76078); - ssigpTa->SetBinContent(5435,1.76623); - ssigpTa->SetBinContent(5436,1.77864); - ssigpTa->SetBinContent(5437,1.8205); - ssigpTa->SetBinContent(5438,1.86483); - ssigpTa->SetBinContent(5439,1.90952); - ssigpTa->SetBinContent(5440,1.95486); - ssigpTa->SetBinContent(5441,2.00102); - ssigpTa->SetBinContent(5442,2.04902); - ssigpTa->SetBinContent(5443,2.10378); - ssigpTa->SetBinContent(5444,2.13742); - ssigpTa->SetBinContent(5445,2.16574); - ssigpTa->SetBinContent(5446,2.19293); - ssigpTa->SetBinContent(5447,2.24458); - ssigpTa->SetBinContent(5448,2.29915); - ssigpTa->SetBinContent(5449,2.3546); - ssigpTa->SetBinContent(5450,2.41084); - ssigpTa->SetBinContent(5451,2.46858); - ssigpTa->SetBinContent(5452,2.52909); - ssigpTa->SetBinContent(5453,2.5979); - ssigpTa->SetBinContent(5454,2.66943); - ssigpTa->SetBinContent(5455,2.74142); - ssigpTa->SetBinContent(5456,2.80966); - ssigpTa->SetBinContent(5457,2.87911); - ssigpTa->SetBinContent(5458,2.94932); - ssigpTa->SetBinContent(5459,3.01961); - ssigpTa->SetBinContent(5460,3.09074); - ssigpTa->SetBinContent(5461,3.16491); - ssigpTa->SetBinContent(5462,3.24374); - ssigpTa->SetBinContent(5463,3.32641); - ssigpTa->SetBinContent(5464,3.41067); - ssigpTa->SetBinContent(5465,3.49577); - ssigpTa->SetBinContent(5466,3.5824); - ssigpTa->SetBinContent(5467,3.67268); - ssigpTa->SetBinContent(5468,3.79708); - ssigpTa->SetBinContent(5469,3.92967); - ssigpTa->SetBinContent(5470,4.0581); - ssigpTa->SetBinContent(5471,4.15907); - ssigpTa->SetBinContent(5472,4.29522); - ssigpTa->SetBinContent(5473,4.44339); - ssigpTa->SetBinContent(5474,4.59034); - ssigpTa->SetBinContent(5475,4.70792); - ssigpTa->SetBinContent(5476,4.82576); - ssigpTa->SetBinContent(5477,5.06458); - ssigpTa->SetBinContent(5478,4.80471); - ssigpTa->SetBinContent(5481,0.902885); - ssigpTa->SetBinContent(5482,0.873029); - ssigpTa->SetBinContent(5483,0.899972); - ssigpTa->SetBinContent(5484,0.899972); - ssigpTa->SetBinContent(5485,0.899972); - ssigpTa->SetBinContent(5486,0.899972); - ssigpTa->SetBinContent(5487,0.899972); - ssigpTa->SetBinContent(5488,0.899972); - ssigpTa->SetBinContent(5489,0.899972); - ssigpTa->SetBinContent(5490,0.899972); - ssigpTa->SetBinContent(5491,0.899972); - ssigpTa->SetBinContent(5492,0.899972); - ssigpTa->SetBinContent(5493,0.899972); - ssigpTa->SetBinContent(5494,0.899972); - ssigpTa->SetBinContent(5495,0.899972); - ssigpTa->SetBinContent(5496,0.899972); - ssigpTa->SetBinContent(5497,0.899972); - ssigpTa->SetBinContent(5498,0.899972); - ssigpTa->SetBinContent(5499,0.899972); - ssigpTa->SetBinContent(5500,0.899972); - ssigpTa->SetBinContent(5501,0.899972); - ssigpTa->SetBinContent(5502,0.899972); - ssigpTa->SetBinContent(5503,0.899972); - ssigpTa->SetBinContent(5504,0.899972); - ssigpTa->SetBinContent(5505,0.899972); - ssigpTa->SetBinContent(5506,0.900111); - ssigpTa->SetBinContent(5507,0.900222); - ssigpTa->SetBinContent(5508,0.900333); - ssigpTa->SetBinContent(5509,0.900333); - ssigpTa->SetBinContent(5510,0.900333); - ssigpTa->SetBinContent(5511,0.900333); - ssigpTa->SetBinContent(5512,0.900333); - ssigpTa->SetBinContent(5513,0.900333); - ssigpTa->SetBinContent(5514,0.900333); - ssigpTa->SetBinContent(5515,0.900333); - ssigpTa->SetBinContent(5516,0.900333); - ssigpTa->SetBinContent(5517,0.900722); - ssigpTa->SetBinContent(5518,0.9015); - ssigpTa->SetBinContent(5519,0.903444); - ssigpTa->SetBinContent(5520,0.904222); - ssigpTa->SetBinContent(5521,0.904611); - ssigpTa->SetBinContent(5522,0.904611); - ssigpTa->SetBinContent(5523,0.904611); - ssigpTa->SetBinContent(5524,0.904611); - ssigpTa->SetBinContent(5525,0.904611); - ssigpTa->SetBinContent(5526,0.904611); - ssigpTa->SetBinContent(5527,0.904611); - ssigpTa->SetBinContent(5528,0.904611); - ssigpTa->SetBinContent(5529,0.904611); - ssigpTa->SetBinContent(5530,0.904611); - ssigpTa->SetBinContent(5531,0.904611); - ssigpTa->SetBinContent(5532,0.904639); - ssigpTa->SetBinContent(5533,0.90475); - ssigpTa->SetBinContent(5534,0.904861); - ssigpTa->SetBinContent(5535,0.904972); - ssigpTa->SetBinContent(5536,0.904972); - ssigpTa->SetBinContent(5537,0.904972); - ssigpTa->SetBinContent(5538,0.904972); - ssigpTa->SetBinContent(5539,0.905361); - ssigpTa->SetBinContent(5540,0.906139); - ssigpTa->SetBinContent(5541,0.908083); - ssigpTa->SetBinContent(5542,0.908861); - ssigpTa->SetBinContent(5543,0.90925); - ssigpTa->SetBinContent(5544,0.90925); - ssigpTa->SetBinContent(5545,0.90925); - ssigpTa->SetBinContent(5546,0.90925); - ssigpTa->SetBinContent(5547,0.909278); - ssigpTa->SetBinContent(5548,0.909278); - ssigpTa->SetBinContent(5549,0.909389); - ssigpTa->SetBinContent(5550,0.9095); - ssigpTa->SetBinContent(5551,0.909611); - ssigpTa->SetBinContent(5552,0.909611); - ssigpTa->SetBinContent(5553,0.91); - ssigpTa->SetBinContent(5554,0.910778); - ssigpTa->SetBinContent(5555,0.912722); - ssigpTa->SetBinContent(5556,0.9135); - ssigpTa->SetBinContent(5557,0.913917); - ssigpTa->SetBinContent(5558,0.913917); - ssigpTa->SetBinContent(5559,0.913917); - ssigpTa->SetBinContent(5560,0.914028); - ssigpTa->SetBinContent(5561,0.914139); - ssigpTa->SetBinContent(5562,0.91425); - ssigpTa->SetBinContent(5563,0.914639); - ssigpTa->SetBinContent(5564,0.915417); - ssigpTa->SetBinContent(5565,0.917361); - ssigpTa->SetBinContent(5566,0.918167); - ssigpTa->SetBinContent(5567,0.918556); - ssigpTa->SetBinContent(5568,0.918667); - ssigpTa->SetBinContent(5569,0.918778); - ssigpTa->SetBinContent(5570,0.919278); - ssigpTa->SetBinContent(5571,0.920056); - ssigpTa->SetBinContent(5572,0.922); - ssigpTa->SetBinContent(5573,0.922806); - ssigpTa->SetBinContent(5574,0.923194); - ssigpTa->SetBinContent(5575,0.923306); - ssigpTa->SetBinContent(5576,0.923417); - ssigpTa->SetBinContent(5577,0.923917); - ssigpTa->SetBinContent(5578,0.924694); - ssigpTa->SetBinContent(5579,0.926667); - ssigpTa->SetBinContent(5580,0.927444); - ssigpTa->SetBinContent(5581,0.927944); - ssigpTa->SetBinContent(5582,0.928444); - ssigpTa->SetBinContent(5583,0.929333); - ssigpTa->SetBinContent(5584,0.930528); - ssigpTa->SetBinContent(5585,0.929639); - ssigpTa->SetBinContent(5586,0.957083); - ssigpTa->SetBinContent(5587,1.02694); - ssigpTa->SetBinContent(5588,1.19358); - ssigpTa->SetBinContent(5589,1.26667); - ssigpTa->SetBinContent(5590,1.29867); - ssigpTa->SetBinContent(5591,1.29956); - ssigpTa->SetBinContent(5592,1.30044); - ssigpTa->SetBinContent(5593,1.30242); - ssigpTa->SetBinContent(5594,1.30331); - ssigpTa->SetBinContent(5595,1.30419); - ssigpTa->SetBinContent(5596,1.30511); - ssigpTa->SetBinContent(5597,1.28267); - ssigpTa->SetBinContent(5598,1.23222); - ssigpTa->SetBinContent(5599,1.11439); - ssigpTa->SetBinContent(5600,1.09142); - ssigpTa->SetBinContent(5601,1.09894); - ssigpTa->SetBinContent(5602,1.13206); - ssigpTa->SetBinContent(5603,1.16325); - ssigpTa->SetBinContent(5604,1.19378); - ssigpTa->SetBinContent(5605,1.22547); - ssigpTa->SetBinContent(5606,1.23228); - ssigpTa->SetBinContent(5607,1.20658); - ssigpTa->SetBinContent(5608,1.10275); - ssigpTa->SetBinContent(5609,1.07536); - ssigpTa->SetBinContent(5610,1.08117); - ssigpTa->SetBinContent(5611,1.11233); - ssigpTa->SetBinContent(5612,1.14275); - ssigpTa->SetBinContent(5613,1.17444); - ssigpTa->SetBinContent(5614,1.20692); - ssigpTa->SetBinContent(5615,1.24067); - ssigpTa->SetBinContent(5616,1.27639); - ssigpTa->SetBinContent(5617,1.28458); - ssigpTa->SetBinContent(5618,1.25553); - ssigpTa->SetBinContent(5619,1.13764); - ssigpTa->SetBinContent(5620,1.10197); - ssigpTa->SetBinContent(5621,1.10386); - ssigpTa->SetBinContent(5622,1.13297); - ssigpTa->SetBinContent(5623,1.16378); - ssigpTa->SetBinContent(5624,1.19419); - ssigpTa->SetBinContent(5625,1.23017); - ssigpTa->SetBinContent(5626,1.27219); - ssigpTa->SetBinContent(5627,1.32417); - ssigpTa->SetBinContent(5628,1.33675); - ssigpTa->SetBinContent(5629,1.30706); - ssigpTa->SetBinContent(5630,1.18542); - ssigpTa->SetBinContent(5631,1.14756); - ssigpTa->SetBinContent(5632,1.14611); - ssigpTa->SetBinContent(5633,1.17306); - ssigpTa->SetBinContent(5634,1.19961); - ssigpTa->SetBinContent(5635,1.22872); - ssigpTa->SetBinContent(5636,1.25744); - ssigpTa->SetBinContent(5637,1.28708); - ssigpTa->SetBinContent(5638,1.31825); - ssigpTa->SetBinContent(5639,1.35033); - ssigpTa->SetBinContent(5640,1.35364); - ssigpTa->SetBinContent(5641,1.31908); - ssigpTa->SetBinContent(5642,1.19403); - ssigpTa->SetBinContent(5643,1.16347); - ssigpTa->SetBinContent(5644,1.17842); - ssigpTa->SetBinContent(5645,1.24358); - ssigpTa->SetBinContent(5646,1.28731); - ssigpTa->SetBinContent(5647,1.32225); - ssigpTa->SetBinContent(5648,1.35061); - ssigpTa->SetBinContent(5649,1.37944); - ssigpTa->SetBinContent(5650,1.40975); - ssigpTa->SetBinContent(5651,1.41369); - ssigpTa->SetBinContent(5652,1.38533); - ssigpTa->SetBinContent(5653,1.27619); - ssigpTa->SetBinContent(5654,1.24017); - ssigpTa->SetBinContent(5655,1.22961); - ssigpTa->SetBinContent(5656,1.23158); - ssigpTa->SetBinContent(5657,1.24886); - ssigpTa->SetBinContent(5658,1.27525); - ssigpTa->SetBinContent(5659,1.31086); - ssigpTa->SetBinContent(5660,1.35325); - ssigpTa->SetBinContent(5661,1.39017); - ssigpTa->SetBinContent(5662,1.42497); - ssigpTa->SetBinContent(5663,1.45833); - ssigpTa->SetBinContent(5664,1.47111); - ssigpTa->SetBinContent(5665,1.45431); - ssigpTa->SetBinContent(5666,1.37714); - ssigpTa->SetBinContent(5667,1.37467); - ssigpTa->SetBinContent(5668,1.42436); - ssigpTa->SetBinContent(5669,1.474); - ssigpTa->SetBinContent(5670,1.51631); - ssigpTa->SetBinContent(5671,1.55097); - ssigpTa->SetBinContent(5672,1.57992); - ssigpTa->SetBinContent(5673,1.59975); - ssigpTa->SetBinContent(5674,1.59728); - ssigpTa->SetBinContent(5675,1.6175); - ssigpTa->SetBinContent(5676,1.64761); - ssigpTa->SetBinContent(5677,1.68603); - ssigpTa->SetBinContent(5678,1.72647); - ssigpTa->SetBinContent(5679,1.76772); - ssigpTa->SetBinContent(5680,1.80947); - ssigpTa->SetBinContent(5681,1.86172); - ssigpTa->SetBinContent(5682,1.92797); - ssigpTa->SetBinContent(5683,2.02764); - ssigpTa->SetBinContent(5684,2.09803); - ssigpTa->SetBinContent(5685,2.14622); - ssigpTa->SetBinContent(5686,2.17019); - ssigpTa->SetBinContent(5687,2.15875); - ssigpTa->SetBinContent(5688,2.18308); - ssigpTa->SetBinContent(5689,2.22286); - ssigpTa->SetBinContent(5690,2.27517); - ssigpTa->SetBinContent(5691,2.32956); - ssigpTa->SetBinContent(5692,2.39572); - ssigpTa->SetBinContent(5693,2.47706); - ssigpTa->SetBinContent(5694,2.59361); - ssigpTa->SetBinContent(5695,2.68075); - ssigpTa->SetBinContent(5696,2.74103); - ssigpTa->SetBinContent(5697,2.77219); - ssigpTa->SetBinContent(5698,2.75811); - ssigpTa->SetBinContent(5699,2.78928); - ssigpTa->SetBinContent(5700,2.83983); - ssigpTa->SetBinContent(5701,2.90606); - ssigpTa->SetBinContent(5702,2.97475); - ssigpTa->SetBinContent(5703,3.04525); - ssigpTa->SetBinContent(5704,3.12828); - ssigpTa->SetBinContent(5705,3.226); - ssigpTa->SetBinContent(5706,3.35642); - ssigpTa->SetBinContent(5707,3.44283); - ssigpTa->SetBinContent(5708,3.49539); - ssigpTa->SetBinContent(5709,3.48894); - ssigpTa->SetBinContent(5710,3.53511); - ssigpTa->SetBinContent(5711,3.60511); - ssigpTa->SetBinContent(5712,3.69286); - ssigpTa->SetBinContent(5713,3.78142); - ssigpTa->SetBinContent(5714,3.87094); - ssigpTa->SetBinContent(5715,3.96283); - ssigpTa->SetBinContent(5716,4.06078); - ssigpTa->SetBinContent(5717,4.15308); - ssigpTa->SetBinContent(5718,4.24231); - ssigpTa->SetBinContent(5719,4.27825); - ssigpTa->SetBinContent(5720,4.35347); - ssigpTa->SetBinContent(5721,4.44528); - ssigpTa->SetBinContent(5722,4.55286); - ssigpTa->SetBinContent(5723,4.66292); - ssigpTa->SetBinContent(5724,4.77464); - ssigpTa->SetBinContent(5725,4.88892); - ssigpTa->SetBinContent(5726,5.01175); - ssigpTa->SetBinContent(5727,5.14333); - ssigpTa->SetBinContent(5728,5.28861); - ssigpTa->SetBinContent(5729,5.42689); - ssigpTa->SetBinContent(5730,5.56453); - ssigpTa->SetBinContent(5731,5.70203); - ssigpTa->SetBinContent(5732,5.84081); - ssigpTa->SetBinContent(5733,5.98036); - ssigpTa->SetBinContent(5734,6.12197); - ssigpTa->SetBinContent(5735,6.26911); - ssigpTa->SetBinContent(5736,6.42517); - ssigpTa->SetBinContent(5737,6.58844); - ssigpTa->SetBinContent(5738,6.75506); - ssigpTa->SetBinContent(5739,6.92372); - ssigpTa->SetBinContent(5740,7.09536); - ssigpTa->SetBinContent(5741,7.28942); - ssigpTa->SetBinContent(5742,7.51053); - ssigpTa->SetBinContent(5743,7.79389); - ssigpTa->SetBinContent(5744,8.02342); - ssigpTa->SetBinContent(5745,8.25378); - ssigpTa->SetBinContent(5746,8.49847); - ssigpTa->SetBinContent(5747,8.81264); - ssigpTa->SetBinContent(5748,9.07772); - ssigpTa->SetBinContent(5749,9.32575); - ssigpTa->SetBinContent(5750,9.55897); - ssigpTa->SetBinContent(5751,9.46026); - ssigpTa->SetBinContent(5752,9.95015); - ssigpTa->SetEntries(5169); - - init = true; - } - - double percent = ssigpTa->Interpolate(eta, ptGeV); - return percent; - } - - - - // Fractional resolution in % - //double ITKPercentageresol(double pt [GeV], double eta) { -double UpgradePerformance::ITKPercentageresol_LoIfixBronze(double ptMeV, double eta){ - double ptGeV = ptMeV/1000.; - static TH2D *ssigpTa; - static bool init = false; - - if (fabs(eta)>2.7) return 0.; - - if(!init){ - Double_t xAxis1[273] = {0, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.075, 0.085, 0.095, 0.105, 0.115, 0.125, 0.135, 0.145, 0.155, 0.165, 0.175, 0.185, 0.195, 0.205, 0.215, 0.225, 0.235, 0.245, 0.255, 0.265, 0.275, 0.285, 0.295, 0.305, 0.315, 0.325, 0.335, 0.345, 0.355, 0.365, 0.375, 0.385, 0.395, 0.405, 0.415, 0.425, 0.435, 0.445, 0.455, 0.465, 0.475, 0.485, 0.495, 0.505, 0.515, 0.525, 0.535, 0.545, 0.555, 0.565, 0.575, 0.585, 0.595, 0.605, 0.615, 0.625, 0.635, 0.645, 0.655, 0.665, 0.675, 0.685, 0.695, 0.705, 0.715, 0.725, 0.735, 0.745, 0.755, 0.765, 0.775, 0.785, 0.795, 0.805, 0.815, 0.825, 0.835, 0.845, 0.855, 0.865, 0.875, 0.885, 0.895, 0.905, 0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005, 1.015, 1.025, 1.035, 1.045, 1.055, 1.065, 1.075, 1.085, 1.095, 1.105, 1.115, 1.125, 1.135, 1.145, 1.155, 1.165, 1.175, 1.185, 1.195, 1.205, 1.215, 1.225, 1.235, 1.245, 1.255, 1.265, 1.275, 1.285, 1.295, 1.305, 1.315, 1.325, 1.335, 1.345, 1.355, 1.365, 1.375, 1.385, 1.395, 1.405, 1.415, 1.425, 1.435, 1.445, 1.455, 1.465, 1.475, 1.485, 1.495, 1.505, 1.515, 1.525, 1.535, 1.545, 1.555, 1.565, 1.575, 1.585, 1.595, 1.605, 1.615, 1.625, 1.635, 1.645, 1.655, 1.665, 1.675, 1.685, 1.695, 1.705, 1.715, 1.725, 1.735, 1.745, 1.755, 1.765, 1.775, 1.785, 1.795, 1.805, 1.815, 1.825, 1.835, 1.845, 1.855, 1.865, 1.875, 1.885, 1.895, 1.905, 1.915, 1.925, 1.935, 1.945, 1.955, 1.965, 1.975, 1.985, 1.995, 2.005, 2.015, 2.025, 2.035, 2.045, 2.055, 2.065, 2.075, 2.085, 2.095, 2.105, 2.115, 2.125, 2.135, 2.145, 2.155, 2.165, 2.175, 2.185, 2.195, 2.205, 2.215, 2.225, 2.235, 2.245, 2.255, 2.265, 2.275, 2.285, 2.295, 2.305, 2.315, 2.325, 2.335, 2.345, 2.355, 2.365, 2.375, 2.385, 2.395, 2.405, 2.415, 2.425, 2.435, 2.445, 2.455, 2.465, 2.475, 2.485, 2.495, 2.505, 2.515, 2.525, 2.535, 2.545, 2.555, 2.565, 2.575, 2.585, 2.595, 2.605, 2.615, 2.625, 2.635, 2.645, 2.655, 2.665, 2.675, 2.685, 2.695, 2.705, 2.7371}; - Double_t yAxis1[21] = {0, 0.1, 0.35, 0.75, 1.5, 3.5, 7.5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 150, 350, 750, 4000, 7070}; - - ssigpTa = new TH2D("ssigpTa","ssigpTa",272, xAxis1,20, yAxis1); - ssigpTa->SetDirectory(0); - ssigpTa->SetBinContent(275,0.00337818); - ssigpTa->SetBinContent(276,0.00361671); - ssigpTa->SetBinContent(277,0.0034161); - ssigpTa->SetBinContent(278,0.00341663); - ssigpTa->SetBinContent(279,0.00341734); - ssigpTa->SetBinContent(280,0.00341821); - ssigpTa->SetBinContent(281,0.00341931); - ssigpTa->SetBinContent(282,0.00342058); - ssigpTa->SetBinContent(283,0.00342209); - ssigpTa->SetBinContent(284,0.00342379); - ssigpTa->SetBinContent(285,0.00342569); - ssigpTa->SetBinContent(286,0.00342777); - ssigpTa->SetBinContent(287,0.00343008); - ssigpTa->SetBinContent(288,0.00343259); - ssigpTa->SetBinContent(289,0.00343529); - ssigpTa->SetBinContent(290,0.0034382); - ssigpTa->SetBinContent(291,0.00344129); - ssigpTa->SetBinContent(292,0.00344458); - ssigpTa->SetBinContent(293,0.00344808); - ssigpTa->SetBinContent(294,0.00345179); - ssigpTa->SetBinContent(295,0.0034557); - ssigpTa->SetBinContent(296,0.00345979); - ssigpTa->SetBinContent(297,0.00346409); - ssigpTa->SetBinContent(298,0.0034686); - ssigpTa->SetBinContent(299,0.00347331); - ssigpTa->SetBinContent(300,0.00347826); - ssigpTa->SetBinContent(301,0.00348336); - ssigpTa->SetBinContent(302,0.00348866); - ssigpTa->SetBinContent(303,0.0034942); - ssigpTa->SetBinContent(304,0.00349992); - ssigpTa->SetBinContent(305,0.00350587); - ssigpTa->SetBinContent(306,0.00351197); - ssigpTa->SetBinContent(307,0.00351831); - ssigpTa->SetBinContent(308,0.00352483); - ssigpTa->SetBinContent(309,0.00353158); - ssigpTa->SetBinContent(310,0.00353851); - ssigpTa->SetBinContent(311,0.00354564); - ssigpTa->SetBinContent(312,0.00355301); - ssigpTa->SetBinContent(313,0.00356058); - ssigpTa->SetBinContent(314,0.00356836); - ssigpTa->SetBinContent(315,0.00357632); - ssigpTa->SetBinContent(316,0.00358449); - ssigpTa->SetBinContent(317,0.00359288); - ssigpTa->SetBinContent(318,0.00360148); - ssigpTa->SetBinContent(319,0.00361029); - ssigpTa->SetBinContent(320,0.00361931); - ssigpTa->SetBinContent(321,0.0036285); - ssigpTa->SetBinContent(322,0.00363792); - ssigpTa->SetBinContent(323,0.00364758); - ssigpTa->SetBinContent(324,0.00365746); - ssigpTa->SetBinContent(325,0.0036675); - ssigpTa->SetBinContent(326,0.00367779); - ssigpTa->SetBinContent(327,0.00368829); - ssigpTa->SetBinContent(328,0.003699); - ssigpTa->SetBinContent(329,0.00370991); - ssigpTa->SetBinContent(330,0.00372106); - ssigpTa->SetBinContent(331,0.0037324); - ssigpTa->SetBinContent(332,0.00374397); - ssigpTa->SetBinContent(333,0.0037558); - ssigpTa->SetBinContent(334,0.00376783); - ssigpTa->SetBinContent(335,0.00378007); - ssigpTa->SetBinContent(336,0.00379252); - ssigpTa->SetBinContent(337,0.00380519); - ssigpTa->SetBinContent(338,0.00381809); - ssigpTa->SetBinContent(339,0.00383124); - ssigpTa->SetBinContent(340,0.00384463); - ssigpTa->SetBinContent(341,0.00385821); - ssigpTa->SetBinContent(342,0.00387205); - ssigpTa->SetBinContent(343,0.00388614); - ssigpTa->SetBinContent(344,0.00390044); - ssigpTa->SetBinContent(345,0.00391499); - ssigpTa->SetBinContent(346,0.00392977); - ssigpTa->SetBinContent(347,0.00394477); - ssigpTa->SetBinContent(348,0.00396003); - ssigpTa->SetBinContent(349,0.00397554); - ssigpTa->SetBinContent(350,0.0039913); - ssigpTa->SetBinContent(351,0.00400729); - ssigpTa->SetBinContent(352,0.00402353); - ssigpTa->SetBinContent(353,0.00404004); - ssigpTa->SetBinContent(354,0.00405681); - ssigpTa->SetBinContent(355,0.00407386); - ssigpTa->SetBinContent(356,0.00409115); - ssigpTa->SetBinContent(357,0.00410869); - ssigpTa->SetBinContent(358,0.00412651); - ssigpTa->SetBinContent(359,0.00414461); - ssigpTa->SetBinContent(360,0.00416297); - ssigpTa->SetBinContent(361,0.00418164); - ssigpTa->SetBinContent(362,0.00420058); - ssigpTa->SetBinContent(363,0.00421982); - ssigpTa->SetBinContent(364,0.00423933); - ssigpTa->SetBinContent(365,0.00425914); - ssigpTa->SetBinContent(366,0.00427924); - ssigpTa->SetBinContent(367,0.00429965); - ssigpTa->SetBinContent(368,0.00432037); - ssigpTa->SetBinContent(369,0.00434139); - ssigpTa->SetBinContent(370,0.00436276); - ssigpTa->SetBinContent(371,0.00438447); - ssigpTa->SetBinContent(372,0.00440652); - ssigpTa->SetBinContent(373,0.00442886); - ssigpTa->SetBinContent(374,0.00445158); - ssigpTa->SetBinContent(375,0.00447463); - ssigpTa->SetBinContent(376,0.00449803); - ssigpTa->SetBinContent(377,0.00452179); - ssigpTa->SetBinContent(378,0.00454598); - ssigpTa->SetBinContent(379,0.00457049); - ssigpTa->SetBinContent(380,0.00459545); - ssigpTa->SetBinContent(381,0.00505904); - ssigpTa->SetBinContent(382,0.00574372); - ssigpTa->SetBinContent(383,0.00621098); - ssigpTa->SetBinContent(384,0.0062415); - ssigpTa->SetBinContent(385,0.00627238); - ssigpTa->SetBinContent(386,0.00630363); - ssigpTa->SetBinContent(387,0.00633526); - ssigpTa->SetBinContent(388,0.00636729); - ssigpTa->SetBinContent(389,0.00639968); - ssigpTa->SetBinContent(390,0.00643246); - ssigpTa->SetBinContent(391,0.00646566); - ssigpTa->SetBinContent(392,0.00609819); - ssigpTa->SetBinContent(393,0.00554344); - ssigpTa->SetBinContent(394,0.00521005); - ssigpTa->SetBinContent(395,0.00529117); - ssigpTa->SetBinContent(396,0.0053724); - ssigpTa->SetBinContent(397,0.00545373); - ssigpTa->SetBinContent(398,0.00553517); - ssigpTa->SetBinContent(399,0.0056167); - ssigpTa->SetBinContent(400,0.00569839); - ssigpTa->SetBinContent(401,0.00567778); - ssigpTa->SetBinContent(402,0.00561205); - ssigpTa->SetBinContent(403,0.00535853); - ssigpTa->SetBinContent(404,0.00508716); - ssigpTa->SetBinContent(405,0.00493911); - ssigpTa->SetBinContent(406,0.00503982); - ssigpTa->SetBinContent(407,0.00514212); - ssigpTa->SetBinContent(408,0.00524657); - ssigpTa->SetBinContent(409,0.00535325); - ssigpTa->SetBinContent(410,0.00546141); - ssigpTa->SetBinContent(411,0.00557089); - ssigpTa->SetBinContent(412,0.00559384); - ssigpTa->SetBinContent(413,0.00557042); - ssigpTa->SetBinContent(414,0.00559012); - ssigpTa->SetBinContent(415,0.00569745); - ssigpTa->SetBinContent(416,0.00580688); - ssigpTa->SetBinContent(417,0.00591758); - ssigpTa->SetBinContent(418,0.00602946); - ssigpTa->SetBinContent(419,0.00614328); - ssigpTa->SetBinContent(420,0.00625867); - ssigpTa->SetBinContent(421,0.00637549); - ssigpTa->SetBinContent(422,0.00649454); - ssigpTa->SetBinContent(423,0.00650313); - ssigpTa->SetBinContent(424,0.00645118); - ssigpTa->SetBinContent(425,0.0064543); - ssigpTa->SetBinContent(426,0.00656751); - ssigpTa->SetBinContent(427,0.00668111); - ssigpTa->SetBinContent(428,0.00679511); - ssigpTa->SetBinContent(429,0.00691075); - ssigpTa->SetBinContent(430,0.00702742); - ssigpTa->SetBinContent(431,0.00714473); - ssigpTa->SetBinContent(432,0.0072624); - ssigpTa->SetBinContent(433,0.00738087); - ssigpTa->SetBinContent(434,0.00749966); - ssigpTa->SetBinContent(435,0.00753616); - ssigpTa->SetBinContent(436,0.00752502); - ssigpTa->SetBinContent(437,0.00755896); - ssigpTa->SetBinContent(438,0.00742836); - ssigpTa->SetBinContent(439,0.00717596); - ssigpTa->SetBinContent(440,0.00705018); - ssigpTa->SetBinContent(441,0.00717507); - ssigpTa->SetBinContent(442,0.00730402); - ssigpTa->SetBinContent(443,0.00743333); - ssigpTa->SetBinContent(444,0.00756337); - ssigpTa->SetBinContent(445,0.00769505); - ssigpTa->SetBinContent(446,0.00783103); - ssigpTa->SetBinContent(447,0.00796852); - ssigpTa->SetBinContent(448,0.00810636); - ssigpTa->SetBinContent(449,0.00827554); - ssigpTa->SetBinContent(450,0.00846017); - ssigpTa->SetBinContent(451,0.00862844); - ssigpTa->SetBinContent(452,0.00876348); - ssigpTa->SetBinContent(453,0.00853329); - ssigpTa->SetBinContent(454,0.00811138); - ssigpTa->SetBinContent(455,0.00785463); - ssigpTa->SetBinContent(456,0.00795055); - ssigpTa->SetBinContent(457,0.00804327); - ssigpTa->SetBinContent(458,0.00813323); - ssigpTa->SetBinContent(459,0.00822313); - ssigpTa->SetBinContent(460,0.00831501); - ssigpTa->SetBinContent(461,0.00801461); - ssigpTa->SetBinContent(462,0.00752109); - ssigpTa->SetBinContent(463,0.00722751); - ssigpTa->SetBinContent(464,0.00732906); - ssigpTa->SetBinContent(465,0.00743328); - ssigpTa->SetBinContent(466,0.00753957); - ssigpTa->SetBinContent(467,0.00800312); - ssigpTa->SetBinContent(468,0.00864716); - ssigpTa->SetBinContent(469,0.00912218); - ssigpTa->SetBinContent(470,0.00924785); - ssigpTa->SetBinContent(471,0.00937861); - ssigpTa->SetBinContent(472,0.00951352); - ssigpTa->SetBinContent(473,0.00964798); - ssigpTa->SetBinContent(474,0.00978078); - ssigpTa->SetBinContent(475,0.00991443); - ssigpTa->SetBinContent(476,0.00979115); - ssigpTa->SetBinContent(477,0.00953693); - ssigpTa->SetBinContent(478,0.00940768); - ssigpTa->SetBinContent(479,0.00953383); - ssigpTa->SetBinContent(480,0.00998143); - ssigpTa->SetBinContent(481,0.0105968); - ssigpTa->SetBinContent(482,0.0110665); - ssigpTa->SetBinContent(483,0.0112268); - ssigpTa->SetBinContent(484,0.0113891); - ssigpTa->SetBinContent(485,0.0115473); - ssigpTa->SetBinContent(486,0.0117049); - ssigpTa->SetBinContent(487,0.0115538); - ssigpTa->SetBinContent(488,0.0112445); - ssigpTa->SetBinContent(489,0.0110895); - ssigpTa->SetBinContent(490,0.0112404); - ssigpTa->SetBinContent(491,0.0117604); - ssigpTa->SetBinContent(492,0.0124758); - ssigpTa->SetBinContent(493,0.0130191); - ssigpTa->SetBinContent(494,0.0131966); - ssigpTa->SetBinContent(495,0.0133731); - ssigpTa->SetBinContent(496,0.0135552); - ssigpTa->SetBinContent(497,0.0137496); - ssigpTa->SetBinContent(498,0.0139493); - ssigpTa->SetBinContent(499,0.0133139); - ssigpTa->SetBinContent(500,0.0122432); - ssigpTa->SetBinContent(501,0.0115733); - ssigpTa->SetBinContent(502,0.0119924); - ssigpTa->SetBinContent(503,0.0125625); - ssigpTa->SetBinContent(504,0.0130152); - ssigpTa->SetBinContent(505,0.0132077); - ssigpTa->SetBinContent(506,0.0133906); - ssigpTa->SetBinContent(507,0.0135732); - ssigpTa->SetBinContent(508,0.0137615); - ssigpTa->SetBinContent(509,0.0139451); - ssigpTa->SetBinContent(510,0.0141184); - ssigpTa->SetBinContent(511,0.0142392); - ssigpTa->SetBinContent(512,0.0145845); - ssigpTa->SetBinContent(513,0.0151497); - ssigpTa->SetBinContent(514,0.0156433); - ssigpTa->SetBinContent(515,0.0158746); - ssigpTa->SetBinContent(516,0.0160849); - ssigpTa->SetBinContent(517,0.0162849); - ssigpTa->SetBinContent(518,0.0165039); - ssigpTa->SetBinContent(519,0.016746); - ssigpTa->SetBinContent(520,0.0169917); - ssigpTa->SetBinContent(521,0.0169143); - ssigpTa->SetBinContent(522,0.0167028); - ssigpTa->SetBinContent(523,0.0166552); - ssigpTa->SetBinContent(524,0.0168126); - ssigpTa->SetBinContent(525,0.0168891); - ssigpTa->SetBinContent(526,0.0170249); - ssigpTa->SetBinContent(527,0.0172724); - ssigpTa->SetBinContent(528,0.0175178); - ssigpTa->SetBinContent(529,0.0177586); - ssigpTa->SetBinContent(530,0.0180145); - ssigpTa->SetBinContent(531,0.018296); - ssigpTa->SetBinContent(532,0.0185915); - ssigpTa->SetBinContent(533,0.018885); - ssigpTa->SetBinContent(534,0.0191725); - ssigpTa->SetBinContent(535,0.0194426); - ssigpTa->SetBinContent(536,0.0197047); - ssigpTa->SetBinContent(537,0.0199818); - ssigpTa->SetBinContent(538,0.0202832); - ssigpTa->SetBinContent(539,0.0205993); - ssigpTa->SetBinContent(540,0.0205291); - ssigpTa->SetBinContent(541,0.0202446); - ssigpTa->SetBinContent(542,0.0201367); - ssigpTa->SetBinContent(543,0.0204468); - ssigpTa->SetBinContent(544,0.0208142); - ssigpTa->SetBinContent(545,0.0224464); - ssigpTa->SetBinContent(546,0.0211893); - ssigpTa->SetBinContent(549,0.00671789); - ssigpTa->SetBinContent(550,0.00649339); - ssigpTa->SetBinContent(551,0.00658941); - ssigpTa->SetBinContent(552,0.0065904); - ssigpTa->SetBinContent(553,0.00659177); - ssigpTa->SetBinContent(554,0.00659347); - ssigpTa->SetBinContent(555,0.00659555); - ssigpTa->SetBinContent(556,0.00659808); - ssigpTa->SetBinContent(557,0.00660093); - ssigpTa->SetBinContent(558,0.00660426); - ssigpTa->SetBinContent(559,0.0066079); - ssigpTa->SetBinContent(560,0.00661192); - ssigpTa->SetBinContent(561,0.00661635); - ssigpTa->SetBinContent(562,0.00662118); - ssigpTa->SetBinContent(563,0.00662641); - ssigpTa->SetBinContent(564,0.00663203); - ssigpTa->SetBinContent(565,0.00663801); - ssigpTa->SetBinContent(566,0.00664434); - ssigpTa->SetBinContent(567,0.00665109); - ssigpTa->SetBinContent(568,0.00665826); - ssigpTa->SetBinContent(569,0.00666577); - ssigpTa->SetBinContent(570,0.00667366); - ssigpTa->SetBinContent(571,0.00668193); - ssigpTa->SetBinContent(572,0.00669062); - ssigpTa->SetBinContent(573,0.00669973); - ssigpTa->SetBinContent(574,0.00670923); - ssigpTa->SetBinContent(575,0.0067191); - ssigpTa->SetBinContent(576,0.00672932); - ssigpTa->SetBinContent(577,0.00673999); - ssigpTa->SetBinContent(578,0.00675104); - ssigpTa->SetBinContent(579,0.00676244); - ssigpTa->SetBinContent(580,0.00677429); - ssigpTa->SetBinContent(581,0.00678645); - ssigpTa->SetBinContent(582,0.00679907); - ssigpTa->SetBinContent(583,0.00681202); - ssigpTa->SetBinContent(584,0.0068254); - ssigpTa->SetBinContent(585,0.0068392); - ssigpTa->SetBinContent(586,0.0068534); - ssigpTa->SetBinContent(587,0.006868); - ssigpTa->SetBinContent(588,0.00688299); - ssigpTa->SetBinContent(589,0.00689833); - ssigpTa->SetBinContent(590,0.00691409); - ssigpTa->SetBinContent(591,0.00693028); - ssigpTa->SetBinContent(592,0.00694684); - ssigpTa->SetBinContent(593,0.00696384); - ssigpTa->SetBinContent(594,0.00698121); - ssigpTa->SetBinContent(595,0.00699893); - ssigpTa->SetBinContent(596,0.00701713); - ssigpTa->SetBinContent(597,0.00703573); - ssigpTa->SetBinContent(598,0.00705475); - ssigpTa->SetBinContent(599,0.00707413); - ssigpTa->SetBinContent(600,0.00709396); - ssigpTa->SetBinContent(601,0.00711421); - ssigpTa->SetBinContent(602,0.00713483); - ssigpTa->SetBinContent(603,0.0071559); - ssigpTa->SetBinContent(604,0.00717739); - ssigpTa->SetBinContent(605,0.00719928); - ssigpTa->SetBinContent(606,0.0072216); - ssigpTa->SetBinContent(607,0.00724436); - ssigpTa->SetBinContent(608,0.00726758); - ssigpTa->SetBinContent(609,0.00729117); - ssigpTa->SetBinContent(610,0.00731518); - ssigpTa->SetBinContent(611,0.00733962); - ssigpTa->SetBinContent(612,0.0073645); - ssigpTa->SetBinContent(613,0.00738987); - ssigpTa->SetBinContent(614,0.00741563); - ssigpTa->SetBinContent(615,0.00744184); - ssigpTa->SetBinContent(616,0.00746853); - ssigpTa->SetBinContent(617,0.00749567); - ssigpTa->SetBinContent(618,0.00752324); - ssigpTa->SetBinContent(619,0.0075513); - ssigpTa->SetBinContent(620,0.0075798); - ssigpTa->SetBinContent(621,0.00760871); - ssigpTa->SetBinContent(622,0.00763811); - ssigpTa->SetBinContent(623,0.00766802); - ssigpTa->SetBinContent(624,0.00769837); - ssigpTa->SetBinContent(625,0.00772924); - ssigpTa->SetBinContent(626,0.00776053); - ssigpTa->SetBinContent(627,0.00779236); - ssigpTa->SetBinContent(628,0.00782472); - ssigpTa->SetBinContent(629,0.00785754); - ssigpTa->SetBinContent(630,0.00789092); - ssigpTa->SetBinContent(631,0.00792474); - ssigpTa->SetBinContent(632,0.00795904); - ssigpTa->SetBinContent(633,0.00799393); - ssigpTa->SetBinContent(634,0.00802933); - ssigpTa->SetBinContent(635,0.00806529); - ssigpTa->SetBinContent(636,0.0081018); - ssigpTa->SetBinContent(637,0.00813888); - ssigpTa->SetBinContent(638,0.00817652); - ssigpTa->SetBinContent(639,0.00821467); - ssigpTa->SetBinContent(640,0.00825344); - ssigpTa->SetBinContent(641,0.00829277); - ssigpTa->SetBinContent(642,0.00833268); - ssigpTa->SetBinContent(643,0.00837321); - ssigpTa->SetBinContent(644,0.00841438); - ssigpTa->SetBinContent(645,0.00845624); - ssigpTa->SetBinContent(646,0.00849868); - ssigpTa->SetBinContent(647,0.00854177); - ssigpTa->SetBinContent(648,0.0085855); - ssigpTa->SetBinContent(649,0.00862993); - ssigpTa->SetBinContent(650,0.00867501); - ssigpTa->SetBinContent(651,0.00872083); - ssigpTa->SetBinContent(652,0.00876736); - ssigpTa->SetBinContent(653,0.00881468); - ssigpTa->SetBinContent(654,0.00902705); - ssigpTa->SetBinContent(655,0.00973433); - ssigpTa->SetBinContent(656,0.0111021); - ssigpTa->SetBinContent(657,0.011816); - ssigpTa->SetBinContent(658,0.0120388); - ssigpTa->SetBinContent(659,0.0120983); - ssigpTa->SetBinContent(660,0.0121586); - ssigpTa->SetBinContent(661,0.0122196); - ssigpTa->SetBinContent(662,0.0122813); - ssigpTa->SetBinContent(663,0.0123438); - ssigpTa->SetBinContent(664,0.012407); - ssigpTa->SetBinContent(665,0.0123206); - ssigpTa->SetBinContent(666,0.011788); - ssigpTa->SetBinContent(667,0.0106739); - ssigpTa->SetBinContent(668,0.0102028); - ssigpTa->SetBinContent(669,0.0102039); - ssigpTa->SetBinContent(670,0.0103606); - ssigpTa->SetBinContent(671,0.0105175); - ssigpTa->SetBinContent(672,0.0106746); - ssigpTa->SetBinContent(673,0.010832); - ssigpTa->SetBinContent(674,0.0109513); - ssigpTa->SetBinContent(675,0.0109572); - ssigpTa->SetBinContent(676,0.0107253); - ssigpTa->SetBinContent(677,0.0103854); - ssigpTa->SetBinContent(678,0.00979537); - ssigpTa->SetBinContent(679,0.00961598); - ssigpTa->SetBinContent(680,0.0097178); - ssigpTa->SetBinContent(681,0.00991542); - ssigpTa->SetBinContent(682,0.010117); - ssigpTa->SetBinContent(683,0.0103229); - ssigpTa->SetBinContent(684,0.0105316); - ssigpTa->SetBinContent(685,0.0107098); - ssigpTa->SetBinContent(686,0.0107892); - ssigpTa->SetBinContent(687,0.0107331); - ssigpTa->SetBinContent(688,0.010807); - ssigpTa->SetBinContent(689,0.010982); - ssigpTa->SetBinContent(690,0.011193); - ssigpTa->SetBinContent(691,0.0114066); - ssigpTa->SetBinContent(692,0.0116225); - ssigpTa->SetBinContent(693,0.0118422); - ssigpTa->SetBinContent(694,0.0120649); - ssigpTa->SetBinContent(695,0.0122904); - ssigpTa->SetBinContent(696,0.012478); - ssigpTa->SetBinContent(697,0.0125381); - ssigpTa->SetBinContent(698,0.012425); - ssigpTa->SetBinContent(699,0.0124756); - ssigpTa->SetBinContent(700,0.012653); - ssigpTa->SetBinContent(701,0.0128719); - ssigpTa->SetBinContent(702,0.0130926); - ssigpTa->SetBinContent(703,0.0133151); - ssigpTa->SetBinContent(704,0.0135406); - ssigpTa->SetBinContent(705,0.0137666); - ssigpTa->SetBinContent(706,0.0139939); - ssigpTa->SetBinContent(707,0.0142225); - ssigpTa->SetBinContent(708,0.0144206); - ssigpTa->SetBinContent(709,0.0145181); - ssigpTa->SetBinContent(710,0.0144852); - ssigpTa->SetBinContent(711,0.0144857); - ssigpTa->SetBinContent(712,0.0143098); - ssigpTa->SetBinContent(713,0.0137976); - ssigpTa->SetBinContent(714,0.0136608); - ssigpTa->SetBinContent(715,0.0138098); - ssigpTa->SetBinContent(716,0.0140564); - ssigpTa->SetBinContent(717,0.0143067); - ssigpTa->SetBinContent(718,0.0145568); - ssigpTa->SetBinContent(719,0.0148119); - ssigpTa->SetBinContent(720,0.0150729); - ssigpTa->SetBinContent(721,0.0153381); - ssigpTa->SetBinContent(722,0.015615); - ssigpTa->SetBinContent(723,0.0159282); - ssigpTa->SetBinContent(724,0.0162892); - ssigpTa->SetBinContent(725,0.0165996); - ssigpTa->SetBinContent(726,0.0167368); - ssigpTa->SetBinContent(727,0.0164477); - ssigpTa->SetBinContent(728,0.015598); - ssigpTa->SetBinContent(729,0.0152606); - ssigpTa->SetBinContent(730,0.0153131); - ssigpTa->SetBinContent(731,0.0154921); - ssigpTa->SetBinContent(732,0.0156661); - ssigpTa->SetBinContent(733,0.0158416); - ssigpTa->SetBinContent(734,0.0158707); - ssigpTa->SetBinContent(735,0.0154614); - ssigpTa->SetBinContent(736,0.0144658); - ssigpTa->SetBinContent(737,0.0140676); - ssigpTa->SetBinContent(738,0.0141164); - ssigpTa->SetBinContent(739,0.0143161); - ssigpTa->SetBinContent(740,0.014655); - ssigpTa->SetBinContent(741,0.0153941); - ssigpTa->SetBinContent(742,0.0166729); - ssigpTa->SetBinContent(743,0.0174347); - ssigpTa->SetBinContent(744,0.0178088); - ssigpTa->SetBinContent(745,0.0180603); - ssigpTa->SetBinContent(746,0.0183187); - ssigpTa->SetBinContent(747,0.018577); - ssigpTa->SetBinContent(748,0.0188336); - ssigpTa->SetBinContent(749,0.0189942); - ssigpTa->SetBinContent(750,0.0188652); - ssigpTa->SetBinContent(751,0.0183456); - ssigpTa->SetBinContent(752,0.0182064); - ssigpTa->SetBinContent(753,0.0184733); - ssigpTa->SetBinContent(754,0.0192015); - ssigpTa->SetBinContent(755,0.0204244); - ssigpTa->SetBinContent(756,0.0211908); - ssigpTa->SetBinContent(757,0.0216181); - ssigpTa->SetBinContent(758,0.0219274); - ssigpTa->SetBinContent(759,0.0222338); - ssigpTa->SetBinContent(760,0.0224211); - ssigpTa->SetBinContent(761,0.0222587); - ssigpTa->SetBinContent(762,0.0216291); - ssigpTa->SetBinContent(763,0.0214576); - ssigpTa->SetBinContent(764,0.0217733); - ssigpTa->SetBinContent(765,0.02262); - ssigpTa->SetBinContent(766,0.0240378); - ssigpTa->SetBinContent(767,0.0249269); - ssigpTa->SetBinContent(768,0.0254044); - ssigpTa->SetBinContent(769,0.025747); - ssigpTa->SetBinContent(770,0.0261004); - ssigpTa->SetBinContent(771,0.0264708); - ssigpTa->SetBinContent(772,0.0265439); - ssigpTa->SetBinContent(773,0.0256669); - ssigpTa->SetBinContent(774,0.0235218); - ssigpTa->SetBinContent(775,0.0226846); - ssigpTa->SetBinContent(776,0.0230818); - ssigpTa->SetBinContent(777,0.0242072); - ssigpTa->SetBinContent(778,0.0249677); - ssigpTa->SetBinContent(779,0.0254347); - ssigpTa->SetBinContent(780,0.0257887); - ssigpTa->SetBinContent(781,0.0261429); - ssigpTa->SetBinContent(782,0.0265037); - ssigpTa->SetBinContent(783,0.0268553); - ssigpTa->SetBinContent(784,0.0271736); - ssigpTa->SetBinContent(785,0.0274936); - ssigpTa->SetBinContent(786,0.0280525); - ssigpTa->SetBinContent(787,0.0291565); - ssigpTa->SetBinContent(788,0.029988); - ssigpTa->SetBinContent(789,0.0305256); - ssigpTa->SetBinContent(790,0.0309349); - ssigpTa->SetBinContent(791,0.0313279); - ssigpTa->SetBinContent(792,0.0317523); - ssigpTa->SetBinContent(793,0.0322137); - ssigpTa->SetBinContent(794,0.0325627); - ssigpTa->SetBinContent(795,0.0325688); - ssigpTa->SetBinContent(796,0.0321307); - ssigpTa->SetBinContent(797,0.0321458); - ssigpTa->SetBinContent(798,0.032358); - ssigpTa->SetBinContent(799,0.0325003); - ssigpTa->SetBinContent(800,0.0327988); - ssigpTa->SetBinContent(801,0.0332353); - ssigpTa->SetBinContent(802,0.0337083); - ssigpTa->SetBinContent(803,0.0341782); - ssigpTa->SetBinContent(804,0.0346733); - ssigpTa->SetBinContent(805,0.0352149); - ssigpTa->SetBinContent(806,0.0357795); - ssigpTa->SetBinContent(807,0.0363438); - ssigpTa->SetBinContent(808,0.036894); - ssigpTa->SetBinContent(809,0.0374209); - ssigpTa->SetBinContent(810,0.0379304); - ssigpTa->SetBinContent(811,0.0384699); - ssigpTa->SetBinContent(812,0.0390492); - ssigpTa->SetBinContent(813,0.0395057); - ssigpTa->SetBinContent(814,0.0395424); - ssigpTa->SetBinContent(815,0.0389771); - ssigpTa->SetBinContent(816,0.0389537); - ssigpTa->SetBinContent(817,0.0394254); - ssigpTa->SetBinContent(818,0.0401159); - ssigpTa->SetBinContent(819,0.0401758); - ssigpTa->SetBinContent(820,0.0420796); - ssigpTa->SetBinContent(823,0.0083028); - ssigpTa->SetBinContent(824,0.00842469); - ssigpTa->SetBinContent(825,0.00843993); - ssigpTa->SetBinContent(826,0.00844117); - ssigpTa->SetBinContent(827,0.0084429); - ssigpTa->SetBinContent(828,0.00844507); - ssigpTa->SetBinContent(829,0.00844786); - ssigpTa->SetBinContent(830,0.00845096); - ssigpTa->SetBinContent(831,0.00845473); - ssigpTa->SetBinContent(832,0.00845899); - ssigpTa->SetBinContent(833,0.00846368); - ssigpTa->SetBinContent(834,0.00846881); - ssigpTa->SetBinContent(835,0.00847444); - ssigpTa->SetBinContent(836,0.00848059); - ssigpTa->SetBinContent(837,0.00848725); - ssigpTa->SetBinContent(838,0.0084945); - ssigpTa->SetBinContent(839,0.00850217); - ssigpTa->SetBinContent(840,0.00851026); - ssigpTa->SetBinContent(841,0.00851894); - ssigpTa->SetBinContent(842,0.00852805); - ssigpTa->SetBinContent(843,0.00853766); - ssigpTa->SetBinContent(844,0.00854777); - ssigpTa->SetBinContent(845,0.00855831); - ssigpTa->SetBinContent(846,0.00856945); - ssigpTa->SetBinContent(847,0.00858112); - ssigpTa->SetBinContent(848,0.00859328); - ssigpTa->SetBinContent(849,0.0086059); - ssigpTa->SetBinContent(850,0.00861902); - ssigpTa->SetBinContent(851,0.00863262); - ssigpTa->SetBinContent(852,0.0086467); - ssigpTa->SetBinContent(853,0.00866134); - ssigpTa->SetBinContent(854,0.00867634); - ssigpTa->SetBinContent(855,0.00869206); - ssigpTa->SetBinContent(856,0.00870808); - ssigpTa->SetBinContent(857,0.00872474); - ssigpTa->SetBinContent(858,0.00874178); - ssigpTa->SetBinContent(859,0.00875956); - ssigpTa->SetBinContent(860,0.00877773); - ssigpTa->SetBinContent(861,0.00879642); - ssigpTa->SetBinContent(862,0.00881554); - ssigpTa->SetBinContent(863,0.00883515); - ssigpTa->SetBinContent(864,0.00885527); - ssigpTa->SetBinContent(865,0.008876); - ssigpTa->SetBinContent(866,0.00889725); - ssigpTa->SetBinContent(867,0.00891895); - ssigpTa->SetBinContent(868,0.0089412); - ssigpTa->SetBinContent(869,0.00896392); - ssigpTa->SetBinContent(870,0.0089871); - ssigpTa->SetBinContent(871,0.00901094); - ssigpTa->SetBinContent(872,0.00903523); - ssigpTa->SetBinContent(873,0.00906006); - ssigpTa->SetBinContent(874,0.00908539); - ssigpTa->SetBinContent(875,0.00911125); - ssigpTa->SetBinContent(876,0.00913766); - ssigpTa->SetBinContent(877,0.0091646); - ssigpTa->SetBinContent(878,0.0091921); - ssigpTa->SetBinContent(879,0.00922017); - ssigpTa->SetBinContent(880,0.0092487); - ssigpTa->SetBinContent(881,0.00927784); - ssigpTa->SetBinContent(882,0.00930744); - ssigpTa->SetBinContent(883,0.00933765); - ssigpTa->SetBinContent(884,0.00936837); - ssigpTa->SetBinContent(885,0.00939964); - ssigpTa->SetBinContent(886,0.00943154); - ssigpTa->SetBinContent(887,0.0094639); - ssigpTa->SetBinContent(888,0.00949695); - ssigpTa->SetBinContent(889,0.00953043); - ssigpTa->SetBinContent(890,0.0095646); - ssigpTa->SetBinContent(891,0.0095993); - ssigpTa->SetBinContent(892,0.00963454); - ssigpTa->SetBinContent(893,0.00967045); - ssigpTa->SetBinContent(894,0.00970691); - ssigpTa->SetBinContent(895,0.00974386); - ssigpTa->SetBinContent(896,0.00978138); - ssigpTa->SetBinContent(897,0.00981961); - ssigpTa->SetBinContent(898,0.0098585); - ssigpTa->SetBinContent(899,0.00989795); - ssigpTa->SetBinContent(900,0.00993806); - ssigpTa->SetBinContent(901,0.00997875); - ssigpTa->SetBinContent(902,0.0100201); - ssigpTa->SetBinContent(903,0.0100621); - ssigpTa->SetBinContent(904,0.0101047); - ssigpTa->SetBinContent(905,0.010148); - ssigpTa->SetBinContent(906,0.0101919); - ssigpTa->SetBinContent(907,0.0102365); - ssigpTa->SetBinContent(908,0.0102817); - ssigpTa->SetBinContent(909,0.0103277); - ssigpTa->SetBinContent(910,0.0103744); - ssigpTa->SetBinContent(911,0.0104218); - ssigpTa->SetBinContent(912,0.0104699); - ssigpTa->SetBinContent(913,0.0105187); - ssigpTa->SetBinContent(914,0.0105682); - ssigpTa->SetBinContent(915,0.0106185); - ssigpTa->SetBinContent(916,0.0106695); - ssigpTa->SetBinContent(917,0.0107214); - ssigpTa->SetBinContent(918,0.010774); - ssigpTa->SetBinContent(919,0.0108275); - ssigpTa->SetBinContent(920,0.0108818); - ssigpTa->SetBinContent(921,0.0109367); - ssigpTa->SetBinContent(922,0.0109927); - ssigpTa->SetBinContent(923,0.0110494); - ssigpTa->SetBinContent(924,0.011107); - ssigpTa->SetBinContent(925,0.0111655); - ssigpTa->SetBinContent(926,0.0112251); - ssigpTa->SetBinContent(927,0.0112856); - ssigpTa->SetBinContent(928,0.011505); - ssigpTa->SetBinContent(929,0.0125163); - ssigpTa->SetBinContent(930,0.0141647); - ssigpTa->SetBinContent(931,0.0151845); - ssigpTa->SetBinContent(932,0.0154174); - ssigpTa->SetBinContent(933,0.0154936); - ssigpTa->SetBinContent(934,0.0155707); - ssigpTa->SetBinContent(935,0.0156486); - ssigpTa->SetBinContent(936,0.0157276); - ssigpTa->SetBinContent(937,0.0158077); - ssigpTa->SetBinContent(938,0.0158886); - ssigpTa->SetBinContent(939,0.0158257); - ssigpTa->SetBinContent(940,0.0150449); - ssigpTa->SetBinContent(941,0.013714); - ssigpTa->SetBinContent(942,0.0130122); - ssigpTa->SetBinContent(943,0.0130633); - ssigpTa->SetBinContent(944,0.0132642); - ssigpTa->SetBinContent(945,0.0134654); - ssigpTa->SetBinContent(946,0.0136669); - ssigpTa->SetBinContent(947,0.0138688); - ssigpTa->SetBinContent(948,0.0140339); - ssigpTa->SetBinContent(949,0.0140157); - ssigpTa->SetBinContent(950,0.0137715); - ssigpTa->SetBinContent(951,0.0132514); - ssigpTa->SetBinContent(952,0.012571); - ssigpTa->SetBinContent(953,0.0122831); - ssigpTa->SetBinContent(954,0.0124433); - ssigpTa->SetBinContent(955,0.012697); - ssigpTa->SetBinContent(956,0.0129559); - ssigpTa->SetBinContent(957,0.01322); - ssigpTa->SetBinContent(958,0.013488); - ssigpTa->SetBinContent(959,0.0137265); - ssigpTa->SetBinContent(960,0.0138041); - ssigpTa->SetBinContent(961,0.0137435); - ssigpTa->SetBinContent(962,0.0138139); - ssigpTa->SetBinContent(963,0.0140476); - ssigpTa->SetBinContent(964,0.014318); - ssigpTa->SetBinContent(965,0.014592); - ssigpTa->SetBinContent(966,0.0148688); - ssigpTa->SetBinContent(967,0.0151502); - ssigpTa->SetBinContent(968,0.0154358); - ssigpTa->SetBinContent(969,0.0157251); - ssigpTa->SetBinContent(970,0.0159775); - ssigpTa->SetBinContent(971,0.0160255); - ssigpTa->SetBinContent(972,0.0159004); - ssigpTa->SetBinContent(973,0.015936); - ssigpTa->SetBinContent(974,0.0161748); - ssigpTa->SetBinContent(975,0.0164556); - ssigpTa->SetBinContent(976,0.0167381); - ssigpTa->SetBinContent(977,0.0170237); - ssigpTa->SetBinContent(978,0.0173125); - ssigpTa->SetBinContent(979,0.0176025); - ssigpTa->SetBinContent(980,0.0178939); - ssigpTa->SetBinContent(981,0.018187); - ssigpTa->SetBinContent(982,0.0184473); - ssigpTa->SetBinContent(983,0.0185458); - ssigpTa->SetBinContent(984,0.0185056); - ssigpTa->SetBinContent(985,0.0185099); - ssigpTa->SetBinContent(986,0.0182322); - ssigpTa->SetBinContent(987,0.0176368); - ssigpTa->SetBinContent(988,0.0174032); - ssigpTa->SetBinContent(989,0.017623); - ssigpTa->SetBinContent(990,0.0179393); - ssigpTa->SetBinContent(991,0.0182587); - ssigpTa->SetBinContent(992,0.0185794); - ssigpTa->SetBinContent(993,0.0189053); - ssigpTa->SetBinContent(994,0.0192396); - ssigpTa->SetBinContent(995,0.0195785); - ssigpTa->SetBinContent(996,0.0199298); - ssigpTa->SetBinContent(997,0.0203406); - ssigpTa->SetBinContent(998,0.0208013); - ssigpTa->SetBinContent(999,0.0212102); - ssigpTa->SetBinContent(1000,0.0214281); - ssigpTa->SetBinContent(1001,0.020976); - ssigpTa->SetBinContent(1002,0.0199797); - ssigpTa->SetBinContent(1003,0.0194648); - ssigpTa->SetBinContent(1004,0.0195764); - ssigpTa->SetBinContent(1005,0.0198061); - ssigpTa->SetBinContent(1006,0.0200301); - ssigpTa->SetBinContent(1007,0.0202547); - ssigpTa->SetBinContent(1008,0.0203408); - ssigpTa->SetBinContent(1009,0.0197201); - ssigpTa->SetBinContent(1010,0.0185348); - ssigpTa->SetBinContent(1011,0.0179288); - ssigpTa->SetBinContent(1012,0.0180381); - ssigpTa->SetBinContent(1013,0.0182943); - ssigpTa->SetBinContent(1014,0.0186832); - ssigpTa->SetBinContent(1015,0.0197113); - ssigpTa->SetBinContent(1016,0.0212545); - ssigpTa->SetBinContent(1017,0.0223105); - ssigpTa->SetBinContent(1018,0.0227457); - ssigpTa->SetBinContent(1019,0.0230666); - ssigpTa->SetBinContent(1020,0.0233964); - ssigpTa->SetBinContent(1021,0.0237264); - ssigpTa->SetBinContent(1022,0.0240543); - ssigpTa->SetBinContent(1023,0.0242902); - ssigpTa->SetBinContent(1024,0.024062); - ssigpTa->SetBinContent(1025,0.0234573); - ssigpTa->SetBinContent(1026,0.0232157); - ssigpTa->SetBinContent(1027,0.0235494); - ssigpTa->SetBinContent(1028,0.0245585); - ssigpTa->SetBinContent(1029,0.0260494); - ssigpTa->SetBinContent(1030,0.0271084); - ssigpTa->SetBinContent(1031,0.027615); - ssigpTa->SetBinContent(1032,0.028011); - ssigpTa->SetBinContent(1033,0.0284021); - ssigpTa->SetBinContent(1034,0.0286781); - ssigpTa->SetBinContent(1035,0.0283956); - ssigpTa->SetBinContent(1036,0.0276625); - ssigpTa->SetBinContent(1037,0.0273691); - ssigpTa->SetBinContent(1038,0.0277631); - ssigpTa->SetBinContent(1039,0.0289348); - ssigpTa->SetBinContent(1040,0.03066); - ssigpTa->SetBinContent(1041,0.0318839); - ssigpTa->SetBinContent(1042,0.0324527); - ssigpTa->SetBinContent(1043,0.0328911); - ssigpTa->SetBinContent(1044,0.0333432); - ssigpTa->SetBinContent(1045,0.0338188); - ssigpTa->SetBinContent(1046,0.0340102); - ssigpTa->SetBinContent(1047,0.0326992); - ssigpTa->SetBinContent(1048,0.0301684); - ssigpTa->SetBinContent(1049,0.0288781); - ssigpTa->SetBinContent(1050,0.0295481); - ssigpTa->SetBinContent(1051,0.0309303); - ssigpTa->SetBinContent(1052,0.0319665); - ssigpTa->SetBinContent(1053,0.0325345); - ssigpTa->SetBinContent(1054,0.0329909); - ssigpTa->SetBinContent(1055,0.0334462); - ssigpTa->SetBinContent(1056,0.0339077); - ssigpTa->SetBinContent(1057,0.0343585); - ssigpTa->SetBinContent(1058,0.0347556); - ssigpTa->SetBinContent(1059,0.0351032); - ssigpTa->SetBinContent(1060,0.0358269); - ssigpTa->SetBinContent(1061,0.0371662); - ssigpTa->SetBinContent(1062,0.0382915); - ssigpTa->SetBinContent(1063,0.0389551); - ssigpTa->SetBinContent(1064,0.0394792); - ssigpTa->SetBinContent(1065,0.0399875); - ssigpTa->SetBinContent(1066,0.040532); - ssigpTa->SetBinContent(1067,0.0411198); - ssigpTa->SetBinContent(1068,0.0416096); - ssigpTa->SetBinContent(1069,0.0415602); - ssigpTa->SetBinContent(1070,0.041127); - ssigpTa->SetBinContent(1071,0.0410952); - ssigpTa->SetBinContent(1072,0.0413861); - ssigpTa->SetBinContent(1073,0.0415856); - ssigpTa->SetBinContent(1074,0.0419429); - ssigpTa->SetBinContent(1075,0.0425115); - ssigpTa->SetBinContent(1076,0.0431192); - ssigpTa->SetBinContent(1077,0.0437228); - ssigpTa->SetBinContent(1078,0.0443608); - ssigpTa->SetBinContent(1079,0.0450562); - ssigpTa->SetBinContent(1080,0.0457822); - ssigpTa->SetBinContent(1081,0.0465068); - ssigpTa->SetBinContent(1082,0.0472143); - ssigpTa->SetBinContent(1083,0.0478899); - ssigpTa->SetBinContent(1084,0.0485506); - ssigpTa->SetBinContent(1085,0.0492446); - ssigpTa->SetBinContent(1086,0.0499872); - ssigpTa->SetBinContent(1087,0.0506285); - ssigpTa->SetBinContent(1088,0.0506121); - ssigpTa->SetBinContent(1089,0.0500347); - ssigpTa->SetBinContent(1090,0.0499572); - ssigpTa->SetBinContent(1091,0.050615); - ssigpTa->SetBinContent(1092,0.0515069); - ssigpTa->SetBinContent(1093,0.0522949); - ssigpTa->SetBinContent(1094,0.0521184); - ssigpTa->SetBinContent(1097,0.00881691); - ssigpTa->SetBinContent(1098,0.00881491); - ssigpTa->SetBinContent(1099,0.00881498); - ssigpTa->SetBinContent(1100,0.0088162); - ssigpTa->SetBinContent(1101,0.00881803); - ssigpTa->SetBinContent(1102,0.00882032); - ssigpTa->SetBinContent(1103,0.00882319); - ssigpTa->SetBinContent(1104,0.00882649); - ssigpTa->SetBinContent(1105,0.00883036); - ssigpTa->SetBinContent(1106,0.00883494); - ssigpTa->SetBinContent(1107,0.00883993); - ssigpTa->SetBinContent(1108,0.00884522); - ssigpTa->SetBinContent(1109,0.00885106); - ssigpTa->SetBinContent(1110,0.00885748); - ssigpTa->SetBinContent(1111,0.00886432); - ssigpTa->SetBinContent(1112,0.00887174); - ssigpTa->SetBinContent(1113,0.00887982); - ssigpTa->SetBinContent(1114,0.00888835); - ssigpTa->SetBinContent(1115,0.00889711); - ssigpTa->SetBinContent(1116,0.00890666); - ssigpTa->SetBinContent(1117,0.00891666); - ssigpTa->SetBinContent(1118,0.00892712); - ssigpTa->SetBinContent(1119,0.00893836); - ssigpTa->SetBinContent(1120,0.00894986); - ssigpTa->SetBinContent(1121,0.00896191); - ssigpTa->SetBinContent(1122,0.0089747); - ssigpTa->SetBinContent(1123,0.00898774); - ssigpTa->SetBinContent(1124,0.00900145); - ssigpTa->SetBinContent(1125,0.00901566); - ssigpTa->SetBinContent(1126,0.00903029); - ssigpTa->SetBinContent(1127,0.0090453); - ssigpTa->SetBinContent(1128,0.00906109); - ssigpTa->SetBinContent(1129,0.00907718); - ssigpTa->SetBinContent(1130,0.00909405); - ssigpTa->SetBinContent(1131,0.00911126); - ssigpTa->SetBinContent(1132,0.0091291); - ssigpTa->SetBinContent(1133,0.00914755); - ssigpTa->SetBinContent(1134,0.00916666); - ssigpTa->SetBinContent(1135,0.00918585); - ssigpTa->SetBinContent(1136,0.00920577); - ssigpTa->SetBinContent(1137,0.00922602); - ssigpTa->SetBinContent(1138,0.0092471); - ssigpTa->SetBinContent(1139,0.00926861); - ssigpTa->SetBinContent(1140,0.00929062); - ssigpTa->SetBinContent(1141,0.0093134); - ssigpTa->SetBinContent(1142,0.00933645); - ssigpTa->SetBinContent(1143,0.00936015); - ssigpTa->SetBinContent(1144,0.0093844); - ssigpTa->SetBinContent(1145,0.00940908); - ssigpTa->SetBinContent(1146,0.00943445); - ssigpTa->SetBinContent(1147,0.00946021); - ssigpTa->SetBinContent(1148,0.0094865); - ssigpTa->SetBinContent(1149,0.0095133); - ssigpTa->SetBinContent(1150,0.00954081); - ssigpTa->SetBinContent(1151,0.00956873); - ssigpTa->SetBinContent(1152,0.00959747); - ssigpTa->SetBinContent(1153,0.00962672); - ssigpTa->SetBinContent(1154,0.00965655); - ssigpTa->SetBinContent(1155,0.00968673); - ssigpTa->SetBinContent(1156,0.00971753); - ssigpTa->SetBinContent(1157,0.00974882); - ssigpTa->SetBinContent(1158,0.00978074); - ssigpTa->SetBinContent(1159,0.00981349); - ssigpTa->SetBinContent(1160,0.00984642); - ssigpTa->SetBinContent(1161,0.00988033); - ssigpTa->SetBinContent(1162,0.00991458); - ssigpTa->SetBinContent(1163,0.00994962); - ssigpTa->SetBinContent(1164,0.00998513); - ssigpTa->SetBinContent(1165,0.0100212); - ssigpTa->SetBinContent(1166,0.0100578); - ssigpTa->SetBinContent(1167,0.0100951); - ssigpTa->SetBinContent(1168,0.0101331); - ssigpTa->SetBinContent(1169,0.0101715); - ssigpTa->SetBinContent(1170,0.0102103); - ssigpTa->SetBinContent(1171,0.01025); - ssigpTa->SetBinContent(1172,0.0102905); - ssigpTa->SetBinContent(1173,0.0103317); - ssigpTa->SetBinContent(1174,0.0103736); - ssigpTa->SetBinContent(1175,0.0104158); - ssigpTa->SetBinContent(1176,0.0104589); - ssigpTa->SetBinContent(1177,0.0105023); - ssigpTa->SetBinContent(1178,0.0105468); - ssigpTa->SetBinContent(1179,0.0105919); - ssigpTa->SetBinContent(1180,0.0106376); - ssigpTa->SetBinContent(1181,0.0106839); - ssigpTa->SetBinContent(1182,0.010731); - ssigpTa->SetBinContent(1183,0.0107787); - ssigpTa->SetBinContent(1184,0.0108273); - ssigpTa->SetBinContent(1185,0.0108765); - ssigpTa->SetBinContent(1186,0.0109266); - ssigpTa->SetBinContent(1187,0.0109772); - ssigpTa->SetBinContent(1188,0.0110289); - ssigpTa->SetBinContent(1189,0.0110811); - ssigpTa->SetBinContent(1190,0.0111344); - ssigpTa->SetBinContent(1191,0.0111882); - ssigpTa->SetBinContent(1192,0.011243); - ssigpTa->SetBinContent(1193,0.0112986); - ssigpTa->SetBinContent(1194,0.0113548); - ssigpTa->SetBinContent(1195,0.0114122); - ssigpTa->SetBinContent(1196,0.0114701); - ssigpTa->SetBinContent(1197,0.0115293); - ssigpTa->SetBinContent(1198,0.0115891); - ssigpTa->SetBinContent(1199,0.01165); - ssigpTa->SetBinContent(1200,0.0117119); - ssigpTa->SetBinContent(1201,0.0117749); - ssigpTa->SetBinContent(1202,0.0119973); - ssigpTa->SetBinContent(1203,0.013014); - ssigpTa->SetBinContent(1204,0.0148302); - ssigpTa->SetBinContent(1205,0.0158562); - ssigpTa->SetBinContent(1206,0.0160926); - ssigpTa->SetBinContent(1207,0.0161718); - ssigpTa->SetBinContent(1208,0.016252); - ssigpTa->SetBinContent(1209,0.0163332); - ssigpTa->SetBinContent(1210,0.0164153); - ssigpTa->SetBinContent(1211,0.0164988); - ssigpTa->SetBinContent(1212,0.0165829); - ssigpTa->SetBinContent(1213,0.0165231); - ssigpTa->SetBinContent(1214,0.0157431); - ssigpTa->SetBinContent(1215,0.0142656); - ssigpTa->SetBinContent(1216,0.0135704); - ssigpTa->SetBinContent(1217,0.0136306); - ssigpTa->SetBinContent(1218,0.0138413); - ssigpTa->SetBinContent(1219,0.0140526); - ssigpTa->SetBinContent(1220,0.014264); - ssigpTa->SetBinContent(1221,0.0144765); - ssigpTa->SetBinContent(1222,0.014652); - ssigpTa->SetBinContent(1223,0.0146418); - ssigpTa->SetBinContent(1224,0.0143622); - ssigpTa->SetBinContent(1225,0.0138564); - ssigpTa->SetBinContent(1226,0.0131222); - ssigpTa->SetBinContent(1227,0.0128523); - ssigpTa->SetBinContent(1228,0.0130259); - ssigpTa->SetBinContent(1229,0.0132925); - ssigpTa->SetBinContent(1230,0.0135646); - ssigpTa->SetBinContent(1231,0.0138422); - ssigpTa->SetBinContent(1232,0.0141239); - ssigpTa->SetBinContent(1233,0.0143749); - ssigpTa->SetBinContent(1234,0.0144532); - ssigpTa->SetBinContent(1235,0.0143364); - ssigpTa->SetBinContent(1236,0.0144061); - ssigpTa->SetBinContent(1237,0.0146507); - ssigpTa->SetBinContent(1238,0.0149337); - ssigpTa->SetBinContent(1239,0.0152203); - ssigpTa->SetBinContent(1240,0.01551); - ssigpTa->SetBinContent(1241,0.0158045); - ssigpTa->SetBinContent(1242,0.0161032); - ssigpTa->SetBinContent(1243,0.016406); - ssigpTa->SetBinContent(1244,0.0166722); - ssigpTa->SetBinContent(1245,0.0167298); - ssigpTa->SetBinContent(1246,0.0165689); - ssigpTa->SetBinContent(1247,0.0166129); - ssigpTa->SetBinContent(1248,0.0168642); - ssigpTa->SetBinContent(1249,0.0171579); - ssigpTa->SetBinContent(1250,0.0174535); - ssigpTa->SetBinContent(1251,0.0177524); - ssigpTa->SetBinContent(1252,0.018055); - ssigpTa->SetBinContent(1253,0.0183586); - ssigpTa->SetBinContent(1254,0.018664); - ssigpTa->SetBinContent(1255,0.0189715); - ssigpTa->SetBinContent(1256,0.0192452); - ssigpTa->SetBinContent(1257,0.019346); - ssigpTa->SetBinContent(1258,0.019269); - ssigpTa->SetBinContent(1259,0.0192748); - ssigpTa->SetBinContent(1260,0.0190104); - ssigpTa->SetBinContent(1261,0.0183372); - ssigpTa->SetBinContent(1262,0.0181169); - ssigpTa->SetBinContent(1263,0.0183499); - ssigpTa->SetBinContent(1264,0.0186798); - ssigpTa->SetBinContent(1265,0.0190131); - ssigpTa->SetBinContent(1266,0.0193473); - ssigpTa->SetBinContent(1267,0.0196873); - ssigpTa->SetBinContent(1268,0.0200359); - ssigpTa->SetBinContent(1269,0.0203897); - ssigpTa->SetBinContent(1270,0.0207566); - ssigpTa->SetBinContent(1271,0.0211922); - ssigpTa->SetBinContent(1272,0.0217042); - ssigpTa->SetBinContent(1273,0.0221406); - ssigpTa->SetBinContent(1274,0.0223786); - ssigpTa->SetBinContent(1275,0.0219451); - ssigpTa->SetBinContent(1276,0.0208369); - ssigpTa->SetBinContent(1277,0.0203344); - ssigpTa->SetBinContent(1278,0.0204578); - ssigpTa->SetBinContent(1279,0.0206993); - ssigpTa->SetBinContent(1280,0.0209346); - ssigpTa->SetBinContent(1281,0.021171); - ssigpTa->SetBinContent(1282,0.0212643); - ssigpTa->SetBinContent(1283,0.0206448); - ssigpTa->SetBinContent(1284,0.0192957); - ssigpTa->SetBinContent(1285,0.0186916); - ssigpTa->SetBinContent(1286,0.0188127); - ssigpTa->SetBinContent(1287,0.0190812); - ssigpTa->SetBinContent(1288,0.0194823); - ssigpTa->SetBinContent(1289,0.0205149); - ssigpTa->SetBinContent(1290,0.0221787); - ssigpTa->SetBinContent(1291,0.0232398); - ssigpTa->SetBinContent(1292,0.0236876); - ssigpTa->SetBinContent(1293,0.0240222); - ssigpTa->SetBinContent(1294,0.0243658); - ssigpTa->SetBinContent(1295,0.0247098); - ssigpTa->SetBinContent(1296,0.0250524); - ssigpTa->SetBinContent(1297,0.025303); - ssigpTa->SetBinContent(1298,0.0250895); - ssigpTa->SetBinContent(1299,0.0244097); - ssigpTa->SetBinContent(1300,0.0241832); - ssigpTa->SetBinContent(1301,0.0245321); - ssigpTa->SetBinContent(1302,0.0255612); - ssigpTa->SetBinContent(1303,0.0271898); - ssigpTa->SetBinContent(1304,0.0282695); - ssigpTa->SetBinContent(1305,0.0287939); - ssigpTa->SetBinContent(1306,0.0292065); - ssigpTa->SetBinContent(1307,0.0296157); - ssigpTa->SetBinContent(1308,0.029911); - ssigpTa->SetBinContent(1309,0.0296527); - ssigpTa->SetBinContent(1310,0.0288465); - ssigpTa->SetBinContent(1311,0.0285768); - ssigpTa->SetBinContent(1312,0.0289908); - ssigpTa->SetBinContent(1313,0.0301792); - ssigpTa->SetBinContent(1314,0.0320493); - ssigpTa->SetBinContent(1315,0.0332914); - ssigpTa->SetBinContent(1316,0.0338802); - ssigpTa->SetBinContent(1317,0.034341); - ssigpTa->SetBinContent(1318,0.0348162); - ssigpTa->SetBinContent(1319,0.0353145); - ssigpTa->SetBinContent(1320,0.0355334); - ssigpTa->SetBinContent(1321,0.0342749); - ssigpTa->SetBinContent(1322,0.0315307); - ssigpTa->SetBinContent(1323,0.0302881); - ssigpTa->SetBinContent(1324,0.0309772); - ssigpTa->SetBinContent(1325,0.0324695); - ssigpTa->SetBinContent(1326,0.0335222); - ssigpTa->SetBinContent(1327,0.0341127); - ssigpTa->SetBinContent(1328,0.034595); - ssigpTa->SetBinContent(1329,0.0350762); - ssigpTa->SetBinContent(1330,0.0355612); - ssigpTa->SetBinContent(1331,0.0360349); - ssigpTa->SetBinContent(1332,0.0364556); - ssigpTa->SetBinContent(1333,0.0367855); - ssigpTa->SetBinContent(1334,0.0374685); - ssigpTa->SetBinContent(1335,0.0388864); - ssigpTa->SetBinContent(1336,0.0400404); - ssigpTa->SetBinContent(1337,0.0407269); - ssigpTa->SetBinContent(1338,0.0412802); - ssigpTa->SetBinContent(1339,0.0418215); - ssigpTa->SetBinContent(1340,0.042397); - ssigpTa->SetBinContent(1341,0.0430106); - ssigpTa->SetBinContent(1342,0.0435323); - ssigpTa->SetBinContent(1343,0.0435641); - ssigpTa->SetBinContent(1344,0.0431344); - ssigpTa->SetBinContent(1345,0.0431875); - ssigpTa->SetBinContent(1346,0.0435249); - ssigpTa->SetBinContent(1347,0.0437442); - ssigpTa->SetBinContent(1348,0.0441445); - ssigpTa->SetBinContent(1349,0.0447503); - ssigpTa->SetBinContent(1350,0.0453923); - ssigpTa->SetBinContent(1351,0.046032); - ssigpTa->SetBinContent(1352,0.0467101); - ssigpTa->SetBinContent(1353,0.0474464); - ssigpTa->SetBinContent(1354,0.0482114); - ssigpTa->SetBinContent(1355,0.0489736); - ssigpTa->SetBinContent(1356,0.0497202); - ssigpTa->SetBinContent(1357,0.0504398); - ssigpTa->SetBinContent(1358,0.051146); - ssigpTa->SetBinContent(1359,0.0518859); - ssigpTa->SetBinContent(1360,0.0526693); - ssigpTa->SetBinContent(1361,0.0533567); - ssigpTa->SetBinContent(1362,0.0534313); - ssigpTa->SetBinContent(1363,0.0528334); - ssigpTa->SetBinContent(1364,0.0528609); - ssigpTa->SetBinContent(1365,0.0535848); - ssigpTa->SetBinContent(1366,0.0545166); - ssigpTa->SetBinContent(1367,0.0554273); - ssigpTa->SetBinContent(1368,0.0560769); - ssigpTa->SetBinContent(1371,0.00890856); - ssigpTa->SetBinContent(1372,0.00890469); - ssigpTa->SetBinContent(1373,0.00890268); - ssigpTa->SetBinContent(1374,0.00890386); - ssigpTa->SetBinContent(1375,0.00890554); - ssigpTa->SetBinContent(1376,0.00890794); - ssigpTa->SetBinContent(1377,0.00891054); - ssigpTa->SetBinContent(1378,0.00891402); - ssigpTa->SetBinContent(1379,0.0089177); - ssigpTa->SetBinContent(1380,0.00892268); - ssigpTa->SetBinContent(1381,0.00892744); - ssigpTa->SetBinContent(1382,0.008933); - ssigpTa->SetBinContent(1383,0.00893876); - ssigpTa->SetBinContent(1384,0.00894526); - ssigpTa->SetBinContent(1385,0.0089517); - ssigpTa->SetBinContent(1386,0.00895912); - ssigpTa->SetBinContent(1387,0.00896728); - ssigpTa->SetBinContent(1388,0.0089757); - ssigpTa->SetBinContent(1389,0.00898462); - ssigpTa->SetBinContent(1390,0.00899372); - ssigpTa->SetBinContent(1391,0.00900372); - ssigpTa->SetBinContent(1392,0.00901462); - ssigpTa->SetBinContent(1393,0.0090257); - ssigpTa->SetBinContent(1394,0.00903728); - ssigpTa->SetBinContent(1395,0.0090492); - ssigpTa->SetBinContent(1396,0.00906148); - ssigpTa->SetBinContent(1397,0.00907504); - ssigpTa->SetBinContent(1398,0.00908854); - ssigpTa->SetBinContent(1399,0.00910272); - ssigpTa->SetBinContent(1400,0.00911754); - ssigpTa->SetBinContent(1401,0.00913248); - ssigpTa->SetBinContent(1402,0.00914798); - ssigpTa->SetBinContent(1403,0.00916392); - ssigpTa->SetBinContent(1404,0.00918066); - ssigpTa->SetBinContent(1405,0.009198); - ssigpTa->SetBinContent(1406,0.00921542); - ssigpTa->SetBinContent(1407,0.00923408); - ssigpTa->SetBinContent(1408,0.00925284); - ssigpTa->SetBinContent(1409,0.0092721); - ssigpTa->SetBinContent(1410,0.00929154); - ssigpTa->SetBinContent(1411,0.00931212); - ssigpTa->SetBinContent(1412,0.00933304); - ssigpTa->SetBinContent(1413,0.00935454); - ssigpTa->SetBinContent(1414,0.00937646); - ssigpTa->SetBinContent(1415,0.00939872); - ssigpTa->SetBinContent(1416,0.0094223); - ssigpTa->SetBinContent(1417,0.0094458); - ssigpTa->SetBinContent(1418,0.00946996); - ssigpTa->SetBinContent(1419,0.00949496); - ssigpTa->SetBinContent(1420,0.00951998); - ssigpTa->SetBinContent(1421,0.0095458); - ssigpTa->SetBinContent(1422,0.0095715); - ssigpTa->SetBinContent(1423,0.00959834); - ssigpTa->SetBinContent(1424,0.00962568); - ssigpTa->SetBinContent(1425,0.00965344); - ssigpTa->SetBinContent(1426,0.00968204); - ssigpTa->SetBinContent(1427,0.0097116); - ssigpTa->SetBinContent(1428,0.00974142); - ssigpTa->SetBinContent(1429,0.0097716); - ssigpTa->SetBinContent(1430,0.00980204); - ssigpTa->SetBinContent(1431,0.00983306); - ssigpTa->SetBinContent(1432,0.0098649); - ssigpTa->SetBinContent(1433,0.00989708); - ssigpTa->SetBinContent(1434,0.00993064); - ssigpTa->SetBinContent(1435,0.00996392); - ssigpTa->SetBinContent(1436,0.00999842); - ssigpTa->SetBinContent(1437,0.0100335); - ssigpTa->SetBinContent(1438,0.0100687); - ssigpTa->SetBinContent(1439,0.0101047); - ssigpTa->SetBinContent(1440,0.0101406); - ssigpTa->SetBinContent(1441,0.010178); - ssigpTa->SetBinContent(1442,0.010216); - ssigpTa->SetBinContent(1443,0.0102544); - ssigpTa->SetBinContent(1444,0.0102927); - ssigpTa->SetBinContent(1445,0.010332); - ssigpTa->SetBinContent(1446,0.0103724); - ssigpTa->SetBinContent(1447,0.0104137); - ssigpTa->SetBinContent(1448,0.0104554); - ssigpTa->SetBinContent(1449,0.0104978); - ssigpTa->SetBinContent(1450,0.0105406); - ssigpTa->SetBinContent(1451,0.010584); - ssigpTa->SetBinContent(1452,0.010628); - ssigpTa->SetBinContent(1453,0.0106734); - ssigpTa->SetBinContent(1454,0.0107187); - ssigpTa->SetBinContent(1455,0.0107652); - ssigpTa->SetBinContent(1456,0.0108117); - ssigpTa->SetBinContent(1457,0.0108597); - ssigpTa->SetBinContent(1458,0.0109078); - ssigpTa->SetBinContent(1459,0.0109569); - ssigpTa->SetBinContent(1460,0.0110065); - ssigpTa->SetBinContent(1461,0.0110574); - ssigpTa->SetBinContent(1462,0.0111089); - ssigpTa->SetBinContent(1463,0.0111614); - ssigpTa->SetBinContent(1464,0.0112141); - ssigpTa->SetBinContent(1465,0.0112678); - ssigpTa->SetBinContent(1466,0.0113224); - ssigpTa->SetBinContent(1467,0.0113776); - ssigpTa->SetBinContent(1468,0.0114341); - ssigpTa->SetBinContent(1469,0.0114907); - ssigpTa->SetBinContent(1470,0.0115491); - ssigpTa->SetBinContent(1471,0.0116079); - ssigpTa->SetBinContent(1472,0.0116678); - ssigpTa->SetBinContent(1473,0.0117283); - ssigpTa->SetBinContent(1474,0.0117901); - ssigpTa->SetBinContent(1475,0.0118531); - ssigpTa->SetBinContent(1476,0.0120759); - ssigpTa->SetBinContent(1477,0.0131019); - ssigpTa->SetBinContent(1478,0.0149324); - ssigpTa->SetBinContent(1479,0.0159672); - ssigpTa->SetBinContent(1480,0.0162042); - ssigpTa->SetBinContent(1481,0.0162834); - ssigpTa->SetBinContent(1482,0.0163635); - ssigpTa->SetBinContent(1483,0.0164445); - ssigpTa->SetBinContent(1484,0.0165268); - ssigpTa->SetBinContent(1485,0.0166097); - ssigpTa->SetBinContent(1486,0.016694); - ssigpTa->SetBinContent(1487,0.0166332); - ssigpTa->SetBinContent(1488,0.0158472); - ssigpTa->SetBinContent(1489,0.0143621); - ssigpTa->SetBinContent(1490,0.0136635); - ssigpTa->SetBinContent(1491,0.0137281); - ssigpTa->SetBinContent(1492,0.0139441); - ssigpTa->SetBinContent(1493,0.0141608); - ssigpTa->SetBinContent(1494,0.0143792); - ssigpTa->SetBinContent(1495,0.014599); - ssigpTa->SetBinContent(1496,0.0147825); - ssigpTa->SetBinContent(1497,0.0147675); - ssigpTa->SetBinContent(1498,0.014468); - ssigpTa->SetBinContent(1499,0.0139914); - ssigpTa->SetBinContent(1500,0.0133372); - ssigpTa->SetBinContent(1501,0.0131128); - ssigpTa->SetBinContent(1502,0.0132958); - ssigpTa->SetBinContent(1503,0.0135697); - ssigpTa->SetBinContent(1504,0.0138483); - ssigpTa->SetBinContent(1505,0.014133); - ssigpTa->SetBinContent(1506,0.0144211); - ssigpTa->SetBinContent(1507,0.0146744); - ssigpTa->SetBinContent(1508,0.0147053); - ssigpTa->SetBinContent(1509,0.0144984); - ssigpTa->SetBinContent(1510,0.0145188); - ssigpTa->SetBinContent(1511,0.0147634); - ssigpTa->SetBinContent(1512,0.01505); - ssigpTa->SetBinContent(1513,0.0153411); - ssigpTa->SetBinContent(1514,0.0156355); - ssigpTa->SetBinContent(1515,0.0159345); - ssigpTa->SetBinContent(1516,0.0162381); - ssigpTa->SetBinContent(1517,0.0165457); - ssigpTa->SetBinContent(1518,0.016817); - ssigpTa->SetBinContent(1519,0.0168708); - ssigpTa->SetBinContent(1520,0.0166908); - ssigpTa->SetBinContent(1521,0.0167297); - ssigpTa->SetBinContent(1522,0.0169852); - ssigpTa->SetBinContent(1523,0.0172835); - ssigpTa->SetBinContent(1524,0.0175845); - ssigpTa->SetBinContent(1525,0.017889); - ssigpTa->SetBinContent(1526,0.0181972); - ssigpTa->SetBinContent(1527,0.0185072); - ssigpTa->SetBinContent(1528,0.0188192); - ssigpTa->SetBinContent(1529,0.019134); - ssigpTa->SetBinContent(1530,0.0194149); - ssigpTa->SetBinContent(1531,0.0195067); - ssigpTa->SetBinContent(1532,0.0194014); - ssigpTa->SetBinContent(1533,0.0193965); - ssigpTa->SetBinContent(1534,0.0191309); - ssigpTa->SetBinContent(1535,0.018445); - ssigpTa->SetBinContent(1536,0.0182213); - ssigpTa->SetBinContent(1537,0.0184567); - ssigpTa->SetBinContent(1538,0.0187885); - ssigpTa->SetBinContent(1539,0.0191247); - ssigpTa->SetBinContent(1540,0.0194617); - ssigpTa->SetBinContent(1541,0.0198047); - ssigpTa->SetBinContent(1542,0.0201563); - ssigpTa->SetBinContent(1543,0.0205132); - ssigpTa->SetBinContent(1544,0.0208874); - ssigpTa->SetBinContent(1545,0.0213583); - ssigpTa->SetBinContent(1546,0.0219285); - ssigpTa->SetBinContent(1547,0.0224065); - ssigpTa->SetBinContent(1548,0.0226601); - ssigpTa->SetBinContent(1549,0.0222411); - ssigpTa->SetBinContent(1550,0.0211546); - ssigpTa->SetBinContent(1551,0.0206615); - ssigpTa->SetBinContent(1552,0.0207913); - ssigpTa->SetBinContent(1553,0.0210409); - ssigpTa->SetBinContent(1554,0.0212847); - ssigpTa->SetBinContent(1555,0.0215247); - ssigpTa->SetBinContent(1556,0.0216078); - ssigpTa->SetBinContent(1557,0.0209395); - ssigpTa->SetBinContent(1558,0.0195013); - ssigpTa->SetBinContent(1559,0.0188524); - ssigpTa->SetBinContent(1560,0.018976); - ssigpTa->SetBinContent(1561,0.0192516); - ssigpTa->SetBinContent(1562,0.0196577); - ssigpTa->SetBinContent(1563,0.0206729); - ssigpTa->SetBinContent(1564,0.022296); - ssigpTa->SetBinContent(1565,0.0233369); - ssigpTa->SetBinContent(1566,0.0237859); - ssigpTa->SetBinContent(1567,0.0241238); - ssigpTa->SetBinContent(1568,0.0244695); - ssigpTa->SetBinContent(1569,0.0248166); - ssigpTa->SetBinContent(1570,0.0251634); - ssigpTa->SetBinContent(1571,0.0254185); - ssigpTa->SetBinContent(1572,0.0252164); - ssigpTa->SetBinContent(1573,0.0245569); - ssigpTa->SetBinContent(1574,0.0243447); - ssigpTa->SetBinContent(1575,0.0247036); - ssigpTa->SetBinContent(1576,0.0257456); - ssigpTa->SetBinContent(1577,0.0273837); - ssigpTa->SetBinContent(1578,0.0284731); - ssigpTa->SetBinContent(1579,0.0290022); - ssigpTa->SetBinContent(1580,0.0294183); - ssigpTa->SetBinContent(1581,0.0298337); - ssigpTa->SetBinContent(1582,0.0301393); - ssigpTa->SetBinContent(1583,0.0299193); - ssigpTa->SetBinContent(1584,0.0291739); - ssigpTa->SetBinContent(1585,0.028945); - ssigpTa->SetBinContent(1586,0.0293738); - ssigpTa->SetBinContent(1587,0.0305677); - ssigpTa->SetBinContent(1588,0.0324292); - ssigpTa->SetBinContent(1589,0.0336709); - ssigpTa->SetBinContent(1590,0.0342672); - ssigpTa->SetBinContent(1591,0.0347394); - ssigpTa->SetBinContent(1592,0.0352266); - ssigpTa->SetBinContent(1593,0.0357344); - ssigpTa->SetBinContent(1594,0.0359731); - ssigpTa->SetBinContent(1595,0.0347978); - ssigpTa->SetBinContent(1596,0.032183); - ssigpTa->SetBinContent(1597,0.0310194); - ssigpTa->SetBinContent(1598,0.0317262); - ssigpTa->SetBinContent(1599,0.0332287); - ssigpTa->SetBinContent(1600,0.0342837); - ssigpTa->SetBinContent(1601,0.034878); - ssigpTa->SetBinContent(1602,0.0353729); - ssigpTa->SetBinContent(1603,0.035867); - ssigpTa->SetBinContent(1604,0.0363612); - ssigpTa->SetBinContent(1605,0.036846); - ssigpTa->SetBinContent(1606,0.0372819); - ssigpTa->SetBinContent(1607,0.0376101); - ssigpTa->SetBinContent(1608,0.0382542); - ssigpTa->SetBinContent(1609,0.0396527); - ssigpTa->SetBinContent(1610,0.040793); - ssigpTa->SetBinContent(1611,0.0414791); - ssigpTa->SetBinContent(1612,0.0420483); - ssigpTa->SetBinContent(1613,0.0426129); - ssigpTa->SetBinContent(1614,0.0432039); - ssigpTa->SetBinContent(1615,0.043822); - ssigpTa->SetBinContent(1616,0.044363); - ssigpTa->SetBinContent(1617,0.0444796); - ssigpTa->SetBinContent(1618,0.0441817); - ssigpTa->SetBinContent(1619,0.0443163); - ssigpTa->SetBinContent(1620,0.0447107); - ssigpTa->SetBinContent(1621,0.0449947); - ssigpTa->SetBinContent(1622,0.0454481); - ssigpTa->SetBinContent(1623,0.0460741); - ssigpTa->SetBinContent(1624,0.0467299); - ssigpTa->SetBinContent(1625,0.0473903); - ssigpTa->SetBinContent(1626,0.0480924); - ssigpTa->SetBinContent(1627,0.0488475); - ssigpTa->SetBinContent(1628,0.0496242); - ssigpTa->SetBinContent(1629,0.0503979); - ssigpTa->SetBinContent(1630,0.05116); - ssigpTa->SetBinContent(1631,0.0519063); - ssigpTa->SetBinContent(1632,0.0526464); - ssigpTa->SetBinContent(1633,0.053414); - ssigpTa->SetBinContent(1634,0.0542113); - ssigpTa->SetBinContent(1635,0.0549135); - ssigpTa->SetBinContent(1636,0.0550172); - ssigpTa->SetBinContent(1637,0.0545056); - ssigpTa->SetBinContent(1638,0.0545974); - ssigpTa->SetBinContent(1639,0.0553595); - ssigpTa->SetBinContent(1640,0.0562923); - ssigpTa->SetBinContent(1641,0.057188); - ssigpTa->SetBinContent(1642,0.0578266); - ssigpTa->SetBinContent(1645,0.00916722); - ssigpTa->SetBinContent(1646,0.00915792); - ssigpTa->SetBinContent(1647,0.0091536); - ssigpTa->SetBinContent(1648,0.00915436); - ssigpTa->SetBinContent(1649,0.00915596); - ssigpTa->SetBinContent(1650,0.00915748); - ssigpTa->SetBinContent(1651,0.00916044); - ssigpTa->SetBinContent(1652,0.0091632); - ssigpTa->SetBinContent(1653,0.00916768); - ssigpTa->SetBinContent(1654,0.0091726); - ssigpTa->SetBinContent(1655,0.00917788); - ssigpTa->SetBinContent(1656,0.00918256); - ssigpTa->SetBinContent(1657,0.00918844); - ssigpTa->SetBinContent(1658,0.00919492); - ssigpTa->SetBinContent(1659,0.0092012); - ssigpTa->SetBinContent(1660,0.00920788); - ssigpTa->SetBinContent(1661,0.00921692); - ssigpTa->SetBinContent(1662,0.00922552); - ssigpTa->SetBinContent(1663,0.00923456); - ssigpTa->SetBinContent(1664,0.0092436); - ssigpTa->SetBinContent(1665,0.009254); - ssigpTa->SetBinContent(1666,0.00926416); - ssigpTa->SetBinContent(1667,0.00927592); - ssigpTa->SetBinContent(1668,0.00928652); - ssigpTa->SetBinContent(1669,0.00929808); - ssigpTa->SetBinContent(1670,0.00931044); - ssigpTa->SetBinContent(1671,0.00932356); - ssigpTa->SetBinContent(1672,0.00933764); - ssigpTa->SetBinContent(1673,0.0093512); - ssigpTa->SetBinContent(1674,0.00936588); - ssigpTa->SetBinContent(1675,0.0093814); - ssigpTa->SetBinContent(1676,0.00939648); - ssigpTa->SetBinContent(1677,0.00941256); - ssigpTa->SetBinContent(1678,0.0094284); - ssigpTa->SetBinContent(1679,0.00944568); - ssigpTa->SetBinContent(1680,0.00946312); - ssigpTa->SetBinContent(1681,0.0094812); - ssigpTa->SetBinContent(1682,0.0095004); - ssigpTa->SetBinContent(1683,0.0095192); - ssigpTa->SetBinContent(1684,0.009539); - ssigpTa->SetBinContent(1685,0.0095592); - ssigpTa->SetBinContent(1686,0.0095804); - ssigpTa->SetBinContent(1687,0.0096014); - ssigpTa->SetBinContent(1688,0.00962256); - ssigpTa->SetBinContent(1689,0.00964532); - ssigpTa->SetBinContent(1690,0.00966804); - ssigpTa->SetBinContent(1691,0.00969172); - ssigpTa->SetBinContent(1692,0.00971648); - ssigpTa->SetBinContent(1693,0.00974076); - ssigpTa->SetBinContent(1694,0.00976608); - ssigpTa->SetBinContent(1695,0.00979072); - ssigpTa->SetBinContent(1696,0.00981724); - ssigpTa->SetBinContent(1697,0.00984332); - ssigpTa->SetBinContent(1698,0.00987036); - ssigpTa->SetBinContent(1699,0.0098982); - ssigpTa->SetBinContent(1700,0.00992624); - ssigpTa->SetBinContent(1701,0.00995544); - ssigpTa->SetBinContent(1702,0.00998584); - ssigpTa->SetBinContent(1703,0.0100154); - ssigpTa->SetBinContent(1704,0.010046); - ssigpTa->SetBinContent(1705,0.0100762); - ssigpTa->SetBinContent(1706,0.0101076); - ssigpTa->SetBinContent(1707,0.0101407); - ssigpTa->SetBinContent(1708,0.0101729); - ssigpTa->SetBinContent(1709,0.010207); - ssigpTa->SetBinContent(1710,0.0102405); - ssigpTa->SetBinContent(1711,0.0102754); - ssigpTa->SetBinContent(1712,0.0103111); - ssigpTa->SetBinContent(1713,0.0103462); - ssigpTa->SetBinContent(1714,0.0103816); - ssigpTa->SetBinContent(1715,0.0104185); - ssigpTa->SetBinContent(1716,0.0104572); - ssigpTa->SetBinContent(1717,0.0104952); - ssigpTa->SetBinContent(1718,0.010533); - ssigpTa->SetBinContent(1719,0.0105717); - ssigpTa->SetBinContent(1720,0.0106118); - ssigpTa->SetBinContent(1721,0.0106526); - ssigpTa->SetBinContent(1722,0.0106944); - ssigpTa->SetBinContent(1723,0.0107366); - ssigpTa->SetBinContent(1724,0.0107795); - ssigpTa->SetBinContent(1725,0.0108222); - ssigpTa->SetBinContent(1726,0.010867); - ssigpTa->SetBinContent(1727,0.0109112); - ssigpTa->SetBinContent(1728,0.0109569); - ssigpTa->SetBinContent(1729,0.011002); - ssigpTa->SetBinContent(1730,0.0110497); - ssigpTa->SetBinContent(1731,0.0110964); - ssigpTa->SetBinContent(1732,0.0111448); - ssigpTa->SetBinContent(1733,0.0111938); - ssigpTa->SetBinContent(1734,0.0112432); - ssigpTa->SetBinContent(1735,0.011294); - ssigpTa->SetBinContent(1736,0.0113452); - ssigpTa->SetBinContent(1737,0.0113971); - ssigpTa->SetBinContent(1738,0.011449); - ssigpTa->SetBinContent(1739,0.0115023); - ssigpTa->SetBinContent(1740,0.0115566); - ssigpTa->SetBinContent(1741,0.0116116); - ssigpTa->SetBinContent(1742,0.011667); - ssigpTa->SetBinContent(1743,0.0117245); - ssigpTa->SetBinContent(1744,0.0117819); - ssigpTa->SetBinContent(1745,0.0118413); - ssigpTa->SetBinContent(1746,0.011901); - ssigpTa->SetBinContent(1747,0.0119614); - ssigpTa->SetBinContent(1748,0.0120225); - ssigpTa->SetBinContent(1749,0.0120847); - ssigpTa->SetBinContent(1750,0.0123108); - ssigpTa->SetBinContent(1751,0.0133496); - ssigpTa->SetBinContent(1752,0.01522); - ssigpTa->SetBinContent(1753,0.0162672); - ssigpTa->SetBinContent(1754,0.0165072); - ssigpTa->SetBinContent(1755,0.016586); - ssigpTa->SetBinContent(1756,0.016666); - ssigpTa->SetBinContent(1757,0.0167472); - ssigpTa->SetBinContent(1758,0.0168286); - ssigpTa->SetBinContent(1759,0.0169117); - ssigpTa->SetBinContent(1760,0.016995); - ssigpTa->SetBinContent(1761,0.0169325); - ssigpTa->SetBinContent(1762,0.0161404); - ssigpTa->SetBinContent(1763,0.0146349); - ssigpTa->SetBinContent(1764,0.0139396); - ssigpTa->SetBinContent(1765,0.0140139); - ssigpTa->SetBinContent(1766,0.0142434); - ssigpTa->SetBinContent(1767,0.0144758); - ssigpTa->SetBinContent(1768,0.0147104); - ssigpTa->SetBinContent(1769,0.0149484); - ssigpTa->SetBinContent(1770,0.0151468); - ssigpTa->SetBinContent(1771,0.0151136); - ssigpTa->SetBinContent(1772,0.0147758); - ssigpTa->SetBinContent(1773,0.014369); - ssigpTa->SetBinContent(1774,0.0138907); - ssigpTa->SetBinContent(1775,0.0137746); - ssigpTa->SetBinContent(1776,0.0139872); - ssigpTa->SetBinContent(1777,0.0142726); - ssigpTa->SetBinContent(1778,0.0145631); - ssigpTa->SetBinContent(1779,0.0148584); - ssigpTa->SetBinContent(1780,0.0151579); - ssigpTa->SetBinContent(1781,0.0153994); - ssigpTa->SetBinContent(1782,0.0153332); - ssigpTa->SetBinContent(1783,0.0149496); - ssigpTa->SetBinContent(1784,0.0148733); - ssigpTa->SetBinContent(1785,0.0151066); - ssigpTa->SetBinContent(1786,0.0154041); - ssigpTa->SetBinContent(1787,0.0157056); - ssigpTa->SetBinContent(1788,0.0160111); - ssigpTa->SetBinContent(1789,0.0163212); - ssigpTa->SetBinContent(1790,0.0166358); - ssigpTa->SetBinContent(1791,0.0169554); - ssigpTa->SetBinContent(1792,0.0172344); - ssigpTa->SetBinContent(1793,0.0172672); - ssigpTa->SetBinContent(1794,0.017036); - ssigpTa->SetBinContent(1795,0.0170539); - ssigpTa->SetBinContent(1796,0.017317); - ssigpTa->SetBinContent(1797,0.0176294); - ssigpTa->SetBinContent(1798,0.0179438); - ssigpTa->SetBinContent(1799,0.0182632); - ssigpTa->SetBinContent(1800,0.0185868); - ssigpTa->SetBinContent(1801,0.0189129); - ssigpTa->SetBinContent(1802,0.0192415); - ssigpTa->SetBinContent(1803,0.0195748); - ssigpTa->SetBinContent(1804,0.0198688); - ssigpTa->SetBinContent(1805,0.0199436); - ssigpTa->SetBinContent(1806,0.0197885); - ssigpTa->SetBinContent(1807,0.0197604); - ssigpTa->SetBinContent(1808,0.0194747); - ssigpTa->SetBinContent(1809,0.0187413); - ssigpTa->SetBinContent(1810,0.0184984); - ssigpTa->SetBinContent(1811,0.0187373); - ssigpTa->SetBinContent(1812,0.0190782); - ssigpTa->SetBinContent(1813,0.0194231); - ssigpTa->SetBinContent(1814,0.01977); - ssigpTa->SetBinContent(1815,0.0201222); - ssigpTa->SetBinContent(1816,0.020484); - ssigpTa->SetBinContent(1817,0.0208526); - ssigpTa->SetBinContent(1818,0.0212498); - ssigpTa->SetBinContent(1819,0.0217806); - ssigpTa->SetBinContent(1820,0.022454); - ssigpTa->SetBinContent(1821,0.0230008); - ssigpTa->SetBinContent(1822,0.0232924); - ssigpTa->SetBinContent(1823,0.022925); - ssigpTa->SetBinContent(1824,0.0219097); - ssigpTa->SetBinContent(1825,0.0214641); - ssigpTa->SetBinContent(1826,0.0216168); - ssigpTa->SetBinContent(1827,0.021889); - ssigpTa->SetBinContent(1828,0.0221556); - ssigpTa->SetBinContent(1829,0.0223965); - ssigpTa->SetBinContent(1830,0.0224321); - ssigpTa->SetBinContent(1831,0.0216483); - ssigpTa->SetBinContent(1832,0.0200179); - ssigpTa->SetBinContent(1833,0.0192687); - ssigpTa->SetBinContent(1834,0.0193858); - ssigpTa->SetBinContent(1835,0.0196754); - ssigpTa->SetBinContent(1836,0.0200872); - ssigpTa->SetBinContent(1837,0.021065); - ssigpTa->SetBinContent(1838,0.0225971); - ssigpTa->SetBinContent(1839,0.0235951); - ssigpTa->SetBinContent(1840,0.024043); - ssigpTa->SetBinContent(1841,0.0243877); - ssigpTa->SetBinContent(1842,0.0247407); - ssigpTa->SetBinContent(1843,0.0250946); - ssigpTa->SetBinContent(1844,0.0254506); - ssigpTa->SetBinContent(1845,0.0257186); - ssigpTa->SetBinContent(1846,0.0255474); - ssigpTa->SetBinContent(1847,0.0249433); - ssigpTa->SetBinContent(1848,0.0247678); - ssigpTa->SetBinContent(1849,0.0251483); - ssigpTa->SetBinContent(1850,0.0261963); - ssigpTa->SetBinContent(1851,0.0278234); - ssigpTa->SetBinContent(1852,0.028914); - ssigpTa->SetBinContent(1853,0.0294517); - ssigpTa->SetBinContent(1854,0.0298789); - ssigpTa->SetBinContent(1855,0.0303063); - ssigpTa->SetBinContent(1856,0.0306384); - ssigpTa->SetBinContent(1857,0.0304879); - ssigpTa->SetBinContent(1858,0.0298646); - ssigpTa->SetBinContent(1859,0.0297126); - ssigpTa->SetBinContent(1860,0.0301746); - ssigpTa->SetBinContent(1861,0.0313724); - ssigpTa->SetBinContent(1862,0.0332074); - ssigpTa->SetBinContent(1863,0.0344423); - ssigpTa->SetBinContent(1864,0.0350554); - ssigpTa->SetBinContent(1865,0.0355487); - ssigpTa->SetBinContent(1866,0.0360593); - ssigpTa->SetBinContent(1867,0.0365884); - ssigpTa->SetBinContent(1868,0.0368686); - ssigpTa->SetBinContent(1869,0.0358054); - ssigpTa->SetBinContent(1870,0.0333908); - ssigpTa->SetBinContent(1871,0.0323382); - ssigpTa->SetBinContent(1872,0.0331075); - ssigpTa->SetBinContent(1873,0.0346586); - ssigpTa->SetBinContent(1874,0.0357507); - ssigpTa->SetBinContent(1875,0.0363587); - ssigpTa->SetBinContent(1876,0.0368707); - ssigpTa->SetBinContent(1877,0.0373816); - ssigpTa->SetBinContent(1878,0.0378915); - ssigpTa->SetBinContent(1879,0.0383944); - ssigpTa->SetBinContent(1880,0.0388504); - ssigpTa->SetBinContent(1881,0.0391918); - ssigpTa->SetBinContent(1882,0.0398374); - ssigpTa->SetBinContent(1883,0.041234); - ssigpTa->SetBinContent(1884,0.0423833); - ssigpTa->SetBinContent(1885,0.0430812); - ssigpTa->SetBinContent(1886,0.0436742); - ssigpTa->SetBinContent(1887,0.0442685); - ssigpTa->SetBinContent(1888,0.0448803); - ssigpTa->SetBinContent(1889,0.045512); - ssigpTa->SetBinContent(1890,0.0460857); - ssigpTa->SetBinContent(1891,0.0462944); - ssigpTa->SetBinContent(1892,0.046147); - ssigpTa->SetBinContent(1893,0.046367); - ssigpTa->SetBinContent(1894,0.0468146); - ssigpTa->SetBinContent(1895,0.0471714); - ssigpTa->SetBinContent(1896,0.0476727); - ssigpTa->SetBinContent(1897,0.0483267); - ssigpTa->SetBinContent(1898,0.0490025); - ssigpTa->SetBinContent(1899,0.0496908); - ssigpTa->SetBinContent(1900,0.0504265); - ssigpTa->SetBinContent(1901,0.051209); - ssigpTa->SetBinContent(1902,0.0520059); - ssigpTa->SetBinContent(1903,0.0527989); - ssigpTa->SetBinContent(1904,0.053587); - ssigpTa->SetBinContent(1905,0.0543714); - ssigpTa->SetBinContent(1906,0.0551592); - ssigpTa->SetBinContent(1907,0.0559657); - ssigpTa->SetBinContent(1908,0.0567865); - ssigpTa->SetBinContent(1909,0.0574962); - ssigpTa->SetBinContent(1910,0.0576296); - ssigpTa->SetBinContent(1911,0.0571842); - ssigpTa->SetBinContent(1912,0.0573462); - ssigpTa->SetBinContent(1913,0.0581433); - ssigpTa->SetBinContent(1914,0.0590947); - ssigpTa->SetBinContent(1915,0.0600088); - ssigpTa->SetBinContent(1916,0.0607425); - ssigpTa->SetBinContent(1919,0.00970322); - ssigpTa->SetBinContent(1920,0.00969825); - ssigpTa->SetBinContent(1921,0.0096908); - ssigpTa->SetBinContent(1922,0.0096912); - ssigpTa->SetBinContent(1923,0.00969168); - ssigpTa->SetBinContent(1924,0.00969296); - ssigpTa->SetBinContent(1925,0.00969432); - ssigpTa->SetBinContent(1926,0.0096988); - ssigpTa->SetBinContent(1927,0.00970296); - ssigpTa->SetBinContent(1928,0.0097088); - ssigpTa->SetBinContent(1929,0.00971336); - ssigpTa->SetBinContent(1930,0.0097176); - ssigpTa->SetBinContent(1931,0.00972264); - ssigpTa->SetBinContent(1932,0.00972888); - ssigpTa->SetBinContent(1933,0.00973552); - ssigpTa->SetBinContent(1934,0.00974264); - ssigpTa->SetBinContent(1935,0.00975056); - ssigpTa->SetBinContent(1936,0.00976048); - ssigpTa->SetBinContent(1937,0.00977008); - ssigpTa->SetBinContent(1938,0.00978); - ssigpTa->SetBinContent(1939,0.0097888); - ssigpTa->SetBinContent(1940,0.00980088); - ssigpTa->SetBinContent(1941,0.00981008); - ssigpTa->SetBinContent(1942,0.00982096); - ssigpTa->SetBinContent(1943,0.00983184); - ssigpTa->SetBinContent(1944,0.00984352); - ssigpTa->SetBinContent(1945,0.00985808); - ssigpTa->SetBinContent(1946,0.00987064); - ssigpTa->SetBinContent(1947,0.0098836); - ssigpTa->SetBinContent(1948,0.00989896); - ssigpTa->SetBinContent(1949,0.009914); - ssigpTa->SetBinContent(1950,0.00993136); - ssigpTa->SetBinContent(1951,0.00994528); - ssigpTa->SetBinContent(1952,0.00996192); - ssigpTa->SetBinContent(1953,0.00997744); - ssigpTa->SetBinContent(1954,0.00999528); - ssigpTa->SetBinContent(1955,0.0100145); - ssigpTa->SetBinContent(1956,0.0100328); - ssigpTa->SetBinContent(1957,0.0100528); - ssigpTa->SetBinContent(1958,0.0100716); - ssigpTa->SetBinContent(1959,0.0100924); - ssigpTa->SetBinContent(1960,0.0101132); - ssigpTa->SetBinContent(1961,0.0101329); - ssigpTa->SetBinContent(1962,0.0101542); - ssigpTa->SetBinContent(1963,0.0101758); - ssigpTa->SetBinContent(1964,0.0101992); - ssigpTa->SetBinContent(1965,0.0102222); - ssigpTa->SetBinContent(1966,0.0102467); - ssigpTa->SetBinContent(1967,0.0102725); - ssigpTa->SetBinContent(1968,0.0102959); - ssigpTa->SetBinContent(1969,0.010321); - ssigpTa->SetBinContent(1970,0.0103464); - ssigpTa->SetBinContent(1971,0.0103734); - ssigpTa->SetBinContent(1972,0.0104006); - ssigpTa->SetBinContent(1973,0.0104273); - ssigpTa->SetBinContent(1974,0.0104552); - ssigpTa->SetBinContent(1975,0.010484); - ssigpTa->SetBinContent(1976,0.0105132); - ssigpTa->SetBinContent(1977,0.010544); - ssigpTa->SetBinContent(1978,0.0105732); - ssigpTa->SetBinContent(1979,0.0106041); - ssigpTa->SetBinContent(1980,0.0106358); - ssigpTa->SetBinContent(1981,0.0106678); - ssigpTa->SetBinContent(1982,0.0107016); - ssigpTa->SetBinContent(1983,0.0107329); - ssigpTa->SetBinContent(1984,0.0107663); - ssigpTa->SetBinContent(1985,0.0108009); - ssigpTa->SetBinContent(1986,0.0108363); - ssigpTa->SetBinContent(1987,0.0108714); - ssigpTa->SetBinContent(1988,0.0109056); - ssigpTa->SetBinContent(1989,0.0109431); - ssigpTa->SetBinContent(1990,0.0109814); - ssigpTa->SetBinContent(1991,0.0110198); - ssigpTa->SetBinContent(1992,0.0110569); - ssigpTa->SetBinContent(1993,0.0110965); - ssigpTa->SetBinContent(1994,0.0111357); - ssigpTa->SetBinContent(1995,0.0111758); - ssigpTa->SetBinContent(1996,0.0112174); - ssigpTa->SetBinContent(1997,0.0112587); - ssigpTa->SetBinContent(1998,0.0113008); - ssigpTa->SetBinContent(1999,0.0113454); - ssigpTa->SetBinContent(2000,0.0113887); - ssigpTa->SetBinContent(2001,0.011435); - ssigpTa->SetBinContent(2002,0.0114776); - ssigpTa->SetBinContent(2003,0.0115246); - ssigpTa->SetBinContent(2004,0.0115697); - ssigpTa->SetBinContent(2005,0.011618); - ssigpTa->SetBinContent(2006,0.0116651); - ssigpTa->SetBinContent(2007,0.0117143); - ssigpTa->SetBinContent(2008,0.0117639); - ssigpTa->SetBinContent(2009,0.0118139); - ssigpTa->SetBinContent(2010,0.0118656); - ssigpTa->SetBinContent(2011,0.0119149); - ssigpTa->SetBinContent(2012,0.011967); - ssigpTa->SetBinContent(2013,0.01202); - ssigpTa->SetBinContent(2014,0.0120746); - ssigpTa->SetBinContent(2015,0.0121288); - ssigpTa->SetBinContent(2016,0.0121834); - ssigpTa->SetBinContent(2017,0.0122401); - ssigpTa->SetBinContent(2018,0.0122989); - ssigpTa->SetBinContent(2019,0.012358); - ssigpTa->SetBinContent(2020,0.012418); - ssigpTa->SetBinContent(2021,0.012478); - ssigpTa->SetBinContent(2022,0.0125385); - ssigpTa->SetBinContent(2023,0.0125998); - ssigpTa->SetBinContent(2024,0.0128271); - ssigpTa->SetBinContent(2025,0.0139102); - ssigpTa->SetBinContent(2026,0.0158674); - ssigpTa->SetBinContent(2027,0.0169585); - ssigpTa->SetBinContent(2028,0.0171992); - ssigpTa->SetBinContent(2029,0.0172776); - ssigpTa->SetBinContent(2030,0.017358); - ssigpTa->SetBinContent(2031,0.0174376); - ssigpTa->SetBinContent(2032,0.0175193); - ssigpTa->SetBinContent(2033,0.0175998); - ssigpTa->SetBinContent(2034,0.0176836); - ssigpTa->SetBinContent(2035,0.0176178); - ssigpTa->SetBinContent(2036,0.0168005); - ssigpTa->SetBinContent(2037,0.0152438); - ssigpTa->SetBinContent(2038,0.0145374); - ssigpTa->SetBinContent(2039,0.014633); - ssigpTa->SetBinContent(2040,0.0148875); - ssigpTa->SetBinContent(2041,0.0151456); - ssigpTa->SetBinContent(2042,0.0154062); - ssigpTa->SetBinContent(2043,0.0156731); - ssigpTa->SetBinContent(2044,0.015887); - ssigpTa->SetBinContent(2045,0.0158172); - ssigpTa->SetBinContent(2046,0.0154174); - ssigpTa->SetBinContent(2047,0.0151022); - ssigpTa->SetBinContent(2048,0.0148643); - ssigpTa->SetBinContent(2049,0.0149031); - ssigpTa->SetBinContent(2050,0.0151574); - ssigpTa->SetBinContent(2051,0.0154561); - ssigpTa->SetBinContent(2052,0.015757); - ssigpTa->SetBinContent(2053,0.0160635); - ssigpTa->SetBinContent(2054,0.0163718); - ssigpTa->SetBinContent(2055,0.016596); - ssigpTa->SetBinContent(2056,0.0164122); - ssigpTa->SetBinContent(2057,0.0158157); - ssigpTa->SetBinContent(2058,0.0156266); - ssigpTa->SetBinContent(2059,0.0158502); - ssigpTa->SetBinContent(2060,0.0161651); - ssigpTa->SetBinContent(2061,0.0164843); - ssigpTa->SetBinContent(2062,0.0168062); - ssigpTa->SetBinContent(2063,0.0171333); - ssigpTa->SetBinContent(2064,0.0174662); - ssigpTa->SetBinContent(2065,0.0178038); - ssigpTa->SetBinContent(2066,0.0180874); - ssigpTa->SetBinContent(2067,0.0180698); - ssigpTa->SetBinContent(2068,0.0177385); - ssigpTa->SetBinContent(2069,0.0177082); - ssigpTa->SetBinContent(2070,0.0179832); - ssigpTa->SetBinContent(2071,0.0183181); - ssigpTa->SetBinContent(2072,0.0186592); - ssigpTa->SetBinContent(2073,0.0190023); - ssigpTa->SetBinContent(2074,0.019353); - ssigpTa->SetBinContent(2075,0.0197059); - ssigpTa->SetBinContent(2076,0.0200626); - ssigpTa->SetBinContent(2077,0.0204234); - ssigpTa->SetBinContent(2078,0.0207362); - ssigpTa->SetBinContent(2079,0.0207847); - ssigpTa->SetBinContent(2080,0.0205553); - ssigpTa->SetBinContent(2081,0.0204889); - ssigpTa->SetBinContent(2082,0.0201466); - ssigpTa->SetBinContent(2083,0.0193246); - ssigpTa->SetBinContent(2084,0.0190281); - ssigpTa->SetBinContent(2085,0.0192756); - ssigpTa->SetBinContent(2086,0.0196343); - ssigpTa->SetBinContent(2087,0.0200011); - ssigpTa->SetBinContent(2088,0.0203682); - ssigpTa->SetBinContent(2089,0.0207422); - ssigpTa->SetBinContent(2090,0.0211266); - ssigpTa->SetBinContent(2091,0.0215206); - ssigpTa->SetBinContent(2092,0.0219514); - ssigpTa->SetBinContent(2093,0.022561); - ssigpTa->SetBinContent(2094,0.0233422); - ssigpTa->SetBinContent(2095,0.0239738); - ssigpTa->SetBinContent(2096,0.0243218); - ssigpTa->SetBinContent(2097,0.0240518); - ssigpTa->SetBinContent(2098,0.0231818); - ssigpTa->SetBinContent(2099,0.0228358); - ssigpTa->SetBinContent(2100,0.023043); - ssigpTa->SetBinContent(2101,0.0233606); - ssigpTa->SetBinContent(2102,0.023665); - ssigpTa->SetBinContent(2103,0.0238903); - ssigpTa->SetBinContent(2104,0.0238209); - ssigpTa->SetBinContent(2105,0.0228474); - ssigpTa->SetBinContent(2106,0.0209691); - ssigpTa->SetBinContent(2107,0.0200777); - ssigpTa->SetBinContent(2108,0.020182); - ssigpTa->SetBinContent(2109,0.0204938); - ssigpTa->SetBinContent(2110,0.0209121); - ssigpTa->SetBinContent(2111,0.0218188); - ssigpTa->SetBinContent(2112,0.0232123); - ssigpTa->SetBinContent(2113,0.0241323); - ssigpTa->SetBinContent(2114,0.024579); - ssigpTa->SetBinContent(2115,0.0249386); - ssigpTa->SetBinContent(2116,0.0253054); - ssigpTa->SetBinContent(2117,0.0256747); - ssigpTa->SetBinContent(2118,0.0260473); - ssigpTa->SetBinContent(2119,0.026339); - ssigpTa->SetBinContent(2120,0.026231); - ssigpTa->SetBinContent(2121,0.0257257); - ssigpTa->SetBinContent(2122,0.0256222); - ssigpTa->SetBinContent(2123,0.0260315); - ssigpTa->SetBinContent(2124,0.0270624); - ssigpTa->SetBinContent(2125,0.0286322); - ssigpTa->SetBinContent(2126,0.0296984); - ssigpTa->SetBinContent(2127,0.0302514); - ssigpTa->SetBinContent(2128,0.030699); - ssigpTa->SetBinContent(2129,0.0311517); - ssigpTa->SetBinContent(2130,0.0315207); - ssigpTa->SetBinContent(2131,0.0314769); - ssigpTa->SetBinContent(2132,0.0310206); - ssigpTa->SetBinContent(2133,0.0309825); - ssigpTa->SetBinContent(2134,0.0314934); - ssigpTa->SetBinContent(2135,0.0326776); - ssigpTa->SetBinContent(2136,0.0344494); - ssigpTa->SetBinContent(2137,0.035661); - ssigpTa->SetBinContent(2138,0.0362999); - ssigpTa->SetBinContent(2139,0.0368325); - ssigpTa->SetBinContent(2140,0.0373826); - ssigpTa->SetBinContent(2141,0.0379527); - ssigpTa->SetBinContent(2142,0.0382847); - ssigpTa->SetBinContent(2143,0.0373715); - ssigpTa->SetBinContent(2144,0.0351758); - ssigpTa->SetBinContent(2145,0.0342798); - ssigpTa->SetBinContent(2146,0.0351245); - ssigpTa->SetBinContent(2147,0.0367557); - ssigpTa->SetBinContent(2148,0.0379063); - ssigpTa->SetBinContent(2149,0.0385553); - ssigpTa->SetBinContent(2150,0.039098); - ssigpTa->SetBinContent(2151,0.0396423); - ssigpTa->SetBinContent(2152,0.0401839); - ssigpTa->SetBinContent(2153,0.040723); - ssigpTa->SetBinContent(2154,0.0412196); - ssigpTa->SetBinContent(2155,0.0416106); - ssigpTa->SetBinContent(2156,0.0423106); - ssigpTa->SetBinContent(2157,0.0437558); - ssigpTa->SetBinContent(2158,0.0449496); - ssigpTa->SetBinContent(2159,0.0456946); - ssigpTa->SetBinContent(2160,0.0463309); - ssigpTa->SetBinContent(2161,0.0469713); - ssigpTa->SetBinContent(2162,0.0476251); - ssigpTa->SetBinContent(2163,0.0482954); - ssigpTa->SetBinContent(2164,0.0489199); - ssigpTa->SetBinContent(2165,0.0492391); - ssigpTa->SetBinContent(2166,0.0492368); - ssigpTa->SetBinContent(2167,0.0495533); - ssigpTa->SetBinContent(2168,0.050055); - ssigpTa->SetBinContent(2169,0.0504712); - ssigpTa->SetBinContent(2170,0.0510339); - ssigpTa->SetBinContent(2171,0.0517386); - ssigpTa->SetBinContent(2172,0.0524694); - ssigpTa->SetBinContent(2173,0.0532199); - ssigpTa->SetBinContent(2174,0.0540271); - ssigpTa->SetBinContent(2175,0.0548781); - ssigpTa->SetBinContent(2176,0.0557416); - ssigpTa->SetBinContent(2177,0.0565994); - ssigpTa->SetBinContent(2178,0.0574602); - ssigpTa->SetBinContent(2179,0.0583298); - ssigpTa->SetBinContent(2180,0.0592098); - ssigpTa->SetBinContent(2181,0.0601038); - ssigpTa->SetBinContent(2182,0.0610051); - ssigpTa->SetBinContent(2183,0.0617923); - ssigpTa->SetBinContent(2184,0.062061); - ssigpTa->SetBinContent(2185,0.0618306); - ssigpTa->SetBinContent(2186,0.0621661); - ssigpTa->SetBinContent(2187,0.0630838); - ssigpTa->SetBinContent(2188,0.0641381); - ssigpTa->SetBinContent(2189,0.0652258); - ssigpTa->SetBinContent(2190,0.0659904); - ssigpTa->SetBinContent(2193,0.0105689); - ssigpTa->SetBinContent(2194,0.0105592); - ssigpTa->SetBinContent(2195,0.0105568); - ssigpTa->SetBinContent(2196,0.0105568); - ssigpTa->SetBinContent(2197,0.010557); - ssigpTa->SetBinContent(2198,0.010557); - ssigpTa->SetBinContent(2199,0.0105604); - ssigpTa->SetBinContent(2200,0.0105644); - ssigpTa->SetBinContent(2201,0.0105718); - ssigpTa->SetBinContent(2202,0.0105768); - ssigpTa->SetBinContent(2203,0.0105802); - ssigpTa->SetBinContent(2204,0.0105828); - ssigpTa->SetBinContent(2205,0.0105862); - ssigpTa->SetBinContent(2206,0.0105938); - ssigpTa->SetBinContent(2207,0.0106004); - ssigpTa->SetBinContent(2208,0.010607); - ssigpTa->SetBinContent(2209,0.0106162); - ssigpTa->SetBinContent(2210,0.0106246); - ssigpTa->SetBinContent(2211,0.0106352); - ssigpTa->SetBinContent(2212,0.0106436); - ssigpTa->SetBinContent(2213,0.0106544); - ssigpTa->SetBinContent(2214,0.0106644); - ssigpTa->SetBinContent(2215,0.0106754); - ssigpTa->SetBinContent(2216,0.0106838); - ssigpTa->SetBinContent(2217,0.0106946); - ssigpTa->SetBinContent(2218,0.0107088); - ssigpTa->SetBinContent(2219,0.0107212); - ssigpTa->SetBinContent(2220,0.0107338); - ssigpTa->SetBinContent(2221,0.0107464); - ssigpTa->SetBinContent(2222,0.0107598); - ssigpTa->SetBinContent(2223,0.0107772); - ssigpTa->SetBinContent(2224,0.010793); - ssigpTa->SetBinContent(2225,0.0108096); - ssigpTa->SetBinContent(2226,0.0108214); - ssigpTa->SetBinContent(2227,0.0108398); - ssigpTa->SetBinContent(2228,0.0108572); - ssigpTa->SetBinContent(2229,0.0108772); - ssigpTa->SetBinContent(2230,0.0108964); - ssigpTa->SetBinContent(2231,0.010913); - ssigpTa->SetBinContent(2232,0.0109338); - ssigpTa->SetBinContent(2233,0.010953); - ssigpTa->SetBinContent(2234,0.010974); - ssigpTa->SetBinContent(2235,0.0109932); - ssigpTa->SetBinContent(2236,0.011014); - ssigpTa->SetBinContent(2237,0.0110366); - ssigpTa->SetBinContent(2238,0.011059); - ssigpTa->SetBinContent(2239,0.0110808); - ssigpTa->SetBinContent(2240,0.0111066); - ssigpTa->SetBinContent(2241,0.0111308); - ssigpTa->SetBinContent(2242,0.011155); - ssigpTa->SetBinContent(2243,0.0111784); - ssigpTa->SetBinContent(2244,0.0112034); - ssigpTa->SetBinContent(2245,0.0112308); - ssigpTa->SetBinContent(2246,0.0112568); - ssigpTa->SetBinContent(2247,0.0112858); - ssigpTa->SetBinContent(2248,0.0113134); - ssigpTa->SetBinContent(2249,0.0113402); - ssigpTa->SetBinContent(2250,0.011371); - ssigpTa->SetBinContent(2251,0.0114002); - ssigpTa->SetBinContent(2252,0.0114302); - ssigpTa->SetBinContent(2253,0.0114602); - ssigpTa->SetBinContent(2254,0.0114926); - ssigpTa->SetBinContent(2255,0.011526); - ssigpTa->SetBinContent(2256,0.0115552); - ssigpTa->SetBinContent(2257,0.0115878); - ssigpTa->SetBinContent(2258,0.0116188); - ssigpTa->SetBinContent(2259,0.011653); - ssigpTa->SetBinContent(2260,0.011688); - ssigpTa->SetBinContent(2261,0.0117206); - ssigpTa->SetBinContent(2262,0.0117556); - ssigpTa->SetBinContent(2263,0.011793); - ssigpTa->SetBinContent(2264,0.0118322); - ssigpTa->SetBinContent(2265,0.011869); - ssigpTa->SetBinContent(2266,0.011908); - ssigpTa->SetBinContent(2267,0.0119472); - ssigpTa->SetBinContent(2268,0.0119872); - ssigpTa->SetBinContent(2269,0.0120272); - ssigpTa->SetBinContent(2270,0.0120674); - ssigpTa->SetBinContent(2271,0.0121082); - ssigpTa->SetBinContent(2272,0.01215); - ssigpTa->SetBinContent(2273,0.0121924); - ssigpTa->SetBinContent(2274,0.0122398); - ssigpTa->SetBinContent(2275,0.0122824); - ssigpTa->SetBinContent(2276,0.0123282); - ssigpTa->SetBinContent(2277,0.0123708); - ssigpTa->SetBinContent(2278,0.0124192); - ssigpTa->SetBinContent(2279,0.0124634); - ssigpTa->SetBinContent(2280,0.012511); - ssigpTa->SetBinContent(2281,0.0125584); - ssigpTa->SetBinContent(2282,0.0126084); - ssigpTa->SetBinContent(2283,0.0126592); - ssigpTa->SetBinContent(2284,0.0127078); - ssigpTa->SetBinContent(2285,0.0127586); - ssigpTa->SetBinContent(2286,0.012808); - ssigpTa->SetBinContent(2287,0.0128644); - ssigpTa->SetBinContent(2288,0.0129194); - ssigpTa->SetBinContent(2289,0.0129712); - ssigpTa->SetBinContent(2290,0.0130262); - ssigpTa->SetBinContent(2291,0.0130814); - ssigpTa->SetBinContent(2292,0.0131396); - ssigpTa->SetBinContent(2293,0.0132004); - ssigpTa->SetBinContent(2294,0.0132596); - ssigpTa->SetBinContent(2295,0.0133204); - ssigpTa->SetBinContent(2296,0.0133796); - ssigpTa->SetBinContent(2297,0.0134406); - ssigpTa->SetBinContent(2298,0.0136824); - ssigpTa->SetBinContent(2299,0.0148728); - ssigpTa->SetBinContent(2300,0.0170404); - ssigpTa->SetBinContent(2301,0.0182378); - ssigpTa->SetBinContent(2302,0.0184922); - ssigpTa->SetBinContent(2303,0.0185688); - ssigpTa->SetBinContent(2304,0.0186464); - ssigpTa->SetBinContent(2305,0.018725); - ssigpTa->SetBinContent(2306,0.0188026); - ssigpTa->SetBinContent(2307,0.0188836); - ssigpTa->SetBinContent(2308,0.018962); - ssigpTa->SetBinContent(2309,0.0188854); - ssigpTa->SetBinContent(2310,0.017985); - ssigpTa->SetBinContent(2311,0.0162774); - ssigpTa->SetBinContent(2312,0.0155096); - ssigpTa->SetBinContent(2313,0.015624); - ssigpTa->SetBinContent(2314,0.0159098); - ssigpTa->SetBinContent(2315,0.0161998); - ssigpTa->SetBinContent(2316,0.0164928); - ssigpTa->SetBinContent(2317,0.016787); - ssigpTa->SetBinContent(2318,0.0170188); - ssigpTa->SetBinContent(2319,0.0169014); - ssigpTa->SetBinContent(2320,0.016406); - ssigpTa->SetBinContent(2321,0.016155); - ssigpTa->SetBinContent(2322,0.0161296); - ssigpTa->SetBinContent(2323,0.0163022); - ssigpTa->SetBinContent(2324,0.0165952); - ssigpTa->SetBinContent(2325,0.0169058); - ssigpTa->SetBinContent(2326,0.0172192); - ssigpTa->SetBinContent(2327,0.0175358); - ssigpTa->SetBinContent(2328,0.0178584); - ssigpTa->SetBinContent(2329,0.0180792); - ssigpTa->SetBinContent(2330,0.0178076); - ssigpTa->SetBinContent(2331,0.0170452); - ssigpTa->SetBinContent(2332,0.016771); - ssigpTa->SetBinContent(2333,0.017); - ssigpTa->SetBinContent(2334,0.0173382); - ssigpTa->SetBinContent(2335,0.0176782); - ssigpTa->SetBinContent(2336,0.0180206); - ssigpTa->SetBinContent(2337,0.0183682); - ssigpTa->SetBinContent(2338,0.018723); - ssigpTa->SetBinContent(2339,0.0190812); - ssigpTa->SetBinContent(2340,0.0193678); - ssigpTa->SetBinContent(2341,0.0192786); - ssigpTa->SetBinContent(2342,0.0188018); - ssigpTa->SetBinContent(2343,0.0187082); - ssigpTa->SetBinContent(2344,0.0189916); - ssigpTa->SetBinContent(2345,0.019359); - ssigpTa->SetBinContent(2346,0.0197282); - ssigpTa->SetBinContent(2347,0.0201054); - ssigpTa->SetBinContent(2348,0.0204856); - ssigpTa->SetBinContent(2349,0.0208726); - ssigpTa->SetBinContent(2350,0.0212616); - ssigpTa->SetBinContent(2351,0.021654); - ssigpTa->SetBinContent(2352,0.0219888); - ssigpTa->SetBinContent(2353,0.0220006); - ssigpTa->SetBinContent(2354,0.0216828); - ssigpTa->SetBinContent(2355,0.0215594); - ssigpTa->SetBinContent(2356,0.021165); - ssigpTa->SetBinContent(2357,0.0202292); - ssigpTa->SetBinContent(2358,0.0198858); - ssigpTa->SetBinContent(2359,0.020138); - ssigpTa->SetBinContent(2360,0.0205292); - ssigpTa->SetBinContent(2361,0.020926); - ssigpTa->SetBinContent(2362,0.0213276); - ssigpTa->SetBinContent(2363,0.0217334); - ssigpTa->SetBinContent(2364,0.0221526); - ssigpTa->SetBinContent(2365,0.0225808); - ssigpTa->SetBinContent(2366,0.023056); - ssigpTa->SetBinContent(2367,0.023725); - ssigpTa->SetBinContent(2368,0.0245924); - ssigpTa->SetBinContent(2369,0.0252864); - ssigpTa->SetBinContent(2370,0.0256982); - ssigpTa->SetBinContent(2371,0.025552); - ssigpTa->SetBinContent(2372,0.0248712); - ssigpTa->SetBinContent(2373,0.0246626); - ssigpTa->SetBinContent(2374,0.0249464); - ssigpTa->SetBinContent(2375,0.025328); - ssigpTa->SetBinContent(2376,0.025679); - ssigpTa->SetBinContent(2377,0.0258558); - ssigpTa->SetBinContent(2378,0.0256062); - ssigpTa->SetBinContent(2379,0.0244462); - ssigpTa->SetBinContent(2380,0.02236); - ssigpTa->SetBinContent(2381,0.0213694); - ssigpTa->SetBinContent(2382,0.0214728); - ssigpTa->SetBinContent(2383,0.0218098); - ssigpTa->SetBinContent(2384,0.022236); - ssigpTa->SetBinContent(2385,0.02306); - ssigpTa->SetBinContent(2386,0.024277); - ssigpTa->SetBinContent(2387,0.02511); - ssigpTa->SetBinContent(2388,0.0255576); - ssigpTa->SetBinContent(2389,0.0259426); - ssigpTa->SetBinContent(2390,0.0263368); - ssigpTa->SetBinContent(2391,0.026734); - ssigpTa->SetBinContent(2392,0.027133); - ssigpTa->SetBinContent(2393,0.0274656); - ssigpTa->SetBinContent(2394,0.0274486); - ssigpTa->SetBinContent(2395,0.0270918); - ssigpTa->SetBinContent(2396,0.0270898); - ssigpTa->SetBinContent(2397,0.0275396); - ssigpTa->SetBinContent(2398,0.0285318); - ssigpTa->SetBinContent(2399,0.0299928); - ssigpTa->SetBinContent(2400,0.0310166); - ssigpTa->SetBinContent(2401,0.0315914); - ssigpTa->SetBinContent(2402,0.0320794); - ssigpTa->SetBinContent(2403,0.0325708); - ssigpTa->SetBinContent(2404,0.0329998); - ssigpTa->SetBinContent(2405,0.0330864); - ssigpTa->SetBinContent(2406,0.0328378); - ssigpTa->SetBinContent(2407,0.0329454); - ssigpTa->SetBinContent(2408,0.033514); - ssigpTa->SetBinContent(2409,0.0346748); - ssigpTa->SetBinContent(2410,0.0363372); - ssigpTa->SetBinContent(2411,0.0375142); - ssigpTa->SetBinContent(2412,0.038194); - ssigpTa->SetBinContent(2413,0.0387868); - ssigpTa->SetBinContent(2414,0.0394024); - ssigpTa->SetBinContent(2415,0.0400384); - ssigpTa->SetBinContent(2416,0.0404596); - ssigpTa->SetBinContent(2417,0.0397296); - ssigpTa->SetBinContent(2418,0.0378284); - ssigpTa->SetBinContent(2419,0.0371136); - ssigpTa->SetBinContent(2420,0.0380368); - ssigpTa->SetBinContent(2421,0.0396968); - ssigpTa->SetBinContent(2422,0.0408992); - ssigpTa->SetBinContent(2423,0.0416128); - ssigpTa->SetBinContent(2424,0.0422242); - ssigpTa->SetBinContent(2425,0.04284); - ssigpTa->SetBinContent(2426,0.0434556); - ssigpTa->SetBinContent(2427,0.0440708); - ssigpTa->SetBinContent(2428,0.0446514); - ssigpTa->SetBinContent(2429,0.045144); - ssigpTa->SetBinContent(2430,0.0459434); - ssigpTa->SetBinContent(2431,0.0474436); - ssigpTa->SetBinContent(2432,0.04871); - ssigpTa->SetBinContent(2433,0.0495388); - ssigpTa->SetBinContent(2434,0.050267); - ssigpTa->SetBinContent(2435,0.0509978); - ssigpTa->SetBinContent(2436,0.051744); - ssigpTa->SetBinContent(2437,0.0525082); - ssigpTa->SetBinContent(2438,0.0532426); - ssigpTa->SetBinContent(2439,0.0537144); - ssigpTa->SetBinContent(2440,0.0539188); - ssigpTa->SetBinContent(2441,0.0543858); - ssigpTa->SetBinContent(2442,0.0550092); - ssigpTa->SetBinContent(2443,0.0555508); - ssigpTa->SetBinContent(2444,0.05624); - ssigpTa->SetBinContent(2445,0.0570726); - ssigpTa->SetBinContent(2446,0.057936); - ssigpTa->SetBinContent(2447,0.0588268); - ssigpTa->SetBinContent(2448,0.0597854); - ssigpTa->SetBinContent(2449,0.060796); - ssigpTa->SetBinContent(2450,0.0618174); - ssigpTa->SetBinContent(2451,0.062838); - ssigpTa->SetBinContent(2452,0.0638658); - ssigpTa->SetBinContent(2453,0.0649152); - ssigpTa->SetBinContent(2454,0.0659828); - ssigpTa->SetBinContent(2455,0.0670678); - ssigpTa->SetBinContent(2456,0.0681546); - ssigpTa->SetBinContent(2457,0.0691648); - ssigpTa->SetBinContent(2458,0.0697766); - ssigpTa->SetBinContent(2459,0.070027); - ssigpTa->SetBinContent(2460,0.0707496); - ssigpTa->SetBinContent(2461,0.0719462); - ssigpTa->SetBinContent(2462,0.0732532); - ssigpTa->SetBinContent(2463,0.0745431); - ssigpTa->SetBinContent(2464,0.0755447); - ssigpTa->SetBinContent(2467,0.0116561); - ssigpTa->SetBinContent(2468,0.0116521); - ssigpTa->SetBinContent(2469,0.0116492); - ssigpTa->SetBinContent(2470,0.0116492); - ssigpTa->SetBinContent(2471,0.0116492); - ssigpTa->SetBinContent(2472,0.0116504); - ssigpTa->SetBinContent(2473,0.0116528); - ssigpTa->SetBinContent(2474,0.0116624); - ssigpTa->SetBinContent(2475,0.0116696); - ssigpTa->SetBinContent(2476,0.011676); - ssigpTa->SetBinContent(2477,0.0116776); - ssigpTa->SetBinContent(2478,0.011678); - ssigpTa->SetBinContent(2479,0.0116808); - ssigpTa->SetBinContent(2480,0.0116852); - ssigpTa->SetBinContent(2481,0.0116928); - ssigpTa->SetBinContent(2482,0.0117004); - ssigpTa->SetBinContent(2483,0.01171); - ssigpTa->SetBinContent(2484,0.0117192); - ssigpTa->SetBinContent(2485,0.0117272); - ssigpTa->SetBinContent(2486,0.0117344); - ssigpTa->SetBinContent(2487,0.0117432); - ssigpTa->SetBinContent(2488,0.011756); - ssigpTa->SetBinContent(2489,0.0117668); - ssigpTa->SetBinContent(2490,0.011774); - ssigpTa->SetBinContent(2491,0.0117864); - ssigpTa->SetBinContent(2492,0.011798); - ssigpTa->SetBinContent(2493,0.0118124); - ssigpTa->SetBinContent(2494,0.0118248); - ssigpTa->SetBinContent(2495,0.0118352); - ssigpTa->SetBinContent(2496,0.0118496); - ssigpTa->SetBinContent(2497,0.0118628); - ssigpTa->SetBinContent(2498,0.011882); - ssigpTa->SetBinContent(2499,0.0118936); - ssigpTa->SetBinContent(2500,0.0119092); - ssigpTa->SetBinContent(2501,0.0119224); - ssigpTa->SetBinContent(2502,0.0119456); - ssigpTa->SetBinContent(2503,0.011964); - ssigpTa->SetBinContent(2504,0.0119788); - ssigpTa->SetBinContent(2505,0.011998); - ssigpTa->SetBinContent(2506,0.0120128); - ssigpTa->SetBinContent(2507,0.0120344); - ssigpTa->SetBinContent(2508,0.0120548); - ssigpTa->SetBinContent(2509,0.012074); - ssigpTa->SetBinContent(2510,0.0120936); - ssigpTa->SetBinContent(2511,0.0121184); - ssigpTa->SetBinContent(2512,0.0121384); - ssigpTa->SetBinContent(2513,0.0121612); - ssigpTa->SetBinContent(2514,0.0121824); - ssigpTa->SetBinContent(2515,0.0122072); - ssigpTa->SetBinContent(2516,0.012232); - ssigpTa->SetBinContent(2517,0.0122532); - ssigpTa->SetBinContent(2518,0.0122796); - ssigpTa->SetBinContent(2519,0.0123024); - ssigpTa->SetBinContent(2520,0.0123316); - ssigpTa->SetBinContent(2521,0.0123584); - ssigpTa->SetBinContent(2522,0.0123876); - ssigpTa->SetBinContent(2523,0.0124148); - ssigpTa->SetBinContent(2524,0.012444); - ssigpTa->SetBinContent(2525,0.0124728); - ssigpTa->SetBinContent(2526,0.012502); - ssigpTa->SetBinContent(2527,0.0125308); - ssigpTa->SetBinContent(2528,0.0125648); - ssigpTa->SetBinContent(2529,0.0125936); - ssigpTa->SetBinContent(2530,0.0126248); - ssigpTa->SetBinContent(2531,0.012654); - ssigpTa->SetBinContent(2532,0.012686); - ssigpTa->SetBinContent(2533,0.0127204); - ssigpTa->SetBinContent(2534,0.0127508); - ssigpTa->SetBinContent(2535,0.0127832); - ssigpTa->SetBinContent(2536,0.0128164); - ssigpTa->SetBinContent(2537,0.0128548); - ssigpTa->SetBinContent(2538,0.0128932); - ssigpTa->SetBinContent(2539,0.0129316); - ssigpTa->SetBinContent(2540,0.0129676); - ssigpTa->SetBinContent(2541,0.0130096); - ssigpTa->SetBinContent(2542,0.0130492); - ssigpTa->SetBinContent(2543,0.0130868); - ssigpTa->SetBinContent(2544,0.0131288); - ssigpTa->SetBinContent(2545,0.0131684); - ssigpTa->SetBinContent(2546,0.0132084); - ssigpTa->SetBinContent(2547,0.0132532); - ssigpTa->SetBinContent(2548,0.0132936); - ssigpTa->SetBinContent(2549,0.01334); - ssigpTa->SetBinContent(2550,0.0133808); - ssigpTa->SetBinContent(2551,0.0134272); - ssigpTa->SetBinContent(2552,0.0134696); - ssigpTa->SetBinContent(2553,0.013514); - ssigpTa->SetBinContent(2554,0.0135568); - ssigpTa->SetBinContent(2555,0.0136064); - ssigpTa->SetBinContent(2556,0.0136552); - ssigpTa->SetBinContent(2557,0.013706); - ssigpTa->SetBinContent(2558,0.0137552); - ssigpTa->SetBinContent(2559,0.0138004); - ssigpTa->SetBinContent(2560,0.013854); - ssigpTa->SetBinContent(2561,0.0139088); - ssigpTa->SetBinContent(2562,0.013964); - ssigpTa->SetBinContent(2563,0.0140176); - ssigpTa->SetBinContent(2564,0.014068); - ssigpTa->SetBinContent(2565,0.0141232); - ssigpTa->SetBinContent(2566,0.01418); - ssigpTa->SetBinContent(2567,0.014238); - ssigpTa->SetBinContent(2568,0.0142992); - ssigpTa->SetBinContent(2569,0.0143572); - ssigpTa->SetBinContent(2570,0.0144204); - ssigpTa->SetBinContent(2571,0.0144784); - ssigpTa->SetBinContent(2572,0.0147568); - ssigpTa->SetBinContent(2573,0.0161484); - ssigpTa->SetBinContent(2574,0.0186852); - ssigpTa->SetBinContent(2575,0.0200852); - ssigpTa->SetBinContent(2576,0.0203712); - ssigpTa->SetBinContent(2577,0.0204416); - ssigpTa->SetBinContent(2578,0.0205176); - ssigpTa->SetBinContent(2579,0.0205892); - ssigpTa->SetBinContent(2580,0.0206644); - ssigpTa->SetBinContent(2581,0.0207412); - ssigpTa->SetBinContent(2582,0.02082); - ssigpTa->SetBinContent(2583,0.0207076); - ssigpTa->SetBinContent(2584,0.0196416); - ssigpTa->SetBinContent(2585,0.0176312); - ssigpTa->SetBinContent(2586,0.0167192); - ssigpTa->SetBinContent(2587,0.0168344); - ssigpTa->SetBinContent(2588,0.017156); - ssigpTa->SetBinContent(2589,0.0174804); - ssigpTa->SetBinContent(2590,0.0178028); - ssigpTa->SetBinContent(2591,0.0181328); - ssigpTa->SetBinContent(2592,0.0183824); - ssigpTa->SetBinContent(2593,0.0182072); - ssigpTa->SetBinContent(2594,0.0175964); - ssigpTa->SetBinContent(2595,0.0173444); - ssigpTa->SetBinContent(2596,0.017446); - ssigpTa->SetBinContent(2597,0.0177044); - ssigpTa->SetBinContent(2598,0.018022); - ssigpTa->SetBinContent(2599,0.018354); - ssigpTa->SetBinContent(2600,0.0186892); - ssigpTa->SetBinContent(2601,0.0190288); - ssigpTa->SetBinContent(2602,0.0193708); - ssigpTa->SetBinContent(2603,0.0196124); - ssigpTa->SetBinContent(2604,0.0192912); - ssigpTa->SetBinContent(2605,0.0184052); - ssigpTa->SetBinContent(2606,0.0180776); - ssigpTa->SetBinContent(2607,0.01832); - ssigpTa->SetBinContent(2608,0.01868); - ssigpTa->SetBinContent(2609,0.0190468); - ssigpTa->SetBinContent(2610,0.0194128); - ssigpTa->SetBinContent(2611,0.0197852); - ssigpTa->SetBinContent(2612,0.020164); - ssigpTa->SetBinContent(2613,0.0205488); - ssigpTa->SetBinContent(2614,0.0208408); - ssigpTa->SetBinContent(2615,0.0206732); - ssigpTa->SetBinContent(2616,0.020034); - ssigpTa->SetBinContent(2617,0.0198608); - ssigpTa->SetBinContent(2618,0.0201584); - ssigpTa->SetBinContent(2619,0.0205528); - ssigpTa->SetBinContent(2620,0.0209552); - ssigpTa->SetBinContent(2621,0.0213616); - ssigpTa->SetBinContent(2622,0.0217744); - ssigpTa->SetBinContent(2623,0.0221936); - ssigpTa->SetBinContent(2624,0.0226156); - ssigpTa->SetBinContent(2625,0.0230424); - ssigpTa->SetBinContent(2626,0.0233956); - ssigpTa->SetBinContent(2627,0.0233652); - ssigpTa->SetBinContent(2628,0.022926); - ssigpTa->SetBinContent(2629,0.0227556); - ssigpTa->SetBinContent(2630,0.0223308); - ssigpTa->SetBinContent(2631,0.0213608); - ssigpTa->SetBinContent(2632,0.0209964); - ssigpTa->SetBinContent(2633,0.0212784); - ssigpTa->SetBinContent(2634,0.0217004); - ssigpTa->SetBinContent(2635,0.0221348); - ssigpTa->SetBinContent(2636,0.0225712); - ssigpTa->SetBinContent(2637,0.0230172); - ssigpTa->SetBinContent(2638,0.0234708); - ssigpTa->SetBinContent(2639,0.0239392); - ssigpTa->SetBinContent(2640,0.0244512); - ssigpTa->SetBinContent(2641,0.0251556); - ssigpTa->SetBinContent(2642,0.0260444); - ssigpTa->SetBinContent(2643,0.0267704); - ssigpTa->SetBinContent(2644,0.0272304); - ssigpTa->SetBinContent(2645,0.0272056); - ssigpTa->SetBinContent(2646,0.0267148); - ssigpTa->SetBinContent(2647,0.0266436); - ssigpTa->SetBinContent(2648,0.027008); - ssigpTa->SetBinContent(2649,0.0274596); - ssigpTa->SetBinContent(2650,0.0278524); - ssigpTa->SetBinContent(2651,0.0279328); - ssigpTa->SetBinContent(2652,0.0274424); - ssigpTa->SetBinContent(2653,0.0261312); - ssigpTa->SetBinContent(2654,0.023996); - ssigpTa->SetBinContent(2655,0.0229996); - ssigpTa->SetBinContent(2656,0.023132); - ssigpTa->SetBinContent(2657,0.0235072); - ssigpTa->SetBinContent(2658,0.0239488); - ssigpTa->SetBinContent(2659,0.0247); - ssigpTa->SetBinContent(2660,0.0257588); - ssigpTa->SetBinContent(2661,0.0265144); - ssigpTa->SetBinContent(2662,0.02698); - ssigpTa->SetBinContent(2663,0.0274012); - ssigpTa->SetBinContent(2664,0.0278364); - ssigpTa->SetBinContent(2665,0.028272); - ssigpTa->SetBinContent(2666,0.0287116); - ssigpTa->SetBinContent(2667,0.0290948); - ssigpTa->SetBinContent(2668,0.0291968); - ssigpTa->SetBinContent(2669,0.0290196); - ssigpTa->SetBinContent(2670,0.0291476); - ssigpTa->SetBinContent(2671,0.0296516); - ssigpTa->SetBinContent(2672,0.030598); - ssigpTa->SetBinContent(2673,0.0319304); - ssigpTa->SetBinContent(2674,0.0329044); - ssigpTa->SetBinContent(2675,0.0335176); - ssigpTa->SetBinContent(2676,0.0340648); - ssigpTa->SetBinContent(2677,0.0346168); - ssigpTa->SetBinContent(2678,0.0351224); - ssigpTa->SetBinContent(2679,0.0353648); - ssigpTa->SetBinContent(2680,0.0353512); - ssigpTa->SetBinContent(2681,0.0356228); - ssigpTa->SetBinContent(2682,0.036272); - ssigpTa->SetBinContent(2683,0.037394); - ssigpTa->SetBinContent(2684,0.0389276); - ssigpTa->SetBinContent(2685,0.0400636); - ssigpTa->SetBinContent(2686,0.0408036); - ssigpTa->SetBinContent(2687,0.0414808); - ssigpTa->SetBinContent(2688,0.0421808); - ssigpTa->SetBinContent(2689,0.0429068); - ssigpTa->SetBinContent(2690,0.043444); - ssigpTa->SetBinContent(2691,0.0429548); - ssigpTa->SetBinContent(2692,0.0414104); - ssigpTa->SetBinContent(2693,0.0409328); - ssigpTa->SetBinContent(2694,0.0418968); - ssigpTa->SetBinContent(2695,0.0435064); - ssigpTa->SetBinContent(2696,0.0447256); - ssigpTa->SetBinContent(2697,0.0455252); - ssigpTa->SetBinContent(2698,0.0462516); - ssigpTa->SetBinContent(2699,0.04698); - ssigpTa->SetBinContent(2700,0.0477164); - ssigpTa->SetBinContent(2701,0.0484532); - ssigpTa->SetBinContent(2702,0.0491644); - ssigpTa->SetBinContent(2703,0.0498036); - ssigpTa->SetBinContent(2704,0.0507136); - ssigpTa->SetBinContent(2705,0.0522444); - ssigpTa->SetBinContent(2706,0.0535696); - ssigpTa->SetBinContent(2707,0.0545268); - ssigpTa->SetBinContent(2708,0.0553944); - ssigpTa->SetBinContent(2709,0.0562728); - ssigpTa->SetBinContent(2710,0.0571652); - ssigpTa->SetBinContent(2711,0.058084); - ssigpTa->SetBinContent(2712,0.058988); - ssigpTa->SetBinContent(2713,0.0596852); - ssigpTa->SetBinContent(2714,0.0601592); - ssigpTa->SetBinContent(2715,0.060866); - ssigpTa->SetBinContent(2716,0.0616968); - ssigpTa->SetBinContent(2717,0.0624648); - ssigpTa->SetBinContent(2718,0.0633684); - ssigpTa->SetBinContent(2719,0.0644116); - ssigpTa->SetBinContent(2720,0.0654828); - ssigpTa->SetBinContent(2721,0.066592); - ssigpTa->SetBinContent(2722,0.0677824); - ssigpTa->SetBinContent(2723,0.0690388); - ssigpTa->SetBinContent(2724,0.0703116); - ssigpTa->SetBinContent(2725,0.0715832); - ssigpTa->SetBinContent(2726,0.0728716); - ssigpTa->SetBinContent(2727,0.07419); - ssigpTa->SetBinContent(2728,0.0755392); - ssigpTa->SetBinContent(2729,0.076908); - ssigpTa->SetBinContent(2730,0.0782864); - ssigpTa->SetBinContent(2731,0.0796244); - ssigpTa->SetBinContent(2732,0.0807492); - ssigpTa->SetBinContent(2733,0.0816836); - ssigpTa->SetBinContent(2734,0.0829608); - ssigpTa->SetBinContent(2735,0.084564); - ssigpTa->SetBinContent(2736,0.0862444); - ssigpTa->SetBinContent(2737,0.0878608); - ssigpTa->SetBinContent(2738,0.0890528); - ssigpTa->SetBinContent(2741,0.0129211); - ssigpTa->SetBinContent(2742,0.0129175); - ssigpTa->SetBinContent(2743,0.0129144); - ssigpTa->SetBinContent(2744,0.0129144); - ssigpTa->SetBinContent(2745,0.0129144); - ssigpTa->SetBinContent(2746,0.0129144); - ssigpTa->SetBinContent(2747,0.0129184); - ssigpTa->SetBinContent(2748,0.012924); - ssigpTa->SetBinContent(2749,0.0129344); - ssigpTa->SetBinContent(2750,0.0129384); - ssigpTa->SetBinContent(2751,0.01294); - ssigpTa->SetBinContent(2752,0.01294); - ssigpTa->SetBinContent(2753,0.01294); - ssigpTa->SetBinContent(2754,0.0129432); - ssigpTa->SetBinContent(2755,0.0129496); - ssigpTa->SetBinContent(2756,0.0129592); - ssigpTa->SetBinContent(2757,0.012972); - ssigpTa->SetBinContent(2758,0.0129816); - ssigpTa->SetBinContent(2759,0.0129864); - ssigpTa->SetBinContent(2760,0.0129904); - ssigpTa->SetBinContent(2761,0.0129968); - ssigpTa->SetBinContent(2762,0.0130112); - ssigpTa->SetBinContent(2763,0.0130216); - ssigpTa->SetBinContent(2764,0.0130336); - ssigpTa->SetBinContent(2765,0.01304); - ssigpTa->SetBinContent(2766,0.0130528); - ssigpTa->SetBinContent(2767,0.0130648); - ssigpTa->SetBinContent(2768,0.0130768); - ssigpTa->SetBinContent(2769,0.0130912); - ssigpTa->SetBinContent(2770,0.0131016); - ssigpTa->SetBinContent(2771,0.013116); - ssigpTa->SetBinContent(2772,0.0131312); - ssigpTa->SetBinContent(2773,0.0131456); - ssigpTa->SetBinContent(2774,0.0131528); - ssigpTa->SetBinContent(2775,0.0131744); - ssigpTa->SetBinContent(2776,0.0131904); - ssigpTa->SetBinContent(2777,0.0132096); - ssigpTa->SetBinContent(2778,0.013224); - ssigpTa->SetBinContent(2779,0.0132384); - ssigpTa->SetBinContent(2780,0.0132576); - ssigpTa->SetBinContent(2781,0.0132736); - ssigpTa->SetBinContent(2782,0.0132944); - ssigpTa->SetBinContent(2783,0.0133128); - ssigpTa->SetBinContent(2784,0.0133336); - ssigpTa->SetBinContent(2785,0.013352); - ssigpTa->SetBinContent(2786,0.0133792); - ssigpTa->SetBinContent(2787,0.0133952); - ssigpTa->SetBinContent(2788,0.0134168); - ssigpTa->SetBinContent(2789,0.0134392); - ssigpTa->SetBinContent(2790,0.0134616); - ssigpTa->SetBinContent(2791,0.013488); - ssigpTa->SetBinContent(2792,0.0135088); - ssigpTa->SetBinContent(2793,0.013536); - ssigpTa->SetBinContent(2794,0.013556); - ssigpTa->SetBinContent(2795,0.013588); - ssigpTa->SetBinContent(2796,0.0136128); - ssigpTa->SetBinContent(2797,0.0136408); - ssigpTa->SetBinContent(2798,0.0136664); - ssigpTa->SetBinContent(2799,0.0136952); - ssigpTa->SetBinContent(2800,0.01372); - ssigpTa->SetBinContent(2801,0.0137504); - ssigpTa->SetBinContent(2802,0.01378); - ssigpTa->SetBinContent(2803,0.0138112); - ssigpTa->SetBinContent(2804,0.0138392); - ssigpTa->SetBinContent(2805,0.0138704); - ssigpTa->SetBinContent(2806,0.0139048); - ssigpTa->SetBinContent(2807,0.0139336); - ssigpTa->SetBinContent(2808,0.0139648); - ssigpTa->SetBinContent(2809,0.0139936); - ssigpTa->SetBinContent(2810,0.0140264); - ssigpTa->SetBinContent(2811,0.014064); - ssigpTa->SetBinContent(2812,0.0141032); - ssigpTa->SetBinContent(2813,0.0141376); - ssigpTa->SetBinContent(2814,0.0141768); - ssigpTa->SetBinContent(2815,0.0142136); - ssigpTa->SetBinContent(2816,0.0142528); - ssigpTa->SetBinContent(2817,0.0142896); - ssigpTa->SetBinContent(2818,0.0143288); - ssigpTa->SetBinContent(2819,0.014372); - ssigpTa->SetBinContent(2820,0.0144128); - ssigpTa->SetBinContent(2821,0.014452); - ssigpTa->SetBinContent(2822,0.014492); - ssigpTa->SetBinContent(2823,0.0145312); - ssigpTa->SetBinContent(2824,0.0145768); - ssigpTa->SetBinContent(2825,0.0146176); - ssigpTa->SetBinContent(2826,0.01466); - ssigpTa->SetBinContent(2827,0.0146992); - ssigpTa->SetBinContent(2828,0.01474); - ssigpTa->SetBinContent(2829,0.0147872); - ssigpTa->SetBinContent(2830,0.0148408); - ssigpTa->SetBinContent(2831,0.0148904); - ssigpTa->SetBinContent(2832,0.0149352); - ssigpTa->SetBinContent(2833,0.0149832); - ssigpTa->SetBinContent(2834,0.015032); - ssigpTa->SetBinContent(2835,0.0150888); - ssigpTa->SetBinContent(2836,0.01514); - ssigpTa->SetBinContent(2837,0.0151904); - ssigpTa->SetBinContent(2838,0.0152448); - ssigpTa->SetBinContent(2839,0.015296); - ssigpTa->SetBinContent(2840,0.0153496); - ssigpTa->SetBinContent(2841,0.015408); - ssigpTa->SetBinContent(2842,0.0154632); - ssigpTa->SetBinContent(2843,0.0155272); - ssigpTa->SetBinContent(2844,0.0155864); - ssigpTa->SetBinContent(2845,0.015648); - ssigpTa->SetBinContent(2846,0.0159704); - ssigpTa->SetBinContent(2847,0.0176472); - ssigpTa->SetBinContent(2848,0.0206952); - ssigpTa->SetBinContent(2849,0.0223784); - ssigpTa->SetBinContent(2850,0.0227096); - ssigpTa->SetBinContent(2851,0.0227784); - ssigpTa->SetBinContent(2852,0.0228472); - ssigpTa->SetBinContent(2853,0.0229152); - ssigpTa->SetBinContent(2854,0.0229856); - ssigpTa->SetBinContent(2855,0.02306); - ssigpTa->SetBinContent(2856,0.0231336); - ssigpTa->SetBinContent(2857,0.02298); - ssigpTa->SetBinContent(2858,0.0216608); - ssigpTa->SetBinContent(2859,0.0192192); - ssigpTa->SetBinContent(2860,0.0180824); - ssigpTa->SetBinContent(2861,0.0181952); - ssigpTa->SetBinContent(2862,0.0185528); - ssigpTa->SetBinContent(2863,0.0189152); - ssigpTa->SetBinContent(2864,0.0192792); - ssigpTa->SetBinContent(2865,0.0196464); - ssigpTa->SetBinContent(2866,0.0199184); - ssigpTa->SetBinContent(2867,0.019688); - ssigpTa->SetBinContent(2868,0.0189272); - ssigpTa->SetBinContent(2869,0.0186384); - ssigpTa->SetBinContent(2870,0.0188064); - ssigpTa->SetBinContent(2871,0.0191144); - ssigpTa->SetBinContent(2872,0.0194632); - ssigpTa->SetBinContent(2873,0.019828); - ssigpTa->SetBinContent(2874,0.0201984); - ssigpTa->SetBinContent(2875,0.0205688); - ssigpTa->SetBinContent(2876,0.0209504); - ssigpTa->SetBinContent(2877,0.0212112); - ssigpTa->SetBinContent(2878,0.0208504); - ssigpTa->SetBinContent(2879,0.0198376); - ssigpTa->SetBinContent(2880,0.0194552); - ssigpTa->SetBinContent(2881,0.0197056); - ssigpTa->SetBinContent(2882,0.020096); - ssigpTa->SetBinContent(2883,0.0204896); - ssigpTa->SetBinContent(2884,0.0208888); - ssigpTa->SetBinContent(2885,0.0212904); - ssigpTa->SetBinContent(2886,0.0217008); - ssigpTa->SetBinContent(2887,0.0221128); - ssigpTa->SetBinContent(2888,0.0224256); - ssigpTa->SetBinContent(2889,0.0221728); - ssigpTa->SetBinContent(2890,0.021352); - ssigpTa->SetBinContent(2891,0.0210928); - ssigpTa->SetBinContent(2892,0.0214008); - ssigpTa->SetBinContent(2893,0.0218232); - ssigpTa->SetBinContent(2894,0.0222576); - ssigpTa->SetBinContent(2895,0.0226944); - ssigpTa->SetBinContent(2896,0.0231408); - ssigpTa->SetBinContent(2897,0.023592); - ssigpTa->SetBinContent(2898,0.0240528); - ssigpTa->SetBinContent(2899,0.0245128); - ssigpTa->SetBinContent(2900,0.0248912); - ssigpTa->SetBinContent(2901,0.024792); - ssigpTa->SetBinContent(2902,0.024204); - ssigpTa->SetBinContent(2903,0.0239632); - ssigpTa->SetBinContent(2904,0.0235752); - ssigpTa->SetBinContent(2905,0.022644); - ssigpTa->SetBinContent(2906,0.0223304); - ssigpTa->SetBinContent(2907,0.0226456); - ssigpTa->SetBinContent(2908,0.0231048); - ssigpTa->SetBinContent(2909,0.0235744); - ssigpTa->SetBinContent(2910,0.0240512); - ssigpTa->SetBinContent(2911,0.0245312); - ssigpTa->SetBinContent(2912,0.0250264); - ssigpTa->SetBinContent(2913,0.0255344); - ssigpTa->SetBinContent(2914,0.026084); - ssigpTa->SetBinContent(2915,0.0267936); - ssigpTa->SetBinContent(2916,0.0276592); - ssigpTa->SetBinContent(2917,0.0283824); - ssigpTa->SetBinContent(2918,0.0288856); - ssigpTa->SetBinContent(2919,0.0289744); - ssigpTa->SetBinContent(2920,0.0286608); - ssigpTa->SetBinContent(2921,0.02872); - ssigpTa->SetBinContent(2922,0.029164); - ssigpTa->SetBinContent(2923,0.0296864); - ssigpTa->SetBinContent(2924,0.0301176); - ssigpTa->SetBinContent(2925,0.0300488); - ssigpTa->SetBinContent(2926,0.02924); - ssigpTa->SetBinContent(2927,0.027812); - ssigpTa->SetBinContent(2928,0.0257592); - ssigpTa->SetBinContent(2929,0.0248496); - ssigpTa->SetBinContent(2930,0.02504); - ssigpTa->SetBinContent(2931,0.0254536); - ssigpTa->SetBinContent(2932,0.0259312); - ssigpTa->SetBinContent(2933,0.026632); - ssigpTa->SetBinContent(2934,0.0275624); - ssigpTa->SetBinContent(2935,0.0282712); - ssigpTa->SetBinContent(2936,0.0287672); - ssigpTa->SetBinContent(2937,0.0292376); - ssigpTa->SetBinContent(2938,0.0297184); - ssigpTa->SetBinContent(2939,0.0302064); - ssigpTa->SetBinContent(2940,0.0306968); - ssigpTa->SetBinContent(2941,0.031148); - ssigpTa->SetBinContent(2942,0.0313872); - ssigpTa->SetBinContent(2943,0.0314216); - ssigpTa->SetBinContent(2944,0.0316992); - ssigpTa->SetBinContent(2945,0.032272); - ssigpTa->SetBinContent(2946,0.03318); - ssigpTa->SetBinContent(2947,0.0343824); - ssigpTa->SetBinContent(2948,0.0353112); - ssigpTa->SetBinContent(2949,0.0359792); - ssigpTa->SetBinContent(2950,0.0366); - ssigpTa->SetBinContent(2951,0.0372304); - ssigpTa->SetBinContent(2952,0.0378296); - ssigpTa->SetBinContent(2953,0.0382472); - ssigpTa->SetBinContent(2954,0.0384856); - ssigpTa->SetBinContent(2955,0.0389464); - ssigpTa->SetBinContent(2956,0.0396848); - ssigpTa->SetBinContent(2957,0.0407776); - ssigpTa->SetBinContent(2958,0.0421672); - ssigpTa->SetBinContent(2959,0.0432664); - ssigpTa->SetBinContent(2960,0.0440856); - ssigpTa->SetBinContent(2961,0.0448592); - ssigpTa->SetBinContent(2962,0.0456648); - ssigpTa->SetBinContent(2963,0.0464944); - ssigpTa->SetBinContent(2964,0.0471656); - ssigpTa->SetBinContent(2965,0.0469496); - ssigpTa->SetBinContent(2966,0.0458208); - ssigpTa->SetBinContent(2967,0.0456072); - ssigpTa->SetBinContent(2968,0.0466008); - ssigpTa->SetBinContent(2969,0.0481024); - ssigpTa->SetBinContent(2970,0.0493144); - ssigpTa->SetBinContent(2971,0.050236); - ssigpTa->SetBinContent(2972,0.0510984); - ssigpTa->SetBinContent(2973,0.0519792); - ssigpTa->SetBinContent(2974,0.052864); - ssigpTa->SetBinContent(2975,0.0537552); - ssigpTa->SetBinContent(2976,0.054628); - ssigpTa->SetBinContent(2977,0.0554464); - ssigpTa->SetBinContent(2978,0.0564784); - ssigpTa->SetBinContent(2979,0.0580048); - ssigpTa->SetBinContent(2980,0.059392); - ssigpTa->SetBinContent(2981,0.0605); - ssigpTa->SetBinContent(2982,0.0615512); - ssigpTa->SetBinContent(2983,0.062612); - ssigpTa->SetBinContent(2984,0.0636936); - ssigpTa->SetBinContent(2985,0.0648064); - ssigpTa->SetBinContent(2986,0.0659264); - ssigpTa->SetBinContent(2987,0.0668928); - ssigpTa->SetBinContent(2988,0.0676896); - ssigpTa->SetBinContent(2989,0.068684); - ssigpTa->SetBinContent(2990,0.0697888); - ssigpTa->SetBinContent(2991,0.0708456); - ssigpTa->SetBinContent(2992,0.0720296); - ssigpTa->SetBinContent(2993,0.0733312); - ssigpTa->SetBinContent(2994,0.07466); - ssigpTa->SetBinContent(2995,0.076032); - ssigpTa->SetBinContent(2996,0.0775088); - ssigpTa->SetBinContent(2997,0.0790584); - ssigpTa->SetBinContent(2998,0.0806376); - ssigpTa->SetBinContent(2999,0.0822208); - ssigpTa->SetBinContent(3000,0.0838232); - ssigpTa->SetBinContent(3001,0.085468); - ssigpTa->SetBinContent(3002,0.0871544); - ssigpTa->SetBinContent(3003,0.088868); - ssigpTa->SetBinContent(3004,0.0905888); - ssigpTa->SetBinContent(3005,0.09232); - ssigpTa->SetBinContent(3006,0.0940224); - ssigpTa->SetBinContent(3007,0.095724); - ssigpTa->SetBinContent(3008,0.0976352); - ssigpTa->SetBinContent(3009,0.0997); - ssigpTa->SetBinContent(3010,0.101825); - ssigpTa->SetBinContent(3011,0.103833); - ssigpTa->SetBinContent(3012,0.105288); - ssigpTa->SetBinContent(3015,0.0143444); - ssigpTa->SetBinContent(3016,0.01434); - ssigpTa->SetBinContent(3017,0.0143384); - ssigpTa->SetBinContent(3018,0.0143384); - ssigpTa->SetBinContent(3019,0.0143384); - ssigpTa->SetBinContent(3020,0.0143384); - ssigpTa->SetBinContent(3021,0.0143384); - ssigpTa->SetBinContent(3022,0.0143428); - ssigpTa->SetBinContent(3023,0.014346); - ssigpTa->SetBinContent(3024,0.0143492); - ssigpTa->SetBinContent(3025,0.0143492); - ssigpTa->SetBinContent(3026,0.0143492); - ssigpTa->SetBinContent(3027,0.0143492); - ssigpTa->SetBinContent(3028,0.014354); - ssigpTa->SetBinContent(3029,0.014362); - ssigpTa->SetBinContent(3030,0.014374); - ssigpTa->SetBinContent(3031,0.0143872); - ssigpTa->SetBinContent(3032,0.0143972); - ssigpTa->SetBinContent(3033,0.0144004); - ssigpTa->SetBinContent(3034,0.0144004); - ssigpTa->SetBinContent(3035,0.0144056); - ssigpTa->SetBinContent(3036,0.014414); - ssigpTa->SetBinContent(3037,0.014432); - ssigpTa->SetBinContent(3038,0.0144408); - ssigpTa->SetBinContent(3039,0.014452); - ssigpTa->SetBinContent(3040,0.0144572); - ssigpTa->SetBinContent(3041,0.0144684); - ssigpTa->SetBinContent(3042,0.0144816); - ssigpTa->SetBinContent(3043,0.0144936); - ssigpTa->SetBinContent(3044,0.0145068); - ssigpTa->SetBinContent(3045,0.0145188); - ssigpTa->SetBinContent(3046,0.0145332); - ssigpTa->SetBinContent(3047,0.0145432); - ssigpTa->SetBinContent(3048,0.0145564); - ssigpTa->SetBinContent(3049,0.0145684); - ssigpTa->SetBinContent(3050,0.0145908); - ssigpTa->SetBinContent(3051,0.0146012); - ssigpTa->SetBinContent(3052,0.014618); - ssigpTa->SetBinContent(3053,0.0146372); - ssigpTa->SetBinContent(3054,0.0146512); - ssigpTa->SetBinContent(3055,0.0146648); - ssigpTa->SetBinContent(3056,0.014684); - ssigpTa->SetBinContent(3057,0.014704); - ssigpTa->SetBinContent(3058,0.0147192); - ssigpTa->SetBinContent(3059,0.0147436); - ssigpTa->SetBinContent(3060,0.0147608); - ssigpTa->SetBinContent(3061,0.0147868); - ssigpTa->SetBinContent(3062,0.014802); - ssigpTa->SetBinContent(3063,0.0148204); - ssigpTa->SetBinContent(3064,0.0148448); - ssigpTa->SetBinContent(3065,0.0148668); - ssigpTa->SetBinContent(3066,0.0148932); - ssigpTa->SetBinContent(3067,0.0149104); - ssigpTa->SetBinContent(3068,0.0149396); - ssigpTa->SetBinContent(3069,0.01496); - ssigpTa->SetBinContent(3070,0.0149912); - ssigpTa->SetBinContent(3071,0.0150116); - ssigpTa->SetBinContent(3072,0.0150408); - ssigpTa->SetBinContent(3073,0.0150612); - ssigpTa->SetBinContent(3074,0.0150876); - ssigpTa->SetBinContent(3075,0.0151156); - ssigpTa->SetBinContent(3076,0.0151452); - ssigpTa->SetBinContent(3077,0.0151752); - ssigpTa->SetBinContent(3078,0.0152036); - ssigpTa->SetBinContent(3079,0.0152368); - ssigpTa->SetBinContent(3080,0.0152652); - ssigpTa->SetBinContent(3081,0.0152948); - ssigpTa->SetBinContent(3082,0.0153172); - ssigpTa->SetBinContent(3083,0.0153484); - ssigpTa->SetBinContent(3084,0.0153816); - ssigpTa->SetBinContent(3085,0.015418); - ssigpTa->SetBinContent(3086,0.0154544); - ssigpTa->SetBinContent(3087,0.0154936); - ssigpTa->SetBinContent(3088,0.0155212); - ssigpTa->SetBinContent(3089,0.0155616); - ssigpTa->SetBinContent(3090,0.0155932); - ssigpTa->SetBinContent(3091,0.0156256); - ssigpTa->SetBinContent(3092,0.015668); - ssigpTa->SetBinContent(3093,0.0157084); - ssigpTa->SetBinContent(3094,0.0157516); - ssigpTa->SetBinContent(3095,0.0157864); - ssigpTa->SetBinContent(3096,0.0158216); - ssigpTa->SetBinContent(3097,0.015864); - ssigpTa->SetBinContent(3098,0.0159044); - ssigpTa->SetBinContent(3099,0.0159488); - ssigpTa->SetBinContent(3100,0.0159872); - ssigpTa->SetBinContent(3101,0.0160236); - ssigpTa->SetBinContent(3102,0.016062); - ssigpTa->SetBinContent(3103,0.0161096); - ssigpTa->SetBinContent(3104,0.0161628); - ssigpTa->SetBinContent(3105,0.0162096); - ssigpTa->SetBinContent(3106,0.016256); - ssigpTa->SetBinContent(3107,0.0162984); - ssigpTa->SetBinContent(3108,0.0163528); - ssigpTa->SetBinContent(3109,0.0164024); - ssigpTa->SetBinContent(3110,0.0164492); - ssigpTa->SetBinContent(3111,0.0164988); - ssigpTa->SetBinContent(3112,0.016552); - ssigpTa->SetBinContent(3113,0.0166036); - ssigpTa->SetBinContent(3114,0.016658); - ssigpTa->SetBinContent(3115,0.0167124); - ssigpTa->SetBinContent(3116,0.016772); - ssigpTa->SetBinContent(3117,0.0168276); - ssigpTa->SetBinContent(3118,0.0168904); - ssigpTa->SetBinContent(3119,0.016944); - ssigpTa->SetBinContent(3120,0.0173228); - ssigpTa->SetBinContent(3121,0.0193344); - ssigpTa->SetBinContent(3122,0.0229884); - ssigpTa->SetBinContent(3123,0.0250092); - ssigpTa->SetBinContent(3124,0.0253968); - ssigpTa->SetBinContent(3125,0.0254604); - ssigpTa->SetBinContent(3126,0.0255292); - ssigpTa->SetBinContent(3127,0.02559); - ssigpTa->SetBinContent(3128,0.0256548); - ssigpTa->SetBinContent(3129,0.0257256); - ssigpTa->SetBinContent(3130,0.0257984); - ssigpTa->SetBinContent(3131,0.025588); - ssigpTa->SetBinContent(3132,0.0239788); - ssigpTa->SetBinContent(3133,0.0210056); - ssigpTa->SetBinContent(3134,0.0196136); - ssigpTa->SetBinContent(3135,0.019714); - ssigpTa->SetBinContent(3136,0.0201196); - ssigpTa->SetBinContent(3137,0.0205224); - ssigpTa->SetBinContent(3138,0.0209336); - ssigpTa->SetBinContent(3139,0.0213492); - ssigpTa->SetBinContent(3140,0.0216516); - ssigpTa->SetBinContent(3141,0.0213464); - ssigpTa->SetBinContent(3142,0.0204292); - ssigpTa->SetBinContent(3143,0.0200752); - ssigpTa->SetBinContent(3144,0.020288); - ssigpTa->SetBinContent(3145,0.020646); - ssigpTa->SetBinContent(3146,0.0210328); - ssigpTa->SetBinContent(3147,0.0214384); - ssigpTa->SetBinContent(3148,0.0218548); - ssigpTa->SetBinContent(3149,0.0222696); - ssigpTa->SetBinContent(3150,0.0226892); - ssigpTa->SetBinContent(3151,0.022984); - ssigpTa->SetBinContent(3152,0.0225588); - ssigpTa->SetBinContent(3153,0.0213928); - ssigpTa->SetBinContent(3154,0.020934); - ssigpTa->SetBinContent(3155,0.0211992); - ssigpTa->SetBinContent(3156,0.0216164); - ssigpTa->SetBinContent(3157,0.0220524); - ssigpTa->SetBinContent(3158,0.0224836); - ssigpTa->SetBinContent(3159,0.0229256); - ssigpTa->SetBinContent(3160,0.0233708); - ssigpTa->SetBinContent(3161,0.023828); - ssigpTa->SetBinContent(3162,0.0241568); - ssigpTa->SetBinContent(3163,0.0238212); - ssigpTa->SetBinContent(3164,0.0227936); - ssigpTa->SetBinContent(3165,0.0224364); - ssigpTa->SetBinContent(3166,0.02275); - ssigpTa->SetBinContent(3167,0.0232104); - ssigpTa->SetBinContent(3168,0.023674); - ssigpTa->SetBinContent(3169,0.0241524); - ssigpTa->SetBinContent(3170,0.02463); - ssigpTa->SetBinContent(3171,0.0251236); - ssigpTa->SetBinContent(3172,0.025622); - ssigpTa->SetBinContent(3173,0.0261248); - ssigpTa->SetBinContent(3174,0.0265212); - ssigpTa->SetBinContent(3175,0.02634); - ssigpTa->SetBinContent(3176,0.0255556); - ssigpTa->SetBinContent(3177,0.0252404); - ssigpTa->SetBinContent(3178,0.024908); - ssigpTa->SetBinContent(3179,0.0241052); - ssigpTa->SetBinContent(3180,0.0238668); - ssigpTa->SetBinContent(3181,0.0242324); - ssigpTa->SetBinContent(3182,0.024728); - ssigpTa->SetBinContent(3183,0.0252396); - ssigpTa->SetBinContent(3184,0.0257524); - ssigpTa->SetBinContent(3185,0.0262772); - ssigpTa->SetBinContent(3186,0.02681); - ssigpTa->SetBinContent(3187,0.027362); - ssigpTa->SetBinContent(3188,0.0279508); - ssigpTa->SetBinContent(3189,0.0286508); - ssigpTa->SetBinContent(3190,0.0294652); - ssigpTa->SetBinContent(3191,0.0301792); - ssigpTa->SetBinContent(3192,0.0307284); - ssigpTa->SetBinContent(3193,0.0309304); - ssigpTa->SetBinContent(3194,0.0307928); - ssigpTa->SetBinContent(3195,0.0309828); - ssigpTa->SetBinContent(3196,0.031506); - ssigpTa->SetBinContent(3197,0.0321068); - ssigpTa->SetBinContent(3198,0.0325676); - ssigpTa->SetBinContent(3199,0.0323144); - ssigpTa->SetBinContent(3200,0.0311012); - ssigpTa->SetBinContent(3201,0.0295596); - ssigpTa->SetBinContent(3202,0.0276608); - ssigpTa->SetBinContent(3203,0.0268964); - ssigpTa->SetBinContent(3204,0.0271452); - ssigpTa->SetBinContent(3205,0.0276236); - ssigpTa->SetBinContent(3206,0.0281316); - ssigpTa->SetBinContent(3207,0.0288084); - ssigpTa->SetBinContent(3208,0.0296368); - ssigpTa->SetBinContent(3209,0.0303176); - ssigpTa->SetBinContent(3210,0.0308584); - ssigpTa->SetBinContent(3211,0.0313824); - ssigpTa->SetBinContent(3212,0.0319236); - ssigpTa->SetBinContent(3213,0.0324724); - ssigpTa->SetBinContent(3214,0.0330264); - ssigpTa->SetBinContent(3215,0.0335592); - ssigpTa->SetBinContent(3216,0.0339548); - ssigpTa->SetBinContent(3217,0.0342252); - ssigpTa->SetBinContent(3218,0.0346688); - ssigpTa->SetBinContent(3219,0.0353188); - ssigpTa->SetBinContent(3220,0.0361992); - ssigpTa->SetBinContent(3221,0.0372724); - ssigpTa->SetBinContent(3222,0.0381712); - ssigpTa->SetBinContent(3223,0.0389004); - ssigpTa->SetBinContent(3224,0.0396088); - ssigpTa->SetBinContent(3225,0.040326); - ssigpTa->SetBinContent(3226,0.0410324); - ssigpTa->SetBinContent(3227,0.0416316); - ssigpTa->SetBinContent(3228,0.0421468); - ssigpTa->SetBinContent(3229,0.0428028); - ssigpTa->SetBinContent(3230,0.0436528); - ssigpTa->SetBinContent(3231,0.0447204); - ssigpTa->SetBinContent(3232,0.0459696); - ssigpTa->SetBinContent(3233,0.0470416); - ssigpTa->SetBinContent(3234,0.0479432); - ssigpTa->SetBinContent(3235,0.0488368); - ssigpTa->SetBinContent(3236,0.0497536); - ssigpTa->SetBinContent(3237,0.0507016); - ssigpTa->SetBinContent(3238,0.0515208); - ssigpTa->SetBinContent(3239,0.0515976); - ssigpTa->SetBinContent(3240,0.0508988); - ssigpTa->SetBinContent(3241,0.0509764); - ssigpTa->SetBinContent(3242,0.0519916); - ssigpTa->SetBinContent(3243,0.0533672); - ssigpTa->SetBinContent(3244,0.0545868); - ssigpTa->SetBinContent(3245,0.0556352); - ssigpTa->SetBinContent(3246,0.05667); - ssigpTa->SetBinContent(3247,0.0577096); - ssigpTa->SetBinContent(3248,0.0587664); - ssigpTa->SetBinContent(3249,0.0598288); - ssigpTa->SetBinContent(3250,0.0608844); - ssigpTa->SetBinContent(3251,0.0619036); - ssigpTa->SetBinContent(3252,0.0630628); - ssigpTa->SetBinContent(3253,0.0645864); - ssigpTa->SetBinContent(3254,0.0660396); - ssigpTa->SetBinContent(3255,0.0673228); - ssigpTa->SetBinContent(3256,0.0685784); - ssigpTa->SetBinContent(3257,0.0698444); - ssigpTa->SetBinContent(3258,0.07114); - ssigpTa->SetBinContent(3259,0.0724728); - ssigpTa->SetBinContent(3260,0.0738288); - ssigpTa->SetBinContent(3261,0.0750868); - ssigpTa->SetBinContent(3262,0.076236); - ssigpTa->SetBinContent(3263,0.0775408); - ssigpTa->SetBinContent(3264,0.0789496); - ssigpTa->SetBinContent(3265,0.0803296); - ssigpTa->SetBinContent(3266,0.0818204); - ssigpTa->SetBinContent(3267,0.0834032); - ssigpTa->SetBinContent(3268,0.0850136); - ssigpTa->SetBinContent(3269,0.086682); - ssigpTa->SetBinContent(3270,0.0884636); - ssigpTa->SetBinContent(3271,0.090338); - ssigpTa->SetBinContent(3272,0.0922488); - ssigpTa->SetBinContent(3273,0.0941704); - ssigpTa->SetBinContent(3274,0.09612); - ssigpTa->SetBinContent(3275,0.0981216); - ssigpTa->SetBinContent(3276,0.10017); - ssigpTa->SetBinContent(3277,0.102253); - ssigpTa->SetBinContent(3278,0.104352); - ssigpTa->SetBinContent(3279,0.106492); - ssigpTa->SetBinContent(3280,0.108796); - ssigpTa->SetBinContent(3281,0.111281); - ssigpTa->SetBinContent(3282,0.113833); - ssigpTa->SetBinContent(3283,0.116399); - ssigpTa->SetBinContent(3284,0.118991); - ssigpTa->SetBinContent(3285,0.12143); - ssigpTa->SetBinContent(3286,0.123172); - ssigpTa->SetBinContent(3289,0.0158867); - ssigpTa->SetBinContent(3290,0.015885); - ssigpTa->SetBinContent(3291,0.0158832); - ssigpTa->SetBinContent(3292,0.0158832); - ssigpTa->SetBinContent(3293,0.0158832); - ssigpTa->SetBinContent(3294,0.0158832); - ssigpTa->SetBinContent(3295,0.0158832); - ssigpTa->SetBinContent(3296,0.0158832); - ssigpTa->SetBinContent(3297,0.0158848); - ssigpTa->SetBinContent(3298,0.0158848); - ssigpTa->SetBinContent(3299,0.0158848); - ssigpTa->SetBinContent(3300,0.0158848); - ssigpTa->SetBinContent(3301,0.0158904); - ssigpTa->SetBinContent(3302,0.0158952); - ssigpTa->SetBinContent(3303,0.0159072); - ssigpTa->SetBinContent(3304,0.015916); - ssigpTa->SetBinContent(3305,0.0159296); - ssigpTa->SetBinContent(3306,0.0159392); - ssigpTa->SetBinContent(3307,0.0159448); - ssigpTa->SetBinContent(3308,0.0159448); - ssigpTa->SetBinContent(3309,0.0159448); - ssigpTa->SetBinContent(3310,0.0159528); - ssigpTa->SetBinContent(3311,0.0159616); - ssigpTa->SetBinContent(3312,0.0159776); - ssigpTa->SetBinContent(3313,0.0159824); - ssigpTa->SetBinContent(3314,0.0159952); - ssigpTa->SetBinContent(3315,0.0160048); - ssigpTa->SetBinContent(3316,0.0160168); - ssigpTa->SetBinContent(3317,0.0160272); - ssigpTa->SetBinContent(3318,0.0160392); - ssigpTa->SetBinContent(3319,0.016048); - ssigpTa->SetBinContent(3320,0.0160616); - ssigpTa->SetBinContent(3321,0.0160736); - ssigpTa->SetBinContent(3322,0.0160872); - ssigpTa->SetBinContent(3323,0.0161048); - ssigpTa->SetBinContent(3324,0.0161136); - ssigpTa->SetBinContent(3325,0.0161296); - ssigpTa->SetBinContent(3326,0.016144); - ssigpTa->SetBinContent(3327,0.0161656); - ssigpTa->SetBinContent(3328,0.0161792); - ssigpTa->SetBinContent(3329,0.016188); - ssigpTa->SetBinContent(3330,0.016204); - ssigpTa->SetBinContent(3331,0.0162256); - ssigpTa->SetBinContent(3332,0.016244); - ssigpTa->SetBinContent(3333,0.0162584); - ssigpTa->SetBinContent(3334,0.0162856); - ssigpTa->SetBinContent(3335,0.0163024); - ssigpTa->SetBinContent(3336,0.0163208); - ssigpTa->SetBinContent(3337,0.0163368); - ssigpTa->SetBinContent(3338,0.0163584); - ssigpTa->SetBinContent(3339,0.0163808); - ssigpTa->SetBinContent(3340,0.0164024); - ssigpTa->SetBinContent(3341,0.0164248); - ssigpTa->SetBinContent(3342,0.0164448); - ssigpTa->SetBinContent(3343,0.0164744); - ssigpTa->SetBinContent(3344,0.0164896); - ssigpTa->SetBinContent(3345,0.0165176); - ssigpTa->SetBinContent(3346,0.0165392); - ssigpTa->SetBinContent(3347,0.0165616); - ssigpTa->SetBinContent(3348,0.0165856); - ssigpTa->SetBinContent(3349,0.0166136); - ssigpTa->SetBinContent(3350,0.0166472); - ssigpTa->SetBinContent(3351,0.016672); - ssigpTa->SetBinContent(3352,0.0167024); - ssigpTa->SetBinContent(3353,0.0167304); - ssigpTa->SetBinContent(3354,0.01676); - ssigpTa->SetBinContent(3355,0.0167784); - ssigpTa->SetBinContent(3356,0.016804); - ssigpTa->SetBinContent(3357,0.016832); - ssigpTa->SetBinContent(3358,0.0168648); - ssigpTa->SetBinContent(3359,0.0169024); - ssigpTa->SetBinContent(3360,0.0169424); - ssigpTa->SetBinContent(3361,0.0169728); - ssigpTa->SetBinContent(3362,0.0170104); - ssigpTa->SetBinContent(3363,0.0170352); - ssigpTa->SetBinContent(3364,0.0170704); - ssigpTa->SetBinContent(3365,0.0170976); - ssigpTa->SetBinContent(3366,0.0171352); - ssigpTa->SetBinContent(3367,0.0171792); - ssigpTa->SetBinContent(3368,0.0172104); - ssigpTa->SetBinContent(3369,0.0172512); - ssigpTa->SetBinContent(3370,0.017284); - ssigpTa->SetBinContent(3371,0.0173272); - ssigpTa->SetBinContent(3372,0.0173712); - ssigpTa->SetBinContent(3373,0.017408); - ssigpTa->SetBinContent(3374,0.017448); - ssigpTa->SetBinContent(3375,0.0174856); - ssigpTa->SetBinContent(3376,0.0175208); - ssigpTa->SetBinContent(3377,0.0175704); - ssigpTa->SetBinContent(3378,0.0176184); - ssigpTa->SetBinContent(3379,0.017668); - ssigpTa->SetBinContent(3380,0.0177016); - ssigpTa->SetBinContent(3381,0.0177512); - ssigpTa->SetBinContent(3382,0.0177976); - ssigpTa->SetBinContent(3383,0.0178488); - ssigpTa->SetBinContent(3384,0.017888); - ssigpTa->SetBinContent(3385,0.0179376); - ssigpTa->SetBinContent(3386,0.0179912); - ssigpTa->SetBinContent(3387,0.0180424); - ssigpTa->SetBinContent(3388,0.0180968); - ssigpTa->SetBinContent(3389,0.0181552); - ssigpTa->SetBinContent(3390,0.0182096); - ssigpTa->SetBinContent(3391,0.0182672); - ssigpTa->SetBinContent(3392,0.0183176); - ssigpTa->SetBinContent(3393,0.0183712); - ssigpTa->SetBinContent(3394,0.0188128); - ssigpTa->SetBinContent(3395,0.0211856); - ssigpTa->SetBinContent(3396,0.025508); - ssigpTa->SetBinContent(3397,0.0278904); - ssigpTa->SetBinContent(3398,0.0283408); - ssigpTa->SetBinContent(3399,0.0284032); - ssigpTa->SetBinContent(3400,0.0284632); - ssigpTa->SetBinContent(3401,0.0285216); - ssigpTa->SetBinContent(3402,0.0285816); - ssigpTa->SetBinContent(3403,0.0286464); - ssigpTa->SetBinContent(3404,0.0287168); - ssigpTa->SetBinContent(3405,0.0284584); - ssigpTa->SetBinContent(3406,0.0265176); - ssigpTa->SetBinContent(3407,0.0229816); - ssigpTa->SetBinContent(3408,0.021292); - ssigpTa->SetBinContent(3409,0.0213968); - ssigpTa->SetBinContent(3410,0.0218448); - ssigpTa->SetBinContent(3411,0.0223024); - ssigpTa->SetBinContent(3412,0.0227592); - ssigpTa->SetBinContent(3413,0.0232312); - ssigpTa->SetBinContent(3414,0.0235584); - ssigpTa->SetBinContent(3415,0.023184); - ssigpTa->SetBinContent(3416,0.0220808); - ssigpTa->SetBinContent(3417,0.0216568); - ssigpTa->SetBinContent(3418,0.021912); - ssigpTa->SetBinContent(3419,0.02232); - ssigpTa->SetBinContent(3420,0.022756); - ssigpTa->SetBinContent(3421,0.0232136); - ssigpTa->SetBinContent(3422,0.0236776); - ssigpTa->SetBinContent(3423,0.0241424); - ssigpTa->SetBinContent(3424,0.024616); - ssigpTa->SetBinContent(3425,0.0249336); - ssigpTa->SetBinContent(3426,0.0244328); - ssigpTa->SetBinContent(3427,0.0230768); - ssigpTa->SetBinContent(3428,0.0225336); - ssigpTa->SetBinContent(3429,0.0228128); - ssigpTa->SetBinContent(3430,0.0232784); - ssigpTa->SetBinContent(3431,0.0237488); - ssigpTa->SetBinContent(3432,0.0242312); - ssigpTa->SetBinContent(3433,0.0247136); - ssigpTa->SetBinContent(3434,0.0252112); - ssigpTa->SetBinContent(3435,0.0257104); - ssigpTa->SetBinContent(3436,0.0260696); - ssigpTa->SetBinContent(3437,0.0256312); - ssigpTa->SetBinContent(3438,0.0243776); - ssigpTa->SetBinContent(3439,0.0239064); - ssigpTa->SetBinContent(3440,0.0242328); - ssigpTa->SetBinContent(3441,0.024724); - ssigpTa->SetBinContent(3442,0.0252392); - ssigpTa->SetBinContent(3443,0.0257488); - ssigpTa->SetBinContent(3444,0.0262752); - ssigpTa->SetBinContent(3445,0.0268096); - ssigpTa->SetBinContent(3446,0.027352); - ssigpTa->SetBinContent(3447,0.0279008); - ssigpTa->SetBinContent(3448,0.0283192); - ssigpTa->SetBinContent(3449,0.0280376); - ssigpTa->SetBinContent(3450,0.0270312); - ssigpTa->SetBinContent(3451,0.0266176); - ssigpTa->SetBinContent(3452,0.0263792); - ssigpTa->SetBinContent(3453,0.0257248); - ssigpTa->SetBinContent(3454,0.025608); - ssigpTa->SetBinContent(3455,0.026016); - ssigpTa->SetBinContent(3456,0.0265568); - ssigpTa->SetBinContent(3457,0.0271088); - ssigpTa->SetBinContent(3458,0.027668); - ssigpTa->SetBinContent(3459,0.0282328); - ssigpTa->SetBinContent(3460,0.0288136); - ssigpTa->SetBinContent(3461,0.0294136); - ssigpTa->SetBinContent(3462,0.0300344); - ssigpTa->SetBinContent(3463,0.0307232); - ssigpTa->SetBinContent(3464,0.031476); - ssigpTa->SetBinContent(3465,0.0321776); - ssigpTa->SetBinContent(3466,0.0327824); - ssigpTa->SetBinContent(3467,0.0330992); - ssigpTa->SetBinContent(3468,0.033144); - ssigpTa->SetBinContent(3469,0.0334616); - ssigpTa->SetBinContent(3470,0.0340792); - ssigpTa->SetBinContent(3471,0.0347504); - ssigpTa->SetBinContent(3472,0.0352448); - ssigpTa->SetBinContent(3473,0.0347656); - ssigpTa->SetBinContent(3474,0.0331008); - ssigpTa->SetBinContent(3475,0.0314216); - ssigpTa->SetBinContent(3476,0.0297272); - ssigpTa->SetBinContent(3477,0.02912); - ssigpTa->SetBinContent(3478,0.0294568); - ssigpTa->SetBinContent(3479,0.0299784); - ssigpTa->SetBinContent(3480,0.030548); - ssigpTa->SetBinContent(3481,0.0312008); - ssigpTa->SetBinContent(3482,0.0319496); - ssigpTa->SetBinContent(3483,0.0326136); - ssigpTa->SetBinContent(3484,0.0332048); - ssigpTa->SetBinContent(3485,0.0337984); - ssigpTa->SetBinContent(3486,0.0344032); - ssigpTa->SetBinContent(3487,0.0350232); - ssigpTa->SetBinContent(3488,0.0356528); - ssigpTa->SetBinContent(3489,0.0362696); - ssigpTa->SetBinContent(3490,0.0368368); - ssigpTa->SetBinContent(3491,0.0373512); - ssigpTa->SetBinContent(3492,0.0379768); - ssigpTa->SetBinContent(3493,0.038708); - ssigpTa->SetBinContent(3494,0.0395624); - ssigpTa->SetBinContent(3495,0.0405224); - ssigpTa->SetBinContent(3496,0.041396); - ssigpTa->SetBinContent(3497,0.0421992); - ssigpTa->SetBinContent(3498,0.0430064); - ssigpTa->SetBinContent(3499,0.0438192); - ssigpTa->SetBinContent(3500,0.0446344); - ssigpTa->SetBinContent(3501,0.0454352); - ssigpTa->SetBinContent(3502,0.0462208); - ssigpTa->SetBinContent(3503,0.0470936); - ssigpTa->SetBinContent(3504,0.0480536); - ssigpTa->SetBinContent(3505,0.0491088); - ssigpTa->SetBinContent(3506,0.050224); - ssigpTa->SetBinContent(3507,0.0512712); - ssigpTa->SetBinContent(3508,0.052272); - ssigpTa->SetBinContent(3509,0.0532816); - ssigpTa->SetBinContent(3510,0.054328); - ssigpTa->SetBinContent(3511,0.055404); - ssigpTa->SetBinContent(3512,0.0563872); - ssigpTa->SetBinContent(3513,0.0567608); - ssigpTa->SetBinContent(3514,0.0564992); - ssigpTa->SetBinContent(3515,0.0568592); - ssigpTa->SetBinContent(3516,0.0579072); - ssigpTa->SetBinContent(3517,0.0591632); - ssigpTa->SetBinContent(3518,0.0603896); - ssigpTa->SetBinContent(3519,0.061596); - ssigpTa->SetBinContent(3520,0.0627984); - ssigpTa->SetBinContent(3521,0.0640184); - ssigpTa->SetBinContent(3522,0.0652536); - ssigpTa->SetBinContent(3523,0.0665016); - ssigpTa->SetBinContent(3524,0.0677552); - ssigpTa->SetBinContent(3525,0.0689816); - ssigpTa->SetBinContent(3526,0.0702752); - ssigpTa->SetBinContent(3527,0.0718056); - ssigpTa->SetBinContent(3528,0.07334); - ssigpTa->SetBinContent(3529,0.07482); - ssigpTa->SetBinContent(3530,0.0762848); - ssigpTa->SetBinContent(3531,0.0777736); - ssigpTa->SetBinContent(3532,0.079292); - ssigpTa->SetBinContent(3533,0.0808552); - ssigpTa->SetBinContent(3534,0.0824592); - ssigpTa->SetBinContent(3535,0.0840232); - ssigpTa->SetBinContent(3536,0.0855256); - ssigpTa->SetBinContent(3537,0.087168); - ssigpTa->SetBinContent(3538,0.0888856); - ssigpTa->SetBinContent(3539,0.0906032); - ssigpTa->SetBinContent(3540,0.092404); - ssigpTa->SetBinContent(3541,0.0942816); - ssigpTa->SetBinContent(3542,0.096184); - ssigpTa->SetBinContent(3543,0.0981632); - ssigpTa->SetBinContent(3544,0.100271); - ssigpTa->SetBinContent(3545,0.102483); - ssigpTa->SetBinContent(3546,0.104737); - ssigpTa->SetBinContent(3547,0.107014); - ssigpTa->SetBinContent(3548,0.109325); - ssigpTa->SetBinContent(3549,0.111693); - ssigpTa->SetBinContent(3550,0.114123); - ssigpTa->SetBinContent(3551,0.116586); - ssigpTa->SetBinContent(3552,0.119067); - ssigpTa->SetBinContent(3553,0.121645); - ssigpTa->SetBinContent(3554,0.124537); - ssigpTa->SetBinContent(3555,0.127799); - ssigpTa->SetBinContent(3556,0.130998); - ssigpTa->SetBinContent(3557,0.134066); - ssigpTa->SetBinContent(3558,0.137144); - ssigpTa->SetBinContent(3559,0.14003); - ssigpTa->SetBinContent(3560,0.142077); - ssigpTa->SetBinContent(3563,0.0175239); - ssigpTa->SetBinContent(3564,0.0175212); - ssigpTa->SetBinContent(3565,0.0175204); - ssigpTa->SetBinContent(3566,0.0175204); - ssigpTa->SetBinContent(3567,0.0175204); - ssigpTa->SetBinContent(3568,0.0175204); - ssigpTa->SetBinContent(3569,0.0175204); - ssigpTa->SetBinContent(3570,0.0175204); - ssigpTa->SetBinContent(3571,0.017524); - ssigpTa->SetBinContent(3572,0.017524); - ssigpTa->SetBinContent(3573,0.017524); - ssigpTa->SetBinContent(3574,0.0175304); - ssigpTa->SetBinContent(3575,0.0175368); - ssigpTa->SetBinContent(3576,0.017548); - ssigpTa->SetBinContent(3577,0.0175528); - ssigpTa->SetBinContent(3578,0.0175604); - ssigpTa->SetBinContent(3579,0.017568); - ssigpTa->SetBinContent(3580,0.017582); - ssigpTa->SetBinContent(3581,0.0175876); - ssigpTa->SetBinContent(3582,0.0175904); - ssigpTa->SetBinContent(3583,0.0175904); - ssigpTa->SetBinContent(3584,0.0175904); - ssigpTa->SetBinContent(3585,0.0175972); - ssigpTa->SetBinContent(3586,0.017602); - ssigpTa->SetBinContent(3587,0.017616); - ssigpTa->SetBinContent(3588,0.0176316); - ssigpTa->SetBinContent(3589,0.017652); - ssigpTa->SetBinContent(3590,0.0176596); - ssigpTa->SetBinContent(3591,0.0176672); - ssigpTa->SetBinContent(3592,0.017672); - ssigpTa->SetBinContent(3593,0.0176796); - ssigpTa->SetBinContent(3594,0.0176872); - ssigpTa->SetBinContent(3595,0.0177076); - ssigpTa->SetBinContent(3596,0.0177244); - ssigpTa->SetBinContent(3597,0.017742); - ssigpTa->SetBinContent(3598,0.0177516); - ssigpTa->SetBinContent(3599,0.0177572); - ssigpTa->SetBinContent(3600,0.017776); - ssigpTa->SetBinContent(3601,0.0177948); - ssigpTa->SetBinContent(3602,0.0178088); - ssigpTa->SetBinContent(3603,0.017818); - ssigpTa->SetBinContent(3604,0.017834); - ssigpTa->SetBinContent(3605,0.0178528); - ssigpTa->SetBinContent(3606,0.0178696); - ssigpTa->SetBinContent(3607,0.0178884); - ssigpTa->SetBinContent(3608,0.0179052); - ssigpTa->SetBinContent(3609,0.017926); - ssigpTa->SetBinContent(3610,0.01794); - ssigpTa->SetBinContent(3611,0.0179568); - ssigpTa->SetBinContent(3612,0.0179756); - ssigpTa->SetBinContent(3613,0.0180008); - ssigpTa->SetBinContent(3614,0.018016); - ssigpTa->SetBinContent(3615,0.0180392); - ssigpTa->SetBinContent(3616,0.0180664); - ssigpTa->SetBinContent(3617,0.0180832); - ssigpTa->SetBinContent(3618,0.0181004); - ssigpTa->SetBinContent(3619,0.0181208); - ssigpTa->SetBinContent(3620,0.018148); - ssigpTa->SetBinContent(3621,0.0181676); - ssigpTa->SetBinContent(3622,0.0181892); - ssigpTa->SetBinContent(3623,0.0182256); - ssigpTa->SetBinContent(3624,0.01825); - ssigpTa->SetBinContent(3625,0.0182764); - ssigpTa->SetBinContent(3626,0.018298); - ssigpTa->SetBinContent(3627,0.018328); - ssigpTa->SetBinContent(3628,0.0183532); - ssigpTa->SetBinContent(3629,0.0183748); - ssigpTa->SetBinContent(3630,0.0183944); - ssigpTa->SetBinContent(3631,0.018428); - ssigpTa->SetBinContent(3632,0.0184572); - ssigpTa->SetBinContent(3633,0.0184928); - ssigpTa->SetBinContent(3634,0.018532); - ssigpTa->SetBinContent(3635,0.0185696); - ssigpTa->SetBinContent(3636,0.018592); - ssigpTa->SetBinContent(3637,0.0186304); - ssigpTa->SetBinContent(3638,0.018652); - ssigpTa->SetBinContent(3639,0.0186828); - ssigpTa->SetBinContent(3640,0.0187212); - ssigpTa->SetBinContent(3641,0.0187504); - ssigpTa->SetBinContent(3642,0.018788); - ssigpTa->SetBinContent(3643,0.0188188); - ssigpTa->SetBinContent(3644,0.0188636); - ssigpTa->SetBinContent(3645,0.0189076); - ssigpTa->SetBinContent(3646,0.018946); - ssigpTa->SetBinContent(3647,0.0189836); - ssigpTa->SetBinContent(3648,0.0190228); - ssigpTa->SetBinContent(3649,0.0190584); - ssigpTa->SetBinContent(3650,0.0191004); - ssigpTa->SetBinContent(3651,0.0191408); - ssigpTa->SetBinContent(3652,0.0191924); - ssigpTa->SetBinContent(3653,0.019228); - ssigpTa->SetBinContent(3654,0.019272); - ssigpTa->SetBinContent(3655,0.0193076); - ssigpTa->SetBinContent(3656,0.0193592); - ssigpTa->SetBinContent(3657,0.0194032); - ssigpTa->SetBinContent(3658,0.0194444); - ssigpTa->SetBinContent(3659,0.0194948); - ssigpTa->SetBinContent(3660,0.0195464); - ssigpTa->SetBinContent(3661,0.019596); - ssigpTa->SetBinContent(3662,0.019644); - ssigpTa->SetBinContent(3663,0.019702); - ssigpTa->SetBinContent(3664,0.01976); - ssigpTa->SetBinContent(3665,0.019806); - ssigpTa->SetBinContent(3666,0.0198612); - ssigpTa->SetBinContent(3667,0.0199136); - ssigpTa->SetBinContent(3668,0.0204204); - ssigpTa->SetBinContent(3669,0.0231832); - ssigpTa->SetBinContent(3670,0.0281936); - ssigpTa->SetBinContent(3671,0.0309612); - ssigpTa->SetBinContent(3672,0.0314728); - ssigpTa->SetBinContent(3673,0.0315336); - ssigpTa->SetBinContent(3674,0.03159); - ssigpTa->SetBinContent(3675,0.031646); - ssigpTa->SetBinContent(3676,0.031704); - ssigpTa->SetBinContent(3677,0.0317632); - ssigpTa->SetBinContent(3678,0.0318316); - ssigpTa->SetBinContent(3679,0.0315116); - ssigpTa->SetBinContent(3680,0.0292404); - ssigpTa->SetBinContent(3681,0.0250856); - ssigpTa->SetBinContent(3682,0.0231084); - ssigpTa->SetBinContent(3683,0.0231992); - ssigpTa->SetBinContent(3684,0.0237128); - ssigpTa->SetBinContent(3685,0.0242216); - ssigpTa->SetBinContent(3686,0.02474); - ssigpTa->SetBinContent(3687,0.0252548); - ssigpTa->SetBinContent(3688,0.025622); - ssigpTa->SetBinContent(3689,0.0251612); - ssigpTa->SetBinContent(3690,0.023876); - ssigpTa->SetBinContent(3691,0.0233768); - ssigpTa->SetBinContent(3692,0.0236688); - ssigpTa->SetBinContent(3693,0.024134); - ssigpTa->SetBinContent(3694,0.0246224); - ssigpTa->SetBinContent(3695,0.025126); - ssigpTa->SetBinContent(3696,0.0256464); - ssigpTa->SetBinContent(3697,0.0261656); - ssigpTa->SetBinContent(3698,0.0266932); - ssigpTa->SetBinContent(3699,0.0270464); - ssigpTa->SetBinContent(3700,0.0264512); - ssigpTa->SetBinContent(3701,0.0248884); - ssigpTa->SetBinContent(3702,0.0242492); - ssigpTa->SetBinContent(3703,0.0245612); - ssigpTa->SetBinContent(3704,0.0250648); - ssigpTa->SetBinContent(3705,0.02559); - ssigpTa->SetBinContent(3706,0.0261104); - ssigpTa->SetBinContent(3707,0.0266504); - ssigpTa->SetBinContent(3708,0.0271968); - ssigpTa->SetBinContent(3709,0.0277536); - ssigpTa->SetBinContent(3710,0.028134); - ssigpTa->SetBinContent(3711,0.0275896); - ssigpTa->SetBinContent(3712,0.0260932); - ssigpTa->SetBinContent(3713,0.0255004); - ssigpTa->SetBinContent(3714,0.0258352); - ssigpTa->SetBinContent(3715,0.0263772); - ssigpTa->SetBinContent(3716,0.0269248); - ssigpTa->SetBinContent(3717,0.027492); - ssigpTa->SetBinContent(3718,0.0280564); - ssigpTa->SetBinContent(3719,0.0286404); - ssigpTa->SetBinContent(3720,0.029232); - ssigpTa->SetBinContent(3721,0.0298308); - ssigpTa->SetBinContent(3722,0.0302776); - ssigpTa->SetBinContent(3723,0.0298884); - ssigpTa->SetBinContent(3724,0.0286376); - ssigpTa->SetBinContent(3725,0.0281236); - ssigpTa->SetBinContent(3726,0.0279696); - ssigpTa->SetBinContent(3727,0.0275152); - ssigpTa->SetBinContent(3728,0.0275048); - ssigpTa->SetBinContent(3729,0.0279788); - ssigpTa->SetBinContent(3730,0.0285564); - ssigpTa->SetBinContent(3731,0.0291564); - ssigpTa->SetBinContent(3732,0.0297564); - ssigpTa->SetBinContent(3733,0.0303732); - ssigpTa->SetBinContent(3734,0.0310084); - ssigpTa->SetBinContent(3735,0.0316524); - ssigpTa->SetBinContent(3736,0.0323196); - ssigpTa->SetBinContent(3737,0.032988); - ssigpTa->SetBinContent(3738,0.0336736); - ssigpTa->SetBinContent(3739,0.0343708); - ssigpTa->SetBinContent(3740,0.0350232); - ssigpTa->SetBinContent(3741,0.035464); - ssigpTa->SetBinContent(3742,0.0356808); - ssigpTa->SetBinContent(3743,0.03615); - ssigpTa->SetBinContent(3744,0.036844); - ssigpTa->SetBinContent(3745,0.0376052); - ssigpTa->SetBinContent(3746,0.0381164); - ssigpTa->SetBinContent(3747,0.0373984); - ssigpTa->SetBinContent(3748,0.0352348); - ssigpTa->SetBinContent(3749,0.033416); - ssigpTa->SetBinContent(3750,0.031936); - ssigpTa->SetBinContent(3751,0.031514); - ssigpTa->SetBinContent(3752,0.0319176); - ssigpTa->SetBinContent(3753,0.0325228); - ssigpTa->SetBinContent(3754,0.0331316); - ssigpTa->SetBinContent(3755,0.0337884); - ssigpTa->SetBinContent(3756,0.034462); - ssigpTa->SetBinContent(3757,0.0351144); - ssigpTa->SetBinContent(3758,0.0357644); - ssigpTa->SetBinContent(3759,0.0364256); - ssigpTa->SetBinContent(3760,0.0371128); - ssigpTa->SetBinContent(3761,0.0378068); - ssigpTa->SetBinContent(3762,0.0385136); - ssigpTa->SetBinContent(3763,0.0392308); - ssigpTa->SetBinContent(3764,0.039958); - ssigpTa->SetBinContent(3765,0.0407368); - ssigpTa->SetBinContent(3766,0.0415384); - ssigpTa->SetBinContent(3767,0.0423648); - ssigpTa->SetBinContent(3768,0.0432024); - ssigpTa->SetBinContent(3769,0.0440504); - ssigpTa->SetBinContent(3770,0.0449104); - ssigpTa->SetBinContent(3771,0.0457976); - ssigpTa->SetBinContent(3772,0.0467052); - ssigpTa->SetBinContent(3773,0.0476232); - ssigpTa->SetBinContent(3774,0.0485608); - ssigpTa->SetBinContent(3775,0.0495548); - ssigpTa->SetBinContent(3776,0.0506328); - ssigpTa->SetBinContent(3777,0.0517108); - ssigpTa->SetBinContent(3778,0.0527932); - ssigpTa->SetBinContent(3779,0.0538428); - ssigpTa->SetBinContent(3780,0.0548336); - ssigpTa->SetBinContent(3781,0.0558676); - ssigpTa->SetBinContent(3782,0.056964); - ssigpTa->SetBinContent(3783,0.0581016); - ssigpTa->SetBinContent(3784,0.0592764); - ssigpTa->SetBinContent(3785,0.0604932); - ssigpTa->SetBinContent(3786,0.0616464); - ssigpTa->SetBinContent(3787,0.0623164); - ssigpTa->SetBinContent(3788,0.0624724); - ssigpTa->SetBinContent(3789,0.0631168); - ssigpTa->SetBinContent(3790,0.0642028); - ssigpTa->SetBinContent(3791,0.065346); - ssigpTa->SetBinContent(3792,0.066602); - ssigpTa->SetBinContent(3793,0.0679556); - ssigpTa->SetBinContent(3794,0.0693484); - ssigpTa->SetBinContent(3795,0.070746); - ssigpTa->SetBinContent(3796,0.0721732); - ssigpTa->SetBinContent(3797,0.07362); - ssigpTa->SetBinContent(3798,0.0750788); - ssigpTa->SetBinContent(3799,0.076514); - ssigpTa->SetBinContent(3800,0.0779488); - ssigpTa->SetBinContent(3801,0.07949); - ssigpTa->SetBinContent(3802,0.0811312); - ssigpTa->SetBinContent(3803,0.0828004); - ssigpTa->SetBinContent(3804,0.0844948); - ssigpTa->SetBinContent(3805,0.0862076); - ssigpTa->SetBinContent(3806,0.087958); - ssigpTa->SetBinContent(3807,0.0897624); - ssigpTa->SetBinContent(3808,0.0916192); - ssigpTa->SetBinContent(3809,0.0934944); - ssigpTa->SetBinContent(3810,0.0953668); - ssigpTa->SetBinContent(3811,0.0973344); - ssigpTa->SetBinContent(3812,0.0993764); - ssigpTa->SetBinContent(3813,0.101426); - ssigpTa->SetBinContent(3814,0.103546); - ssigpTa->SetBinContent(3815,0.105717); - ssigpTa->SetBinContent(3816,0.107925); - ssigpTa->SetBinContent(3817,0.110214); - ssigpTa->SetBinContent(3818,0.112663); - ssigpTa->SetBinContent(3819,0.11521); - ssigpTa->SetBinContent(3820,0.117824); - ssigpTa->SetBinContent(3821,0.120454); - ssigpTa->SetBinContent(3822,0.123128); - ssigpTa->SetBinContent(3823,0.125882); - ssigpTa->SetBinContent(3824,0.128688); - ssigpTa->SetBinContent(3825,0.131546); - ssigpTa->SetBinContent(3826,0.134428); - ssigpTa->SetBinContent(3827,0.137432); - ssigpTa->SetBinContent(3828,0.140926); - ssigpTa->SetBinContent(3829,0.144945); - ssigpTa->SetBinContent(3830,0.148783); - ssigpTa->SetBinContent(3831,0.152362); - ssigpTa->SetBinContent(3832,0.15593); - ssigpTa->SetBinContent(3833,0.159265); - ssigpTa->SetBinContent(3834,0.161633); - ssigpTa->SetBinContent(3837,0.0192289); - ssigpTa->SetBinContent(3838,0.0192275); - ssigpTa->SetBinContent(3839,0.0192264); - ssigpTa->SetBinContent(3840,0.0192264); - ssigpTa->SetBinContent(3841,0.0192264); - ssigpTa->SetBinContent(3842,0.0192264); - ssigpTa->SetBinContent(3843,0.0192264); - ssigpTa->SetBinContent(3844,0.0192336); - ssigpTa->SetBinContent(3845,0.0192408); - ssigpTa->SetBinContent(3846,0.019252); - ssigpTa->SetBinContent(3847,0.0192552); - ssigpTa->SetBinContent(3848,0.0192616); - ssigpTa->SetBinContent(3849,0.0192776); - ssigpTa->SetBinContent(3850,0.019284); - ssigpTa->SetBinContent(3851,0.0192896); - ssigpTa->SetBinContent(3852,0.0192896); - ssigpTa->SetBinContent(3853,0.0192952); - ssigpTa->SetBinContent(3854,0.0193008); - ssigpTa->SetBinContent(3855,0.0193064); - ssigpTa->SetBinContent(3856,0.0193064); - ssigpTa->SetBinContent(3857,0.0193064); - ssigpTa->SetBinContent(3858,0.0193064); - ssigpTa->SetBinContent(3859,0.0193064); - ssigpTa->SetBinContent(3860,0.019312); - ssigpTa->SetBinContent(3861,0.0193256); - ssigpTa->SetBinContent(3862,0.0193544); - ssigpTa->SetBinContent(3863,0.0193736); - ssigpTa->SetBinContent(3864,0.0193864); - ssigpTa->SetBinContent(3865,0.0193864); - ssigpTa->SetBinContent(3866,0.0193888); - ssigpTa->SetBinContent(3867,0.0193888); - ssigpTa->SetBinContent(3868,0.0193976); - ssigpTa->SetBinContent(3869,0.0194096); - ssigpTa->SetBinContent(3870,0.0194384); - ssigpTa->SetBinContent(3871,0.0194544); - ssigpTa->SetBinContent(3872,0.0194648); - ssigpTa->SetBinContent(3873,0.0194744); - ssigpTa->SetBinContent(3874,0.0194832); - ssigpTa->SetBinContent(3875,0.0194976); - ssigpTa->SetBinContent(3876,0.0195136); - ssigpTa->SetBinContent(3877,0.0195272); - ssigpTa->SetBinContent(3878,0.0195432); - ssigpTa->SetBinContent(3879,0.0195616); - ssigpTa->SetBinContent(3880,0.0195736); - ssigpTa->SetBinContent(3881,0.0195936); - ssigpTa->SetBinContent(3882,0.019608); - ssigpTa->SetBinContent(3883,0.019624); - ssigpTa->SetBinContent(3884,0.01964); - ssigpTa->SetBinContent(3885,0.019656); - ssigpTa->SetBinContent(3886,0.0196776); - ssigpTa->SetBinContent(3887,0.0196936); - ssigpTa->SetBinContent(3888,0.0197152); - ssigpTa->SetBinContent(3889,0.0197344); - ssigpTa->SetBinContent(3890,0.0197632); - ssigpTa->SetBinContent(3891,0.0197776); - ssigpTa->SetBinContent(3892,0.0197952); - ssigpTa->SetBinContent(3893,0.0198168); - ssigpTa->SetBinContent(3894,0.0198456); - ssigpTa->SetBinContent(3895,0.0198608); - ssigpTa->SetBinContent(3896,0.0198856); - ssigpTa->SetBinContent(3897,0.0199184); - ssigpTa->SetBinContent(3898,0.0199456); - ssigpTa->SetBinContent(3899,0.0199576); - ssigpTa->SetBinContent(3900,0.0199792); - ssigpTa->SetBinContent(3901,0.020008); - ssigpTa->SetBinContent(3902,0.0200368); - ssigpTa->SetBinContent(3903,0.020052); - ssigpTa->SetBinContent(3904,0.0200808); - ssigpTa->SetBinContent(3905,0.0201056); - ssigpTa->SetBinContent(3906,0.0201376); - ssigpTa->SetBinContent(3907,0.020172); - ssigpTa->SetBinContent(3908,0.0202056); - ssigpTa->SetBinContent(3909,0.0202416); - ssigpTa->SetBinContent(3910,0.020272); - ssigpTa->SetBinContent(3911,0.0202944); - ssigpTa->SetBinContent(3912,0.0203288); - ssigpTa->SetBinContent(3913,0.0203584); - ssigpTa->SetBinContent(3914,0.0203928); - ssigpTa->SetBinContent(3915,0.0204232); - ssigpTa->SetBinContent(3916,0.0204496); - ssigpTa->SetBinContent(3917,0.0204896); - ssigpTa->SetBinContent(3918,0.020528); - ssigpTa->SetBinContent(3919,0.0205752); - ssigpTa->SetBinContent(3920,0.0206088); - ssigpTa->SetBinContent(3921,0.020644); - ssigpTa->SetBinContent(3922,0.0206816); - ssigpTa->SetBinContent(3923,0.0207264); - ssigpTa->SetBinContent(3924,0.0207616); - ssigpTa->SetBinContent(3925,0.0208048); - ssigpTa->SetBinContent(3926,0.0208384); - ssigpTa->SetBinContent(3927,0.0208856); - ssigpTa->SetBinContent(3928,0.0209184); - ssigpTa->SetBinContent(3929,0.0209656); - ssigpTa->SetBinContent(3930,0.0210064); - ssigpTa->SetBinContent(3931,0.0210496); - ssigpTa->SetBinContent(3932,0.0210952); - ssigpTa->SetBinContent(3933,0.0211416); - ssigpTa->SetBinContent(3934,0.0211992); - ssigpTa->SetBinContent(3935,0.021236); - ssigpTa->SetBinContent(3936,0.0212904); - ssigpTa->SetBinContent(3937,0.02134); - ssigpTa->SetBinContent(3938,0.0213976); - ssigpTa->SetBinContent(3939,0.0214512); - ssigpTa->SetBinContent(3940,0.0214952); - ssigpTa->SetBinContent(3941,0.021552); - ssigpTa->SetBinContent(3942,0.0221304); - ssigpTa->SetBinContent(3943,0.025276); - ssigpTa->SetBinContent(3944,0.031008); - ssigpTa->SetBinContent(3945,0.03416); - ssigpTa->SetBinContent(3946,0.0347376); - ssigpTa->SetBinContent(3947,0.0347944); - ssigpTa->SetBinContent(3948,0.0348512); - ssigpTa->SetBinContent(3949,0.034912); - ssigpTa->SetBinContent(3950,0.0349728); - ssigpTa->SetBinContent(3951,0.0350256); - ssigpTa->SetBinContent(3952,0.035092); - ssigpTa->SetBinContent(3953,0.0347088); - ssigpTa->SetBinContent(3954,0.0320832); - ssigpTa->SetBinContent(3955,0.0273136); - ssigpTa->SetBinContent(3956,0.0250176); - ssigpTa->SetBinContent(3957,0.0251152); - ssigpTa->SetBinContent(3958,0.025688); - ssigpTa->SetBinContent(3959,0.0262624); - ssigpTa->SetBinContent(3960,0.0268272); - ssigpTa->SetBinContent(3961,0.027404); - ssigpTa->SetBinContent(3962,0.0277968); - ssigpTa->SetBinContent(3963,0.0272672); - ssigpTa->SetBinContent(3964,0.0257848); - ssigpTa->SetBinContent(3965,0.0252192); - ssigpTa->SetBinContent(3966,0.025556); - ssigpTa->SetBinContent(3967,0.0260768); - ssigpTa->SetBinContent(3968,0.0266088); - ssigpTa->SetBinContent(3969,0.0271664); - ssigpTa->SetBinContent(3970,0.0277304); - ssigpTa->SetBinContent(3971,0.028308); - ssigpTa->SetBinContent(3972,0.0289024); - ssigpTa->SetBinContent(3973,0.0292888); - ssigpTa->SetBinContent(3974,0.0286104); - ssigpTa->SetBinContent(3975,0.0268216); - ssigpTa->SetBinContent(3976,0.0260872); - ssigpTa->SetBinContent(3977,0.0264184); - ssigpTa->SetBinContent(3978,0.0269752); - ssigpTa->SetBinContent(3979,0.027536); - ssigpTa->SetBinContent(3980,0.0281128); - ssigpTa->SetBinContent(3981,0.0287); - ssigpTa->SetBinContent(3982,0.0293056); - ssigpTa->SetBinContent(3983,0.0299152); - ssigpTa->SetBinContent(3984,0.0303296); - ssigpTa->SetBinContent(3985,0.0296736); - ssigpTa->SetBinContent(3986,0.0279224); - ssigpTa->SetBinContent(3987,0.027208); - ssigpTa->SetBinContent(3988,0.0275608); - ssigpTa->SetBinContent(3989,0.0281408); - ssigpTa->SetBinContent(3990,0.0287448); - ssigpTa->SetBinContent(3991,0.0293472); - ssigpTa->SetBinContent(3992,0.029976); - ssigpTa->SetBinContent(3993,0.0306024); - ssigpTa->SetBinContent(3994,0.0312464); - ssigpTa->SetBinContent(3995,0.0318952); - ssigpTa->SetBinContent(3996,0.0323768); - ssigpTa->SetBinContent(3997,0.031872); - ssigpTa->SetBinContent(3998,0.0303656); - ssigpTa->SetBinContent(3999,0.0297392); - ssigpTa->SetBinContent(4000,0.0296896); - ssigpTa->SetBinContent(4001,0.0294176); - ssigpTa->SetBinContent(4002,0.0295472); - ssigpTa->SetBinContent(4003,0.0300696); - ssigpTa->SetBinContent(4004,0.030704); - ssigpTa->SetBinContent(4005,0.0313432); - ssigpTa->SetBinContent(4006,0.031996); - ssigpTa->SetBinContent(4007,0.0326688); - ssigpTa->SetBinContent(4008,0.0333536); - ssigpTa->SetBinContent(4009,0.034064); - ssigpTa->SetBinContent(4010,0.0347608); - ssigpTa->SetBinContent(4011,0.0354248); - ssigpTa->SetBinContent(4012,0.0360416); - ssigpTa->SetBinContent(4013,0.0367208); - ssigpTa->SetBinContent(4014,0.0374368); - ssigpTa->SetBinContent(4015,0.0379912); - ssigpTa->SetBinContent(4016,0.0384016); - ssigpTa->SetBinContent(4017,0.038996); - ssigpTa->SetBinContent(4018,0.039796); - ssigpTa->SetBinContent(4019,0.0406224); - ssigpTa->SetBinContent(4020,0.0411672); - ssigpTa->SetBinContent(4021,0.0401888); - ssigpTa->SetBinContent(4022,0.0375112); - ssigpTa->SetBinContent(4023,0.0355408); - ssigpTa->SetBinContent(4024,0.0342832); - ssigpTa->SetBinContent(4025,0.0340352); - ssigpTa->SetBinContent(4026,0.0345352); - ssigpTa->SetBinContent(4027,0.0351944); - ssigpTa->SetBinContent(4028,0.0358808); - ssigpTa->SetBinContent(4029,0.0365264); - ssigpTa->SetBinContent(4030,0.0371376); - ssigpTa->SetBinContent(4031,0.0377864); - ssigpTa->SetBinContent(4032,0.038488); - ssigpTa->SetBinContent(4033,0.0392392); - ssigpTa->SetBinContent(4034,0.039996); - ssigpTa->SetBinContent(4035,0.0407824); - ssigpTa->SetBinContent(4036,0.0415704); - ssigpTa->SetBinContent(4037,0.0423792); - ssigpTa->SetBinContent(4038,0.0432888); - ssigpTa->SetBinContent(4039,0.0443056); - ssigpTa->SetBinContent(4040,0.0453096); - ssigpTa->SetBinContent(4041,0.0462272); - ssigpTa->SetBinContent(4042,0.047052); - ssigpTa->SetBinContent(4043,0.0478032); - ssigpTa->SetBinContent(4044,0.0486504); - ssigpTa->SetBinContent(4045,0.0496216); - ssigpTa->SetBinContent(4046,0.05064); - ssigpTa->SetBinContent(4047,0.0516656); - ssigpTa->SetBinContent(4048,0.0527264); - ssigpTa->SetBinContent(4049,0.0539304); - ssigpTa->SetBinContent(4050,0.0552816); - ssigpTa->SetBinContent(4051,0.0565744); - ssigpTa->SetBinContent(4052,0.0577824); - ssigpTa->SetBinContent(4053,0.0588264); - ssigpTa->SetBinContent(4054,0.059716); - ssigpTa->SetBinContent(4055,0.0607448); - ssigpTa->SetBinContent(4056,0.0619488); - ssigpTa->SetBinContent(4057,0.0632168); - ssigpTa->SetBinContent(4058,0.0645296); - ssigpTa->SetBinContent(4059,0.0658904); - ssigpTa->SetBinContent(4060,0.067212); - ssigpTa->SetBinContent(4061,0.0681616); - ssigpTa->SetBinContent(4062,0.0687208); - ssigpTa->SetBinContent(4063,0.0696456); - ssigpTa->SetBinContent(4064,0.0707816); - ssigpTa->SetBinContent(4065,0.0718352); - ssigpTa->SetBinContent(4066,0.0731176); - ssigpTa->SetBinContent(4067,0.074636); - ssigpTa->SetBinContent(4068,0.0761984); - ssigpTa->SetBinContent(4069,0.0777952); - ssigpTa->SetBinContent(4070,0.0794096); - ssigpTa->SetBinContent(4071,0.0810648); - ssigpTa->SetBinContent(4072,0.0827272); - ssigpTa->SetBinContent(4073,0.0843808); - ssigpTa->SetBinContent(4074,0.0859584); - ssigpTa->SetBinContent(4075,0.0875368); - ssigpTa->SetBinContent(4076,0.0892704); - ssigpTa->SetBinContent(4077,0.0911456); - ssigpTa->SetBinContent(4078,0.0930656); - ssigpTa->SetBinContent(4079,0.0950176); - ssigpTa->SetBinContent(4080,0.0970144); - ssigpTa->SetBinContent(4081,0.0990544); - ssigpTa->SetBinContent(4082,0.101182); - ssigpTa->SetBinContent(4083,0.103363); - ssigpTa->SetBinContent(4084,0.105593); - ssigpTa->SetBinContent(4085,0.107896); - ssigpTa->SetBinContent(4086,0.110249); - ssigpTa->SetBinContent(4087,0.112635); - ssigpTa->SetBinContent(4088,0.115075); - ssigpTa->SetBinContent(4089,0.117554); - ssigpTa->SetBinContent(4090,0.120059); - ssigpTa->SetBinContent(4091,0.122676); - ssigpTa->SetBinContent(4092,0.125446); - ssigpTa->SetBinContent(4093,0.128364); - ssigpTa->SetBinContent(4094,0.131323); - ssigpTa->SetBinContent(4095,0.134317); - ssigpTa->SetBinContent(4096,0.137366); - ssigpTa->SetBinContent(4097,0.140484); - ssigpTa->SetBinContent(4098,0.143685); - ssigpTa->SetBinContent(4099,0.146932); - ssigpTa->SetBinContent(4100,0.150218); - ssigpTa->SetBinContent(4101,0.153663); - ssigpTa->SetBinContent(4102,0.157744); - ssigpTa->SetBinContent(4103,0.16251); - ssigpTa->SetBinContent(4104,0.166987); - ssigpTa->SetBinContent(4105,0.171075); - ssigpTa->SetBinContent(4106,0.175131); - ssigpTa->SetBinContent(4107,0.17893); - ssigpTa->SetBinContent(4108,0.181618); - ssigpTa->SetBinContent(4111,0.02197); - ssigpTa->SetBinContent(4112,0.021725); - ssigpTa->SetBinContent(4113,0.0216948); - ssigpTa->SetBinContent(4114,0.0216948); - ssigpTa->SetBinContent(4115,0.0216948); - ssigpTa->SetBinContent(4116,0.0216948); - ssigpTa->SetBinContent(4117,0.0216984); - ssigpTa->SetBinContent(4118,0.0217136); - ssigpTa->SetBinContent(4119,0.0217396); - ssigpTa->SetBinContent(4120,0.0217548); - ssigpTa->SetBinContent(4121,0.0217664); - ssigpTa->SetBinContent(4122,0.0217728); - ssigpTa->SetBinContent(4123,0.0217792); - ssigpTa->SetBinContent(4124,0.0217856); - ssigpTa->SetBinContent(4125,0.0217856); - ssigpTa->SetBinContent(4126,0.0217856); - ssigpTa->SetBinContent(4127,0.0217856); - ssigpTa->SetBinContent(4128,0.0217884); - ssigpTa->SetBinContent(4129,0.0217884); - ssigpTa->SetBinContent(4130,0.0217884); - ssigpTa->SetBinContent(4131,0.0217884); - ssigpTa->SetBinContent(4132,0.0217884); - ssigpTa->SetBinContent(4133,0.0217884); - ssigpTa->SetBinContent(4134,0.021792); - ssigpTa->SetBinContent(4135,0.0218056); - ssigpTa->SetBinContent(4136,0.02183); - ssigpTa->SetBinContent(4137,0.0218544); - ssigpTa->SetBinContent(4138,0.021866); - ssigpTa->SetBinContent(4139,0.021874); - ssigpTa->SetBinContent(4140,0.021874); - ssigpTa->SetBinContent(4141,0.021874); - ssigpTa->SetBinContent(4142,0.021874); - ssigpTa->SetBinContent(4143,0.0218868); - ssigpTa->SetBinContent(4144,0.0219004); - ssigpTa->SetBinContent(4145,0.0219248); - ssigpTa->SetBinContent(4146,0.02194); - ssigpTa->SetBinContent(4147,0.0219516); - ssigpTa->SetBinContent(4148,0.0219624); - ssigpTa->SetBinContent(4149,0.0219768); - ssigpTa->SetBinContent(4150,0.0219868); - ssigpTa->SetBinContent(4151,0.0220004); - ssigpTa->SetBinContent(4152,0.0220184); - ssigpTa->SetBinContent(4153,0.0220284); - ssigpTa->SetBinContent(4154,0.0220464); - ssigpTa->SetBinContent(4155,0.0220608); - ssigpTa->SetBinContent(4156,0.0220788); - ssigpTa->SetBinContent(4157,0.0220888); - ssigpTa->SetBinContent(4158,0.0221068); - ssigpTa->SetBinContent(4159,0.0221204); - ssigpTa->SetBinContent(4160,0.0221384); - ssigpTa->SetBinContent(4161,0.0221592); - ssigpTa->SetBinContent(4162,0.0221744); - ssigpTa->SetBinContent(4163,0.0222068); - ssigpTa->SetBinContent(4164,0.0222232); - ssigpTa->SetBinContent(4165,0.0222448); - ssigpTa->SetBinContent(4166,0.02226); - ssigpTa->SetBinContent(4167,0.0222924); - ssigpTa->SetBinContent(4168,0.0223088); - ssigpTa->SetBinContent(4169,0.0223224); - ssigpTa->SetBinContent(4170,0.022344); - ssigpTa->SetBinContent(4171,0.0223792); - ssigpTa->SetBinContent(4172,0.0224008); - ssigpTa->SetBinContent(4173,0.0224188); - ssigpTa->SetBinContent(4174,0.0224324); - ssigpTa->SetBinContent(4175,0.0224648); - ssigpTa->SetBinContent(4176,0.0224892); - ssigpTa->SetBinContent(4177,0.0225108); - ssigpTa->SetBinContent(4178,0.0225244); - ssigpTa->SetBinContent(4179,0.0225596); - ssigpTa->SetBinContent(4180,0.0225848); - ssigpTa->SetBinContent(4181,0.0226208); - ssigpTa->SetBinContent(4182,0.0226596); - ssigpTa->SetBinContent(4183,0.0226876); - ssigpTa->SetBinContent(4184,0.0227128); - ssigpTa->SetBinContent(4185,0.02274); - ssigpTa->SetBinContent(4186,0.0227652); - ssigpTa->SetBinContent(4187,0.0227968); - ssigpTa->SetBinContent(4188,0.02284); - ssigpTa->SetBinContent(4189,0.0228652); - ssigpTa->SetBinContent(4190,0.0228932); - ssigpTa->SetBinContent(4191,0.0229292); - ssigpTa->SetBinContent(4192,0.0229672); - ssigpTa->SetBinContent(4193,0.023006); - ssigpTa->SetBinContent(4194,0.0230456); - ssigpTa->SetBinContent(4195,0.0230736); - ssigpTa->SetBinContent(4196,0.023116); - ssigpTa->SetBinContent(4197,0.0231556); - ssigpTa->SetBinContent(4198,0.023198); - ssigpTa->SetBinContent(4199,0.023234); - ssigpTa->SetBinContent(4200,0.0232684); - ssigpTa->SetBinContent(4201,0.0233044); - ssigpTa->SetBinContent(4202,0.0233504); - ssigpTa->SetBinContent(4203,0.02339); - ssigpTa->SetBinContent(4204,0.023436); - ssigpTa->SetBinContent(4205,0.0234784); - ssigpTa->SetBinContent(4206,0.0235136); - ssigpTa->SetBinContent(4207,0.0235704); - ssigpTa->SetBinContent(4208,0.0236164); - ssigpTa->SetBinContent(4209,0.0236704); - ssigpTa->SetBinContent(4210,0.0237056); - ssigpTa->SetBinContent(4211,0.023766); - ssigpTa->SetBinContent(4212,0.0238264); - ssigpTa->SetBinContent(4213,0.0238732); - ssigpTa->SetBinContent(4214,0.023922); - ssigpTa->SetBinContent(4215,0.0239796); - ssigpTa->SetBinContent(4216,0.0246152); - ssigpTa->SetBinContent(4217,0.0281648); - ssigpTa->SetBinContent(4218,0.0352292); - ssigpTa->SetBinContent(4219,0.0387744); - ssigpTa->SetBinContent(4220,0.0394144); - ssigpTa->SetBinContent(4221,0.0394748); - ssigpTa->SetBinContent(4222,0.039528); - ssigpTa->SetBinContent(4223,0.039592); - ssigpTa->SetBinContent(4224,0.0396604); - ssigpTa->SetBinContent(4225,0.0397136); - ssigpTa->SetBinContent(4226,0.039766); - ssigpTa->SetBinContent(4227,0.0393296); - ssigpTa->SetBinContent(4228,0.036342); - ssigpTa->SetBinContent(4229,0.030408); - ssigpTa->SetBinContent(4230,0.027828); - ssigpTa->SetBinContent(4231,0.0279504); - ssigpTa->SetBinContent(4232,0.028604); - ssigpTa->SetBinContent(4233,0.0292576); - ssigpTa->SetBinContent(4234,0.0299076); - ssigpTa->SetBinContent(4235,0.0305548); - ssigpTa->SetBinContent(4236,0.0310184); - ssigpTa->SetBinContent(4237,0.0304272); - ssigpTa->SetBinContent(4238,0.0285592); - ssigpTa->SetBinContent(4239,0.0279356); - ssigpTa->SetBinContent(4240,0.0283592); - ssigpTa->SetBinContent(4241,0.028956); - ssigpTa->SetBinContent(4242,0.0295664); - ssigpTa->SetBinContent(4243,0.030184); - ssigpTa->SetBinContent(4244,0.0308348); - ssigpTa->SetBinContent(4245,0.0314884); - ssigpTa->SetBinContent(4246,0.0321636); - ssigpTa->SetBinContent(4247,0.0326236); - ssigpTa->SetBinContent(4248,0.0318704); - ssigpTa->SetBinContent(4249,0.0296412); - ssigpTa->SetBinContent(4250,0.0288152); - ssigpTa->SetBinContent(4251,0.0291908); - ssigpTa->SetBinContent(4252,0.0298084); - ssigpTa->SetBinContent(4253,0.0304432); - ssigpTa->SetBinContent(4254,0.0310904); - ssigpTa->SetBinContent(4255,0.031762); - ssigpTa->SetBinContent(4256,0.03244); - ssigpTa->SetBinContent(4257,0.0331368); - ssigpTa->SetBinContent(4258,0.0336032); - ssigpTa->SetBinContent(4259,0.0328708); - ssigpTa->SetBinContent(4260,0.0306056); - ssigpTa->SetBinContent(4261,0.0297896); - ssigpTa->SetBinContent(4262,0.0301804); - ssigpTa->SetBinContent(4263,0.0308288); - ssigpTa->SetBinContent(4264,0.0314844); - ssigpTa->SetBinContent(4265,0.0321688); - ssigpTa->SetBinContent(4266,0.032862); - ssigpTa->SetBinContent(4267,0.0335804); - ssigpTa->SetBinContent(4268,0.0342864); - ssigpTa->SetBinContent(4269,0.035022); - ssigpTa->SetBinContent(4270,0.0355408); - ssigpTa->SetBinContent(4271,0.0349492); - ssigpTa->SetBinContent(4272,0.0329124); - ssigpTa->SetBinContent(4273,0.0321904); - ssigpTa->SetBinContent(4274,0.0322624); - ssigpTa->SetBinContent(4275,0.032316); - ssigpTa->SetBinContent(4276,0.032594); - ssigpTa->SetBinContent(4277,0.0332108); - ssigpTa->SetBinContent(4278,0.0339148); - ssigpTa->SetBinContent(4279,0.0346316); - ssigpTa->SetBinContent(4280,0.0353564); - ssigpTa->SetBinContent(4281,0.0361064); - ssigpTa->SetBinContent(4282,0.0368808); - ssigpTa->SetBinContent(4283,0.0376596); - ssigpTa->SetBinContent(4284,0.0384368); - ssigpTa->SetBinContent(4285,0.0391072); - ssigpTa->SetBinContent(4286,0.039586); - ssigpTa->SetBinContent(4287,0.0402836); - ssigpTa->SetBinContent(4288,0.041068); - ssigpTa->SetBinContent(4289,0.041784); - ssigpTa->SetBinContent(4290,0.0424696); - ssigpTa->SetBinContent(4291,0.0432424); - ssigpTa->SetBinContent(4292,0.0441436); - ssigpTa->SetBinContent(4293,0.0450988); - ssigpTa->SetBinContent(4294,0.0456912); - ssigpTa->SetBinContent(4295,0.0444972); - ssigpTa->SetBinContent(4296,0.0408128); - ssigpTa->SetBinContent(4297,0.0387036); - ssigpTa->SetBinContent(4298,0.037818); - ssigpTa->SetBinContent(4299,0.0377732); - ssigpTa->SetBinContent(4300,0.0383816); - ssigpTa->SetBinContent(4301,0.039154); - ssigpTa->SetBinContent(4302,0.0399164); - ssigpTa->SetBinContent(4303,0.0405976); - ssigpTa->SetBinContent(4304,0.0410932); - ssigpTa->SetBinContent(4305,0.0417688); - ssigpTa->SetBinContent(4306,0.042578); - ssigpTa->SetBinContent(4307,0.0434144); - ssigpTa->SetBinContent(4308,0.044302); - ssigpTa->SetBinContent(4309,0.045194); - ssigpTa->SetBinContent(4310,0.0461032); - ssigpTa->SetBinContent(4311,0.0470448); - ssigpTa->SetBinContent(4312,0.0481548); - ssigpTa->SetBinContent(4313,0.049586); - ssigpTa->SetBinContent(4314,0.0508076); - ssigpTa->SetBinContent(4315,0.051868); - ssigpTa->SetBinContent(4316,0.052732); - ssigpTa->SetBinContent(4317,0.0532872); - ssigpTa->SetBinContent(4318,0.0541764); - ssigpTa->SetBinContent(4319,0.0552764); - ssigpTa->SetBinContent(4320,0.0564448); - ssigpTa->SetBinContent(4321,0.057624); - ssigpTa->SetBinContent(4322,0.0588572); - ssigpTa->SetBinContent(4323,0.0603084); - ssigpTa->SetBinContent(4324,0.0620972); - ssigpTa->SetBinContent(4325,0.063652); - ssigpTa->SetBinContent(4326,0.0650212); - ssigpTa->SetBinContent(4327,0.0661392); - ssigpTa->SetBinContent(4328,0.0668144); - ssigpTa->SetBinContent(4329,0.067908); - ssigpTa->SetBinContent(4330,0.069278); - ssigpTa->SetBinContent(4331,0.07073); - ssigpTa->SetBinContent(4332,0.072244); - ssigpTa->SetBinContent(4333,0.0738084); - ssigpTa->SetBinContent(4334,0.0753496); - ssigpTa->SetBinContent(4335,0.0766292); - ssigpTa->SetBinContent(4336,0.0777624); - ssigpTa->SetBinContent(4337,0.0790192); - ssigpTa->SetBinContent(4338,0.0802828); - ssigpTa->SetBinContent(4339,0.081156); - ssigpTa->SetBinContent(4340,0.082544); - ssigpTa->SetBinContent(4341,0.084274); - ssigpTa->SetBinContent(4342,0.0861092); - ssigpTa->SetBinContent(4343,0.0879444); - ssigpTa->SetBinContent(4344,0.0898532); - ssigpTa->SetBinContent(4345,0.0917632); - ssigpTa->SetBinContent(4346,0.0937092); - ssigpTa->SetBinContent(4347,0.0956556); - ssigpTa->SetBinContent(4348,0.0975012); - ssigpTa->SetBinContent(4349,0.099056); - ssigpTa->SetBinContent(4350,0.100988); - ssigpTa->SetBinContent(4351,0.103148); - ssigpTa->SetBinContent(4352,0.105386); - ssigpTa->SetBinContent(4353,0.107672); - ssigpTa->SetBinContent(4354,0.10999); - ssigpTa->SetBinContent(4355,0.112379); - ssigpTa->SetBinContent(4356,0.114856); - ssigpTa->SetBinContent(4357,0.11745); - ssigpTa->SetBinContent(4358,0.120175); - ssigpTa->SetBinContent(4359,0.122906); - ssigpTa->SetBinContent(4360,0.125678); - ssigpTa->SetBinContent(4361,0.128528); - ssigpTa->SetBinContent(4362,0.131406); - ssigpTa->SetBinContent(4363,0.134304); - ssigpTa->SetBinContent(4364,0.137238); - ssigpTa->SetBinContent(4365,0.140268); - ssigpTa->SetBinContent(4366,0.143526); - ssigpTa->SetBinContent(4367,0.146918); - ssigpTa->SetBinContent(4368,0.150391); - ssigpTa->SetBinContent(4369,0.153883); - ssigpTa->SetBinContent(4370,0.157424); - ssigpTa->SetBinContent(4371,0.161073); - ssigpTa->SetBinContent(4372,0.164791); - ssigpTa->SetBinContent(4373,0.16858); - ssigpTa->SetBinContent(4374,0.172418); - ssigpTa->SetBinContent(4375,0.176449); - ssigpTa->SetBinContent(4376,0.181259); - ssigpTa->SetBinContent(4377,0.187122); - ssigpTa->SetBinContent(4378,0.192396); - ssigpTa->SetBinContent(4379,0.19718); - ssigpTa->SetBinContent(4380,0.201913); - ssigpTa->SetBinContent(4381,0.206665); - ssigpTa->SetBinContent(4382,0.212544); - ssigpTa->SetBinContent(4385,0.03096); - ssigpTa->SetBinContent(4386,0.0303842); - ssigpTa->SetBinContent(4387,0.0300808); - ssigpTa->SetBinContent(4388,0.0300808); - ssigpTa->SetBinContent(4389,0.0300808); - ssigpTa->SetBinContent(4390,0.0300808); - ssigpTa->SetBinContent(4391,0.0300968); - ssigpTa->SetBinContent(4392,0.030124); - ssigpTa->SetBinContent(4393,0.0301752); - ssigpTa->SetBinContent(4394,0.0302024); - ssigpTa->SetBinContent(4395,0.0302104); - ssigpTa->SetBinContent(4396,0.0302144); - ssigpTa->SetBinContent(4397,0.0302176); - ssigpTa->SetBinContent(4398,0.0302176); - ssigpTa->SetBinContent(4399,0.0302176); - ssigpTa->SetBinContent(4400,0.0302176); - ssigpTa->SetBinContent(4401,0.0302176); - ssigpTa->SetBinContent(4402,0.0302176); - ssigpTa->SetBinContent(4403,0.0302176); - ssigpTa->SetBinContent(4404,0.0302176); - ssigpTa->SetBinContent(4405,0.0302176); - ssigpTa->SetBinContent(4406,0.0302176); - ssigpTa->SetBinContent(4407,0.0302176); - ssigpTa->SetBinContent(4408,0.0302176); - ssigpTa->SetBinContent(4409,0.0302248); - ssigpTa->SetBinContent(4410,0.0302392); - ssigpTa->SetBinContent(4411,0.0302544); - ssigpTa->SetBinContent(4412,0.0302744); - ssigpTa->SetBinContent(4413,0.0302824); - ssigpTa->SetBinContent(4414,0.0302864); - ssigpTa->SetBinContent(4415,0.0302864); - ssigpTa->SetBinContent(4416,0.0302864); - ssigpTa->SetBinContent(4417,0.0302864); - ssigpTa->SetBinContent(4418,0.0302968); - ssigpTa->SetBinContent(4419,0.030308); - ssigpTa->SetBinContent(4420,0.0303232); - ssigpTa->SetBinContent(4421,0.0303432); - ssigpTa->SetBinContent(4422,0.0303672); - ssigpTa->SetBinContent(4423,0.0303872); - ssigpTa->SetBinContent(4424,0.0304064); - ssigpTa->SetBinContent(4425,0.0304136); - ssigpTa->SetBinContent(4426,0.0304208); - ssigpTa->SetBinContent(4427,0.030432); - ssigpTa->SetBinContent(4428,0.03044); - ssigpTa->SetBinContent(4429,0.0304632); - ssigpTa->SetBinContent(4430,0.0304712); - ssigpTa->SetBinContent(4431,0.0304824); - ssigpTa->SetBinContent(4432,0.0305096); - ssigpTa->SetBinContent(4433,0.0305208); - ssigpTa->SetBinContent(4434,0.030532); - ssigpTa->SetBinContent(4435,0.030552); - ssigpTa->SetBinContent(4436,0.0305832); - ssigpTa->SetBinContent(4437,0.0306104); - ssigpTa->SetBinContent(4438,0.0306408); - ssigpTa->SetBinContent(4439,0.0306488); - ssigpTa->SetBinContent(4440,0.030676); - ssigpTa->SetBinContent(4441,0.0306912); - ssigpTa->SetBinContent(4442,0.0307056); - ssigpTa->SetBinContent(4443,0.0307096); - ssigpTa->SetBinContent(4444,0.0307248); - ssigpTa->SetBinContent(4445,0.0307552); - ssigpTa->SetBinContent(4446,0.0307864); - ssigpTa->SetBinContent(4447,0.0308064); - ssigpTa->SetBinContent(4448,0.0308536); - ssigpTa->SetBinContent(4449,0.030872); - ssigpTa->SetBinContent(4450,0.0308992); - ssigpTa->SetBinContent(4451,0.0309072); - ssigpTa->SetBinContent(4452,0.0309256); - ssigpTa->SetBinContent(4453,0.0309408); - ssigpTa->SetBinContent(4454,0.030984); - ssigpTa->SetBinContent(4455,0.0310224); - ssigpTa->SetBinContent(4456,0.0310576); - ssigpTa->SetBinContent(4457,0.031088); - ssigpTa->SetBinContent(4458,0.0311032); - ssigpTa->SetBinContent(4459,0.0311384); - ssigpTa->SetBinContent(4460,0.0311568); - ssigpTa->SetBinContent(4461,0.0312); - ssigpTa->SetBinContent(4462,0.0312384); - ssigpTa->SetBinContent(4463,0.0312736); - ssigpTa->SetBinContent(4464,0.0313008); - ssigpTa->SetBinContent(4465,0.0313232); - ssigpTa->SetBinContent(4466,0.0313496); - ssigpTa->SetBinContent(4467,0.031396); - ssigpTa->SetBinContent(4468,0.0314512); - ssigpTa->SetBinContent(4469,0.0314896); - ssigpTa->SetBinContent(4470,0.0315208); - ssigpTa->SetBinContent(4471,0.0315544); - ssigpTa->SetBinContent(4472,0.0316016); - ssigpTa->SetBinContent(4473,0.03164); - ssigpTa->SetBinContent(4474,0.0316752); - ssigpTa->SetBinContent(4475,0.0317296); - ssigpTa->SetBinContent(4476,0.03176); - ssigpTa->SetBinContent(4477,0.0318104); - ssigpTa->SetBinContent(4478,0.0318528); - ssigpTa->SetBinContent(4479,0.0318912); - ssigpTa->SetBinContent(4480,0.0319296); - ssigpTa->SetBinContent(4481,0.031972); - ssigpTa->SetBinContent(4482,0.0320536); - ssigpTa->SetBinContent(4483,0.0320928); - ssigpTa->SetBinContent(4484,0.0321384); - ssigpTa->SetBinContent(4485,0.0321848); - ssigpTa->SetBinContent(4486,0.0322464); - ssigpTa->SetBinContent(4487,0.032316); - ssigpTa->SetBinContent(4488,0.0323672); - ssigpTa->SetBinContent(4489,0.0324168); - ssigpTa->SetBinContent(4490,0.0331264); - ssigpTa->SetBinContent(4491,0.0382992); - ssigpTa->SetBinContent(4492,0.0492392); - ssigpTa->SetBinContent(4493,0.0544); - ssigpTa->SetBinContent(4494,0.0551216); - ssigpTa->SetBinContent(4495,0.05518); - ssigpTa->SetBinContent(4496,0.0552336); - ssigpTa->SetBinContent(4497,0.0552992); - ssigpTa->SetBinContent(4498,0.0553848); - ssigpTa->SetBinContent(4499,0.0554352); - ssigpTa->SetBinContent(4500,0.0554968); - ssigpTa->SetBinContent(4501,0.0549984); - ssigpTa->SetBinContent(4502,0.0506056); - ssigpTa->SetBinContent(4503,0.0412808); - ssigpTa->SetBinContent(4504,0.0375056); - ssigpTa->SetBinContent(4505,0.0378152); - ssigpTa->SetBinContent(4506,0.038756); - ssigpTa->SetBinContent(4507,0.0396696); - ssigpTa->SetBinContent(4508,0.0405952); - ssigpTa->SetBinContent(4509,0.0415168); - ssigpTa->SetBinContent(4510,0.0422384); - ssigpTa->SetBinContent(4511,0.0413576); - ssigpTa->SetBinContent(4512,0.03834); - ssigpTa->SetBinContent(4513,0.037424); - ssigpTa->SetBinContent(4514,0.0381272); - ssigpTa->SetBinContent(4515,0.0390104); - ssigpTa->SetBinContent(4516,0.0398576); - ssigpTa->SetBinContent(4517,0.040744); - ssigpTa->SetBinContent(4518,0.0416584); - ssigpTa->SetBinContent(4519,0.04258); - ssigpTa->SetBinContent(4520,0.043536); - ssigpTa->SetBinContent(4521,0.044248); - ssigpTa->SetBinContent(4522,0.0431488); - ssigpTa->SetBinContent(4523,0.0396216); - ssigpTa->SetBinContent(4524,0.0384096); - ssigpTa->SetBinContent(4525,0.0389808); - ssigpTa->SetBinContent(4526,0.0398392); - ssigpTa->SetBinContent(4527,0.0407136); - ssigpTa->SetBinContent(4528,0.0416352); - ssigpTa->SetBinContent(4529,0.042548); - ssigpTa->SetBinContent(4530,0.043504); - ssigpTa->SetBinContent(4531,0.044448); - ssigpTa->SetBinContent(4532,0.0451912); - ssigpTa->SetBinContent(4533,0.044016); - ssigpTa->SetBinContent(4534,0.040344); - ssigpTa->SetBinContent(4535,0.039032); - ssigpTa->SetBinContent(4536,0.0396344); - ssigpTa->SetBinContent(4537,0.040512); - ssigpTa->SetBinContent(4538,0.041396); - ssigpTa->SetBinContent(4539,0.0423088); - ssigpTa->SetBinContent(4540,0.043268); - ssigpTa->SetBinContent(4541,0.044252); - ssigpTa->SetBinContent(4542,0.0452352); - ssigpTa->SetBinContent(4543,0.0462304); - ssigpTa->SetBinContent(4544,0.0470032); - ssigpTa->SetBinContent(4545,0.0459472); - ssigpTa->SetBinContent(4546,0.0423808); - ssigpTa->SetBinContent(4547,0.0411784); - ssigpTa->SetBinContent(4548,0.0417368); - ssigpTa->SetBinContent(4549,0.042644); - ssigpTa->SetBinContent(4550,0.0434512); - ssigpTa->SetBinContent(4551,0.044336); - ssigpTa->SetBinContent(4552,0.0453032); - ssigpTa->SetBinContent(4553,0.0462624); - ssigpTa->SetBinContent(4554,0.0472576); - ssigpTa->SetBinContent(4555,0.0482632); - ssigpTa->SetBinContent(4556,0.0493128); - ssigpTa->SetBinContent(4557,0.0503768); - ssigpTa->SetBinContent(4558,0.0514216); - ssigpTa->SetBinContent(4559,0.0521424); - ssigpTa->SetBinContent(4560,0.0523456); - ssigpTa->SetBinContent(4561,0.0530496); - ssigpTa->SetBinContent(4562,0.054144); - ssigpTa->SetBinContent(4563,0.055344); - ssigpTa->SetBinContent(4564,0.0568032); - ssigpTa->SetBinContent(4565,0.0581048); - ssigpTa->SetBinContent(4566,0.05942); - ssigpTa->SetBinContent(4567,0.060736); - ssigpTa->SetBinContent(4568,0.0616664); - ssigpTa->SetBinContent(4569,0.0594976); - ssigpTa->SetBinContent(4570,0.0529528); - ssigpTa->SetBinContent(4571,0.0501328); - ssigpTa->SetBinContent(4572,0.050212); - ssigpTa->SetBinContent(4573,0.050844); - ssigpTa->SetBinContent(4574,0.0517984); - ssigpTa->SetBinContent(4575,0.0529048); - ssigpTa->SetBinContent(4576,0.0539928); - ssigpTa->SetBinContent(4577,0.0547576); - ssigpTa->SetBinContent(4578,0.0550488); - ssigpTa->SetBinContent(4579,0.0558424); - ssigpTa->SetBinContent(4580,0.0569824); - ssigpTa->SetBinContent(4581,0.058184); - ssigpTa->SetBinContent(4582,0.0594264); - ssigpTa->SetBinContent(4583,0.0607152); - ssigpTa->SetBinContent(4584,0.06202); - ssigpTa->SetBinContent(4585,0.0633648); - ssigpTa->SetBinContent(4586,0.0651824); - ssigpTa->SetBinContent(4587,0.0677304); - ssigpTa->SetBinContent(4588,0.0697192); - ssigpTa->SetBinContent(4589,0.0712384); - ssigpTa->SetBinContent(4590,0.0721896); - ssigpTa->SetBinContent(4591,0.0724048); - ssigpTa->SetBinContent(4592,0.0733912); - ssigpTa->SetBinContent(4593,0.074972); - ssigpTa->SetBinContent(4594,0.076624); - ssigpTa->SetBinContent(4595,0.0783032); - ssigpTa->SetBinContent(4596,0.0800664); - ssigpTa->SetBinContent(4597,0.082364); - ssigpTa->SetBinContent(4598,0.0853984); - ssigpTa->SetBinContent(4599,0.0878128); - ssigpTa->SetBinContent(4600,0.0898); - ssigpTa->SetBinContent(4601,0.0910552); - ssigpTa->SetBinContent(4602,0.0913696); - ssigpTa->SetBinContent(4603,0.0926216); - ssigpTa->SetBinContent(4604,0.0945608); - ssigpTa->SetBinContent(4605,0.0966464); - ssigpTa->SetBinContent(4606,0.0987904); - ssigpTa->SetBinContent(4607,0.101025); - ssigpTa->SetBinContent(4608,0.103262); - ssigpTa->SetBinContent(4609,0.105606); - ssigpTa->SetBinContent(4610,0.108194); - ssigpTa->SetBinContent(4611,0.11053); - ssigpTa->SetBinContent(4612,0.112106); - ssigpTa->SetBinContent(4613,0.112702); - ssigpTa->SetBinContent(4614,0.114396); - ssigpTa->SetBinContent(4615,0.116922); - ssigpTa->SetBinContent(4616,0.119576); - ssigpTa->SetBinContent(4617,0.122284); - ssigpTa->SetBinContent(4618,0.125024); - ssigpTa->SetBinContent(4619,0.127838); - ssigpTa->SetBinContent(4620,0.130651); - ssigpTa->SetBinContent(4621,0.133571); - ssigpTa->SetBinContent(4622,0.136167); - ssigpTa->SetBinContent(4623,0.137936); - ssigpTa->SetBinContent(4624,0.140479); - ssigpTa->SetBinContent(4625,0.143624); - ssigpTa->SetBinContent(4626,0.146899); - ssigpTa->SetBinContent(4627,0.150205); - ssigpTa->SetBinContent(4628,0.153589); - ssigpTa->SetBinContent(4629,0.157052); - ssigpTa->SetBinContent(4630,0.160671); - ssigpTa->SetBinContent(4631,0.164558); - ssigpTa->SetBinContent(4632,0.168788); - ssigpTa->SetBinContent(4633,0.17287); - ssigpTa->SetBinContent(4634,0.176987); - ssigpTa->SetBinContent(4635,0.181279); - ssigpTa->SetBinContent(4636,0.185533); - ssigpTa->SetBinContent(4637,0.189778); - ssigpTa->SetBinContent(4638,0.194042); - ssigpTa->SetBinContent(4639,0.198482); - ssigpTa->SetBinContent(4640,0.203208); - ssigpTa->SetBinContent(4641,0.208174); - ssigpTa->SetBinContent(4642,0.213232); - ssigpTa->SetBinContent(4643,0.218317); - ssigpTa->SetBinContent(4644,0.223479); - ssigpTa->SetBinContent(4645,0.228783); - ssigpTa->SetBinContent(4646,0.234215); - ssigpTa->SetBinContent(4647,0.239734); - ssigpTa->SetBinContent(4648,0.245326); - ssigpTa->SetBinContent(4649,0.251166); - ssigpTa->SetBinContent(4650,0.258366); - ssigpTa->SetBinContent(4651,0.267423); - ssigpTa->SetBinContent(4652,0.275315); - ssigpTa->SetBinContent(4653,0.282244); - ssigpTa->SetBinContent(4654,0.289138); - ssigpTa->SetBinContent(4655,0.298959); - ssigpTa->SetBinContent(4656,0.309827); - ssigpTa->SetBinContent(4659,0.0593206); - ssigpTa->SetBinContent(4660,0.0584904); - ssigpTa->SetBinContent(4661,0.0578388); - ssigpTa->SetBinContent(4662,0.0578388); - ssigpTa->SetBinContent(4663,0.0578388); - ssigpTa->SetBinContent(4664,0.0578468); - ssigpTa->SetBinContent(4665,0.0578628); - ssigpTa->SetBinContent(4666,0.0579428); - ssigpTa->SetBinContent(4667,0.0580104); - ssigpTa->SetBinContent(4668,0.0580664); - ssigpTa->SetBinContent(4669,0.0580744); - ssigpTa->SetBinContent(4670,0.0580744); - ssigpTa->SetBinContent(4671,0.0580744); - ssigpTa->SetBinContent(4672,0.0580744); - ssigpTa->SetBinContent(4673,0.0580744); - ssigpTa->SetBinContent(4674,0.0580744); - ssigpTa->SetBinContent(4675,0.0580744); - ssigpTa->SetBinContent(4676,0.0580744); - ssigpTa->SetBinContent(4677,0.0580744); - ssigpTa->SetBinContent(4678,0.0580744); - ssigpTa->SetBinContent(4679,0.0580744); - ssigpTa->SetBinContent(4680,0.0580744); - ssigpTa->SetBinContent(4681,0.0580744); - ssigpTa->SetBinContent(4682,0.0580744); - ssigpTa->SetBinContent(4683,0.0580744); - ssigpTa->SetBinContent(4684,0.058078); - ssigpTa->SetBinContent(4685,0.058086); - ssigpTa->SetBinContent(4686,0.058094); - ssigpTa->SetBinContent(4687,0.058102); - ssigpTa->SetBinContent(4688,0.058102); - ssigpTa->SetBinContent(4689,0.058102); - ssigpTa->SetBinContent(4690,0.058102); - ssigpTa->SetBinContent(4691,0.058102); - ssigpTa->SetBinContent(4692,0.058102); - ssigpTa->SetBinContent(4693,0.0581056); - ssigpTa->SetBinContent(4694,0.0581136); - ssigpTa->SetBinContent(4695,0.0581296); - ssigpTa->SetBinContent(4696,0.0581536); - ssigpTa->SetBinContent(4697,0.0581936); - ssigpTa->SetBinContent(4698,0.0582096); - ssigpTa->SetBinContent(4699,0.0582176); - ssigpTa->SetBinContent(4700,0.0582212); - ssigpTa->SetBinContent(4701,0.0582612); - ssigpTa->SetBinContent(4702,0.0582692); - ssigpTa->SetBinContent(4703,0.0582772); - ssigpTa->SetBinContent(4704,0.0582852); - ssigpTa->SetBinContent(4705,0.0583252); - ssigpTa->SetBinContent(4706,0.0583688); - ssigpTa->SetBinContent(4707,0.0584088); - ssigpTa->SetBinContent(4708,0.0584168); - ssigpTa->SetBinContent(4709,0.0584328); - ssigpTa->SetBinContent(4710,0.0584568); - ssigpTa->SetBinContent(4711,0.0585004); - ssigpTa->SetBinContent(4712,0.0585164); - ssigpTa->SetBinContent(4713,0.0585324); - ssigpTa->SetBinContent(4714,0.0585404); - ssigpTa->SetBinContent(4715,0.058552); - ssigpTa->SetBinContent(4716,0.058552); - ssigpTa->SetBinContent(4717,0.058552); - ssigpTa->SetBinContent(4718,0.05856); - ssigpTa->SetBinContent(4719,0.0585796); - ssigpTa->SetBinContent(4720,0.0586436); - ssigpTa->SetBinContent(4721,0.0587236); - ssigpTa->SetBinContent(4722,0.0587796); - ssigpTa->SetBinContent(4723,0.0588392); - ssigpTa->SetBinContent(4724,0.0588472); - ssigpTa->SetBinContent(4725,0.0588552); - ssigpTa->SetBinContent(4726,0.0588552); - ssigpTa->SetBinContent(4727,0.0588748); - ssigpTa->SetBinContent(4728,0.0588988); - ssigpTa->SetBinContent(4729,0.0589468); - ssigpTa->SetBinContent(4730,0.0589744); - ssigpTa->SetBinContent(4731,0.0589904); - ssigpTa->SetBinContent(4732,0.0590384); - ssigpTa->SetBinContent(4733,0.059122); - ssigpTa->SetBinContent(4734,0.059178); - ssigpTa->SetBinContent(4735,0.059202); - ssigpTa->SetBinContent(4736,0.0592536); - ssigpTa->SetBinContent(4737,0.0592776); - ssigpTa->SetBinContent(4738,0.0592936); - ssigpTa->SetBinContent(4739,0.0593052); - ssigpTa->SetBinContent(4740,0.0593212); - ssigpTa->SetBinContent(4741,0.0593888); - ssigpTa->SetBinContent(4742,0.0595168); - ssigpTa->SetBinContent(4743,0.0595808); - ssigpTa->SetBinContent(4744,0.0596004); - ssigpTa->SetBinContent(4745,0.0596244); - ssigpTa->SetBinContent(4746,0.059652); - ssigpTa->SetBinContent(4747,0.0597); - ssigpTa->SetBinContent(4748,0.059764); - ssigpTa->SetBinContent(4749,0.0598236); - ssigpTa->SetBinContent(4750,0.0599276); - ssigpTa->SetBinContent(4751,0.0599552); - ssigpTa->SetBinContent(4752,0.0600032); - ssigpTa->SetBinContent(4753,0.0600308); - ssigpTa->SetBinContent(4754,0.0600548); - ssigpTa->SetBinContent(4755,0.0601304); - ssigpTa->SetBinContent(4756,0.0602584); - ssigpTa->SetBinContent(4757,0.060334); - ssigpTa->SetBinContent(4758,0.060358); - ssigpTa->SetBinContent(4759,0.0603936); - ssigpTa->SetBinContent(4760,0.0604852); - ssigpTa->SetBinContent(4761,0.0605652); - ssigpTa->SetBinContent(4762,0.0606808); - ssigpTa->SetBinContent(4763,0.0607368); - ssigpTa->SetBinContent(4764,0.0621324); - ssigpTa->SetBinContent(4765,0.072792); - ssigpTa->SetBinContent(4766,0.0946872); - ssigpTa->SetBinContent(4767,0.105343); - ssigpTa->SetBinContent(4768,0.106787); - ssigpTa->SetBinContent(4769,0.106878); - ssigpTa->SetBinContent(4770,0.106918); - ssigpTa->SetBinContent(4771,0.107002); - ssigpTa->SetBinContent(4772,0.107142); - ssigpTa->SetBinContent(4773,0.107222); - ssigpTa->SetBinContent(4774,0.107297); - ssigpTa->SetBinContent(4775,0.106237); - ssigpTa->SetBinContent(4776,0.0970528); - ssigpTa->SetBinContent(4777,0.0783532); - ssigpTa->SetBinContent(4778,0.0703144); - ssigpTa->SetBinContent(4779,0.0709556); - ssigpTa->SetBinContent(4780,0.0727168); - ssigpTa->SetBinContent(4781,0.074574); - ssigpTa->SetBinContent(4782,0.0763512); - ssigpTa->SetBinContent(4783,0.0782004); - ssigpTa->SetBinContent(4784,0.0796016); - ssigpTa->SetBinContent(4785,0.0776108); - ssigpTa->SetBinContent(4786,0.0715312); - ssigpTa->SetBinContent(4787,0.0695164); - ssigpTa->SetBinContent(4788,0.0709976); - ssigpTa->SetBinContent(4789,0.0727712); - ssigpTa->SetBinContent(4790,0.0744604); - ssigpTa->SetBinContent(4791,0.076186); - ssigpTa->SetBinContent(4792,0.0779552); - ssigpTa->SetBinContent(4793,0.0797964); - ssigpTa->SetBinContent(4794,0.0816296); - ssigpTa->SetBinContent(4795,0.0830264); - ssigpTa->SetBinContent(4796,0.0806712); - ssigpTa->SetBinContent(4797,0.0735992); - ssigpTa->SetBinContent(4798,0.0709648); - ssigpTa->SetBinContent(4799,0.072062); - ssigpTa->SetBinContent(4800,0.0736916); - ssigpTa->SetBinContent(4801,0.0754128); - ssigpTa->SetBinContent(4802,0.07715); - ssigpTa->SetBinContent(4803,0.0789592); - ssigpTa->SetBinContent(4804,0.080764); - ssigpTa->SetBinContent(4805,0.0826132); - ssigpTa->SetBinContent(4806,0.083946); - ssigpTa->SetBinContent(4807,0.0813908); - ssigpTa->SetBinContent(4808,0.0737268); - ssigpTa->SetBinContent(4809,0.0708604); - ssigpTa->SetBinContent(4810,0.0719256); - ssigpTa->SetBinContent(4811,0.0735588); - ssigpTa->SetBinContent(4812,0.07524); - ssigpTa->SetBinContent(4813,0.0769488); - ssigpTa->SetBinContent(4814,0.078782); - ssigpTa->SetBinContent(4815,0.0806028); - ssigpTa->SetBinContent(4816,0.0825); - ssigpTa->SetBinContent(4817,0.0844088); - ssigpTa->SetBinContent(4818,0.0858296); - ssigpTa->SetBinContent(4819,0.083174); - ssigpTa->SetBinContent(4820,0.075528); - ssigpTa->SetBinContent(4821,0.0727132); - ssigpTa->SetBinContent(4822,0.07455); - ssigpTa->SetBinContent(4823,0.0777344); - ssigpTa->SetBinContent(4824,0.0801356); - ssigpTa->SetBinContent(4825,0.0819608); - ssigpTa->SetBinContent(4826,0.0837896); - ssigpTa->SetBinContent(4827,0.0856104); - ssigpTa->SetBinContent(4828,0.0874596); - ssigpTa->SetBinContent(4829,0.0893364); - ssigpTa->SetBinContent(4830,0.0912728); - ssigpTa->SetBinContent(4831,0.0932776); - ssigpTa->SetBinContent(4832,0.095182); - ssigpTa->SetBinContent(4833,0.0961068); - ssigpTa->SetBinContent(4834,0.0957816); - ssigpTa->SetBinContent(4835,0.09671); - ssigpTa->SetBinContent(4836,0.0987424); - ssigpTa->SetBinContent(4837,0.101567); - ssigpTa->SetBinContent(4838,0.10509); - ssigpTa->SetBinContent(4839,0.108166); - ssigpTa->SetBinContent(4840,0.110746); - ssigpTa->SetBinContent(4841,0.113342); - ssigpTa->SetBinContent(4842,0.114986); - ssigpTa->SetBinContent(4843,0.109569); - ssigpTa->SetBinContent(4844,0.0953252); - ssigpTa->SetBinContent(4845,0.0898936); - ssigpTa->SetBinContent(4846,0.0921048); - ssigpTa->SetBinContent(4847,0.0946536); - ssigpTa->SetBinContent(4848,0.0968308); - ssigpTa->SetBinContent(4849,0.0990312); - ssigpTa->SetBinContent(4850,0.101116); - ssigpTa->SetBinContent(4851,0.102252); - ssigpTa->SetBinContent(4852,0.102239); - ssigpTa->SetBinContent(4853,0.103436); - ssigpTa->SetBinContent(4854,0.10562); - ssigpTa->SetBinContent(4855,0.108013); - ssigpTa->SetBinContent(4856,0.110465); - ssigpTa->SetBinContent(4857,0.113025); - ssigpTa->SetBinContent(4858,0.115589); - ssigpTa->SetBinContent(4859,0.118329); - ssigpTa->SetBinContent(4860,0.12241); - ssigpTa->SetBinContent(4861,0.128158); - ssigpTa->SetBinContent(4862,0.132553); - ssigpTa->SetBinContent(4863,0.135553); - ssigpTa->SetBinContent(4864,0.136932); - ssigpTa->SetBinContent(4865,0.13648); - ssigpTa->SetBinContent(4866,0.137931); - ssigpTa->SetBinContent(4867,0.140934); - ssigpTa->SetBinContent(4868,0.144205); - ssigpTa->SetBinContent(4869,0.147496); - ssigpTa->SetBinContent(4870,0.151063); - ssigpTa->SetBinContent(4871,0.156006); - ssigpTa->SetBinContent(4872,0.162636); - ssigpTa->SetBinContent(4873,0.167894); - ssigpTa->SetBinContent(4874,0.171708); - ssigpTa->SetBinContent(4875,0.173678); - ssigpTa->SetBinContent(4876,0.17331); - ssigpTa->SetBinContent(4877,0.17518); - ssigpTa->SetBinContent(4878,0.178914); - ssigpTa->SetBinContent(4879,0.182996); - ssigpTa->SetBinContent(4880,0.187245); - ssigpTa->SetBinContent(4881,0.191626); - ssigpTa->SetBinContent(4882,0.196232); - ssigpTa->SetBinContent(4883,0.201749); - ssigpTa->SetBinContent(4884,0.208476); - ssigpTa->SetBinContent(4885,0.213949); - ssigpTa->SetBinContent(4886,0.216718); - ssigpTa->SetBinContent(4887,0.217017); - ssigpTa->SetBinContent(4888,0.219838); - ssigpTa->SetBinContent(4889,0.224794); - ssigpTa->SetBinContent(4890,0.23017); - ssigpTa->SetBinContent(4891,0.235558); - ssigpTa->SetBinContent(4892,0.241146); - ssigpTa->SetBinContent(4893,0.24673); - ssigpTa->SetBinContent(4894,0.25243); - ssigpTa->SetBinContent(4895,0.258401); - ssigpTa->SetBinContent(4896,0.263376); - ssigpTa->SetBinContent(4897,0.266252); - ssigpTa->SetBinContent(4898,0.270894); - ssigpTa->SetBinContent(4899,0.277169); - ssigpTa->SetBinContent(4900,0.283728); - ssigpTa->SetBinContent(4901,0.290402); - ssigpTa->SetBinContent(4902,0.297156); - ssigpTa->SetBinContent(4903,0.304126); - ssigpTa->SetBinContent(4904,0.311443); - ssigpTa->SetBinContent(4905,0.319464); - ssigpTa->SetBinContent(4906,0.328288); - ssigpTa->SetBinContent(4907,0.336753); - ssigpTa->SetBinContent(4908,0.345197); - ssigpTa->SetBinContent(4909,0.354033); - ssigpTa->SetBinContent(4910,0.362688); - ssigpTa->SetBinContent(4911,0.371256); - ssigpTa->SetBinContent(4912,0.37984); - ssigpTa->SetBinContent(4913,0.388775); - ssigpTa->SetBinContent(4914,0.398289); - ssigpTa->SetBinContent(4915,0.408226); - ssigpTa->SetBinContent(4916,0.418371); - ssigpTa->SetBinContent(4917,0.428592); - ssigpTa->SetBinContent(4918,0.43895); - ssigpTa->SetBinContent(4919,0.44963); - ssigpTa->SetBinContent(4920,0.46057); - ssigpTa->SetBinContent(4921,0.471702); - ssigpTa->SetBinContent(4922,0.482913); - ssigpTa->SetBinContent(4923,0.494733); - ssigpTa->SetBinContent(4924,0.509616); - ssigpTa->SetBinContent(4925,0.528387); - ssigpTa->SetBinContent(4926,0.54458); - ssigpTa->SetBinContent(4927,0.558592); - ssigpTa->SetBinContent(4928,0.57246); - ssigpTa->SetBinContent(4929,0.592432); - ssigpTa->SetBinContent(4930,0.610786); - ssigpTa->SetBinContent(4933,0.182311); - ssigpTa->SetBinContent(4934,0.166); - ssigpTa->SetBinContent(4935,0.16348); - ssigpTa->SetBinContent(4936,0.16348); - ssigpTa->SetBinContent(4937,0.16348); - ssigpTa->SetBinContent(4938,0.16348); - ssigpTa->SetBinContent(4939,0.163516); - ssigpTa->SetBinContent(4940,0.163572); - ssigpTa->SetBinContent(4941,0.163688); - ssigpTa->SetBinContent(4942,0.163732); - ssigpTa->SetBinContent(4943,0.163752); - ssigpTa->SetBinContent(4944,0.163752); - ssigpTa->SetBinContent(4945,0.163752); - ssigpTa->SetBinContent(4946,0.163752); - ssigpTa->SetBinContent(4947,0.163752); - ssigpTa->SetBinContent(4948,0.163752); - ssigpTa->SetBinContent(4949,0.163752); - ssigpTa->SetBinContent(4950,0.163752); - ssigpTa->SetBinContent(4951,0.163752); - ssigpTa->SetBinContent(4952,0.163752); - ssigpTa->SetBinContent(4953,0.163752); - ssigpTa->SetBinContent(4954,0.163752); - ssigpTa->SetBinContent(4955,0.163752); - ssigpTa->SetBinContent(4956,0.163752); - ssigpTa->SetBinContent(4957,0.163752); - ssigpTa->SetBinContent(4958,0.163752); - ssigpTa->SetBinContent(4959,0.163752); - ssigpTa->SetBinContent(4960,0.163756); - ssigpTa->SetBinContent(4961,0.163756); - ssigpTa->SetBinContent(4962,0.163756); - ssigpTa->SetBinContent(4963,0.163756); - ssigpTa->SetBinContent(4964,0.163756); - ssigpTa->SetBinContent(4965,0.163756); - ssigpTa->SetBinContent(4966,0.163756); - ssigpTa->SetBinContent(4967,0.163756); - ssigpTa->SetBinContent(4968,0.163756); - ssigpTa->SetBinContent(4969,0.16376); - ssigpTa->SetBinContent(4970,0.163776); - ssigpTa->SetBinContent(4971,0.163792); - ssigpTa->SetBinContent(4972,0.163808); - ssigpTa->SetBinContent(4973,0.163808); - ssigpTa->SetBinContent(4974,0.163888); - ssigpTa->SetBinContent(4975,0.163968); - ssigpTa->SetBinContent(4976,0.164048); - ssigpTa->SetBinContent(4977,0.164052); - ssigpTa->SetBinContent(4978,0.164072); - ssigpTa->SetBinContent(4979,0.164112); - ssigpTa->SetBinContent(4980,0.164212); - ssigpTa->SetBinContent(4981,0.164532); - ssigpTa->SetBinContent(4982,0.164552); - ssigpTa->SetBinContent(4983,0.164556); - ssigpTa->SetBinContent(4984,0.164572); - ssigpTa->SetBinContent(4985,0.164588); - ssigpTa->SetBinContent(4986,0.164604); - ssigpTa->SetBinContent(4987,0.164604); - ssigpTa->SetBinContent(4988,0.164608); - ssigpTa->SetBinContent(4989,0.164608); - ssigpTa->SetBinContent(4990,0.164608); - ssigpTa->SetBinContent(4991,0.164608); - ssigpTa->SetBinContent(4992,0.164608); - ssigpTa->SetBinContent(4993,0.164692); - ssigpTa->SetBinContent(4994,0.164808); - ssigpTa->SetBinContent(4995,0.164944); - ssigpTa->SetBinContent(4996,0.16506); - ssigpTa->SetBinContent(4997,0.1651); - ssigpTa->SetBinContent(4998,0.165124); - ssigpTa->SetBinContent(4999,0.165404); - ssigpTa->SetBinContent(5000,0.165404); - ssigpTa->SetBinContent(5001,0.165404); - ssigpTa->SetBinContent(5002,0.165424); - ssigpTa->SetBinContent(5003,0.16544); - ssigpTa->SetBinContent(5004,0.165456); - ssigpTa->SetBinContent(5005,0.16548); - ssigpTa->SetBinContent(5006,0.1656); - ssigpTa->SetBinContent(5007,0.16578); - ssigpTa->SetBinContent(5008,0.1659); - ssigpTa->SetBinContent(5009,0.16594); - ssigpTa->SetBinContent(5010,0.166236); - ssigpTa->SetBinContent(5011,0.166252); - ssigpTa->SetBinContent(5012,0.166256); - ssigpTa->SetBinContent(5013,0.166256); - ssigpTa->SetBinContent(5014,0.166276); - ssigpTa->SetBinContent(5015,0.166416); - ssigpTa->SetBinContent(5016,0.166612); - ssigpTa->SetBinContent(5017,0.166748); - ssigpTa->SetBinContent(5018,0.166772); - ssigpTa->SetBinContent(5019,0.167052); - ssigpTa->SetBinContent(5020,0.167072); - ssigpTa->SetBinContent(5021,0.167108); - ssigpTa->SetBinContent(5022,0.167164); - ssigpTa->SetBinContent(5023,0.167348); - ssigpTa->SetBinContent(5024,0.167468); - ssigpTa->SetBinContent(5025,0.167588); - ssigpTa->SetBinContent(5026,0.167604); - ssigpTa->SetBinContent(5027,0.1679); - ssigpTa->SetBinContent(5028,0.167924); - ssigpTa->SetBinContent(5029,0.16806); - ssigpTa->SetBinContent(5030,0.16826); - ssigpTa->SetBinContent(5031,0.168396); - ssigpTa->SetBinContent(5032,0.16842); - ssigpTa->SetBinContent(5033,0.168736); - ssigpTa->SetBinContent(5034,0.168796); - ssigpTa->SetBinContent(5035,0.168992); - ssigpTa->SetBinContent(5036,0.169132); - ssigpTa->SetBinContent(5037,0.169268); - ssigpTa->SetBinContent(5038,0.172928); - ssigpTa->SetBinContent(5039,0.195684); - ssigpTa->SetBinContent(5040,0.275772); - ssigpTa->SetBinContent(5041,0.298572); - ssigpTa->SetBinContent(5042,0.302088); - ssigpTa->SetBinContent(5043,0.302228); - ssigpTa->SetBinContent(5044,0.302564); - ssigpTa->SetBinContent(5045,0.302704); - ssigpTa->SetBinContent(5046,0.302904); - ssigpTa->SetBinContent(5047,0.30334); - ssigpTa->SetBinContent(5048,0.30342); - ssigpTa->SetBinContent(5049,0.300676); - ssigpTa->SetBinContent(5050,0.280996); - ssigpTa->SetBinContent(5051,0.211844); - ssigpTa->SetBinContent(5052,0.19592); - ssigpTa->SetBinContent(5053,0.197792); - ssigpTa->SetBinContent(5054,0.20316); - ssigpTa->SetBinContent(5055,0.208108); - ssigpTa->SetBinContent(5056,0.213472); - ssigpTa->SetBinContent(5057,0.2188); - ssigpTa->SetBinContent(5058,0.222712); - ssigpTa->SetBinContent(5059,0.219856); - ssigpTa->SetBinContent(5060,0.195948); - ssigpTa->SetBinContent(5061,0.192932); - ssigpTa->SetBinContent(5062,0.19752); - ssigpTa->SetBinContent(5063,0.202624); - ssigpTa->SetBinContent(5064,0.207436); - ssigpTa->SetBinContent(5065,0.212248); - ssigpTa->SetBinContent(5066,0.2175); - ssigpTa->SetBinContent(5067,0.222468); - ssigpTa->SetBinContent(5068,0.227876); - ssigpTa->SetBinContent(5069,0.23204); - ssigpTa->SetBinContent(5070,0.228336); - ssigpTa->SetBinContent(5071,0.201084); - ssigpTa->SetBinContent(5072,0.19636); - ssigpTa->SetBinContent(5073,0.199676); - ssigpTa->SetBinContent(5074,0.204408); - ssigpTa->SetBinContent(5075,0.209184); - ssigpTa->SetBinContent(5076,0.214076); - ssigpTa->SetBinContent(5077,0.219008); - ssigpTa->SetBinContent(5078,0.224296); - ssigpTa->SetBinContent(5079,0.229624); - ssigpTa->SetBinContent(5080,0.233708); - ssigpTa->SetBinContent(5081,0.229336); - ssigpTa->SetBinContent(5082,0.1998); - ssigpTa->SetBinContent(5083,0.194376); - ssigpTa->SetBinContent(5084,0.197592); - ssigpTa->SetBinContent(5085,0.202248); - ssigpTa->SetBinContent(5086,0.20664); - ssigpTa->SetBinContent(5087,0.211792); - ssigpTa->SetBinContent(5088,0.216704); - ssigpTa->SetBinContent(5089,0.221788); - ssigpTa->SetBinContent(5090,0.227136); - ssigpTa->SetBinContent(5091,0.23266); - ssigpTa->SetBinContent(5092,0.236728); - ssigpTa->SetBinContent(5093,0.23222); - ssigpTa->SetBinContent(5094,0.20176); - ssigpTa->SetBinContent(5095,0.196892); - ssigpTa->SetBinContent(5096,0.202312); - ssigpTa->SetBinContent(5097,0.215176); - ssigpTa->SetBinContent(5098,0.222096); - ssigpTa->SetBinContent(5099,0.227324); - ssigpTa->SetBinContent(5100,0.2323); - ssigpTa->SetBinContent(5101,0.237328); - ssigpTa->SetBinContent(5102,0.24262); - ssigpTa->SetBinContent(5103,0.247688); - ssigpTa->SetBinContent(5104,0.253132); - ssigpTa->SetBinContent(5105,0.258696); - ssigpTa->SetBinContent(5106,0.263916); - ssigpTa->SetBinContent(5107,0.267192); - ssigpTa->SetBinContent(5108,0.263048); - ssigpTa->SetBinContent(5109,0.26608); - ssigpTa->SetBinContent(5110,0.272084); - ssigpTa->SetBinContent(5111,0.279912); - ssigpTa->SetBinContent(5112,0.2921); - ssigpTa->SetBinContent(5113,0.300616); - ssigpTa->SetBinContent(5114,0.308064); - ssigpTa->SetBinContent(5115,0.315612); - ssigpTa->SetBinContent(5116,0.320376); - ssigpTa->SetBinContent(5117,0.31016); - ssigpTa->SetBinContent(5118,0.254048); - ssigpTa->SetBinContent(5119,0.243904); - ssigpTa->SetBinContent(5120,0.25528); - ssigpTa->SetBinContent(5121,0.263444); - ssigpTa->SetBinContent(5122,0.26968); - ssigpTa->SetBinContent(5123,0.276); - ssigpTa->SetBinContent(5124,0.281956); - ssigpTa->SetBinContent(5125,0.285756); - ssigpTa->SetBinContent(5126,0.283088); - ssigpTa->SetBinContent(5127,0.286948); - ssigpTa->SetBinContent(5128,0.29312); - ssigpTa->SetBinContent(5129,0.300032); - ssigpTa->SetBinContent(5130,0.30714); - ssigpTa->SetBinContent(5131,0.314308); - ssigpTa->SetBinContent(5132,0.321552); - ssigpTa->SetBinContent(5133,0.32934); - ssigpTa->SetBinContent(5134,0.34038); - ssigpTa->SetBinContent(5135,0.360276); - ssigpTa->SetBinContent(5136,0.372152); - ssigpTa->SetBinContent(5137,0.380764); - ssigpTa->SetBinContent(5138,0.385516); - ssigpTa->SetBinContent(5139,0.38038); - ssigpTa->SetBinContent(5140,0.385268); - ssigpTa->SetBinContent(5141,0.393716); - ssigpTa->SetBinContent(5142,0.403104); - ssigpTa->SetBinContent(5143,0.412588); - ssigpTa->SetBinContent(5144,0.422652); - ssigpTa->SetBinContent(5145,0.435784); - ssigpTa->SetBinContent(5146,0.4583); - ssigpTa->SetBinContent(5147,0.472244); - ssigpTa->SetBinContent(5148,0.483272); - ssigpTa->SetBinContent(5149,0.489984); - ssigpTa->SetBinContent(5150,0.484164); - ssigpTa->SetBinContent(5151,0.490516); - ssigpTa->SetBinContent(5152,0.501064); - ssigpTa->SetBinContent(5153,0.512824); - ssigpTa->SetBinContent(5154,0.524844); - ssigpTa->SetBinContent(5155,0.5374); - ssigpTa->SetBinContent(5156,0.550532); - ssigpTa->SetBinContent(5157,0.566168); - ssigpTa->SetBinContent(5158,0.589644); - ssigpTa->SetBinContent(5159,0.605276); - ssigpTa->SetBinContent(5160,0.614672); - ssigpTa->SetBinContent(5161,0.61046); - ssigpTa->SetBinContent(5162,0.619712); - ssigpTa->SetBinContent(5163,0.63398); - ssigpTa->SetBinContent(5164,0.649504); - ssigpTa->SetBinContent(5165,0.664964); - ssigpTa->SetBinContent(5166,0.681084); - ssigpTa->SetBinContent(5167,0.697124); - ssigpTa->SetBinContent(5168,0.713676); - ssigpTa->SetBinContent(5169,0.730628); - ssigpTa->SetBinContent(5170,0.746764); - ssigpTa->SetBinContent(5171,0.75058); - ssigpTa->SetBinContent(5172,0.76482); - ssigpTa->SetBinContent(5173,0.782968); - ssigpTa->SetBinContent(5174,0.801936); - ssigpTa->SetBinContent(5175,0.820984); - ssigpTa->SetBinContent(5176,0.840272); - ssigpTa->SetBinContent(5177,0.860228); - ssigpTa->SetBinContent(5178,0.88142); - ssigpTa->SetBinContent(5179,0.904208); - ssigpTa->SetBinContent(5180,0.931004); - ssigpTa->SetBinContent(5181,0.954904); - ssigpTa->SetBinContent(5182,0.979212); - ssigpTa->SetBinContent(5183,1.00532); - ssigpTa->SetBinContent(5184,1.03028); - ssigpTa->SetBinContent(5185,1.05481); - ssigpTa->SetBinContent(5186,1.07954); - ssigpTa->SetBinContent(5187,1.10484); - ssigpTa->SetBinContent(5188,1.13225); - ssigpTa->SetBinContent(5189,1.16072); - ssigpTa->SetBinContent(5190,1.18987); - ssigpTa->SetBinContent(5191,1.21919); - ssigpTa->SetBinContent(5192,1.24911); - ssigpTa->SetBinContent(5193,1.27956); - ssigpTa->SetBinContent(5194,1.31114); - ssigpTa->SetBinContent(5195,1.34324); - ssigpTa->SetBinContent(5196,1.37532); - ssigpTa->SetBinContent(5197,1.40902); - ssigpTa->SetBinContent(5198,1.44986); - ssigpTa->SetBinContent(5199,1.50948); - ssigpTa->SetBinContent(5200,1.55407); - ssigpTa->SetBinContent(5201,1.59428); - ssigpTa->SetBinContent(5202,1.63405); - ssigpTa->SetBinContent(5203,1.69819); - ssigpTa->SetBinContent(5204,1.90111); - ssigpTa->SetBinContent(5207,0.462953); - ssigpTa->SetBinContent(5208,0.494443); - ssigpTa->SetBinContent(5209,0.482425); - ssigpTa->SetBinContent(5210,0.482425); - ssigpTa->SetBinContent(5211,0.482425); - ssigpTa->SetBinContent(5212,0.482425); - ssigpTa->SetBinContent(5213,0.482425); - ssigpTa->SetBinContent(5214,0.482475); - ssigpTa->SetBinContent(5215,0.482517); - ssigpTa->SetBinContent(5216,0.482558); - ssigpTa->SetBinContent(5217,0.482558); - ssigpTa->SetBinContent(5218,0.482558); - ssigpTa->SetBinContent(5219,0.482558); - ssigpTa->SetBinContent(5220,0.482558); - ssigpTa->SetBinContent(5221,0.482558); - ssigpTa->SetBinContent(5222,0.482558); - ssigpTa->SetBinContent(5223,0.482558); - ssigpTa->SetBinContent(5224,0.482558); - ssigpTa->SetBinContent(5225,0.482558); - ssigpTa->SetBinContent(5226,0.482558); - ssigpTa->SetBinContent(5227,0.482558); - ssigpTa->SetBinContent(5228,0.482558); - ssigpTa->SetBinContent(5229,0.482558); - ssigpTa->SetBinContent(5230,0.482558); - ssigpTa->SetBinContent(5231,0.482558); - ssigpTa->SetBinContent(5232,0.482558); - ssigpTa->SetBinContent(5233,0.482558); - ssigpTa->SetBinContent(5234,0.482558); - ssigpTa->SetBinContent(5235,0.482558); - ssigpTa->SetBinContent(5236,0.482558); - ssigpTa->SetBinContent(5237,0.482558); - ssigpTa->SetBinContent(5238,0.482558); - ssigpTa->SetBinContent(5239,0.482558); - ssigpTa->SetBinContent(5240,0.482558); - ssigpTa->SetBinContent(5241,0.482558); - ssigpTa->SetBinContent(5242,0.482558); - ssigpTa->SetBinContent(5243,0.482558); - ssigpTa->SetBinContent(5244,0.482558); - ssigpTa->SetBinContent(5245,0.482567); - ssigpTa->SetBinContent(5246,0.482567); - ssigpTa->SetBinContent(5247,0.482608); - ssigpTa->SetBinContent(5248,0.482692); - ssigpTa->SetBinContent(5249,0.4829); - ssigpTa->SetBinContent(5250,0.482983); - ssigpTa->SetBinContent(5251,0.483025); - ssigpTa->SetBinContent(5252,0.483025); - ssigpTa->SetBinContent(5253,0.483067); - ssigpTa->SetBinContent(5254,0.483692); - ssigpTa->SetBinContent(5255,0.484317); - ssigpTa->SetBinContent(5256,0.4849); - ssigpTa->SetBinContent(5257,0.4849); - ssigpTa->SetBinContent(5258,0.4849); - ssigpTa->SetBinContent(5259,0.484908); - ssigpTa->SetBinContent(5260,0.484908); - ssigpTa->SetBinContent(5261,0.484908); - ssigpTa->SetBinContent(5262,0.484908); - ssigpTa->SetBinContent(5263,0.484908); - ssigpTa->SetBinContent(5264,0.484908); - ssigpTa->SetBinContent(5265,0.484908); - ssigpTa->SetBinContent(5266,0.48495); - ssigpTa->SetBinContent(5267,0.485033); - ssigpTa->SetBinContent(5268,0.485242); - ssigpTa->SetBinContent(5269,0.485375); - ssigpTa->SetBinContent(5270,0.485458); - ssigpTa->SetBinContent(5271,0.4855); - ssigpTa->SetBinContent(5272,0.486083); - ssigpTa->SetBinContent(5273,0.486667); - ssigpTa->SetBinContent(5274,0.48725); - ssigpTa->SetBinContent(5275,0.48725); - ssigpTa->SetBinContent(5276,0.48725); - ssigpTa->SetBinContent(5277,0.487258); - ssigpTa->SetBinContent(5278,0.487258); - ssigpTa->SetBinContent(5279,0.4873); - ssigpTa->SetBinContent(5280,0.487425); - ssigpTa->SetBinContent(5281,0.487675); - ssigpTa->SetBinContent(5282,0.4878); - ssigpTa->SetBinContent(5283,0.488425); - ssigpTa->SetBinContent(5284,0.489017); - ssigpTa->SetBinContent(5285,0.4896); - ssigpTa->SetBinContent(5286,0.4896); - ssigpTa->SetBinContent(5287,0.4896); - ssigpTa->SetBinContent(5288,0.489642); - ssigpTa->SetBinContent(5289,0.489767); - ssigpTa->SetBinContent(5290,0.490025); - ssigpTa->SetBinContent(5291,0.49015); - ssigpTa->SetBinContent(5292,0.490775); - ssigpTa->SetBinContent(5293,0.491358); - ssigpTa->SetBinContent(5294,0.491942); - ssigpTa->SetBinContent(5295,0.49195); - ssigpTa->SetBinContent(5296,0.492033); - ssigpTa->SetBinContent(5297,0.492158); - ssigpTa->SetBinContent(5298,0.492408); - ssigpTa->SetBinContent(5299,0.492492); - ssigpTa->SetBinContent(5300,0.493125); - ssigpTa->SetBinContent(5301,0.493708); - ssigpTa->SetBinContent(5302,0.494333); - ssigpTa->SetBinContent(5303,0.494458); - ssigpTa->SetBinContent(5304,0.494717); - ssigpTa->SetBinContent(5305,0.494842); - ssigpTa->SetBinContent(5306,0.495467); - ssigpTa->SetBinContent(5307,0.49605); - ssigpTa->SetBinContent(5308,0.496725); - ssigpTa->SetBinContent(5309,0.49685); - ssigpTa->SetBinContent(5310,0.4971); - ssigpTa->SetBinContent(5311,0.497775); - ssigpTa->SetBinContent(5312,0.5054); - ssigpTa->SetBinContent(5313,0.624275); - ssigpTa->SetBinContent(5314,0.764867); - ssigpTa->SetBinContent(5315,0.883242); - ssigpTa->SetBinContent(5316,0.89045); - ssigpTa->SetBinContent(5317,0.891167); - ssigpTa->SetBinContent(5318,0.891833); - ssigpTa->SetBinContent(5319,0.892542); - ssigpTa->SetBinContent(5320,0.893383); - ssigpTa->SetBinContent(5321,0.894092); - ssigpTa->SetBinContent(5322,0.8948); - ssigpTa->SetBinContent(5323,0.888808); - ssigpTa->SetBinContent(5324,0.785767); - ssigpTa->SetBinContent(5325,0.667308); - ssigpTa->SetBinContent(5326,0.573483); - ssigpTa->SetBinContent(5327,0.582083); - ssigpTa->SetBinContent(5328,0.596925); - ssigpTa->SetBinContent(5329,0.612525); - ssigpTa->SetBinContent(5330,0.628); - ssigpTa->SetBinContent(5331,0.643633); - ssigpTa->SetBinContent(5332,0.656733); - ssigpTa->SetBinContent(5333,0.629083); - ssigpTa->SetBinContent(5334,0.593433); - ssigpTa->SetBinContent(5335,0.566483); - ssigpTa->SetBinContent(5336,0.579925); - ssigpTa->SetBinContent(5337,0.595475); - ssigpTa->SetBinContent(5338,0.60965); - ssigpTa->SetBinContent(5339,0.624367); - ssigpTa->SetBinContent(5340,0.639133); - ssigpTa->SetBinContent(5341,0.654683); - ssigpTa->SetBinContent(5342,0.670242); - ssigpTa->SetBinContent(5343,0.683758); - ssigpTa->SetBinContent(5344,0.652025); - ssigpTa->SetBinContent(5345,0.609733); - ssigpTa->SetBinContent(5346,0.5757); - ssigpTa->SetBinContent(5347,0.586292); - ssigpTa->SetBinContent(5348,0.6003); - ssigpTa->SetBinContent(5349,0.614392); - ssigpTa->SetBinContent(5350,0.628525); - ssigpTa->SetBinContent(5351,0.643333); - ssigpTa->SetBinContent(5352,0.658842); - ssigpTa->SetBinContent(5353,0.674983); - ssigpTa->SetBinContent(5354,0.68825); - ssigpTa->SetBinContent(5355,0.653025); - ssigpTa->SetBinContent(5356,0.606525); - ssigpTa->SetBinContent(5357,0.56895); - ssigpTa->SetBinContent(5358,0.57925); - ssigpTa->SetBinContent(5359,0.592508); - ssigpTa->SetBinContent(5360,0.606517); - ssigpTa->SetBinContent(5361,0.620608); - ssigpTa->SetBinContent(5362,0.635542); - ssigpTa->SetBinContent(5363,0.650433); - ssigpTa->SetBinContent(5364,0.666117); - ssigpTa->SetBinContent(5365,0.682425); - ssigpTa->SetBinContent(5366,0.695733); - ssigpTa->SetBinContent(5367,0.659); - ssigpTa->SetBinContent(5368,0.611592); - ssigpTa->SetBinContent(5369,0.573975); - ssigpTa->SetBinContent(5370,0.597533); - ssigpTa->SetBinContent(5371,0.626358); - ssigpTa->SetBinContent(5372,0.653042); - ssigpTa->SetBinContent(5373,0.667925); - ssigpTa->SetBinContent(5374,0.682275); - ssigpTa->SetBinContent(5375,0.697158); - ssigpTa->SetBinContent(5376,0.712133); - ssigpTa->SetBinContent(5377,0.72765); - ssigpTa->SetBinContent(5378,0.743333); - ssigpTa->SetBinContent(5379,0.759692); - ssigpTa->SetBinContent(5380,0.775875); - ssigpTa->SetBinContent(5381,0.77815); - ssigpTa->SetBinContent(5382,0.777817); - ssigpTa->SetBinContent(5383,0.780217); - ssigpTa->SetBinContent(5384,0.797817); - ssigpTa->SetBinContent(5385,0.82505); - ssigpTa->SetBinContent(5386,0.854567); - ssigpTa->SetBinContent(5387,0.883433); - ssigpTa->SetBinContent(5388,0.905592); - ssigpTa->SetBinContent(5389,0.927425); - ssigpTa->SetBinContent(5390,0.944458); - ssigpTa->SetBinContent(5391,0.87225); - ssigpTa->SetBinContent(5392,0.780925); - ssigpTa->SetBinContent(5393,0.7174); - ssigpTa->SetBinContent(5394,0.743917); - ssigpTa->SetBinContent(5395,0.77435); - ssigpTa->SetBinContent(5396,0.793083); - ssigpTa->SetBinContent(5397,0.811192); - ssigpTa->SetBinContent(5398,0.829133); - ssigpTa->SetBinContent(5399,0.834408); - ssigpTa->SetBinContent(5400,0.837175); - ssigpTa->SetBinContent(5401,0.842533); - ssigpTa->SetBinContent(5402,0.861233); - ssigpTa->SetBinContent(5403,0.88155); - ssigpTa->SetBinContent(5404,0.902542); - ssigpTa->SetBinContent(5405,0.923667); - ssigpTa->SetBinContent(5406,0.944825); - ssigpTa->SetBinContent(5407,0.967692); - ssigpTa->SetBinContent(5408,1.00807); - ssigpTa->SetBinContent(5409,1.05316); - ssigpTa->SetBinContent(5410,1.09587); - ssigpTa->SetBinContent(5411,1.12138); - ssigpTa->SetBinContent(5412,1.12652); - ssigpTa->SetBinContent(5413,1.12773); - ssigpTa->SetBinContent(5414,1.13303); - ssigpTa->SetBinContent(5415,1.15851); - ssigpTa->SetBinContent(5416,1.18594); - ssigpTa->SetBinContent(5417,1.214); - ssigpTa->SetBinContent(5418,1.24322); - ssigpTa->SetBinContent(5419,1.29046); - ssigpTa->SetBinContent(5420,1.34192); - ssigpTa->SetBinContent(5421,1.39166); - ssigpTa->SetBinContent(5422,1.42403); - ssigpTa->SetBinContent(5423,1.43219); - ssigpTa->SetBinContent(5424,1.43543); - ssigpTa->SetBinContent(5425,1.44283); - ssigpTa->SetBinContent(5426,1.47488); - ssigpTa->SetBinContent(5427,1.50928); - ssigpTa->SetBinContent(5428,1.54512); - ssigpTa->SetBinContent(5429,1.58184); - ssigpTa->SetBinContent(5430,1.62023); - ssigpTa->SetBinContent(5431,1.67395); - ssigpTa->SetBinContent(5432,1.73133); - ssigpTa->SetBinContent(5433,1.78584); - ssigpTa->SetBinContent(5434,1.80062); - ssigpTa->SetBinContent(5435,1.81007); - ssigpTa->SetBinContent(5436,1.82542); - ssigpTa->SetBinContent(5437,1.86825); - ssigpTa->SetBinContent(5438,1.91362); - ssigpTa->SetBinContent(5439,1.96024); - ssigpTa->SetBinContent(5440,2.00721); - ssigpTa->SetBinContent(5441,2.05537); - ssigpTa->SetBinContent(5442,2.104); - ssigpTa->SetBinContent(5443,2.15693); - ssigpTa->SetBinContent(5444,2.19094); - ssigpTa->SetBinContent(5445,2.22153); - ssigpTa->SetBinContent(5446,2.25373); - ssigpTa->SetBinContent(5447,2.3078); - ssigpTa->SetBinContent(5448,2.36392); - ssigpTa->SetBinContent(5449,2.4202); - ssigpTa->SetBinContent(5450,2.47728); - ssigpTa->SetBinContent(5451,2.53657); - ssigpTa->SetBinContent(5452,2.59867); - ssigpTa->SetBinContent(5453,2.6696); - ssigpTa->SetBinContent(5454,2.7429); - ssigpTa->SetBinContent(5455,2.81723); - ssigpTa->SetBinContent(5456,2.88992); - ssigpTa->SetBinContent(5457,2.96496); - ssigpTa->SetBinContent(5458,3.04013); - ssigpTa->SetBinContent(5459,3.11293); - ssigpTa->SetBinContent(5460,3.18565); - ssigpTa->SetBinContent(5461,3.26149); - ssigpTa->SetBinContent(5462,3.34133); - ssigpTa->SetBinContent(5463,3.42551); - ssigpTa->SetBinContent(5464,3.51136); - ssigpTa->SetBinContent(5465,3.59862); - ssigpTa->SetBinContent(5466,3.68681); - ssigpTa->SetBinContent(5467,3.77742); - ssigpTa->SetBinContent(5468,3.87034); - ssigpTa->SetBinContent(5469,3.96484); - ssigpTa->SetBinContent(5470,4.06006); - ssigpTa->SetBinContent(5471,4.15907); - ssigpTa->SetBinContent(5472,4.29522); - ssigpTa->SetBinContent(5473,4.44339); - ssigpTa->SetBinContent(5474,4.59034); - ssigpTa->SetBinContent(5475,4.70792); - ssigpTa->SetBinContent(5476,4.82576); - ssigpTa->SetBinContent(5477,5.06458); - ssigpTa->SetBinContent(5478,4.80471); - ssigpTa->SetBinContent(5481,0.958692); - ssigpTa->SetBinContent(5482,0.927); - ssigpTa->SetBinContent(5483,0.955611); - ssigpTa->SetBinContent(5484,0.955611); - ssigpTa->SetBinContent(5485,0.955611); - ssigpTa->SetBinContent(5486,0.955611); - ssigpTa->SetBinContent(5487,0.955611); - ssigpTa->SetBinContent(5488,0.955611); - ssigpTa->SetBinContent(5489,0.955639); - ssigpTa->SetBinContent(5490,0.955639); - ssigpTa->SetBinContent(5491,0.955639); - ssigpTa->SetBinContent(5492,0.955639); - ssigpTa->SetBinContent(5493,0.955639); - ssigpTa->SetBinContent(5494,0.955639); - ssigpTa->SetBinContent(5495,0.955639); - ssigpTa->SetBinContent(5496,0.955639); - ssigpTa->SetBinContent(5497,0.955639); - ssigpTa->SetBinContent(5498,0.955639); - ssigpTa->SetBinContent(5499,0.955639); - ssigpTa->SetBinContent(5500,0.955639); - ssigpTa->SetBinContent(5501,0.955639); - ssigpTa->SetBinContent(5502,0.955639); - ssigpTa->SetBinContent(5503,0.955639); - ssigpTa->SetBinContent(5504,0.955639); - ssigpTa->SetBinContent(5505,0.955639); - ssigpTa->SetBinContent(5506,0.955639); - ssigpTa->SetBinContent(5507,0.955639); - ssigpTa->SetBinContent(5508,0.955639); - ssigpTa->SetBinContent(5509,0.955639); - ssigpTa->SetBinContent(5510,0.955639); - ssigpTa->SetBinContent(5511,0.955639); - ssigpTa->SetBinContent(5512,0.955639); - ssigpTa->SetBinContent(5513,0.955639); - ssigpTa->SetBinContent(5514,0.955639); - ssigpTa->SetBinContent(5515,0.955639); - ssigpTa->SetBinContent(5516,0.955639); - ssigpTa->SetBinContent(5517,0.955639); - ssigpTa->SetBinContent(5518,0.955639); - ssigpTa->SetBinContent(5519,0.955639); - ssigpTa->SetBinContent(5520,0.955639); - ssigpTa->SetBinContent(5521,0.955639); - ssigpTa->SetBinContent(5522,0.95575); - ssigpTa->SetBinContent(5523,0.955861); - ssigpTa->SetBinContent(5524,0.955972); - ssigpTa->SetBinContent(5525,0.955972); - ssigpTa->SetBinContent(5526,0.955972); - ssigpTa->SetBinContent(5527,0.956361); - ssigpTa->SetBinContent(5528,0.957167); - ssigpTa->SetBinContent(5529,0.959111); - ssigpTa->SetBinContent(5530,0.959889); - ssigpTa->SetBinContent(5531,0.960278); - ssigpTa->SetBinContent(5532,0.960278); - ssigpTa->SetBinContent(5533,0.960278); - ssigpTa->SetBinContent(5534,0.960278); - ssigpTa->SetBinContent(5535,0.960278); - ssigpTa->SetBinContent(5536,0.960278); - ssigpTa->SetBinContent(5537,0.960278); - ssigpTa->SetBinContent(5538,0.960278); - ssigpTa->SetBinContent(5539,0.960278); - ssigpTa->SetBinContent(5540,0.960278); - ssigpTa->SetBinContent(5541,0.960389); - ssigpTa->SetBinContent(5542,0.9605); - ssigpTa->SetBinContent(5543,0.960611); - ssigpTa->SetBinContent(5544,0.960639); - ssigpTa->SetBinContent(5545,0.961028); - ssigpTa->SetBinContent(5546,0.961806); - ssigpTa->SetBinContent(5547,0.96375); - ssigpTa->SetBinContent(5548,0.964528); - ssigpTa->SetBinContent(5549,0.964917); - ssigpTa->SetBinContent(5550,0.964917); - ssigpTa->SetBinContent(5551,0.964917); - ssigpTa->SetBinContent(5552,0.964917); - ssigpTa->SetBinContent(5553,0.964917); - ssigpTa->SetBinContent(5554,0.965028); - ssigpTa->SetBinContent(5555,0.965167); - ssigpTa->SetBinContent(5556,0.965667); - ssigpTa->SetBinContent(5557,0.966444); - ssigpTa->SetBinContent(5558,0.968389); - ssigpTa->SetBinContent(5559,0.969167); - ssigpTa->SetBinContent(5560,0.969556); - ssigpTa->SetBinContent(5561,0.969556); - ssigpTa->SetBinContent(5562,0.969556); - ssigpTa->SetBinContent(5563,0.969667); - ssigpTa->SetBinContent(5564,0.969806); - ssigpTa->SetBinContent(5565,0.970306); - ssigpTa->SetBinContent(5566,0.971083); - ssigpTa->SetBinContent(5567,0.973028); - ssigpTa->SetBinContent(5568,0.973806); - ssigpTa->SetBinContent(5569,0.974194); - ssigpTa->SetBinContent(5570,0.974194); - ssigpTa->SetBinContent(5571,0.974333); - ssigpTa->SetBinContent(5572,0.974444); - ssigpTa->SetBinContent(5573,0.974944); - ssigpTa->SetBinContent(5574,0.975722); - ssigpTa->SetBinContent(5575,0.977667); - ssigpTa->SetBinContent(5576,0.978444); - ssigpTa->SetBinContent(5577,0.978944); - ssigpTa->SetBinContent(5578,0.979083); - ssigpTa->SetBinContent(5579,0.979583); - ssigpTa->SetBinContent(5580,0.980361); - ssigpTa->SetBinContent(5581,0.982306); - ssigpTa->SetBinContent(5582,0.983083); - ssigpTa->SetBinContent(5583,0.983611); - ssigpTa->SetBinContent(5584,0.984111); - ssigpTa->SetBinContent(5585,0.985); - ssigpTa->SetBinContent(5586,1.05189); - ssigpTa->SetBinContent(5587,1.20114); - ssigpTa->SetBinContent(5588,1.54942); - ssigpTa->SetBinContent(5589,1.69797); - ssigpTa->SetBinContent(5590,1.76344); - ssigpTa->SetBinContent(5591,1.76433); - ssigpTa->SetBinContent(5592,1.76628); - ssigpTa->SetBinContent(5593,1.76756); - ssigpTa->SetBinContent(5594,1.76886); - ssigpTa->SetBinContent(5595,1.77092); - ssigpTa->SetBinContent(5596,1.77169); - ssigpTa->SetBinContent(5597,1.71544); - ssigpTa->SetBinContent(5598,1.588); - ssigpTa->SetBinContent(5599,1.29147); - ssigpTa->SetBinContent(5600,1.18228); - ssigpTa->SetBinContent(5601,1.15189); - ssigpTa->SetBinContent(5602,1.18231); - ssigpTa->SetBinContent(5603,1.21219); - ssigpTa->SetBinContent(5604,1.24339); - ssigpTa->SetBinContent(5605,1.27456); - ssigpTa->SetBinContent(5606,1.28125); - ssigpTa->SetBinContent(5607,1.25822); - ssigpTa->SetBinContent(5608,1.16261); - ssigpTa->SetBinContent(5609,1.13939); - ssigpTa->SetBinContent(5610,1.14817); - ssigpTa->SetBinContent(5611,1.17789); - ssigpTa->SetBinContent(5612,1.20689); - ssigpTa->SetBinContent(5613,1.2355); - ssigpTa->SetBinContent(5614,1.26581); - ssigpTa->SetBinContent(5615,1.29569); - ssigpTa->SetBinContent(5616,1.32728); - ssigpTa->SetBinContent(5617,1.33292); - ssigpTa->SetBinContent(5618,1.30417); - ssigpTa->SetBinContent(5619,1.19292); - ssigpTa->SetBinContent(5620,1.15953); - ssigpTa->SetBinContent(5621,1.1605); - ssigpTa->SetBinContent(5622,1.18794); - ssigpTa->SetBinContent(5623,1.21578); - ssigpTa->SetBinContent(5624,1.24403); - ssigpTa->SetBinContent(5625,1.27314); - ssigpTa->SetBinContent(5626,1.30422); - ssigpTa->SetBinContent(5627,1.33617); - ssigpTa->SetBinContent(5628,1.34025); - ssigpTa->SetBinContent(5629,1.30706); - ssigpTa->SetBinContent(5630,1.18542); - ssigpTa->SetBinContent(5631,1.14756); - ssigpTa->SetBinContent(5632,1.14611); - ssigpTa->SetBinContent(5633,1.17306); - ssigpTa->SetBinContent(5634,1.19961); - ssigpTa->SetBinContent(5635,1.22872); - ssigpTa->SetBinContent(5636,1.25744); - ssigpTa->SetBinContent(5637,1.28708); - ssigpTa->SetBinContent(5638,1.31825); - ssigpTa->SetBinContent(5639,1.35033); - ssigpTa->SetBinContent(5640,1.35364); - ssigpTa->SetBinContent(5641,1.31908); - ssigpTa->SetBinContent(5642,1.19403); - ssigpTa->SetBinContent(5643,1.16347); - ssigpTa->SetBinContent(5644,1.17842); - ssigpTa->SetBinContent(5645,1.24358); - ssigpTa->SetBinContent(5646,1.28731); - ssigpTa->SetBinContent(5647,1.32225); - ssigpTa->SetBinContent(5648,1.35061); - ssigpTa->SetBinContent(5649,1.37944); - ssigpTa->SetBinContent(5650,1.40975); - ssigpTa->SetBinContent(5651,1.43975); - ssigpTa->SetBinContent(5652,1.47133); - ssigpTa->SetBinContent(5653,1.50381); - ssigpTa->SetBinContent(5654,1.52889); - ssigpTa->SetBinContent(5655,1.54478); - ssigpTa->SetBinContent(5656,1.53481); - ssigpTa->SetBinContent(5657,1.55039); - ssigpTa->SetBinContent(5658,1.58272); - ssigpTa->SetBinContent(5659,1.63047); - ssigpTa->SetBinContent(5660,1.69389); - ssigpTa->SetBinContent(5661,1.74539); - ssigpTa->SetBinContent(5662,1.79222); - ssigpTa->SetBinContent(5663,1.83642); - ssigpTa->SetBinContent(5664,1.82822); - ssigpTa->SetBinContent(5665,1.75317); - ssigpTa->SetBinContent(5666,1.52283); - ssigpTa->SetBinContent(5667,1.45522); - ssigpTa->SetBinContent(5668,1.47617); - ssigpTa->SetBinContent(5669,1.52747); - ssigpTa->SetBinContent(5670,1.56953); - ssigpTa->SetBinContent(5671,1.60586); - ssigpTa->SetBinContent(5672,1.63519); - ssigpTa->SetBinContent(5673,1.65542); - ssigpTa->SetBinContent(5674,1.65294); - ssigpTa->SetBinContent(5675,1.67356); - ssigpTa->SetBinContent(5676,1.70458); - ssigpTa->SetBinContent(5677,1.74503); - ssigpTa->SetBinContent(5678,1.78639); - ssigpTa->SetBinContent(5679,1.82814); - ssigpTa->SetBinContent(5680,1.87031); - ssigpTa->SetBinContent(5681,1.92306); - ssigpTa->SetBinContent(5682,1.99075); - ssigpTa->SetBinContent(5683,2.09011); - ssigpTa->SetBinContent(5684,2.16208); - ssigpTa->SetBinContent(5685,2.21117); - ssigpTa->SetBinContent(5686,2.23631); - ssigpTa->SetBinContent(5687,2.22681); - ssigpTa->SetBinContent(5688,2.25244); - ssigpTa->SetBinContent(5689,2.29361); - ssigpTa->SetBinContent(5690,2.34808); - ssigpTa->SetBinContent(5691,2.40336); - ssigpTa->SetBinContent(5692,2.46953); - ssigpTa->SetBinContent(5693,2.5495); - ssigpTa->SetBinContent(5694,2.66306); - ssigpTa->SetBinContent(5695,2.74775); - ssigpTa->SetBinContent(5696,2.80856); - ssigpTa->SetBinContent(5697,2.84317); - ssigpTa->SetBinContent(5698,2.83403); - ssigpTa->SetBinContent(5699,2.86775); - ssigpTa->SetBinContent(5700,2.91997); - ssigpTa->SetBinContent(5701,2.98867); - ssigpTa->SetBinContent(5702,3.05914); - ssigpTa->SetBinContent(5703,3.13208); - ssigpTa->SetBinContent(5704,3.21486); - ssigpTa->SetBinContent(5705,3.30983); - ssigpTa->SetBinContent(5706,3.43358); - ssigpTa->SetBinContent(5707,3.51772); - ssigpTa->SetBinContent(5708,3.57394); - ssigpTa->SetBinContent(5709,3.57622); - ssigpTa->SetBinContent(5710,3.62672); - ssigpTa->SetBinContent(5711,3.69931); - ssigpTa->SetBinContent(5712,3.78992); - ssigpTa->SetBinContent(5713,3.88111); - ssigpTa->SetBinContent(5714,3.97544); - ssigpTa->SetBinContent(5715,4.06992); - ssigpTa->SetBinContent(5716,4.16914); - ssigpTa->SetBinContent(5717,4.26072); - ssigpTa->SetBinContent(5718,4.34694); - ssigpTa->SetBinContent(5719,4.39108); - ssigpTa->SetBinContent(5720,4.47256); - ssigpTa->SetBinContent(5721,4.57014); - ssigpTa->SetBinContent(5722,4.68108); - ssigpTa->SetBinContent(5723,4.79281); - ssigpTa->SetBinContent(5724,4.90622); - ssigpTa->SetBinContent(5725,5.02347); - ssigpTa->SetBinContent(5726,5.15003); - ssigpTa->SetBinContent(5727,5.28467); - ssigpTa->SetBinContent(5728,5.43489); - ssigpTa->SetBinContent(5729,5.57778); - ssigpTa->SetBinContent(5730,5.72311); - ssigpTa->SetBinContent(5731,5.87308); - ssigpTa->SetBinContent(5732,6.02003); - ssigpTa->SetBinContent(5733,6.16528); - ssigpTa->SetBinContent(5734,6.31075); - ssigpTa->SetBinContent(5735,6.46008); - ssigpTa->SetBinContent(5736,6.61911); - ssigpTa->SetBinContent(5737,6.78456); - ssigpTa->SetBinContent(5738,6.95492); - ssigpTa->SetBinContent(5739,7.12733); - ssigpTa->SetBinContent(5740,7.30308); - ssigpTa->SetBinContent(5741,7.48194); - ssigpTa->SetBinContent(5742,7.66594); - ssigpTa->SetBinContent(5743,7.85317); - ssigpTa->SetBinContent(5744,8.04169); - ssigpTa->SetBinContent(5745,8.25378); - ssigpTa->SetBinContent(5746,8.49847); - ssigpTa->SetBinContent(5747,8.81264); - ssigpTa->SetBinContent(5748,9.07772); - ssigpTa->SetBinContent(5749,9.32575); - ssigpTa->SetBinContent(5750,9.55897); - ssigpTa->SetBinContent(5751,9.46026); - ssigpTa->SetBinContent(5752,9.95015); - ssigpTa->SetEntries(5169); - - init = true; - } - - double percent = ssigpTa->Interpolate(eta, ptGeV); - return percent; - } - - // Fractional resolution in % - //double ITKPercentageresol(double pt [MeV], double eta) { - double UpgradePerformance::ITKPercentageresol_ExtBrl(double ptMeV, double eta){ - static TH2D *ssigpTa; - static bool init = false; - - double ptGeV = ptMeV/1000.; - if (fabs(eta)>3.976) return 0.; - if(!init){ - Double_t xAxis1[65] = {-3.9375, -3.875, -3.75, -3.625, -3.5, -3.375, -3.25, -3.125, -3, -2.875, -2.75, -2.625, -2.5, -2.375, -2.25, -2.125, -2, -1.875, -1.75, -1.625, -1.5, -1.375, -1.25, -1.125, -1, -0.875, -0.75, -0.625, -0.5, -0.375, -0.25, -0.125, 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1, 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875, 2, 2.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875, 3, 3.125, 3.25, 3.375, 3.5, 3.625, 3.75, 3.875, 3.97688}; - Double_t yAxis1[10] = {1, 3, 7.5, 15, 25, 40, 60, 85, 3.55e+03, 7.07e+03}; - - ssigpTa = new TH2D("ssigpTa","ssigpTa",64, xAxis1,9, yAxis1); - ssigpTa->SetBinContent(67,0.30531); - ssigpTa->SetBinContent(68,0.271396); - ssigpTa->SetBinContent(69,0.233037); - ssigpTa->SetBinContent(70,0.209338); - ssigpTa->SetBinContent(71,0.188908); - ssigpTa->SetBinContent(72,0.168226); - ssigpTa->SetBinContent(73,0.140979); - ssigpTa->SetBinContent(74,0.106893); - ssigpTa->SetBinContent(75,0.0836766); - ssigpTa->SetBinContent(76,0.0702595); - ssigpTa->SetBinContent(77,0.0616854); - ssigpTa->SetBinContent(78,0.0537246); - ssigpTa->SetBinContent(79,0.0453684); - ssigpTa->SetBinContent(80,0.0391921); - ssigpTa->SetBinContent(81,0.0339865); - ssigpTa->SetBinContent(82,0.0291589); - ssigpTa->SetBinContent(83,0.0257491); - ssigpTa->SetBinContent(84,0.0230564); - ssigpTa->SetBinContent(85,0.0206976); - ssigpTa->SetBinContent(86,0.0185704); - ssigpTa->SetBinContent(87,0.0166318); - ssigpTa->SetBinContent(88,0.015113); - ssigpTa->SetBinContent(89,0.013943); - ssigpTa->SetBinContent(90,0.0126062); - ssigpTa->SetBinContent(91,0.0115753); - ssigpTa->SetBinContent(92,0.0109282); - ssigpTa->SetBinContent(93,0.0105165); - ssigpTa->SetBinContent(94,0.0103138); - ssigpTa->SetBinContent(95,0.0101179); - ssigpTa->SetBinContent(96,0.00994723); - ssigpTa->SetBinContent(97,0.00990108); - ssigpTa->SetBinContent(98,0.00983187); - ssigpTa->SetBinContent(99,0.00985636); - ssigpTa->SetBinContent(100,0.00986291); - ssigpTa->SetBinContent(101,0.00993672); - ssigpTa->SetBinContent(102,0.0101379); - ssigpTa->SetBinContent(103,0.0104347); - ssigpTa->SetBinContent(104,0.0107581); - ssigpTa->SetBinContent(105,0.0113143); - ssigpTa->SetBinContent(106,0.0121554); - ssigpTa->SetBinContent(107,0.0130424); - ssigpTa->SetBinContent(108,0.0140677); - ssigpTa->SetBinContent(109,0.0152899); - ssigpTa->SetBinContent(110,0.0168646); - ssigpTa->SetBinContent(111,0.0189212); - ssigpTa->SetBinContent(112,0.0210735); - ssigpTa->SetBinContent(113,0.0237003); - ssigpTa->SetBinContent(114,0.0269943); - ssigpTa->SetBinContent(115,0.030533); - ssigpTa->SetBinContent(116,0.0345759); - ssigpTa->SetBinContent(117,0.0394294); - ssigpTa->SetBinContent(118,0.0459319); - ssigpTa->SetBinContent(119,0.0542856); - ssigpTa->SetBinContent(120,0.0634744); - ssigpTa->SetBinContent(121,0.0775213); - ssigpTa->SetBinContent(122,0.0988431); - ssigpTa->SetBinContent(123,0.121316); - ssigpTa->SetBinContent(124,0.142607); - ssigpTa->SetBinContent(125,0.162843); - ssigpTa->SetBinContent(126,0.180837); - ssigpTa->SetBinContent(127,0.202739); - ssigpTa->SetBinContent(128,0.229705); - ssigpTa->SetBinContent(129,0.272746); - ssigpTa->SetBinContent(130,0.30709); - ssigpTa->SetBinContent(133,0.402376); - ssigpTa->SetBinContent(134,0.344537); - ssigpTa->SetBinContent(135,0.289167); - ssigpTa->SetBinContent(136,0.24479); - ssigpTa->SetBinContent(137,0.208378); - ssigpTa->SetBinContent(138,0.179603); - ssigpTa->SetBinContent(139,0.148762); - ssigpTa->SetBinContent(140,0.115878); - ssigpTa->SetBinContent(141,0.091426); - ssigpTa->SetBinContent(142,0.0779508); - ssigpTa->SetBinContent(143,0.067948); - ssigpTa->SetBinContent(144,0.0581925); - ssigpTa->SetBinContent(145,0.0482232); - ssigpTa->SetBinContent(146,0.0406659); - ssigpTa->SetBinContent(147,0.0348766); - ssigpTa->SetBinContent(148,0.0297042); - ssigpTa->SetBinContent(149,0.0259929); - ssigpTa->SetBinContent(150,0.0232909); - ssigpTa->SetBinContent(151,0.0209654); - ssigpTa->SetBinContent(152,0.0188238); - ssigpTa->SetBinContent(153,0.0168639); - ssigpTa->SetBinContent(154,0.0153798); - ssigpTa->SetBinContent(155,0.0140815); - ssigpTa->SetBinContent(156,0.0127418); - ssigpTa->SetBinContent(157,0.0117417); - ssigpTa->SetBinContent(158,0.0111476); - ssigpTa->SetBinContent(159,0.010797); - ssigpTa->SetBinContent(160,0.0105326); - ssigpTa->SetBinContent(161,0.0102888); - ssigpTa->SetBinContent(162,0.0101073); - ssigpTa->SetBinContent(163,0.0100576); - ssigpTa->SetBinContent(164,0.0100809); - ssigpTa->SetBinContent(165,0.0100656); - ssigpTa->SetBinContent(166,0.0100676); - ssigpTa->SetBinContent(167,0.010113); - ssigpTa->SetBinContent(168,0.0102939); - ssigpTa->SetBinContent(169,0.0105545); - ssigpTa->SetBinContent(170,0.0108815); - ssigpTa->SetBinContent(171,0.0114219); - ssigpTa->SetBinContent(172,0.0122431); - ssigpTa->SetBinContent(173,0.0131426); - ssigpTa->SetBinContent(174,0.014143); - ssigpTa->SetBinContent(175,0.0153199); - ssigpTa->SetBinContent(176,0.0170293); - ssigpTa->SetBinContent(177,0.0191096); - ssigpTa->SetBinContent(178,0.0213064); - ssigpTa->SetBinContent(179,0.0238948); - ssigpTa->SetBinContent(180,0.0273598); - ssigpTa->SetBinContent(181,0.0310478); - ssigpTa->SetBinContent(182,0.0356099); - ssigpTa->SetBinContent(183,0.0411301); - ssigpTa->SetBinContent(184,0.0487059); - ssigpTa->SetBinContent(185,0.0583134); - ssigpTa->SetBinContent(186,0.0684577); - ssigpTa->SetBinContent(187,0.0830166); - ssigpTa->SetBinContent(188,0.104962); - ssigpTa->SetBinContent(189,0.128048); - ssigpTa->SetBinContent(190,0.151192); - ssigpTa->SetBinContent(191,0.174924); - ssigpTa->SetBinContent(192,0.203626); - ssigpTa->SetBinContent(193,0.241674); - ssigpTa->SetBinContent(194,0.288358); - ssigpTa->SetBinContent(195,0.344925); - ssigpTa->SetBinContent(196,0.399318); - ssigpTa->SetBinContent(199,0.588417); - ssigpTa->SetBinContent(200,0.505927); - ssigpTa->SetBinContent(201,0.399988); - ssigpTa->SetBinContent(202,0.314275); - ssigpTa->SetBinContent(203,0.246328); - ssigpTa->SetBinContent(204,0.200895); - ssigpTa->SetBinContent(205,0.165869); - ssigpTa->SetBinContent(206,0.129499); - ssigpTa->SetBinContent(207,0.104335); - ssigpTa->SetBinContent(208,0.0884829); - ssigpTa->SetBinContent(209,0.0762677); - ssigpTa->SetBinContent(210,0.0637362); - ssigpTa->SetBinContent(211,0.0513877); - ssigpTa->SetBinContent(212,0.0423713); - ssigpTa->SetBinContent(213,0.0360234); - ssigpTa->SetBinContent(214,0.0304423); - ssigpTa->SetBinContent(215,0.026517); - ssigpTa->SetBinContent(216,0.0236992); - ssigpTa->SetBinContent(217,0.0213095); - ssigpTa->SetBinContent(218,0.0192461); - ssigpTa->SetBinContent(219,0.0172452); - ssigpTa->SetBinContent(220,0.0157457); - ssigpTa->SetBinContent(221,0.0144474); - ssigpTa->SetBinContent(222,0.0131046); - ssigpTa->SetBinContent(223,0.0120596); - ssigpTa->SetBinContent(224,0.0114921); - ssigpTa->SetBinContent(225,0.0111104); - ssigpTa->SetBinContent(226,0.0107809); - ssigpTa->SetBinContent(227,0.0104216); - ssigpTa->SetBinContent(228,0.010213); - ssigpTa->SetBinContent(229,0.0102095); - ssigpTa->SetBinContent(230,0.0103024); - ssigpTa->SetBinContent(231,0.0103533); - ssigpTa->SetBinContent(232,0.0103285); - ssigpTa->SetBinContent(233,0.0103622); - ssigpTa->SetBinContent(234,0.010544); - ssigpTa->SetBinContent(235,0.0108425); - ssigpTa->SetBinContent(236,0.0111889); - ssigpTa->SetBinContent(237,0.0117603); - ssigpTa->SetBinContent(238,0.0126346); - ssigpTa->SetBinContent(239,0.0136179); - ssigpTa->SetBinContent(240,0.0145979); - ssigpTa->SetBinContent(241,0.0158237); - ssigpTa->SetBinContent(242,0.0174407); - ssigpTa->SetBinContent(243,0.0196167); - ssigpTa->SetBinContent(244,0.0217517); - ssigpTa->SetBinContent(245,0.0245507); - ssigpTa->SetBinContent(246,0.0280809); - ssigpTa->SetBinContent(247,0.0320685); - ssigpTa->SetBinContent(248,0.0366423); - ssigpTa->SetBinContent(249,0.0426771); - ssigpTa->SetBinContent(250,0.0516638); - ssigpTa->SetBinContent(251,0.0631572); - ssigpTa->SetBinContent(252,0.0747279); - ssigpTa->SetBinContent(253,0.0911755); - ssigpTa->SetBinContent(254,0.114872); - ssigpTa->SetBinContent(255,0.140412); - ssigpTa->SetBinContent(256,0.16604); - ssigpTa->SetBinContent(257,0.196659); - ssigpTa->SetBinContent(258,0.245068); - ssigpTa->SetBinContent(259,0.317714); - ssigpTa->SetBinContent(260,0.405334); - ssigpTa->SetBinContent(261,0.504091); - ssigpTa->SetBinContent(262,0.579566); - ssigpTa->SetBinContent(265,0.92693); - ssigpTa->SetBinContent(266,0.768376); - ssigpTa->SetBinContent(267,0.588887); - ssigpTa->SetBinContent(268,0.428622); - ssigpTa->SetBinContent(269,0.308539); - ssigpTa->SetBinContent(270,0.239311); - ssigpTa->SetBinContent(271,0.192008); - ssigpTa->SetBinContent(272,0.149113); - ssigpTa->SetBinContent(273,0.118231); - ssigpTa->SetBinContent(274,0.0999363); - ssigpTa->SetBinContent(275,0.0848229); - ssigpTa->SetBinContent(276,0.0699513); - ssigpTa->SetBinContent(277,0.0547896); - ssigpTa->SetBinContent(278,0.0445831); - ssigpTa->SetBinContent(279,0.0375089); - ssigpTa->SetBinContent(280,0.0315788); - ssigpTa->SetBinContent(281,0.0273691); - ssigpTa->SetBinContent(282,0.0243838); - ssigpTa->SetBinContent(283,0.0219912); - ssigpTa->SetBinContent(284,0.0197951); - ssigpTa->SetBinContent(285,0.017767); - ssigpTa->SetBinContent(286,0.0162173); - ssigpTa->SetBinContent(287,0.0149774); - ssigpTa->SetBinContent(288,0.0135977); - ssigpTa->SetBinContent(289,0.0125821); - ssigpTa->SetBinContent(290,0.0119574); - ssigpTa->SetBinContent(291,0.011522); - ssigpTa->SetBinContent(292,0.0111733); - ssigpTa->SetBinContent(293,0.0108264); - ssigpTa->SetBinContent(294,0.0105851); - ssigpTa->SetBinContent(295,0.0106562); - ssigpTa->SetBinContent(296,0.0107784); - ssigpTa->SetBinContent(297,0.0108275); - ssigpTa->SetBinContent(298,0.0108084); - ssigpTa->SetBinContent(299,0.0108065); - ssigpTa->SetBinContent(300,0.0110124); - ssigpTa->SetBinContent(301,0.0113448); - ssigpTa->SetBinContent(302,0.0117158); - ssigpTa->SetBinContent(303,0.0123794); - ssigpTa->SetBinContent(304,0.0133583); - ssigpTa->SetBinContent(305,0.014392); - ssigpTa->SetBinContent(306,0.015498); - ssigpTa->SetBinContent(307,0.0165811); - ssigpTa->SetBinContent(308,0.0181252); - ssigpTa->SetBinContent(309,0.0201903); - ssigpTa->SetBinContent(310,0.0225119); - ssigpTa->SetBinContent(311,0.0255001); - ssigpTa->SetBinContent(312,0.0296003); - ssigpTa->SetBinContent(313,0.03353); - ssigpTa->SetBinContent(314,0.0383759); - ssigpTa->SetBinContent(315,0.0447509); - ssigpTa->SetBinContent(316,0.054895); - ssigpTa->SetBinContent(317,0.0688271); - ssigpTa->SetBinContent(318,0.0833444); - ssigpTa->SetBinContent(319,0.102907); - ssigpTa->SetBinContent(320,0.132188); - ssigpTa->SetBinContent(321,0.162121); - ssigpTa->SetBinContent(322,0.193566); - ssigpTa->SetBinContent(323,0.235553); - ssigpTa->SetBinContent(324,0.310881); - ssigpTa->SetBinContent(325,0.442869); - ssigpTa->SetBinContent(326,0.602302); - ssigpTa->SetBinContent(327,0.769322); - ssigpTa->SetBinContent(328,0.901369); - ssigpTa->SetBinContent(331,1.3917); - ssigpTa->SetBinContent(332,1.15994); - ssigpTa->SetBinContent(333,0.861594); - ssigpTa->SetBinContent(334,0.596927); - ssigpTa->SetBinContent(335,0.403654); - ssigpTa->SetBinContent(336,0.296822); - ssigpTa->SetBinContent(337,0.232494); - ssigpTa->SetBinContent(338,0.174673); - ssigpTa->SetBinContent(339,0.136217); - ssigpTa->SetBinContent(340,0.113496); - ssigpTa->SetBinContent(341,0.0965284); - ssigpTa->SetBinContent(342,0.0787562); - ssigpTa->SetBinContent(343,0.0611796); - ssigpTa->SetBinContent(344,0.0488135); - ssigpTa->SetBinContent(345,0.0408061); - ssigpTa->SetBinContent(346,0.0338207); - ssigpTa->SetBinContent(347,0.0290171); - ssigpTa->SetBinContent(348,0.0257771); - ssigpTa->SetBinContent(349,0.0230483); - ssigpTa->SetBinContent(350,0.0208691); - ssigpTa->SetBinContent(351,0.0187282); - ssigpTa->SetBinContent(352,0.0171789); - ssigpTa->SetBinContent(353,0.0159147); - ssigpTa->SetBinContent(354,0.0145838); - ssigpTa->SetBinContent(355,0.0135158); - ssigpTa->SetBinContent(356,0.0128834); - ssigpTa->SetBinContent(357,0.0124814); - ssigpTa->SetBinContent(358,0.0121769); - ssigpTa->SetBinContent(359,0.0118853); - ssigpTa->SetBinContent(360,0.0117133); - ssigpTa->SetBinContent(361,0.01173); - ssigpTa->SetBinContent(362,0.0118033); - ssigpTa->SetBinContent(363,0.0117886); - ssigpTa->SetBinContent(364,0.011706); - ssigpTa->SetBinContent(365,0.0117353); - ssigpTa->SetBinContent(366,0.0119236); - ssigpTa->SetBinContent(367,0.0122298); - ssigpTa->SetBinContent(368,0.0126485); - ssigpTa->SetBinContent(369,0.0133212); - ssigpTa->SetBinContent(370,0.0144457); - ssigpTa->SetBinContent(371,0.0156275); - ssigpTa->SetBinContent(372,0.0166518); - ssigpTa->SetBinContent(373,0.0176988); - ssigpTa->SetBinContent(374,0.0190866); - ssigpTa->SetBinContent(375,0.0211358); - ssigpTa->SetBinContent(376,0.0235462); - ssigpTa->SetBinContent(377,0.0270283); - ssigpTa->SetBinContent(378,0.0315526); - ssigpTa->SetBinContent(379,0.0362863); - ssigpTa->SetBinContent(380,0.0414979); - ssigpTa->SetBinContent(381,0.0486447); - ssigpTa->SetBinContent(382,0.0603693); - ssigpTa->SetBinContent(383,0.0771753); - ssigpTa->SetBinContent(384,0.0953844); - ssigpTa->SetBinContent(385,0.120635); - ssigpTa->SetBinContent(386,0.157106); - ssigpTa->SetBinContent(387,0.196493); - ssigpTa->SetBinContent(388,0.237576); - ssigpTa->SetBinContent(389,0.293417); - ssigpTa->SetBinContent(390,0.409821); - ssigpTa->SetBinContent(391,0.615195); - ssigpTa->SetBinContent(392,0.882761); - ssigpTa->SetBinContent(393,1.1518); - ssigpTa->SetBinContent(394,1.35382); - ssigpTa->SetBinContent(397,2.05831); - ssigpTa->SetBinContent(398,1.70105); - ssigpTa->SetBinContent(399,1.25231); - ssigpTa->SetBinContent(400,0.847972); - ssigpTa->SetBinContent(401,0.549922); - ssigpTa->SetBinContent(402,0.389339); - ssigpTa->SetBinContent(403,0.29593); - ssigpTa->SetBinContent(404,0.217733); - ssigpTa->SetBinContent(405,0.16568); - ssigpTa->SetBinContent(406,0.136679); - ssigpTa->SetBinContent(407,0.114881); - ssigpTa->SetBinContent(408,0.0929453); - ssigpTa->SetBinContent(409,0.0707418); - ssigpTa->SetBinContent(410,0.0560116); - ssigpTa->SetBinContent(411,0.0460424); - ssigpTa->SetBinContent(412,0.0376533); - ssigpTa->SetBinContent(413,0.0318679); - ssigpTa->SetBinContent(414,0.0280861); - ssigpTa->SetBinContent(415,0.025206); - ssigpTa->SetBinContent(416,0.0228134); - ssigpTa->SetBinContent(417,0.0208317); - ssigpTa->SetBinContent(418,0.0193171); - ssigpTa->SetBinContent(419,0.0179839); - ssigpTa->SetBinContent(420,0.0164638); - ssigpTa->SetBinContent(421,0.0152336); - ssigpTa->SetBinContent(422,0.0145749); - ssigpTa->SetBinContent(423,0.0141885); - ssigpTa->SetBinContent(424,0.0139289); - ssigpTa->SetBinContent(425,0.0136761); - ssigpTa->SetBinContent(426,0.0135193); - ssigpTa->SetBinContent(427,0.0134873); - ssigpTa->SetBinContent(428,0.0135294); - ssigpTa->SetBinContent(429,0.0134763); - ssigpTa->SetBinContent(430,0.0134109); - ssigpTa->SetBinContent(431,0.0134182); - ssigpTa->SetBinContent(432,0.0136444); - ssigpTa->SetBinContent(433,0.0139062); - ssigpTa->SetBinContent(434,0.0141844); - ssigpTa->SetBinContent(435,0.0149356); - ssigpTa->SetBinContent(436,0.0161951); - ssigpTa->SetBinContent(437,0.0174873); - ssigpTa->SetBinContent(438,0.018573); - ssigpTa->SetBinContent(439,0.0195079); - ssigpTa->SetBinContent(440,0.0207949); - ssigpTa->SetBinContent(441,0.0228283); - ssigpTa->SetBinContent(442,0.0252549); - ssigpTa->SetBinContent(443,0.0289354); - ssigpTa->SetBinContent(444,0.0342073); - ssigpTa->SetBinContent(445,0.0396804); - ssigpTa->SetBinContent(446,0.0463669); - ssigpTa->SetBinContent(447,0.0550629); - ssigpTa->SetBinContent(448,0.0693075); - ssigpTa->SetBinContent(449,0.0909804); - ssigpTa->SetBinContent(450,0.114779); - ssigpTa->SetBinContent(451,0.146969); - ssigpTa->SetBinContent(452,0.195434); - ssigpTa->SetBinContent(453,0.248526); - ssigpTa->SetBinContent(454,0.306342); - ssigpTa->SetBinContent(455,0.387862); - ssigpTa->SetBinContent(456,0.549212); - ssigpTa->SetBinContent(457,0.863318); - ssigpTa->SetBinContent(458,1.26807); - ssigpTa->SetBinContent(459,1.68484); - ssigpTa->SetBinContent(460,1.98855); - ssigpTa->SetBinContent(463,19.3098); - ssigpTa->SetBinContent(464,11.308); - ssigpTa->SetBinContent(465,7.661); - ssigpTa->SetBinContent(466,5.09272); - ssigpTa->SetBinContent(467,2.88229); - ssigpTa->SetBinContent(468,2.23092); - ssigpTa->SetBinContent(469,1.76263); - ssigpTa->SetBinContent(470,1.15517); - ssigpTa->SetBinContent(471,0.928229); - ssigpTa->SetBinContent(472,0.766359); - ssigpTa->SetBinContent(473,0.624298); - ssigpTa->SetBinContent(474,0.50316); - ssigpTa->SetBinContent(475,0.329231); - ssigpTa->SetBinContent(476,0.268403); - ssigpTa->SetBinContent(477,0.227436); - ssigpTa->SetBinContent(478,0.172655); - ssigpTa->SetBinContent(479,0.141826); - ssigpTa->SetBinContent(480,0.129844); - ssigpTa->SetBinContent(481,0.117598); - ssigpTa->SetBinContent(482,0.108722); - ssigpTa->SetBinContent(483,0.0982137); - ssigpTa->SetBinContent(484,0.0959805); - ssigpTa->SetBinContent(485,0.091468); - ssigpTa->SetBinContent(486,0.080323); - ssigpTa->SetBinContent(487,0.070786); - ssigpTa->SetBinContent(488,0.0700397); - ssigpTa->SetBinContent(489,0.0702088); - ssigpTa->SetBinContent(490,0.0695863); - ssigpTa->SetBinContent(491,0.0693635); - ssigpTa->SetBinContent(492,0.0698056); - ssigpTa->SetBinContent(493,0.0689679); - ssigpTa->SetBinContent(494,0.0701788); - ssigpTa->SetBinContent(495,0.0709953); - ssigpTa->SetBinContent(496,0.0703343); - ssigpTa->SetBinContent(497,0.0695008); - ssigpTa->SetBinContent(498,0.071242); - ssigpTa->SetBinContent(499,0.0722281); - ssigpTa->SetBinContent(500,0.0719461); - ssigpTa->SetBinContent(501,0.0712323); - ssigpTa->SetBinContent(502,0.0799371); - ssigpTa->SetBinContent(503,0.0880082); - ssigpTa->SetBinContent(504,0.093457); - ssigpTa->SetBinContent(505,0.0978981); - ssigpTa->SetBinContent(506,0.100403); - ssigpTa->SetBinContent(507,0.110361); - ssigpTa->SetBinContent(508,0.118267); - ssigpTa->SetBinContent(509,0.129994); - ssigpTa->SetBinContent(510,0.162637); - ssigpTa->SetBinContent(511,0.183392); - ssigpTa->SetBinContent(512,0.224315); - ssigpTa->SetBinContent(513,0.272138); - ssigpTa->SetBinContent(514,0.327838); - ssigpTa->SetBinContent(515,0.499332); - ssigpTa->SetBinContent(516,0.635426); - ssigpTa->SetBinContent(517,0.754133); - ssigpTa->SetBinContent(518,1.10851); - ssigpTa->SetBinContent(519,1.39367); - ssigpTa->SetBinContent(520,1.76774); - ssigpTa->SetBinContent(521,2.23571); - ssigpTa->SetBinContent(522,2.92456); - ssigpTa->SetBinContent(523,5.20757); - ssigpTa->SetBinContent(524,8.02734); - ssigpTa->SetBinContent(525,11.4992); - ssigpTa->SetBinContent(526,18.7384); - ssigpTa->SetBinContent(529,63.6902); - ssigpTa->SetBinContent(530,60.3252); - ssigpTa->SetBinContent(531,40.6597); - ssigpTa->SetBinContent(532,26.5019); - ssigpTa->SetBinContent(533,17.2021); - ssigpTa->SetBinContent(534,11.5723); - ssigpTa->SetBinContent(535,8.7623); - ssigpTa->SetBinContent(536,6.5461); - ssigpTa->SetBinContent(537,4.82417); - ssigpTa->SetBinContent(538,3.95362); - ssigpTa->SetBinContent(539,3.23391); - ssigpTa->SetBinContent(540,2.46686); - ssigpTa->SetBinContent(541,1.84955); - ssigpTa->SetBinContent(542,1.37408); - ssigpTa->SetBinContent(543,1.11833); - ssigpTa->SetBinContent(544,0.903377); - ssigpTa->SetBinContent(545,0.736342); - ssigpTa->SetBinContent(546,0.646932); - ssigpTa->SetBinContent(547,0.595266); - ssigpTa->SetBinContent(548,0.542641); - ssigpTa->SetBinContent(549,0.507811); - ssigpTa->SetBinContent(550,0.480644); - ssigpTa->SetBinContent(551,0.451716); - ssigpTa->SetBinContent(552,0.407196); - ssigpTa->SetBinContent(553,0.369354); - ssigpTa->SetBinContent(554,0.352809); - ssigpTa->SetBinContent(555,0.352685); - ssigpTa->SetBinContent(556,0.352625); - ssigpTa->SetBinContent(557,0.352898); - ssigpTa->SetBinContent(558,0.35232); - ssigpTa->SetBinContent(559,0.354242); - ssigpTa->SetBinContent(560,0.356609); - ssigpTa->SetBinContent(561,0.359438); - ssigpTa->SetBinContent(562,0.357907); - ssigpTa->SetBinContent(563,0.35802); - ssigpTa->SetBinContent(564,0.361246); - ssigpTa->SetBinContent(565,0.365295); - ssigpTa->SetBinContent(566,0.363195); - ssigpTa->SetBinContent(567,0.3751); - ssigpTa->SetBinContent(568,0.402377); - ssigpTa->SetBinContent(569,0.441588); - ssigpTa->SetBinContent(570,0.47252); - ssigpTa->SetBinContent(571,0.492136); - ssigpTa->SetBinContent(572,0.51988); - ssigpTa->SetBinContent(573,0.552397); - ssigpTa->SetBinContent(574,0.599298); - ssigpTa->SetBinContent(575,0.687086); - ssigpTa->SetBinContent(576,0.794791); - ssigpTa->SetBinContent(577,0.955598); - ssigpTa->SetBinContent(578,1.13939); - ssigpTa->SetBinContent(579,1.37547); - ssigpTa->SetBinContent(580,1.85214); - ssigpTa->SetBinContent(581,2.48198); - ssigpTa->SetBinContent(582,3.19938); - ssigpTa->SetBinContent(583,4.23924); - ssigpTa->SetBinContent(584,5.52799); - ssigpTa->SetBinContent(585,7.28341); - ssigpTa->SetBinContent(586,9.19071); - ssigpTa->SetBinContent(587,11.6572); - ssigpTa->SetBinContent(588,17.5238); - ssigpTa->SetBinContent(589,27.5455); - ssigpTa->SetBinContent(590,42.0337); - ssigpTa->SetBinContent(591,60.7132); - ssigpTa->SetBinContent(592,63.1425); - ssigpTa->SetBinContent(595,162.5); - ssigpTa->SetBinContent(596,124.633); - ssigpTa->SetBinContent(597,97.9624); - ssigpTa->SetBinContent(598,65.8158); - ssigpTa->SetBinContent(599,41.8657); - ssigpTa->SetBinContent(600,29.1797); - ssigpTa->SetBinContent(601,21.3248); - ssigpTa->SetBinContent(602,15.5293); - ssigpTa->SetBinContent(603,11.9636); - ssigpTa->SetBinContent(604,9.4721); - ssigpTa->SetBinContent(605,7.62751); - ssigpTa->SetBinContent(606,6.00129); - ssigpTa->SetBinContent(607,4.37984); - ssigpTa->SetBinContent(608,3.38649); - ssigpTa->SetBinContent(609,2.69159); - ssigpTa->SetBinContent(610,2.15241); - ssigpTa->SetBinContent(611,1.77948); - ssigpTa->SetBinContent(612,1.55847); - ssigpTa->SetBinContent(613,1.40797); - ssigpTa->SetBinContent(614,1.29991); - ssigpTa->SetBinContent(615,1.20183); - ssigpTa->SetBinContent(616,1.14097); - ssigpTa->SetBinContent(617,1.06724); - ssigpTa->SetBinContent(618,0.968742); - ssigpTa->SetBinContent(619,0.881756); - ssigpTa->SetBinContent(620,0.846482); - ssigpTa->SetBinContent(621,0.837181); - ssigpTa->SetBinContent(622,0.836285); - ssigpTa->SetBinContent(623,0.836125); - ssigpTa->SetBinContent(624,0.839083); - ssigpTa->SetBinContent(625,0.839132); - ssigpTa->SetBinContent(626,0.847042); - ssigpTa->SetBinContent(627,0.851605); - ssigpTa->SetBinContent(628,0.850756); - ssigpTa->SetBinContent(629,0.849362); - ssigpTa->SetBinContent(630,0.858532); - ssigpTa->SetBinContent(631,0.86405); - ssigpTa->SetBinContent(632,0.871502); - ssigpTa->SetBinContent(633,0.891447); - ssigpTa->SetBinContent(634,0.962778); - ssigpTa->SetBinContent(635,1.04436); - ssigpTa->SetBinContent(636,1.11453); - ssigpTa->SetBinContent(637,1.17489); - ssigpTa->SetBinContent(638,1.22984); - ssigpTa->SetBinContent(639,1.32168); - ssigpTa->SetBinContent(640,1.44507); - ssigpTa->SetBinContent(641,1.62397); - ssigpTa->SetBinContent(642,1.93063); - ssigpTa->SetBinContent(643,2.26309); - ssigpTa->SetBinContent(644,2.73084); - ssigpTa->SetBinContent(645,3.41541); - ssigpTa->SetBinContent(646,4.39199); - ssigpTa->SetBinContent(647,5.98215); - ssigpTa->SetBinContent(648,7.82655); - ssigpTa->SetBinContent(649,10.0177); - ssigpTa->SetBinContent(650,13.4935); - ssigpTa->SetBinContent(651,17.308); - ssigpTa->SetBinContent(652,22.1032); - ssigpTa->SetBinContent(653,29.7418); - ssigpTa->SetBinContent(654,42.936); - ssigpTa->SetBinContent(655,67.9078); - ssigpTa->SetBinContent(656,100.773); - ssigpTa->SetBinContent(657,126.171); - ssigpTa->SetBinContent(658,160.372); - ssigpTa->SetEntries(576); - - init = true; - } - - double percent = ssigpTa->Interpolate(eta, ptGeV); - return percent; - } - - // Fractional resolution in % - //double ITKPercentageresol(double pt [MeV], double eta) { - double UpgradePerformance::ITKPercentageresol_InclBrl(double ptMeV, double eta){ - static TH2D *ssigpTa; - static bool init = false; - - double ptGeV = ptMeV/1000.; - if (fabs(eta)>3.976) return 0.; - if(!init){ - Double_t xAxis1[65] = {-3.9375, -3.875, -3.75, -3.625, -3.5, -3.375, -3.25, -3.125, -3, -2.875, -2.75, -2.625, -2.5, -2.375, -2.25, -2.125, -2, -1.875, -1.75, -1.625, -1.5, -1.375, -1.25, -1.125, -1, -0.875, -0.75, -0.625, -0.5, -0.375, -0.25, -0.125, 0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1, 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875, 2, 2.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875, 3, 3.125, 3.25, 3.375, 3.5, 3.625, 3.75, 3.875, 3.97688}; - Double_t yAxis1[10] = {1, 3, 7.5, 15, 25, 40, 60, 85, 3.55e+03, 7.07e+03}; - - ssigpTa = new TH2D("ssigpTa","ssigpTa",64, xAxis1,9, yAxis1); - ssigpTa->SetBinContent(67,0.302825); - ssigpTa->SetBinContent(68,0.278106); - ssigpTa->SetBinContent(69,0.242543); - ssigpTa->SetBinContent(70,0.214204); - ssigpTa->SetBinContent(71,0.186216); - ssigpTa->SetBinContent(72,0.162243); - ssigpTa->SetBinContent(73,0.138132); - ssigpTa->SetBinContent(74,0.10886); - ssigpTa->SetBinContent(75,0.0882723); - ssigpTa->SetBinContent(76,0.0753747); - ssigpTa->SetBinContent(77,0.0655204); - ssigpTa->SetBinContent(78,0.0555123); - ssigpTa->SetBinContent(79,0.0457184); - ssigpTa->SetBinContent(80,0.0385657); - ssigpTa->SetBinContent(81,0.0334656); - ssigpTa->SetBinContent(82,0.029209); - ssigpTa->SetBinContent(83,0.0262394); - ssigpTa->SetBinContent(84,0.0236513); - ssigpTa->SetBinContent(85,0.0213531); - ssigpTa->SetBinContent(86,0.0190535); - ssigpTa->SetBinContent(87,0.0170161); - ssigpTa->SetBinContent(88,0.015657); - ssigpTa->SetBinContent(89,0.0143463); - ssigpTa->SetBinContent(90,0.0129262); - ssigpTa->SetBinContent(91,0.011719); - ssigpTa->SetBinContent(92,0.0110308); - ssigpTa->SetBinContent(93,0.010645); - ssigpTa->SetBinContent(94,0.0104098); - ssigpTa->SetBinContent(95,0.0101748); - ssigpTa->SetBinContent(96,0.00997196); - ssigpTa->SetBinContent(97,0.00974426); - ssigpTa->SetBinContent(98,0.00958808); - ssigpTa->SetBinContent(99,0.00961771); - ssigpTa->SetBinContent(100,0.00965853); - ssigpTa->SetBinContent(101,0.00980291); - ssigpTa->SetBinContent(102,0.00998836); - ssigpTa->SetBinContent(103,0.0103057); - ssigpTa->SetBinContent(104,0.0107097); - ssigpTa->SetBinContent(105,0.0113089); - ssigpTa->SetBinContent(106,0.0123345); - ssigpTa->SetBinContent(107,0.0135243); - ssigpTa->SetBinContent(108,0.0148689); - ssigpTa->SetBinContent(109,0.015968); - ssigpTa->SetBinContent(110,0.017175); - ssigpTa->SetBinContent(111,0.0189552); - ssigpTa->SetBinContent(112,0.0211871); - ssigpTa->SetBinContent(113,0.023812); - ssigpTa->SetBinContent(114,0.0269943); - ssigpTa->SetBinContent(115,0.0298899); - ssigpTa->SetBinContent(116,0.0334379); - ssigpTa->SetBinContent(117,0.0380549); - ssigpTa->SetBinContent(118,0.0449799); - ssigpTa->SetBinContent(119,0.0546161); - ssigpTa->SetBinContent(120,0.0652541); - ssigpTa->SetBinContent(121,0.0791868); - ssigpTa->SetBinContent(122,0.0992091); - ssigpTa->SetBinContent(123,0.120238); - ssigpTa->SetBinContent(124,0.141202); - ssigpTa->SetBinContent(125,0.162152); - ssigpTa->SetBinContent(126,0.185712); - ssigpTa->SetBinContent(127,0.217806); - ssigpTa->SetBinContent(128,0.248991); - ssigpTa->SetBinContent(129,0.280218); - ssigpTa->SetBinContent(130,0.300126); - ssigpTa->SetBinContent(133,0.41831); - ssigpTa->SetBinContent(134,0.362642); - ssigpTa->SetBinContent(135,0.305234); - ssigpTa->SetBinContent(136,0.251607); - ssigpTa->SetBinContent(137,0.205598); - ssigpTa->SetBinContent(138,0.172768); - ssigpTa->SetBinContent(139,0.143078); - ssigpTa->SetBinContent(140,0.113367); - ssigpTa->SetBinContent(141,0.0917029); - ssigpTa->SetBinContent(142,0.0793054); - ssigpTa->SetBinContent(143,0.069323); - ssigpTa->SetBinContent(144,0.0589073); - ssigpTa->SetBinContent(145,0.047842); - ssigpTa->SetBinContent(146,0.0396782); - ssigpTa->SetBinContent(147,0.0340484); - ssigpTa->SetBinContent(148,0.0296152); - ssigpTa->SetBinContent(149,0.026304); - ssigpTa->SetBinContent(150,0.0237863); - ssigpTa->SetBinContent(151,0.0213268); - ssigpTa->SetBinContent(152,0.0191172); - ssigpTa->SetBinContent(153,0.0172097); - ssigpTa->SetBinContent(154,0.0158145); - ssigpTa->SetBinContent(155,0.0146503); - ssigpTa->SetBinContent(156,0.0132187); - ssigpTa->SetBinContent(157,0.0120224); - ssigpTa->SetBinContent(158,0.011302); - ssigpTa->SetBinContent(159,0.0108657); - ssigpTa->SetBinContent(160,0.0105489); - ssigpTa->SetBinContent(161,0.010274); - ssigpTa->SetBinContent(162,0.0100359); - ssigpTa->SetBinContent(163,0.00988613); - ssigpTa->SetBinContent(164,0.00979926); - ssigpTa->SetBinContent(165,0.00972467); - ssigpTa->SetBinContent(166,0.00980999); - ssigpTa->SetBinContent(167,0.00988959); - ssigpTa->SetBinContent(168,0.0100939); - ssigpTa->SetBinContent(169,0.0103987); - ssigpTa->SetBinContent(170,0.0107931); - ssigpTa->SetBinContent(171,0.0114662); - ssigpTa->SetBinContent(172,0.0125282); - ssigpTa->SetBinContent(173,0.0138312); - ssigpTa->SetBinContent(174,0.0150466); - ssigpTa->SetBinContent(175,0.0161512); - ssigpTa->SetBinContent(176,0.0173263); - ssigpTa->SetBinContent(177,0.0190517); - ssigpTa->SetBinContent(178,0.0212629); - ssigpTa->SetBinContent(179,0.0240354); - ssigpTa->SetBinContent(180,0.0273099); - ssigpTa->SetBinContent(181,0.0306433); - ssigpTa->SetBinContent(182,0.0342938); - ssigpTa->SetBinContent(183,0.0392819); - ssigpTa->SetBinContent(184,0.047162); - ssigpTa->SetBinContent(185,0.0574508); - ssigpTa->SetBinContent(186,0.0681965); - ssigpTa->SetBinContent(187,0.0826509); - ssigpTa->SetBinContent(188,0.102663); - ssigpTa->SetBinContent(189,0.124523); - ssigpTa->SetBinContent(190,0.147645); - ssigpTa->SetBinContent(191,0.172028); - ssigpTa->SetBinContent(192,0.20638); - ssigpTa->SetBinContent(193,0.25799); - ssigpTa->SetBinContent(194,0.312852); - ssigpTa->SetBinContent(195,0.366997); - ssigpTa->SetBinContent(196,0.417549); - ssigpTa->SetBinContent(199,0.625229); - ssigpTa->SetBinContent(200,0.538419); - ssigpTa->SetBinContent(201,0.426936); - ssigpTa->SetBinContent(202,0.326886); - ssigpTa->SetBinContent(203,0.244703); - ssigpTa->SetBinContent(204,0.194237); - ssigpTa->SetBinContent(205,0.158315); - ssigpTa->SetBinContent(206,0.123332); - ssigpTa->SetBinContent(207,0.0992206); - ssigpTa->SetBinContent(208,0.0856772); - ssigpTa->SetBinContent(209,0.0750335); - ssigpTa->SetBinContent(210,0.0632285); - ssigpTa->SetBinContent(211,0.0508423); - ssigpTa->SetBinContent(212,0.0415123); - ssigpTa->SetBinContent(213,0.0353965); - ssigpTa->SetBinContent(214,0.0305427); - ssigpTa->SetBinContent(215,0.0271525); - ssigpTa->SetBinContent(216,0.0243407); - ssigpTa->SetBinContent(217,0.0218683); - ssigpTa->SetBinContent(218,0.0195884); - ssigpTa->SetBinContent(219,0.0176411); - ssigpTa->SetBinContent(220,0.0162989); - ssigpTa->SetBinContent(221,0.0150678); - ssigpTa->SetBinContent(222,0.0136415); - ssigpTa->SetBinContent(223,0.012448); - ssigpTa->SetBinContent(224,0.0117045); - ssigpTa->SetBinContent(225,0.0112398); - ssigpTa->SetBinContent(226,0.0108426); - ssigpTa->SetBinContent(227,0.0104886); - ssigpTa->SetBinContent(228,0.0102789); - ssigpTa->SetBinContent(229,0.010184); - ssigpTa->SetBinContent(230,0.01014); - ssigpTa->SetBinContent(231,0.0101438); - ssigpTa->SetBinContent(232,0.0101049); - ssigpTa->SetBinContent(233,0.0101676); - ssigpTa->SetBinContent(234,0.0103756); - ssigpTa->SetBinContent(235,0.0106981); - ssigpTa->SetBinContent(236,0.0110851); - ssigpTa->SetBinContent(237,0.0118014); - ssigpTa->SetBinContent(238,0.0129991); - ssigpTa->SetBinContent(239,0.0142548); - ssigpTa->SetBinContent(240,0.0154796); - ssigpTa->SetBinContent(241,0.0164886); - ssigpTa->SetBinContent(242,0.0176661); - ssigpTa->SetBinContent(243,0.0194148); - ssigpTa->SetBinContent(244,0.0215655); - ssigpTa->SetBinContent(245,0.0245431); - ssigpTa->SetBinContent(246,0.0282026); - ssigpTa->SetBinContent(247,0.0318013); - ssigpTa->SetBinContent(248,0.0359374); - ssigpTa->SetBinContent(249,0.0416142); - ssigpTa->SetBinContent(250,0.0504631); - ssigpTa->SetBinContent(251,0.062172); - ssigpTa->SetBinContent(252,0.0739705); - ssigpTa->SetBinContent(253,0.0891939); - ssigpTa->SetBinContent(254,0.111109); - ssigpTa->SetBinContent(255,0.135509); - ssigpTa->SetBinContent(256,0.161693); - ssigpTa->SetBinContent(257,0.193015); - ssigpTa->SetBinContent(258,0.245831); - ssigpTa->SetBinContent(259,0.330486); - ssigpTa->SetBinContent(260,0.434318); - ssigpTa->SetBinContent(261,0.542746); - ssigpTa->SetBinContent(262,0.623201); - ssigpTa->SetBinContent(265,0.995596); - ssigpTa->SetBinContent(266,0.829538); - ssigpTa->SetBinContent(267,0.630564); - ssigpTa->SetBinContent(268,0.449395); - ssigpTa->SetBinContent(269,0.309924); - ssigpTa->SetBinContent(270,0.232429); - ssigpTa->SetBinContent(271,0.185494); - ssigpTa->SetBinContent(272,0.142203); - ssigpTa->SetBinContent(273,0.112945); - ssigpTa->SetBinContent(274,0.0957407); - ssigpTa->SetBinContent(275,0.0826167); - ssigpTa->SetBinContent(276,0.0690124); - ssigpTa->SetBinContent(277,0.0545151); - ssigpTa->SetBinContent(278,0.044088); - ssigpTa->SetBinContent(279,0.0372386); - ssigpTa->SetBinContent(280,0.0318453); - ssigpTa->SetBinContent(281,0.0281473); - ssigpTa->SetBinContent(282,0.025304); - ssigpTa->SetBinContent(283,0.0226911); - ssigpTa->SetBinContent(284,0.0204682); - ssigpTa->SetBinContent(285,0.0184644); - ssigpTa->SetBinContent(286,0.0169648); - ssigpTa->SetBinContent(287,0.015693); - ssigpTa->SetBinContent(288,0.0142333); - ssigpTa->SetBinContent(289,0.0129683); - ssigpTa->SetBinContent(290,0.0122114); - ssigpTa->SetBinContent(291,0.0116982); - ssigpTa->SetBinContent(292,0.0112631); - ssigpTa->SetBinContent(293,0.0109009); - ssigpTa->SetBinContent(294,0.0107122); - ssigpTa->SetBinContent(295,0.0107012); - ssigpTa->SetBinContent(296,0.010754); - ssigpTa->SetBinContent(297,0.0107511); - ssigpTa->SetBinContent(298,0.0107141); - ssigpTa->SetBinContent(299,0.0107192); - ssigpTa->SetBinContent(300,0.0109204); - ssigpTa->SetBinContent(301,0.0112608); - ssigpTa->SetBinContent(302,0.0116673); - ssigpTa->SetBinContent(303,0.0124274); - ssigpTa->SetBinContent(304,0.0136883); - ssigpTa->SetBinContent(305,0.0150691); - ssigpTa->SetBinContent(306,0.0161921); - ssigpTa->SetBinContent(307,0.0172015); - ssigpTa->SetBinContent(308,0.0184128); - ssigpTa->SetBinContent(309,0.0201555); - ssigpTa->SetBinContent(310,0.022394); - ssigpTa->SetBinContent(311,0.0255109); - ssigpTa->SetBinContent(312,0.0296398); - ssigpTa->SetBinContent(313,0.0336521); - ssigpTa->SetBinContent(314,0.0382778); - ssigpTa->SetBinContent(315,0.0445322); - ssigpTa->SetBinContent(316,0.0548477); - ssigpTa->SetBinContent(317,0.0683803); - ssigpTa->SetBinContent(318,0.0819092); - ssigpTa->SetBinContent(319,0.100076); - ssigpTa->SetBinContent(320,0.126156); - ssigpTa->SetBinContent(321,0.154715); - ssigpTa->SetBinContent(322,0.187463); - ssigpTa->SetBinContent(323,0.229882); - ssigpTa->SetBinContent(324,0.306514); - ssigpTa->SetBinContent(325,0.446806); - ssigpTa->SetBinContent(326,0.625029); - ssigpTa->SetBinContent(327,0.81461); - ssigpTa->SetBinContent(328,0.980515); - ssigpTa->SetBinContent(331,1.52854); - ssigpTa->SetBinContent(332,1.27087); - ssigpTa->SetBinContent(333,0.933998); - ssigpTa->SetBinContent(334,0.628459); - ssigpTa->SetBinContent(335,0.409514); - ssigpTa->SetBinContent(336,0.292652); - ssigpTa->SetBinContent(337,0.227896); - ssigpTa->SetBinContent(338,0.171654); - ssigpTa->SetBinContent(339,0.132102); - ssigpTa->SetBinContent(340,0.110605); - ssigpTa->SetBinContent(341,0.0939319); - ssigpTa->SetBinContent(342,0.0774066); - ssigpTa->SetBinContent(343,0.0604369); - ssigpTa->SetBinContent(344,0.0481876); - ssigpTa->SetBinContent(345,0.040134); - ssigpTa->SetBinContent(346,0.0337438); - ssigpTa->SetBinContent(347,0.0293017); - ssigpTa->SetBinContent(348,0.0263205); - ssigpTa->SetBinContent(349,0.023721); - ssigpTa->SetBinContent(350,0.021542); - ssigpTa->SetBinContent(351,0.0195209); - ssigpTa->SetBinContent(352,0.0180105); - ssigpTa->SetBinContent(353,0.0166938); - ssigpTa->SetBinContent(354,0.015153); - ssigpTa->SetBinContent(355,0.0138792); - ssigpTa->SetBinContent(356,0.0130486); - ssigpTa->SetBinContent(357,0.0124835); - ssigpTa->SetBinContent(358,0.0120551); - ssigpTa->SetBinContent(359,0.0117579); - ssigpTa->SetBinContent(360,0.0116613); - ssigpTa->SetBinContent(361,0.0116691); - ssigpTa->SetBinContent(362,0.0117191); - ssigpTa->SetBinContent(363,0.0117512); - ssigpTa->SetBinContent(364,0.0117316); - ssigpTa->SetBinContent(365,0.011749); - ssigpTa->SetBinContent(366,0.0119405); - ssigpTa->SetBinContent(367,0.0122325); - ssigpTa->SetBinContent(368,0.0125852); - ssigpTa->SetBinContent(369,0.0133596); - ssigpTa->SetBinContent(370,0.0147422); - ssigpTa->SetBinContent(371,0.0161959); - ssigpTa->SetBinContent(372,0.0174357); - ssigpTa->SetBinContent(373,0.018485); - ssigpTa->SetBinContent(374,0.0196707); - ssigpTa->SetBinContent(375,0.0213993); - ssigpTa->SetBinContent(376,0.0236048); - ssigpTa->SetBinContent(377,0.0270538); - ssigpTa->SetBinContent(378,0.0315933); - ssigpTa->SetBinContent(379,0.036317); - ssigpTa->SetBinContent(380,0.0415299); - ssigpTa->SetBinContent(381,0.0488393); - ssigpTa->SetBinContent(382,0.0607867); - ssigpTa->SetBinContent(383,0.0771715); - ssigpTa->SetBinContent(384,0.0943235); - ssigpTa->SetBinContent(385,0.11752); - ssigpTa->SetBinContent(386,0.151066); - ssigpTa->SetBinContent(387,0.188767); - ssigpTa->SetBinContent(388,0.231597); - ssigpTa->SetBinContent(389,0.28974); - ssigpTa->SetBinContent(390,0.405041); - ssigpTa->SetBinContent(391,0.618942); - ssigpTa->SetBinContent(392,0.907471); - ssigpTa->SetBinContent(393,1.23228); - ssigpTa->SetBinContent(394,1.4704); - ssigpTa->SetBinContent(397,2.27986); - ssigpTa->SetBinContent(398,1.86615); - ssigpTa->SetBinContent(399,1.36063); - ssigpTa->SetBinContent(400,0.895061); - ssigpTa->SetBinContent(401,0.557255); - ssigpTa->SetBinContent(402,0.38876); - ssigpTa->SetBinContent(403,0.294401); - ssigpTa->SetBinContent(404,0.213651); - ssigpTa->SetBinContent(405,0.161093); - ssigpTa->SetBinContent(406,0.131996); - ssigpTa->SetBinContent(407,0.111604); - ssigpTa->SetBinContent(408,0.0907277); - ssigpTa->SetBinContent(409,0.0696755); - ssigpTa->SetBinContent(410,0.0546332); - ssigpTa->SetBinContent(411,0.044921); - ssigpTa->SetBinContent(412,0.0368257); - ssigpTa->SetBinContent(413,0.0315499); - ssigpTa->SetBinContent(414,0.0280534); - ssigpTa->SetBinContent(415,0.0254186); - ssigpTa->SetBinContent(416,0.0232239); - ssigpTa->SetBinContent(417,0.0213103); - ssigpTa->SetBinContent(418,0.0198122); - ssigpTa->SetBinContent(419,0.0184599); - ssigpTa->SetBinContent(420,0.016869); - ssigpTa->SetBinContent(421,0.0154623); - ssigpTa->SetBinContent(422,0.0145751); - ssigpTa->SetBinContent(423,0.0140266); - ssigpTa->SetBinContent(424,0.013661); - ssigpTa->SetBinContent(425,0.0135057); - ssigpTa->SetBinContent(426,0.0135154); - ssigpTa->SetBinContent(427,0.0135363); - ssigpTa->SetBinContent(428,0.0134944); - ssigpTa->SetBinContent(429,0.0134682); - ssigpTa->SetBinContent(430,0.013467); - ssigpTa->SetBinContent(431,0.0135135); - ssigpTa->SetBinContent(432,0.0136691); - ssigpTa->SetBinContent(433,0.0138814); - ssigpTa->SetBinContent(434,0.01418); - ssigpTa->SetBinContent(435,0.0149264); - ssigpTa->SetBinContent(436,0.0163867); - ssigpTa->SetBinContent(437,0.0180208); - ssigpTa->SetBinContent(438,0.0193653); - ssigpTa->SetBinContent(439,0.0204703); - ssigpTa->SetBinContent(440,0.0217); - ssigpTa->SetBinContent(441,0.0233511); - ssigpTa->SetBinContent(442,0.0255562); - ssigpTa->SetBinContent(443,0.0292021); - ssigpTa->SetBinContent(444,0.0344811); - ssigpTa->SetBinContent(445,0.0399634); - ssigpTa->SetBinContent(446,0.0464906); - ssigpTa->SetBinContent(447,0.0552774); - ssigpTa->SetBinContent(448,0.070038); - ssigpTa->SetBinContent(449,0.0907901); - ssigpTa->SetBinContent(450,0.112944); - ssigpTa->SetBinContent(451,0.143924); - ssigpTa->SetBinContent(452,0.188747); - ssigpTa->SetBinContent(453,0.238869); - ssigpTa->SetBinContent(454,0.299343); - ssigpTa->SetBinContent(455,0.382648); - ssigpTa->SetBinContent(456,0.550824); - ssigpTa->SetBinContent(457,0.872061); - ssigpTa->SetBinContent(458,1.32881); - ssigpTa->SetBinContent(459,1.81465); - ssigpTa->SetBinContent(460,2.22573); - ssigpTa->SetBinContent(463,21.5641); - ssigpTa->SetBinContent(464,12.8163); - ssigpTa->SetBinContent(465,8.9051); - ssigpTa->SetBinContent(466,5.46843); - ssigpTa->SetBinContent(467,2.90312); - ssigpTa->SetBinContent(468,2.23696); - ssigpTa->SetBinContent(469,1.75773); - ssigpTa->SetBinContent(470,1.10213); - ssigpTa->SetBinContent(471,0.833982); - ssigpTa->SetBinContent(472,0.709051); - ssigpTa->SetBinContent(473,0.600797); - ssigpTa->SetBinContent(474,0.486651); - ssigpTa->SetBinContent(475,0.325414); - ssigpTa->SetBinContent(476,0.259145); - ssigpTa->SetBinContent(477,0.224566); - ssigpTa->SetBinContent(478,0.170036); - ssigpTa->SetBinContent(479,0.144557); - ssigpTa->SetBinContent(480,0.130681); - ssigpTa->SetBinContent(481,0.117919); - ssigpTa->SetBinContent(482,0.111707); - ssigpTa->SetBinContent(483,0.10228); - ssigpTa->SetBinContent(484,0.0983125); - ssigpTa->SetBinContent(485,0.0940134); - ssigpTa->SetBinContent(486,0.0823725); - ssigpTa->SetBinContent(487,0.0745323); - ssigpTa->SetBinContent(488,0.0720143); - ssigpTa->SetBinContent(489,0.0699794); - ssigpTa->SetBinContent(490,0.0689341); - ssigpTa->SetBinContent(491,0.068161); - ssigpTa->SetBinContent(492,0.0690122); - ssigpTa->SetBinContent(493,0.0713494); - ssigpTa->SetBinContent(494,0.0723612); - ssigpTa->SetBinContent(495,0.0721793); - ssigpTa->SetBinContent(496,0.0707842); - ssigpTa->SetBinContent(497,0.0689267); - ssigpTa->SetBinContent(498,0.0695199); - ssigpTa->SetBinContent(499,0.0711967); - ssigpTa->SetBinContent(500,0.0715707); - ssigpTa->SetBinContent(501,0.0734314); - ssigpTa->SetBinContent(502,0.0805427); - ssigpTa->SetBinContent(503,0.0902541); - ssigpTa->SetBinContent(504,0.0952128); - ssigpTa->SetBinContent(505,0.0996744); - ssigpTa->SetBinContent(506,0.10218); - ssigpTa->SetBinContent(507,0.110438); - ssigpTa->SetBinContent(508,0.117139); - ssigpTa->SetBinContent(509,0.1318); - ssigpTa->SetBinContent(510,0.167252); - ssigpTa->SetBinContent(511,0.190781); - ssigpTa->SetBinContent(512,0.229543); - ssigpTa->SetBinContent(513,0.273375); - ssigpTa->SetBinContent(514,0.336827); - ssigpTa->SetBinContent(515,0.49101); - ssigpTa->SetBinContent(516,0.596771); - ssigpTa->SetBinContent(517,0.733069); - ssigpTa->SetBinContent(518,1.08062); - ssigpTa->SetBinContent(519,1.33108); - ssigpTa->SetBinContent(520,1.74066); - ssigpTa->SetBinContent(521,2.20907); - ssigpTa->SetBinContent(522,2.93802); - ssigpTa->SetBinContent(523,5.1485); - ssigpTa->SetBinContent(524,8.38387); - ssigpTa->SetBinContent(525,12.7372); - ssigpTa->SetBinContent(526,22.0213); - ssigpTa->SetBinContent(529,71.8105); - ssigpTa->SetBinContent(530,68.7159); - ssigpTa->SetBinContent(531,46.2939); - ssigpTa->SetBinContent(532,29.5014); - ssigpTa->SetBinContent(533,17.8771); - ssigpTa->SetBinContent(534,11.5878); - ssigpTa->SetBinContent(535,8.67092); - ssigpTa->SetBinContent(536,6.26263); - ssigpTa->SetBinContent(537,4.44057); - ssigpTa->SetBinContent(538,3.62951); - ssigpTa->SetBinContent(539,3.05859); - ssigpTa->SetBinContent(540,2.39129); - ssigpTa->SetBinContent(541,1.79714); - ssigpTa->SetBinContent(542,1.34814); - ssigpTa->SetBinContent(543,1.09406); - ssigpTa->SetBinContent(544,0.902837); - ssigpTa->SetBinContent(545,0.741477); - ssigpTa->SetBinContent(546,0.656494); - ssigpTa->SetBinContent(547,0.603886); - ssigpTa->SetBinContent(548,0.55715); - ssigpTa->SetBinContent(549,0.526126); - ssigpTa->SetBinContent(550,0.497882); - ssigpTa->SetBinContent(551,0.464739); - ssigpTa->SetBinContent(552,0.423335); - ssigpTa->SetBinContent(553,0.384838); - ssigpTa->SetBinContent(554,0.364341); - ssigpTa->SetBinContent(555,0.355774); - ssigpTa->SetBinContent(556,0.349206); - ssigpTa->SetBinContent(557,0.347483); - ssigpTa->SetBinContent(558,0.352277); - ssigpTa->SetBinContent(559,0.360839); - ssigpTa->SetBinContent(560,0.367589); - ssigpTa->SetBinContent(561,0.366764); - ssigpTa->SetBinContent(562,0.359834); - ssigpTa->SetBinContent(563,0.354143); - ssigpTa->SetBinContent(564,0.354497); - ssigpTa->SetBinContent(565,0.359035); - ssigpTa->SetBinContent(566,0.364904); - ssigpTa->SetBinContent(567,0.379772); - ssigpTa->SetBinContent(568,0.411759); - ssigpTa->SetBinContent(569,0.449085); - ssigpTa->SetBinContent(570,0.481306); - ssigpTa->SetBinContent(571,0.499317); - ssigpTa->SetBinContent(572,0.523765); - ssigpTa->SetBinContent(573,0.550889); - ssigpTa->SetBinContent(574,0.598158); - ssigpTa->SetBinContent(575,0.695232); - ssigpTa->SetBinContent(576,0.820364); - ssigpTa->SetBinContent(577,0.988802); - ssigpTa->SetBinContent(578,1.16607); - ssigpTa->SetBinContent(579,1.4061); - ssigpTa->SetBinContent(580,1.85758); - ssigpTa->SetBinContent(581,2.40942); - ssigpTa->SetBinContent(582,3.0721); - ssigpTa->SetBinContent(583,4.08491); - ssigpTa->SetBinContent(584,5.33852); - ssigpTa->SetBinContent(585,7.0914); - ssigpTa->SetBinContent(586,8.99523); - ssigpTa->SetBinContent(587,11.6029); - ssigpTa->SetBinContent(588,17.3369); - ssigpTa->SetBinContent(589,27.9904); - ssigpTa->SetBinContent(590,44.564); - ssigpTa->SetBinContent(591,68.306); - ssigpTa->SetBinContent(592,72.6957); - ssigpTa->SetBinContent(595,183.298); - ssigpTa->SetBinContent(596,141.681); - ssigpTa->SetBinContent(597,111.897); - ssigpTa->SetBinContent(598,72.7251); - ssigpTa->SetBinContent(599,44.2631); - ssigpTa->SetBinContent(600,29.5755); - ssigpTa->SetBinContent(601,21.0822); - ssigpTa->SetBinContent(602,14.9078); - ssigpTa->SetBinContent(603,11.0837); - ssigpTa->SetBinContent(604,8.7594); - ssigpTa->SetBinContent(605,7.202); - ssigpTa->SetBinContent(606,5.76455); - ssigpTa->SetBinContent(607,4.27326); - ssigpTa->SetBinContent(608,3.29775); - ssigpTa->SetBinContent(609,2.65499); - ssigpTa->SetBinContent(610,2.1352); - ssigpTa->SetBinContent(611,1.79855); - ssigpTa->SetBinContent(612,1.57696); - ssigpTa->SetBinContent(613,1.43024); - ssigpTa->SetBinContent(614,1.33483); - ssigpTa->SetBinContent(615,1.24529); - ssigpTa->SetBinContent(616,1.17859); - ssigpTa->SetBinContent(617,1.10398); - ssigpTa->SetBinContent(618,1.00294); - ssigpTa->SetBinContent(619,0.920033); - ssigpTa->SetBinContent(620,0.871823); - ssigpTa->SetBinContent(621,0.844588); - ssigpTa->SetBinContent(622,0.831432); - ssigpTa->SetBinContent(623,0.827014); - ssigpTa->SetBinContent(624,0.836643); - ssigpTa->SetBinContent(625,0.856207); - ssigpTa->SetBinContent(626,0.868763); - ssigpTa->SetBinContent(627,0.867924); - ssigpTa->SetBinContent(628,0.85534); - ssigpTa->SetBinContent(629,0.842024); - ssigpTa->SetBinContent(630,0.842836); - ssigpTa->SetBinContent(631,0.854004); - ssigpTa->SetBinContent(632,0.870583); - ssigpTa->SetBinContent(633,0.907685); - ssigpTa->SetBinContent(634,0.978009); - ssigpTa->SetBinContent(635,1.06629); - ssigpTa->SetBinContent(636,1.13289); - ssigpTa->SetBinContent(637,1.19039); - ssigpTa->SetBinContent(638,1.23876); - ssigpTa->SetBinContent(639,1.32092); - ssigpTa->SetBinContent(640,1.44404); - ssigpTa->SetBinContent(641,1.64837); - ssigpTa->SetBinContent(642,1.98509); - ssigpTa->SetBinContent(643,2.33773); - ssigpTa->SetBinContent(644,2.80388); - ssigpTa->SetBinContent(645,3.45953); - ssigpTa->SetBinContent(646,4.39325); - ssigpTa->SetBinContent(647,5.83543); - ssigpTa->SetBinContent(648,7.49573); - ssigpTa->SetBinContent(649,9.66533); - ssigpTa->SetBinContent(650,13.0915); - ssigpTa->SetBinContent(651,16.7921); - ssigpTa->SetBinContent(652,21.7755); - ssigpTa->SetBinContent(653,29.394); - ssigpTa->SetBinContent(654,43.0998); - ssigpTa->SetBinContent(655,69.455); - ssigpTa->SetBinContent(656,108.198); - ssigpTa->SetBinContent(657,140.509); - ssigpTa->SetBinContent(658,185.521); - ssigpTa->SetEntries(576); - - init = true; - } - - double percent = ssigpTa->Interpolate(eta, ptGeV); - return percent; - } - #endif diff --git a/Projects/AnalysisBase/externals.txt b/Projects/AnalysisBase/externals.txt index 3bbc654302a9a63db4665c79a93d0f4f2bb22b93..f09d450554959aa788346c61ca8b1cc635ef44aa 100644 --- a/Projects/AnalysisBase/externals.txt +++ b/Projects/AnalysisBase/externals.txt @@ -6,4 +6,4 @@ # forbidden. # The version of atlas/atlasexternals to use: -AnalysisBaseExternalsVersion = 2.0.113 +AnalysisBaseExternalsVersion = 2.0.114 diff --git a/Projects/AnalysisBase/package_filters.txt b/Projects/AnalysisBase/package_filters.txt index 4fcc15eb4b1fe008f0c8a511c16e87147adfa559..d8927f7cf44029b15448ccbfe93e8febc8fc61b5 100644 --- a/Projects/AnalysisBase/package_filters.txt +++ b/Projects/AnalysisBase/package_filters.txt @@ -87,6 +87,7 @@ - Reconstruction/Jet/JetAnalysisTools/JetAnalysisEDM - Reconstruction/Jet/JetEvent.* - Reconstruction/Jet/JetMonitoring +- Reconstruction/Jet/JetInputsMonitoring + Reconstruction/Jet/JetReclustering - Reconstruction/Jet/JetRec.+ - Reconstruction/Jet/JetSimTools diff --git a/Projects/AnalysisBase/version.txt b/Projects/AnalysisBase/version.txt index a0f0a121bb3b10b53f8c352c8dba4a5f8cfdd7df..63a22bbc4eba8ddb2be50ec6889c6bdce6545833 100644 --- a/Projects/AnalysisBase/version.txt +++ b/Projects/AnalysisBase/version.txt @@ -1 +1 @@ -22.2.40 +22.2.41 diff --git a/Projects/AthAnalysis/externals.txt b/Projects/AthAnalysis/externals.txt index cd75ced27bf1f55b39b8d09a7aa1f1e11f56bc6c..3d927789cd485a93266b8b28d5fd7df2c12d7a90 100644 --- a/Projects/AthAnalysis/externals.txt +++ b/Projects/AthAnalysis/externals.txt @@ -6,4 +6,4 @@ # forbidden. # The version of atlas/atlasexternals to use: -AthAnalysisExternalsVersion = 2.0.113 +AthAnalysisExternalsVersion = 2.0.114 diff --git a/Projects/AthAnalysis/package_filters.txt b/Projects/AthAnalysis/package_filters.txt index a022a04e400d58b45c8d50c4df1ec1dfd1903b3a..45cb1fc4ceb9565b7334c35952d554947a90d86c 100644 --- a/Projects/AthAnalysis/package_filters.txt +++ b/Projects/AthAnalysis/package_filters.txt @@ -89,6 +89,7 @@ #- Reconstruction/Jet/JetAnalysisTools/JetAnalysisEDM - Reconstruction/Jet/JetEvent.* - Reconstruction/Jet/JetMonitoring +- Reconstruction/Jet/JetInputsMonitoring + Reconstruction/Jet/JetReclustering - Reconstruction/Jet/JetRec.+ - Reconstruction/Jet/JetSimTools diff --git a/Projects/AthAnalysis/version.txt b/Projects/AthAnalysis/version.txt index a0f0a121bb3b10b53f8c352c8dba4a5f8cfdd7df..63a22bbc4eba8ddb2be50ec6889c6bdce6545833 100644 --- a/Projects/AthAnalysis/version.txt +++ b/Projects/AthAnalysis/version.txt @@ -1 +1 @@ -22.2.40 +22.2.41 diff --git a/Projects/AthDataQuality/externals.txt b/Projects/AthDataQuality/externals.txt index d5f38d45bd96c363b7e1c635595fda09008636d9..9c55accd0cf02213127bd9094c8174881f37e2d4 100644 --- a/Projects/AthDataQuality/externals.txt +++ b/Projects/AthDataQuality/externals.txt @@ -5,4 +5,4 @@ # an "origin/" prefix before it. For tags however this is explicitly # forbidden. -AtlasExternalsVersion = 2.0.113 +AtlasExternalsVersion = 2.0.114 diff --git a/Projects/AthGeneration/externals.txt b/Projects/AthGeneration/externals.txt index e0a97c8997777958c4bf9281cd52f1b3af68fcb9..361d8440c1c1ef0c64e947239d08bfe4dd5aec1f 100644 --- a/Projects/AthGeneration/externals.txt +++ b/Projects/AthGeneration/externals.txt @@ -6,4 +6,4 @@ # forbidden. # The version of atlas/atlasexternals to use: -AthGenerationExternalsVersion = 2.0.113 +AthGenerationExternalsVersion = 2.0.114 diff --git a/Projects/AthSimulation/externals.txt b/Projects/AthSimulation/externals.txt index d84ae4c9facb34284e9ea310fe8ae8fce766bb7a..6b19d3cba071ff5b271931eeb4bc7a3134a6a47c 100644 --- a/Projects/AthSimulation/externals.txt +++ b/Projects/AthSimulation/externals.txt @@ -6,4 +6,4 @@ # forbidden. # The version of atlas/atlasexternals to use: -AthSimulationExternalsVersion = 2.0.113 +AthSimulationExternalsVersion = 2.0.114 diff --git a/Projects/AthSimulation/package_filters.txt b/Projects/AthSimulation/package_filters.txt index 2c52bcc9cff857118f120d7fd6b41029fdc2f2a6..46edf8c62a4e6bf4e03dff5fac014e0a75bf052e 100644 --- a/Projects/AthSimulation/package_filters.txt +++ b/Projects/AthSimulation/package_filters.txt @@ -16,6 +16,7 @@ + Calorimeter/CaloCondBlobObjs + Calorimeter/CaloConditions + Calorimeter/CaloDetDescr ++ Calorimeter/CaloDetDescrUtils + Calorimeter/CaloDmDetDescr + Calorimeter/CaloG4Sim + Calorimeter/CaloGeoHelpers diff --git a/Projects/Athena/externals.txt b/Projects/Athena/externals.txt index 0e3bc6800f6e618251a2bff57b52650440645077..a16303bf346a4f9924371330cf5b6fdcd9e55928 100644 --- a/Projects/Athena/externals.txt +++ b/Projects/Athena/externals.txt @@ -6,4 +6,4 @@ # forbidden. # The version of atlas/atlasexternals to use: -AthenaExternalsVersion = 2.0.113 +AthenaExternalsVersion = 2.0.114 diff --git a/Projects/DetCommon/externals.txt b/Projects/DetCommon/externals.txt index 7721bd3851ad043179578d4a216db7d1c3ddc0c4..2d7d2e7abc7da9aa79636d8cf498e5a2ee9fc317 100644 --- a/Projects/DetCommon/externals.txt +++ b/Projects/DetCommon/externals.txt @@ -6,4 +6,4 @@ # forbidden. # The version of atlas/atlasexternals to use: -AtlasExternalsVersion = 2.0.113 +AtlasExternalsVersion = 2.0.114 diff --git a/Projects/VP1Light/externals.txt b/Projects/VP1Light/externals.txt index 9e76d50a8ec80a25a269758d1f988546c26aeea3..2776c126da52682f0746922fab127f65a8e64206 100644 --- a/Projects/VP1Light/externals.txt +++ b/Projects/VP1Light/externals.txt @@ -6,4 +6,4 @@ # forbidden. # The version of atlas/atlasexternals to use: -VP1LightExternalsVersion = 2.0.113 +VP1LightExternalsVersion = 2.0.114 diff --git a/Reconstruction/Jet/JetInputsMonitoring/CMakeLists.txt b/Reconstruction/Jet/JetInputsMonitoring/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..5363fdeae507531d47b6f1b311f3808d56715539 --- /dev/null +++ b/Reconstruction/Jet/JetInputsMonitoring/CMakeLists.txt @@ -0,0 +1,20 @@ +################################################################################ +# Package: JetInputsMonitoring +################################################################################ + +# Declare the package name: +atlas_subdir( JetInputsMonitoring ) + +# External dependencies: +#find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread ) + +# Component(s) in the package: +atlas_add_component( JetInputsMonitoring + src/*.cxx + src/components/*.cxx + LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools xAODCaloEvent xAODPFlow GaudiKernel JetInterface AthContainers AthenaMonitoringLib JetUtils ) + +# Install files from the package: +atlas_install_python_modules( python/*.py ) + + diff --git a/Reconstruction/Jet/JetInputsMonitoring/python/ClusterMonitorAlgorithm.py b/Reconstruction/Jet/JetInputsMonitoring/python/ClusterMonitorAlgorithm.py new file mode 100644 index 0000000000000000000000000000000000000000..2e06a163aab380b7ad653bb57ef97567dcd9d147 --- /dev/null +++ b/Reconstruction/Jet/JetInputsMonitoring/python/ClusterMonitorAlgorithm.py @@ -0,0 +1,255 @@ +# +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# + +'''@file ClusterMonitorAlgorithm.py +@author L. Sawyer +@date 2019-08-15 +@python configuration for the Run III Calo Cluster Monitoring package +''' + +def ClusterMonitoringConfig(inputFlags): + '''Function to configures some algorithms in the monitoring system.''' + + ### STEP 1 ### + # If you need to set up special tools, etc., you will need your own ComponentAccumulator; + # uncomment the following 2 lines and use the last three lines of this function instead of the ones + # just before + # from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator + # result = ComponentAccumulator() + + # The following class will make a sequence, configure algorithms, and link + # them to GenericMonitoringTools + from AthenaMonitoring import AthMonitorCfgHelper + helper = AthMonitorCfgHelper(inputFlags,'ClusterAthMonitorCfg') + + + ### STEP 2 ### + # Adding an algorithm to the helper. Here, we will use the example + # algorithm in the AthenaMonitoring package. Just pass the type to the + # helper. Then, the helper will instantiate an instance and set up the + # base class configuration following the inputFlags. The returned object + # is the algorithm. + # This uses the new Configurables object system. + from AthenaConfiguration.ComponentFactory import CompFactory + clusterMonAlg = helper.addAlgorithm(CompFactory.ClusterMonitorAlgorithm,'ClusterMonAlg') + + + + ### STEP 3 ### + # Edit properties of a algorithm + # some generic property + # exampleMonAlg.RandomHist = True + # to enable a trigger filter, for example: + #clusterMonAlg.TriggerChain = 'HLT_mu26_ivarmedium' + # cluster energy threshold in GeV + clusterMonAlg.lowEthresh = 5.0 + clusterMonAlg.medEthresh = 10.0 + clusterMonAlg.medhiEthresh = 15.0 + clusterMonAlg.hiEthresh = 20.0 + + + ### STEP 4 ### + # Add some tools. N.B. Do not use your own trigger decion tool. Use the + # standard one that is included with AthMonitorAlgorithm. + + # # Then, add a tool that doesn't have its own configuration function. In + # # this example, no accumulator is returned, so no merge is necessary. + # from MyDomainPackage.MyDomainPackageConf import MyDomainTool + # clusterMonAlg.MyDomainTool = MyDomainTool() + + + # Add monitor groups. + clustersAllGroup = helper.addGroup( + alg=clusterMonAlg, + name='ClusterMonitorAllClusters', + topPath='CaloTopoClusters/AllClusters/' + ) + + clustersExpertGroup = helper.addGroup( + alg=clusterMonAlg, + name='ClusterMonitorExpertPlots', + topPath='CaloTopoClusters/AllClusters/Expert/' + ) + + clustersCalECAGroup = helper.addGroup( + alg=clusterMonAlg, + name='ClusterMonitorCalECA', + topPath='CaloTopoClusters/CalECA/' + ) + + clustersCalBARGroup = helper.addGroup( + alg=clusterMonAlg, + name='ClusterMonitorCalBAR', + topPath='CaloTopoClusters/CalBAR/' + ) + + clustersCalECCGroup = helper.addGroup( + alg=clusterMonAlg, + name='ClusterMonitorCalECC', + topPath='CaloTopoClusters/CalECC/' + ) + + + # Configure histograms - All Clusters + clustersAllGroup.defineHistogram('nClusters',title='No. of Clusters;N_{clusters};Events',xbins=200,xmin=0.0,xmax=1000.0) + clustersAllGroup.defineHistogram('clusterEta',title='Cluster eta;eta;Events',xbins=98,xmin=-4.9,xmax=4.9) + clustersAllGroup.defineHistogram('clusterPhi', title='Cluster phi;phi;Events',xbins=64,xmin=-3.15,xmax=3.15) + clustersAllGroup.defineHistogram('clusterE', title='Cluster energy;E;Events',xbins=400,xmin=0.0,xmax=4000) + clustersAllGroup.defineHistogram('clusterET', title='Cluster transverse energy;ET;Events',xbins=400,xmin=0.0,xmax=4000) + + clustersAllGroup.defineHistogram('clusterEta,clusterE', type='TH2F',title='Cluster energy vs eta;eta;E', + xbins=98,xmin=-4.9,xmax=4.9,ybins=300,ymin=0.0,ymax=3000.0 ) + clustersAllGroup.defineHistogram('clusterEta,clusterET', type='TH2F', title='Cluster transverse energy vs eta;eta;E_{T}', + xbins=98,xmin=-4.9,xmax=4.9,ybins=300,ymin=0.0,ymax=3000.0 ) + clustersAllGroup.defineHistogram('clusterPhi,clusterE', type='TH2F',title='Cluster energy vs phi;phi;E', + xbins=64,xmin=-3.15,xmax=3.15,ybins=300,ymin=0.0,ymax=3000.0 ) + clustersAllGroup.defineHistogram('clusterPhi,clusterET', type='TH2F', title='Cluster transverse energy vs phi;phi;E_{T}', + xbins=64,xmin=-3.15,xmax=3.15,ybins=300,ymin=0.0,ymax=3000.0 ) + clustersAllGroup.defineHistogram('clusterEta,clusterPhi,clusterE', type='TProfile2D', title='Average Cluster Energy;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersAllGroup.defineHistogram('clusterEta,clusterPhi,clusterET', type='TProfile2D', title='Average Cluster Transverse Energy;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + + # Configure histograms - All Clusters:Expert Plots + clustersExpertGroup.defineHistogram('nCells',title='No. of Cells in a Clusters;N_{cells};Events',xbins=200,xmin=0.0,xmax=200.0) + clustersExpertGroup.defineHistogram('nBadCells',title='No. of Bad Cells in a Clusters;N_{bad cells};Events',xbins=11,xmin=-1.0,xmax=10.0) + clustersExpertGroup.defineHistogram('EBadCells',title='E of Bad Cells in a Clusters;E_{bad cells};Events',xbins=210,xmin=-10.0,xmax=100.0) + clustersExpertGroup.defineHistogram('clusterEta,clusterPhi,nCells', type='TProfile2D', title='No. of Cells in a Clusters;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersExpertGroup.defineHistogram('clusterEta,clusterPhi,nBadCells', type='TProfile2D', title='No. of Bad Cells in a Clusters;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersExpertGroup.defineHistogram('clusterTime',title='Cluster Time;time;Events',xbins=200,xmin=-100.0,xmax=100.0) + clustersExpertGroup.defineHistogram('clusterTime,clusterE',type='TH2F',title='Cluster Time vs E;time;E', + xbins=200,xmin=-100.0,xmax=100.0,ybins=300,ymin=0.0,ymax=1500.0) + clustersExpertGroup.defineHistogram('HotRat',title='Energy Fraction of Highest Cell;E_{frac};Events',xbins=200,xmin=-0.2,xmax=1.8) + clustersExpertGroup.defineHistogram('clusterIsol',title='Cluster Isolation;Isolation;Events',xbins=60,xmin=-1.0,xmax=2.0) + clustersExpertGroup.defineHistogram('BadLARQFrac',title='Bad LAR Q Frac.;Frac;Events',xbins=25,xmin=-1.0,xmax=1.5) + clustersExpertGroup.defineHistogram('EngPos',title='E from Positive Cells;E;Events',xbins=500,xmin=0.0,xmax=10000.0) + clustersExpertGroup.defineHistogram('AveLARQ',title='Averge LAR Q;LAR Q;Events',xbins=31,xmin=-1000.0,xmax=30000.0) + clustersExpertGroup.defineHistogram('AveTileQ',title='Average Tile Q;Tile Q;Events',xbins=21,xmin=-10.0,xmax=200.0) + + clustersExpertGroup.defineHistogram('clusterEta,clusterPhi,HotRat',type='TProfile2D', title='Energy Fraction of Highest Cell;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersExpertGroup.defineHistogram('clusterEta,clusterPhi,HotRat;vHotRatE',type='TProfile2D', title='Energy Fraction of Highest Cell for E_{frac}>0.9;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='HighHotRat') + clustersExpertGroup.defineHistogram('clusterEta,clusterPhi;vHotRatOcc',type='TH2F', title='Occupancy of Clusters with Highest Cell E_{frac}>0.9;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='HighHotRat') + + + # Configure histograms - Occupancies and energies by region + #ECA: + clustersCalECAGroup.defineHistogram('clusterEta,clusterPhi;Thresh0ECAOcc', type='TH2F',title='Cluster Occupancy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersCalECAGroup.defineHistogram('clusterEta,clusterPhi;Thresh1ECAOcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.lowEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold1' ) + clustersCalECAGroup.defineHistogram('clusterEta,clusterPhi;Thresh2ECAOcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.medEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold2' ) + clustersCalECAGroup.defineHistogram('clusterEta,clusterPhi;Thresh3ECAOcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.medhiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold3' ) + clustersCalECAGroup.defineHistogram('clusterEta4,clusterPhi;Thresh4ECAOcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.hiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold4' ) + + clustersCalECAGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh0ECAAveE', type='TProfile2D',title='Average Cluster Energy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersCalECAGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh1ECAAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.lowEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold1' ) + clustersCalECAGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh2ECAAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.medEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold2' ) + clustersCalECAGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh3ECAAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.medhiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold3' ) + clustersCalECAGroup.defineHistogram('clusterEta4,clusterPhi,E;Thresh4ECAAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.hiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold4' ) + #BAR: + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi;Thresh0BAROcc', type='TH2F',title='Cluster Occupancy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi;Thresh1BAROcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.lowEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold1' ) + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi;Thresh2BAROcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.medEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold2' ) + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi;Thresh3BAROcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.medhiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold3' ) + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi;Thresh4BAROCc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.hiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold4' ) + + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh0BARAveE', type='TProfile2D',title='Average Cluster Energy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh1BARAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.lowEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold1' ) + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh2BARAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.medEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold2' ) + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh3BARAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.medhiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold3' ) + clustersCalBARGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh4BARAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.hiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold4' ) + #ECC: + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi;Thresh0ECCOcc', type='TH2F',title='Cluster Occupancy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi;Thresh1ECCOcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.lowEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold1' ) + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi;Thresh2ECCOcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.medEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold2' ) + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi;Thresh3ECCOcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.medhiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold3' ) + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi;Thresh4ECCOcc', type='TH2F',title='Cluster Occupancy - Threshold='+str(clusterMonAlg.hiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold4' ) + + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh0ECCAveE', type='TProfile2D',title='Average Cluster Energy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh1ECCAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.lowEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold1' ) + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh2ECCAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.medEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold2' ) + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh3ECCAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.medhiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold3' ) + clustersCalECCGroup.defineHistogram('clusterEta,clusterPhi,E;Thresh4ECCAveE', type='TProfile2D',title='Average Cluster Energy - Threshold='+str(clusterMonAlg.hiEthresh)+' GeV;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='Threshold4' ) + + ### STEP 6 ### + # Finalize. The return value should be a tuple of the ComponentAccumulator + # and the sequence containing the created algorithms. If we haven't called + # any configuration other than the AthMonitorCfgHelper here, then we can + # just return directly (and not create "result" above) + return helper.result() + + # # Otherwise, merge with result object and return + # acc = helper.result() + # result.merge(acc) + # return result + +if __name__=='__main__': + # Setup the Run III behavior + from AthenaCommon.Configurable import Configurable + Configurable.configurableRun3Behavior = 1 + + # Setup logs + from AthenaCommon.Logging import log + from AthenaCommon.Constants import INFO + log.setLevel(INFO) + + # Set the Athena configuration flags + from AthenaConfiguration.AllConfigFlags import ConfigFlags + import sys + nightly = '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/CommonInputs/' + file = 'data16_13TeV.00311321.physics_Main.recon.AOD.r9264/AOD.11038520._000001.pool.root.1' + ConfigFlags.Input.Files = [nightly+file] + ConfigFlags.Input.isMC = False + ConfigFlags.Output.HISTFileName = 'ClusterMonitorOutput.root' + ConfigFlags.fillFromArgs(sys.argv[1:]) + + ConfigFlags.lock() + + # Initialize configuration object, add accumulator, merge, and run. + from AthenaConfiguration.MainServicesConfig import MainServicesThreadedCfg + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + cfg = MainServicesThreadedCfg(ConfigFlags) + cfg.merge(PoolReadCfg(ConfigFlags)) + + clusterMonitorAcc = ClusterMonitoringConfig(ConfigFlags) + cfg.merge(clusterMonitorAcc) + + # If you want to turn on more detailed messages ... + # clusterMonitorAcc.getEventAlgo('ClusterMonAlg').OutputLevel = 2 # DEBUG + cfg.printConfig(withDetails=False) # set True for exhaustive info + + cfg.run() #use cfg.run(20) to only run on first 20 events diff --git a/Reconstruction/Jet/JetInputsMonitoring/python/PFOMonitorAlgorithm.py b/Reconstruction/Jet/JetInputsMonitoring/python/PFOMonitorAlgorithm.py new file mode 100644 index 0000000000000000000000000000000000000000..9d37b458d8af89cb96fddf7ce964aa3813e78824 --- /dev/null +++ b/Reconstruction/Jet/JetInputsMonitoring/python/PFOMonitorAlgorithm.py @@ -0,0 +1,196 @@ +# +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# + +'''@file PFOMonitorAlgorithm.py +@author L. Sawyer +@date 2020-07-15 +@python configuration for the Run III PArticle Flow Object (PFO) Monitoring package +''' + +def PFOMonitoringConfig(inputFlags): + '''Function to configures some algorithms in the monitoring system.''' + + ### STEP 1 ### + # If you need to set up special tools, etc., you will need your own ComponentAccumulator; + # uncomment the following 2 lines and use the last three lines of this function instead of the ones + # just before + # from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator + # result = ComponentAccumulator() + + # The following class will make a sequence, configure algorithms, and link + # them to GenericMonitoringTools + from AthenaMonitoring import AthMonitorCfgHelper + helper = AthMonitorCfgHelper(inputFlags,'PFOAthMonitorCfg') + + + ### STEP 2 ### + # Adding an algorithm to the helper. Here, we will use the example + # algorithm in the AthenaMonitoring package. Just pass the type to the + # helper. Then, the helper will instantiate an instance and set up the + # base class configuration following the inputFlags. The returned object + # is the algorithm. + # This uses the new Configurables object system. + from AthenaConfiguration.ComponentFactory import CompFactory + PFOMonAlg = helper.addAlgorithm(CompFactory.PFOMonitorAlgorithm,'PFOMonAlg') + + + ### STEP 3 ### + # Edit properties of a algorithm + # some generic property + # exampleMonAlg.RandomHist = True + # to enable a trigger filter, for example: + # PFOMonAlg.TriggerChain = 'HLT_mu26_ivarmedium' + + # PFO energy threshold in GeV TBD! + # PFOMonAlg.lowEt = 5.0 + # PFOMonAlg.hiEt = 20.0 + + + ### STEP 4 ### + # Add some tools. N.B. Do not use your own trigger decion tool. Use the + # standard one that is included with AthMonitorAlgorithm. + + # Add monitor groups - All. + pfosAllGroup = helper.addGroup( + alg=PFOMonAlg, + name='PFOMonitorAllPFOs', + topPath='PFOs/AllPFOs/' + ) + # Add monitor groups - Charged. + pfosChargedGroup = helper.addGroup( + alg=PFOMonAlg, + name='PFOMonitorChargedPFOs', + topPath='PFOs/ChargedPFOs/' + ) + # Add monitor groups - Neutral. + pfosNeutralGroup = helper.addGroup( + alg=PFOMonAlg, + name='PFOMonitorNeutralPFOs', + topPath='PFOs/NeutralPFOs/' + ) + + ############################################# + # Configure histograms - All PFOs + pfosAllGroup.defineHistogram('nPFOs', title='No. of PFOs;N_{PFOs};Events',xbins=200,xmin=0.0,xmax=1000.0) + pfosAllGroup.defineHistogram('pfopT', title='PFO transverse momentum;pT;Events',xbins=100,xmin=0.0,xmax=2000) + pfosAllGroup.defineHistogram('pfoEta', title='PFO eta;eta;Events',xbins=98,xmin=-4.9,xmax=4.9) + pfosAllGroup.defineHistogram('pfoPhi', title='PFO phi;phi;Events',xbins=64,xmin=-3.15,xmax=3.15) + pfosAllGroup.defineHistogram('pfoMass',title='PFO energy;Mass;Events',xbins=100,xmin=0.0,xmax=500) + pfosAllGroup.defineHistogram('pfoE', title='PFO energy;E;Events',xbins=300,xmin=0.0,xmax=3000) + pfosAllGroup.defineHistogram('pfoRapidity', title='PFO rapidity;y;Events',xbins=98,xmin=-4.9,xmax=4.9) + + pfosAllGroup.defineHistogram('pfoEta,pfoPhi,pfoE', type='TProfile2D', title='Average PFO Energy;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + pfosAllGroup.defineHistogram('pfoEta,pfoPhi,pfopT', type='TProfile2D', title='Average PFO Transverse Momentum;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + pfosAllGroup.defineHistogram('pfoEta,pfoPhi', type='TH2F',title='PFO Occupancy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + + ############################################# + # Configure histograms - Charged PFOs + pfosChargedGroup.defineHistogram('nChPFOs', title='No. of Charged PFOs;N_{PFOs};Events',xbins=200,xmin=0.0,xmax=1000.0) + pfosChargedGroup.defineHistogram('ChpfopT', title='Charged PFO transverse momentum;pT;Events',xbins=100,xmin=0.0,xmax=2000) + pfosChargedGroup.defineHistogram('ChpfoEta', title='Charged PFO eta;eta;Events',xbins=98,xmin=-4.9,xmax=4.9) + pfosChargedGroup.defineHistogram('ChpfoPhi', title='Charged PFO phi;phi;Events',xbins=64,xmin=-3.15,xmax=3.15) + pfosChargedGroup.defineHistogram('ChpfoMass',title='Charged PFO energy;Mass;Events',xbins=100,xmin=0.0,xmax=500) + pfosChargedGroup.defineHistogram('ChpfoE', title='Charged PFO energy;E;Events',xbins=300,xmin=0.0,xmax=3000) + pfosChargedGroup.defineHistogram('ChpfoDenseEnv',title='Charged PFO isInDenseEnvironment Flag',xbins=3,xmin=-1,xmax=2) + pfosChargedGroup.defineHistogram('ChpfoExpE', title='Charged PFO Expected Energy From Tracks; E_{exp};Events', xbins=300,xmin=0.0,xmax=3000.0) + pfosChargedGroup.defineHistogram('ChpfoExpE;DenseEnvFlagE', title='Charged PFO Expected Energy From Tracks - IsInDenseEvironmet=TRUE; E_{exp};Events', + xbins=200,xmin=0.0,xmax=2000.0, cutmask='DenseEnvFlag') + + pfosChargedGroup.defineHistogram('ChpfoEta,ChpfoPhi,ChpfoE', type='TProfile2D', title='Average Charged PFO Energy;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + pfosChargedGroup.defineHistogram('ChpfoExpE,ChpfoPhi,ChpfoE', type='TProfile2D', title='Average Charged PFO Expected Energy From Tracks;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + pfosChargedGroup.defineHistogram('ChpfoEta,ChpfoPhi,ChpfopT', type='TProfile2D', title='Average Charged PFO Transverse Monmentum;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + pfosChargedGroup.defineHistogram('ChpfoEta,ChpfoPhi', type='TH2F',title='Charged PFO Occupancy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + pfosChargedGroup.defineHistogram('ChpfoEta,ChpfoPhi;DenseEnvFlagEtaPhi', type='TH2F',title='Charged PFO Occupancy - IsInDenseEvironmet=TRUE;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15, cutmask='DenseEnvFlag' ) + + ############################################# + # Configure histograms - Neutral PFOs + pfosNeutralGroup.defineHistogram('nNuPFOs', title='No. of Neutral PFOs;N_{PFOs};Events',xbins=200,xmin=0.0,xmax=1000.0) + pfosNeutralGroup.defineHistogram('NupfopT', title='Neutral PFO transverse momentum;pT;Events',xbins=100,xmin=0.0,xmax=2000) + pfosNeutralGroup.defineHistogram('NupfoEta', title='Neutral PFO eta;eta;Events',xbins=98,xmin=-4.9,xmax=4.9) + pfosNeutralGroup.defineHistogram('NupfoPhi', title='Neutral PFO phi;phi;Events',xbins=64,xmin=-3.15,xmax=3.15) + pfosNeutralGroup.defineHistogram('NupfoMass',title='Neutral PFO energy;Mass;Events',xbins=100,xmin=0.0,xmax=500) + pfosNeutralGroup.defineHistogram('NupfoE', title='Neutral PFO energy;E;Events',xbins=300,xmin=0.0,xmax=3000) + pfosNeutralGroup.defineHistogram('NupfoRapidity', title='Neutral PFO rapidity;y;Events',xbins=98,xmin=-4.9,xmax=4.9) + pfosNeutralGroup.defineHistogram('NupfoIsolation', title='Neutral PFO Isolation;Iso;Events',xbins=100,xmin=-1.5,xmax=2.0) + pfosNeutralGroup.defineHistogram('NupfoEPos',title='Neutral PFO Energy From Positive Cells;E_{pos};Events',xbins=500,xmin=0.0,xmax=10000.0) + pfosNeutralGroup.defineHistogram('NupfoSecondR',title='Neutral PFO SECOND_R',xbins=60,xmin=-1.0,xmax=50.0) + pfosNeutralGroup.defineHistogram('NupfoSecondLambda',title='Neutral PFO SECOND_LAMBDA',xbins=60,xmin=-1.0,xmax=3000.0) + pfosNeutralGroup.defineHistogram('NupfoCenterLambda',title='Neutral PFO CENTER_LAMBDA',xbins=60,xmin=-50.0,xmax=3000.0) + + pfosNeutralGroup.defineHistogram('NupfoBadLarQFrac',title='Neutral PFO BADLARQ_FRAC',xbins=25,xmin=-1.0,xmax=1.5) + pfosNeutralGroup.defineHistogram('NupfoAvgLarQ',title='Neutral PFO AVG_LAR_Q',xbins=31,xmin=-1000.0,xmax=30000.0) + pfosNeutralGroup.defineHistogram('NupfoAvgTileQ',title='Neutral PFO _AVG_TILE_Q',xbins=21,xmin=-10.0,xmax=200.0) + pfosNeutralGroup.defineHistogram('NupfoEMProb',title='Neutral PFO EM_PROBABILITY',xbins=21,xmin=-1.0,xmax=1.0) + + pfosNeutralGroup.defineHistogram('NupfoNBadCells',title='Neutral PFO N_BAD_CELLS',xbins=30,xmin=-1.0,xmax=2.0) + pfosNeutralGroup.defineHistogram('NupfoEBadCells',title='Neutral PFO Energy From Bad Cells;E_{bad cells};Events',xbins=210,xmin=-10.0,xmax=100.0) + + # These quantities do not appear to be filled currently + #pfosNeutralGroup.defineHistogram('NupfoSignificance', title='Neutral PFO Significance;Signif;Events',xbins=100,xmin=-100.0,xmax=100.0) + #pfosNeutralGroup.defineHistogram('NupfoEFracMax',title='Neutral PFO Energy Fraction of Highest Cell;E_{frac};Events',xbins=200,xmin=-1.0,xmax=1.5) + + pfosNeutralGroup.defineHistogram('NupfoEta,NupfoPhi,NupfoE', type='TProfile2D', title='Average Neutral PFO Energy;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + pfosNeutralGroup.defineHistogram('NupfoEta,NupfoPhi,NupfopT', type='TProfile2D', title='Average Neutral PFO Transverse Momentum;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + pfosNeutralGroup.defineHistogram('NupfoEta,NupfoPhi', type='TH2F',title='Neutral PFO Occupancy - No Threshold;eta;phi', + xbins=98,xmin=-4.9,xmax=4.9,ybins=64,ymin=-3.15,ymax=3.15 ) + + + ### STEP 6 ### + # Finalize. The return value should be a tuple of the ComponentAccumulator + # and the sequence containing the created algorithms. If we haven't called + # any configuration other than the AthMonitorCfgHelper here, then we can + # just return directly (and not create "result" above) + return helper.result() + + # # Otherwise, merge with result object and return + # acc = helper.result() + # result.merge(acc) + # return result + +if __name__=='__main__': + # Setup the Run III behavior + from AthenaCommon.Configurable import Configurable + Configurable.configurableRun3Behavior = 1 + + # Setup logs + from AthenaCommon.Logging import log + from AthenaCommon.Constants import INFO + log.setLevel(INFO) + + # Set the Athena configuration flags + from AthenaConfiguration.AllConfigFlags import ConfigFlags + import sys + nightly = '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/CommonInputs/' + file = 'data16_13TeV.00311321.physics_Main.recon.AOD.r9264/AOD.11038520._000001.pool.root.1' + ConfigFlags.Input.Files = [nightly+file] + ConfigFlags.Input.isMC = False + ConfigFlags.Output.HISTFileName = 'PFOMonitorOutput.root' + ConfigFlags.fillFromArgs(sys.argv[1:]) + + ConfigFlags.lock() + + # Initialize configuration object, add accumulator, merge, and run. + from AthenaConfiguration.MainServicesConfig import MainServicesThreadedCfg + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + cfg = MainServicesThreadedCfg(ConfigFlags) + cfg.merge(PoolReadCfg(ConfigFlags)) + + pfoMonitorAcc = PFOMonitoringConfig(ConfigFlags) + cfg.merge(pfoMonitorAcc) + + # If you want to turn on more detailed messages ... + # pfoMonitorAcc.getEventAlgo('PFOMonAlg').OutputLevel = 2 # DEBUG + cfg.printConfig(withDetails=False) # set True for exhaustive info + + cfg.run() #use cfg.run(20) to only run on first 20 events diff --git a/Reconstruction/Jet/JetInputsMonitoring/src/ClusterMonitorAlgorithm.cxx b/Reconstruction/Jet/JetInputsMonitoring/src/ClusterMonitorAlgorithm.cxx new file mode 100644 index 0000000000000000000000000000000000000000..210b6020e71b84842862eb5fcce47d32b270f543 --- /dev/null +++ b/Reconstruction/Jet/JetInputsMonitoring/src/ClusterMonitorAlgorithm.cxx @@ -0,0 +1,118 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "ClusterMonitorAlgorithm.h" + +ClusterMonitorAlgorithm::ClusterMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator ) +:AthMonitorAlgorithm(name,pSvcLocator) +{} + + +ClusterMonitorAlgorithm::~ClusterMonitorAlgorithm() {} + + +StatusCode ClusterMonitorAlgorithm::initialize() { + using namespace Monitored; + // initialize superclass + ATH_CHECK( AthMonitorAlgorithm::initialize() ); + + ATH_CHECK( m_CaloClusterContainerKey.initialize() ); + return StatusCode::SUCCESS; + +} + + +StatusCode ClusterMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const { + using namespace Monitored; + + // Declare the quantities which should be monitored + auto nClusters = Monitored::Scalar<float>("nClusters",0.0); + auto eta = Monitored::Scalar<float>("clusterEta",0.0); + auto phi = Monitored::Scalar<float>("clusterPhi",0.0); + auto evt = Monitored::Scalar<int>("event num",0); + auto run = Monitored::Scalar<int>("run",0); + auto E = Monitored::Scalar<float>("clusterE",0.0); + auto ET = Monitored::Scalar<float>("clusterET",1.0); + + auto nCells = Monitored::Scalar<float>("nCells",0.0); + auto nBadCells= Monitored::Scalar<float>("nBadCells",0.0); + auto EBadCells= Monitored::Scalar<float>("EBadCells",0.0); + auto HotRat = Monitored::Scalar<float>("HotRat",-1.0); + auto ClusTime = Monitored::Scalar<float>("clusterTime",-999.0); + auto Isolation= Monitored::Scalar<float>("clusterIsol",-999); + auto BadLARQFrac = Monitored::Scalar<float>("BadLARQFrac",-999); + auto EngPos = Monitored::Scalar<float>("EngPos",-999); + auto AveLARQ = Monitored::Scalar<float>("AveLARQ",-999); + auto AveTileQ = Monitored::Scalar<float>("AveTileQ",-999); + + // Declare cutmasks for high leading cell energy fraction + auto HighHotRat = Monitored::Scalar<bool>("HighHotRat",false); + + // Declare cutmasks for plots with thresholds + auto Threshold1 = Monitored::Scalar<bool>("Threshold1",false); + auto Threshold2 = Monitored::Scalar<bool>("Threshold2",false); + auto Threshold3 = Monitored::Scalar<bool>("Threshold3",false); + auto Threshold4 = Monitored::Scalar<bool>("Threshold4",false); + + + // Access the Clusters via StoreGate + SG::ReadHandle<xAOD::CaloClusterContainer> clusters(m_CaloClusterContainerKey, ctx); + if (! clusters.isValid() ) { + ATH_MSG_ERROR("evtStore() does not contain CaloTopoCluster Collection with name "<< m_CaloClusterContainerKey); + return StatusCode::FAILURE; + } + + // Set the values of the monitored variables for the event + run = GetEventInfo(ctx)->runNumber(); + evt = GetEventInfo(ctx)->eventNumber(); + + // Set monitored variables for this event + nClusters = clusters->size(); + + for (const auto& cluster : *clusters) { + eta = cluster->eta(); + phi = cluster->phi(); + E = cluster->e(); + ET = cluster->pt(); + // Access CaloTopoCluster moments + nCells = cluster->numberCells(); + ClusTime = cluster->time(); + + nBadCells = cluster->getMomentValue(xAOD::CaloCluster::N_BAD_CELLS); // return value probably 0 if moment does not exist + EBadCells = cluster->getMomentValue(xAOD::CaloCluster::ENG_BAD_CELLS); + HotRat = cluster->getMomentValue(xAOD::CaloCluster::ENG_FRAC_MAX); // return value probably 999 if moment does not exist + (HotRat > 0.9) ? HighHotRat=true : HighHotRat=false; + Isolation = cluster->getMomentValue(xAOD::CaloCluster::ISOLATION); + BadLARQFrac = cluster->getMomentValue(xAOD::CaloCluster::BADLARQ_FRAC); + EngPos = cluster->getMomentValue(xAOD::CaloCluster::ENG_POS); + AveLARQ = cluster->getMomentValue(xAOD::CaloCluster::AVG_LAR_Q); + AveTileQ = cluster->getMomentValue(xAOD::CaloCluster::AVG_TILE_Q); + + // Fill. First argument is the tool name, all others are the variables to be saved. + fill("ClusterMonitorAllClusters", nClusters, eta, phi, E, ET); + fill("ClusterMonitorExpertPlots", nCells, ClusTime, nBadCells, EBadCells, HotRat, HighHotRat, Isolation, BadLARQFrac, EngPos, AveLARQ, AveTileQ, E, eta, phi); + + // cutmasks for cluster energy thresholds + Threshold1 = E>m_lowEthresh; + Threshold2 = E>m_medEthresh; + Threshold3 = E>m_medhiEthresh; + Threshold4 = E>m_hiEthresh; + // Plot occupancies and energies by calorimeter region + if (eta > 1.4) { + fill("ClusterMonitorCalECA",eta,phi,E,Threshold1,Threshold2,Threshold3,Threshold4); + } + else if (eta < -1.4) { + fill("ClusterMonitorCalECC",eta,phi,E,Threshold1,Threshold2,Threshold3,Threshold4); + } + else { + fill("ClusterMonitorCalBAR",eta,phi,E,Threshold1,Threshold2,Threshold3,Threshold4); + } + + + + } + return StatusCode::SUCCESS; +} + + diff --git a/Reconstruction/Jet/JetInputsMonitoring/src/ClusterMonitorAlgorithm.h b/Reconstruction/Jet/JetInputsMonitoring/src/ClusterMonitorAlgorithm.h new file mode 100644 index 0000000000000000000000000000000000000000..ad7afe222ae2a86e8ab1c9e7a848aea6a547fa8f --- /dev/null +++ b/Reconstruction/Jet/JetInputsMonitoring/src/ClusterMonitorAlgorithm.h @@ -0,0 +1,31 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CLUSTERMONITORALGORITHM_H +#define CLUSTERMONITORALGORITHM_H + +#include "AthenaMonitoring/AthMonitorAlgorithm.h" +#include "AthenaMonitoringKernel/Monitored.h" + +#include "StoreGate/ReadCondHandleKey.h" +#include "StoreGate/ReadHandleKey.h" + +#include "xAODCaloEvent/CaloClusterContainer.h" +#include "xAODCaloEvent/CaloClusterAuxContainer.h" + +class ClusterMonitorAlgorithm : public AthMonitorAlgorithm { +public: + ClusterMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator ); + virtual ~ClusterMonitorAlgorithm(); + virtual StatusCode initialize() override; + virtual StatusCode fillHistograms( const EventContext& ctx ) const override; +private: + Gaudi::Property<float> m_lowEthresh {this,"lowEthresh",5.0}; + Gaudi::Property<float> m_medEthresh {this,"medEthresh",10.0}; + Gaudi::Property<float> m_medhiEthresh {this,"medhiEthresh",15.0}; + Gaudi::Property<float> m_hiEthresh {this,"hiEthresh",20.0}; + + SG::ReadHandleKey<xAOD::CaloClusterContainer> m_CaloClusterContainerKey {this, "CaloCalTopoClusters", "CaloCalTopoClusters"}; +}; +#endif diff --git a/Reconstruction/Jet/JetInputsMonitoring/src/PFOMonitorAlgorithm.cxx b/Reconstruction/Jet/JetInputsMonitoring/src/PFOMonitorAlgorithm.cxx new file mode 100644 index 0000000000000000000000000000000000000000..578cc6d277d3e666c9824011bd1eebd14250c518 --- /dev/null +++ b/Reconstruction/Jet/JetInputsMonitoring/src/PFOMonitorAlgorithm.cxx @@ -0,0 +1,215 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "PFOMonitorAlgorithm.h" +#include "xAODPFlow/FEHelpers.h" + +PFOMonitorAlgorithm::PFOMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator ) +:AthMonitorAlgorithm(name,pSvcLocator) +{} + + +PFOMonitorAlgorithm::~PFOMonitorAlgorithm() {} + + +StatusCode PFOMonitorAlgorithm::initialize() { + // initialize superclass + ATH_CHECK( AthMonitorAlgorithm::initialize() ); + + ATH_CHECK( m_ChargedPFOContainerKey.initialize() ); + ATH_CHECK( m_NeutralPFOContainerKey.initialize() ); + + // release 21 containters + //ATH_CHECK( m_oldChargedPFOContainerKey.initialize() ); + //ATH_CHECK( m_oldNeutralPFOContainerKey.initialize() ); + return StatusCode::SUCCESS; +} + + +StatusCode PFOMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const { + using namespace Monitored; + + // Declare the quantities which should be monitored + auto nPFOs = Monitored::Scalar<int>("nPFOs",0.0); + auto pT = Monitored::Scalar<float>("pfopT",0.0); + auto eta = Monitored::Scalar<float>("pfoEta",0.0); + auto phi = Monitored::Scalar<float>("pfoPhi",0.0); + auto mass = Monitored::Scalar<float>("pfoMass",0.0); + auto E = Monitored::Scalar<float>("pfoE",0.0); + auto y = Monitored::Scalar<float>("pfoRapidity",0.0); + + auto nChPFOs = Monitored::Scalar<int>("nChPFOs",0.0); + auto ChpT = Monitored::Scalar<float>("ChpfopT",0.0); + auto Cheta = Monitored::Scalar<float>("ChpfoEta",0.0); + auto Chphi = Monitored::Scalar<float>("ChpfoPhi",0.0); + auto Chmass = Monitored::Scalar<float>("ChpfoMass",0.0); + auto ChE = Monitored::Scalar<float>("ChpfoE",0.0); + auto Chy = Monitored::Scalar<float>("ChpfoRapidity",0.0); + auto ChExpE = Monitored::Scalar<float>("ChpfoExpE",0.0); + auto ChDenseEnv = Monitored::Scalar<int>("ChpfoDenseEnv",0.0); + +// Declare cutmasks for dense environment + auto DenseEnvFlag = Monitored::Scalar<bool>("DenseEnvFlag",false); + + auto nNuPFOs = Monitored::Scalar<int>("nNuPFOs",0.0); + auto NupT = Monitored::Scalar<float>("NupfopT",0.0); + auto Nueta = Monitored::Scalar<float>("NupfoEta",0.0); + auto Nuphi = Monitored::Scalar<float>("NupfoPhi",0.0); + auto Numass = Monitored::Scalar<float>("NupfoMass",0.0); + auto NuE = Monitored::Scalar<float>("NupfoE",0.0); + auto Nuy = Monitored::Scalar<float>("NupfoRapidity",0.0); + auto NuSecondR = Monitored::Scalar<float>("NupfoSecondR",0.0); + auto NuSecondLambda = Monitored::Scalar<float>("NupfoSecondLambda",0.0); + auto NuCenterLambda = Monitored::Scalar<float>("NupfoCenterLambda",0.0); + auto NuNBadCells = Monitored::Scalar<float>("NupfoNBadCells",0.0); + auto NuEBadCells = Monitored::Scalar<float>("NupfoEBadCells",0.0); + auto NuBadLarQFrac= Monitored::Scalar<float>("NupfoBadLarQFrac",0.0); + auto NuIso = Monitored::Scalar<float>("NupfoIsolation",0.0); + auto NuEPos = Monitored::Scalar<float>("NupfoEPos",0.0); + auto NuNBadC = Monitored::Scalar<int>("NupfoNBadCells",0); + auto NuAvgLarQ= Monitored::Scalar<float>("NupfoAvgLarQ",0.0); + auto NuAvgTileQ= Monitored::Scalar<float>("NupfoAvgTileQ",0.0); + auto NuEMProb= Monitored::Scalar<float>("NupfoEMProb",0.0); + // Not currently filled in the xAOD + //auto NuSignif = Monitored::Scalar<float>("NupfoSignificance",0.0); + //auto NuEFracMX= Monitored::Scalar<float>("NupfoEFracMax",0.0); + + // Access the Particle Flow Objects via StoreGate + SG::ReadHandle<xAOD::FlowElementContainer> chpfos(m_ChargedPFOContainerKey, ctx); + if (! chpfos.isValid() ) { + ATH_MSG_WARNING("evtStore() does not contain PFO Collection with name "<< m_ChargedPFOContainerKey); + return StatusCode::SUCCESS; //Return SUCCESS so processing proceeds + } + + SG::ReadHandle<xAOD::FlowElementContainer> nupfos(m_NeutralPFOContainerKey, ctx); + if (! nupfos.isValid() ) { + ATH_MSG_WARNING("evtStore() does not contain PFO Collection with name "<< m_NeutralPFOContainerKey); + return StatusCode::SUCCESS; //Return SUCCESS so processing proceeds + } + + // Set monitored variables for this event + nPFOs = chpfos->size() + nupfos->size(); + nChPFOs = chpfos->size(); + nNuPFOs = nupfos->size(); + + fill("PFOMonitorAllPFOs",nPFOs); + fill("PFOMonitorChargedPFOs",nChPFOs); + fill("PFOMonitorNeutralPFOs",nNuPFOs); + + // Accessors for neutral PFO moments + const static SG::AuxElement::ConstAccessor<float> acc_SECOND_R("SECOND_R"); + const static SG::AuxElement::ConstAccessor<float> acc_CENTER_LAMBDA("CENTER_LAMBDA"); + const static SG::AuxElement::ConstAccessor<float> acc_ISOLATION("ISOLATION"); + const static SG::AuxElement::ConstAccessor<float> acc_N_BAD_CELLS("N_BAD_CELLS"); + const static SG::AuxElement::ConstAccessor<float> acc_ENG_BAD_CELLS("ENG_BAD_CELLS"); + const static SG::AuxElement::ConstAccessor<float> acc_BADLARQ_FRAC("BADLARQ_FRAC"); + const static SG::AuxElement::ConstAccessor<float> acc_ENG_POS("ENG_POS"); + const static SG::AuxElement::ConstAccessor<float> acc_AVG_LAR_Q("AVG_LAR_Q"); + const static SG::AuxElement::ConstAccessor<float> acc_AVG_TILE_Q("AVG_TILE_Q"); + const static SG::AuxElement::ConstAccessor<float> acc_EM_PROBABILITY("EM_PROBABILITY"); + const static SG::AuxElement::ConstAccessor<float> acc_SECOND_LAMBDA("SECOND_LAMBDA"); + // Not currently filled in the xAOD + //const static SG::AuxElement::ConstAccessor<float> acc_SIGNIFICANCE("SIGNIFICANCE"); + //const static SG::AuxElement::ConstAccessor<float> acc_ENG_FRAC_MAX("ENG_FRAC_MAX"); + + // Accessors for charged PFO moments + const static SG::AuxElement::ConstAccessor<int> acc_IsInDenseEnvironment("IsInDenseEnvironment"); + const static SG::AuxElement::ConstAccessor<float> acc_tracksExpectedEnergyDeposit("TracksExpectedEnergyDeposit"); + + for (const auto& pfo : *chpfos) { + pT = pfo->pt(); + eta = pfo->eta(); + phi = pfo->phi(); + mass= pfo->m(); + E = pfo->e(); + y = pfo->rapidity(); + //float score = bdtPi0Score(); + + int denseEnv = 0; + float expectedEnergy = -1.0; + + // Fill moments associated with tracks and track association + if(acc_IsInDenseEnvironment.isAvailable(*pfo)) {denseEnv = acc_IsInDenseEnvironment(*pfo);} + else {ATH_MSG_DEBUG("This charged PFO did not have IsInDenseEnvironment set");} + + if(acc_tracksExpectedEnergyDeposit.isAvailable(*pfo)) {expectedEnergy = acc_tracksExpectedEnergyDeposit(*pfo);} + else {ATH_MSG_DEBUG("This charged PFO did not have TracksExpectedEnergyDeposit set");} + + ChpT = pfo->pt(); + Cheta = pfo->eta(); + Chphi = pfo->phi(); + ChE = pfo->e(); + Chy = pfo->rapidity(); + ChDenseEnv = denseEnv; + ChExpE= expectedEnergy; + + // Fill. First argument is the tool name, all others are the variables to be saved. + fill("PFOMonitorAllPFOs",pT,eta,phi,mass,E,y); + DenseEnvFlag = denseEnv; + fill("PFOMonitorChargedPFOs",ChpT,Cheta,Chphi,Chmass,ChE,Chy,ChDenseEnv,ChExpE,DenseEnvFlag); + + } + + for (const auto& pfo : *nupfos) { + pT = pfo->pt(); + eta = pfo->eta(); + phi = pfo->phi(); + mass= pfo->m(); + E = pfo->e(); + y = pfo->rapidity(); + + NupT = pfo->pt(); + Nueta = pfo->eta(); + Nuphi = pfo->phi(); + Numass= pfo->m(); + NuE = pfo->e(); + Nuy = pfo->rapidity(); + + if (acc_ISOLATION.isAvailable(*pfo)) {NuIso = acc_ISOLATION(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have ISOLATION set");} + + if (acc_ENG_POS.isAvailable(*pfo)) {NuEPos= acc_ENG_POS(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have ENG_POS set");} + + if (acc_N_BAD_CELLS.isAvailable(*pfo)) {NuNBadCells = acc_N_BAD_CELLS(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have N_BAD_CELLS set");} + + if (acc_ENG_BAD_CELLS.isAvailable(*pfo)) {NuEBadCells = acc_ENG_BAD_CELLS(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have ENG_BAD_CELLS set");} + + if (acc_AVG_LAR_Q.isAvailable(*pfo)) {NuAvgLarQ = acc_AVG_LAR_Q(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have AVG_LAR_Q set");} + + if (acc_AVG_TILE_Q.isAvailable(*pfo)) {NuAvgTileQ = acc_AVG_TILE_Q(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have AVG_TILE_Q set");} + + if (acc_SECOND_R.isAvailable(*pfo)) {NuSecondR = acc_SECOND_R(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have SECOND_R set");} + + if (acc_SECOND_LAMBDA.isAvailable(*pfo)) {NuSecondLambda = acc_SECOND_LAMBDA(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have SECOND_LAMBDA set");} + + if (acc_CENTER_LAMBDA.isAvailable(*pfo)) {NuCenterLambda = acc_CENTER_LAMBDA(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have CENTER_LAMBDA set");} + + if (acc_BADLARQ_FRAC.isAvailable(*pfo)) {NuBadLarQFrac = acc_BADLARQ_FRAC(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have BAD_LARQ_FRAC set");} + + if (acc_EM_PROBABILITY.isAvailable(*pfo)) {NuEMProb = acc_EM_PROBABILITY(*pfo);} + else {ATH_MSG_DEBUG("This neutral PFO did not have BAD_LARQ_FRAC set");} + + // These moments do not appear to be filled currently in the xAOD, but leave commented out + // in case they are turned on later. + //if (acc_SIGNIFICANCE.isAvailable(*pfo)) {NuSignif = acc_SIGNIFICANCE(*pfo);} + //else {ATH_MSG_DEBUG("This charged PFO did not have SIGNIFICANCE set");} + //if (acc_ENG_FRAC_MAX.isAvailable(*pfo)) {NuEFracMAX = acc_ENG_FRAC_MAX(*pfo);} + //else {ATH_MSG_DEBUG("This neutral PFO did not have ENG_FRAC_MAX set");} + + // Fill. First argument is the tool name, all others are the variables to be saved. + fill("PFOMonitorAllPFOs",pT,eta,phi,mass,E,y); + fill("PFOMonitorNeutralPFOs",NupT,Nueta,Nuphi,Numass,NuE,Nuy,NuIso,NuEPos,NuNBadC,NuEBadCells,NuAvgLarQ,NuSecondR,NuCenterLambda,NuSecondLambda,NuBadLarQFrac,NuEMProb); + } + + return StatusCode::SUCCESS; +} diff --git a/Reconstruction/Jet/JetInputsMonitoring/src/PFOMonitorAlgorithm.h b/Reconstruction/Jet/JetInputsMonitoring/src/PFOMonitorAlgorithm.h new file mode 100644 index 0000000000000000000000000000000000000000..c5266256077667f5eb276ec4717bf7c5aad6e112 --- /dev/null +++ b/Reconstruction/Jet/JetInputsMonitoring/src/PFOMonitorAlgorithm.h @@ -0,0 +1,30 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef PFOMONITORALGORITHM_H +#define PFOMONITORALGORITHM_H + +#include "AthenaMonitoring/AthMonitorAlgorithm.h" +#include "AthenaMonitoringKernel/Monitored.h" + +#include "StoreGate/ReadCondHandleKey.h" +#include "StoreGate/ReadHandleKey.h" +#include "xAODPFlow/PFO.h" +#include "xAODPFlow/FlowElementContainer.h" + + +class PFOMonitorAlgorithm : public AthMonitorAlgorithm { +public: + PFOMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator ); + virtual ~PFOMonitorAlgorithm(); + virtual StatusCode initialize() override; + virtual StatusCode fillHistograms( const EventContext& ctx ) const override; +private: + SG::ReadHandleKey<xAOD::FlowElementContainer> m_ChargedPFOContainerKey {this, "JetETMissChargedParticleFlowObjects", "JetETMissChargedParticleFlowObjects"}; + SG::ReadHandleKey<xAOD::FlowElementContainer> m_NeutralPFOContainerKey {this, "JetETMissNeutralParticleFlowObjects", "JetETMissNeutralParticleFlowObjects"}; + //release 21 and earlier + //SG::ReadHandleKey<xAOD::PFOContainer> m_oldChargedPFOContainerKey {this, "JetETMissChargedParticleFlowObjects", "JetETMissChargedParticleFlowObjects"}; + //SG::ReadHandleKey<xAOD::PFOContainer> m_oldNeutralPFOContainerKey {this, "JetETMissNeutralParticleFlowObjects", "JetETMissNeutralParticleFlowObjects"}; +}; +#endif diff --git a/Reconstruction/Jet/JetInputsMonitoring/src/components/JetInputsMonitoring_entries.cxx b/Reconstruction/Jet/JetInputsMonitoring/src/components/JetInputsMonitoring_entries.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d98546eb29fc1689ce2a63afe5ec88108ba8a3c3 --- /dev/null +++ b/Reconstruction/Jet/JetInputsMonitoring/src/components/JetInputsMonitoring_entries.cxx @@ -0,0 +1,9 @@ +/* + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +*/ + +#include "../ClusterMonitorAlgorithm.h" +#include "../PFOMonitorAlgorithm.h" + +DECLARE_COMPONENT( ClusterMonitorAlgorithm ) +DECLARE_COMPONENT( PFOMonitorAlgorithm ) diff --git a/Reconstruction/Jet/JetMonitoring/python/JetMonitoringStandard.py b/Reconstruction/Jet/JetMonitoring/python/JetMonitoringStandard.py index 37aa1f18db382685c50930329a2745b7e5c7f146..aa53f69f31a7ba3018f40c52cf297182b81d5455 100644 --- a/Reconstruction/Jet/JetMonitoring/python/JetMonitoringStandard.py +++ b/Reconstruction/Jet/JetMonitoring/python/JetMonitoringStandard.py @@ -8,8 +8,7 @@ @brief Main python configuration for the Run III Jet Monitoring ''' -#from JetMonitoring.JetMonitoringConfig import JetMonAlgSpec, HistoSpec, EventHistoSpec, SelectSpec -from JetMonitoring.JetMonitoringConfig import JetMonAlgSpec, EventHistoSpec, SelectSpec +from JetMonitoring.JetMonitoringConfig import JetMonAlgSpec, HistoSpec, EventHistoSpec, SelectSpec, VarSpec # ********************************************* # Define a list of histograms we want to draw for all jet containers. @@ -30,14 +29,21 @@ commonHistoSpecs = [ "HECFrac", "FracSamplingMax", "FracSamplingMaxIndex", + "EM3Frac", + "Tile0Frac", "CentroidR", "OotFracClusters5", "OotFracClusters10", + "JVF", + "JVF[0]", + "JVF[1]", "Jvt", "nconstit", - "N90Constituents", - "JVF", + "N90Constituents", "leadingJetsRel", + "JetConstitScaleMomentum_pt","JetEMScaleMomentum_pt","JetPileupScaleMomentum_pt","JetEtaJESScaleMomentum_pt", + "JetConstitScaleMomentum_eta","JetEMScaleMomentum_eta","JetPileupScaleMomentum_eta","JetEtaJESScaleMomentum_eta", + "JetConstitScaleMomentum_phi","JetEMScaleMomentum_phi","JetPileupScaleMomentum_phi","JetEtaJESScaleMomentum_phi", # or we can directly add our custom histo specification in the form of a HistoSpec @@ -63,45 +69,58 @@ commonHistoSpecs = [ # Use a SelectSpec dictionary to define the selection, and the histo to be drawn from it. SelectSpec( 'central', # the name of the selection '|eta|<0.5', # selection expression. The form 'min<var<max' is automatically interpreted. - FillerTools = ["pt","m","eta","phi","EMFrac","HECFrac","LArQuality","nconstit","N90Constituents", + path='CentralJets', # force the path where the histos are saved in the final ROOT file + FillerTools = ["pt","m","eta","phi","EMFrac","Tile0Frac","LArQuality","nconstit","N90Constituents", + "JetConstitScaleMomentum_pt","JetEMScaleMomentum_pt","JetPileupScaleMomentum_pt","JetEtaJESScaleMomentum_pt", + "JetConstitScaleMomentum_eta","JetEMScaleMomentum_eta","JetPileupScaleMomentum_eta","JetEtaJESScaleMomentum_eta", + "JetConstitScaleMomentum_phi","JetEMScaleMomentum_phi","JetPileupScaleMomentum_phi","JetEtaJESScaleMomentum_phi", ] ), SelectSpec( 'tilegap3', # the name of the selection '1.0<|eta|<1.4', # selection expression. The form 'min<var<max' is automatically interpreted. - FillerTools = ["pt","m","eta","phi","EMFrac","HECFrac","LArQuality","nconstit","N90Constituents", + path='TileGap3', # force the path where the histos are saved in the final ROOT file + FillerTools = ["pt","m","eta","phi","EMFrac","Tile0Frac","HECFrac","LArQuality","nconstit","N90Constituents", ] ), # another selection : only leading jets SelectSpec( 'leading', '', # no selection on variables SelectedIndex=0, # force 1st (leading) jet (we would set 1 for sub-leading jets) - path='standardHistos', # force the path where the histos are saved in the final ROOT file - FillerTools = ["pt","m","eta","phi", + path='LeadingJets', # force the path where the histos are saved in the final ROOT file + FillerTools = ["pt","m","eta","phi","EMFrac","Tile0Frac","HECFrac","LArQuality","nconstit","N90Constituents", + "JetConstitScaleMomentum_pt","JetEMScaleMomentum_pt","JetPileupScaleMomentum_pt","JetEtaJESScaleMomentum_pt", + "JetConstitScaleMomentum_eta","JetEMScaleMomentum_eta","JetPileupScaleMomentum_eta","JetEtaJESScaleMomentum_eta", + "JetConstitScaleMomentum_phi","JetEMScaleMomentum_phi","JetPileupScaleMomentum_phi","JetEtaJESScaleMomentum_phi", ] ), # another selection : only subleading jets SelectSpec( 'subleading', '', # no selection on variables SelectedIndex=1, # force 2nd (sub-leading) jet - path='standardHistos', # force the path where the histos are saved in the final ROOT file - FillerTools = ["pt","m","eta","phi", + path='SubleadingJets', # force the path where the histos are saved in the final ROOT file + FillerTools = ["pt","m","eta","phi","EMFrac","Tile0Frac","HECFrac","LArQuality","nconstit","N90Constituents", + "JetConstitScaleMomentum_pt","JetEMScaleMomentum_pt","JetPileupScaleMomentum_pt","JetEtaJESScaleMomentum_pt", + "JetConstitScaleMomentum_eta","JetEMScaleMomentum_eta","JetPileupScaleMomentum_eta","JetEtaJESScaleMomentum_eta", + "JetConstitScaleMomentum_phi","JetEMScaleMomentum_phi","JetPileupScaleMomentum_phi","JetEtaJESScaleMomentum_phi", ] ), # another selection : only very high pT jets - SelectSpec( 'highptrange2TeVto8TeV','2000<pt<8000',path='highptrange2TeVto8TeV',FillerTools = ["pt","m","eta","phi","eta;phi",] ), - SelectSpec( 'highptrange1TeVto2TeV','1000<pt<2000',path='highptrange1TeVto2TeV',FillerTools = ["pt","m","eta","phi","eta;phi",] ), - SelectSpec( 'highptrange500GeVto1TeV','500<pt<1000',path='highptrange500GeVto1TeV',FillerTools = ["pt","m","eta","phi","eta;phi",] ), - SelectSpec( 'highptrange200GeVto500GeV','200<pt<500',path='highptrange200GeVto500GeV',FillerTools = ["pt","m","eta","phi","eta;phi",] ), + SelectSpec( 'highptrange2TeVto8TeV','2000<pt<8000',path='highptrange2TeVto8TeV',FillerTools = ["highpt","m","eta","phi","eta;phi",] ), + SelectSpec( 'highptrange1TeVto2TeV','1000<pt<2000',path='highptrange1TeVto2TeV',FillerTools = ["highpt","m","eta","phi","eta;phi",] ), + SelectSpec( 'highptrange500GeVto1TeV','500<pt<1000',path='highptrange500GeVto1TeV',FillerTools = ["highpt","m","eta","phi","eta;phi",] ), + SelectSpec( 'highptrange200GeVto500GeV','200<pt<500',path='highptrange200GeVto500GeV',FillerTools = ["highpt","m","eta","phi","eta;phi",] ), # Selecting jets failing the LooseBad selection from the JetCleaningTool. SelectSpec( 'LooseBadFailedJets', 'LooseBad', InverseJetSel=True, - FillerTools = ["pt","phi","eta","m","EMFrac","LArQuality","HECFrac","nconstit","N90Constituents","phi;eta","phi;eta;e","phi;eta;pt", + FillerTools = ["pt","phi","eta","m","EMFrac","LArQuality","Tile0Frac","HECFrac","nconstit","N90Constituents", + "phi;eta","phi;eta;e","phi;eta;pt", ]), # Selecting jets passing the LooseBad selection from the JetCleaningTool. SelectSpec( 'LooseBadJets', 'LooseBad', # this is not in the form 'min<x<max', so it will be assumed 'LooseBad' is an entry existing in JetStandardHistoSpecs.knownSelector - FillerTools = [ "pt","eta","phi","m","EMFrac","LArQuality","HECFrac","nconstit","N90Constituents","phi;eta","phi;eta;e","phi;eta;pt", + FillerTools = [ "pt","eta","phi","m","EMFrac","LArQuality","Tile0Frac","HECFrac","nconstit","N90Constituents", + "phi;eta","phi;eta;e","phi;eta;pt", ] ), ] # end commonHistoSpecs @@ -113,15 +132,41 @@ jvfHistosSpec = [ ] ), ] - topoHistosSpec = [ - # histos common to all topo jets - # to be filled ... + # histos common to all topo jets. Energy By Sampling layer plots. + HistoSpec("PreSamplerB",(100,0.,200.),title="Energy in PreSamplerB;E;Entries",xvar=VarSpec('EnergyPerSampling[0]')), + HistoSpec("EMB1",(100,0.,200.),title="Energy in EMB1;E;Entries",xvar=VarSpec('EnergyPerSampling[1]')), + HistoSpec("EMB2",(100,0.,200.),title="Energy in EMB2;E;Entries",xvar=VarSpec('EnergyPerSampling[2]')), + HistoSpec("EMB3",(100,0.,200.),title="Energy in EMB3;E;Entries",xvar=VarSpec('EnergyPerSampling[3]')), + HistoSpec("PreSamplerE",(100,0.,200.),title="Energy in PreSamplerE;E;Entries",xvar=VarSpec('EnergyPerSampling[4]')), + HistoSpec("EME1",(100,0.,200.),title="Energy in EME2;E;Entries",xvar=VarSpec('EnergyPerSampling[5]')), + HistoSpec("EME2",(100,0.,200.),title="Energy in EME2;E;Entries",xvar=VarSpec('EnergyPerSampling[6]')), + HistoSpec("EME3",(100,0.,200.),title="Energy in EME3;E;Entries",xvar=VarSpec('EnergyPerSampling[7]')), + HistoSpec("HEC0",(100,0.,200.),title="Energy in HEC0;E;Entries",xvar=VarSpec('EnergyPerSampling[8]')), + HistoSpec("HEC1",(100,0.,200.),title="Energy in HEC1;E;Entries",xvar=VarSpec('EnergyPerSampling[9]')), + HistoSpec("HEC2",(100,0.,200.),title="Energy in HEC2;E;Entries",xvar=VarSpec('EnergyPerSampling[10]')), + HistoSpec("HEC3",(100,0.,200.),title="Energy in HEC3;E;Entries",xvar=VarSpec('EnergyPerSampling[11]')), + HistoSpec("TileBar0",(100,0.,200.),title="Energy in TileBar0;E;Entries",xvar=VarSpec('EnergyPerSampling[12]')), + HistoSpec("TileBar1",(100,0.,200.),title="Energy in TileBar1;E;Entries",xvar=VarSpec('EnergyPerSampling[13]')), + HistoSpec("TileBar2",(100,0.,200.),title="Energy in TileBar1;E;Entries",xvar=VarSpec('EnergyPerSampling[14]')), + HistoSpec("TileGap1",(100,0.,200.),title="Energy in TileGap1;E;Entries",xvar=VarSpec('EnergyPerSampling[15]')), + HistoSpec("TileGap2",(100,0.,200.),title="Energy in TileGap2;E;Entries",xvar=VarSpec('EnergyPerSampling[16]')), + HistoSpec("TileGap3",(100,0.,200.),title="Energy in TileGap3;E;Entries",xvar=VarSpec('EnergyPerSampling[17]')), + HistoSpec("TileExt0",(100,0.,200.),title="Energy in TileExt0;E;Entries",xvar=VarSpec('EnergyPerSampling[18]')), + HistoSpec("TileExt1",(100,0.,200.),title="Energy in TileExt1;E;Entries",xvar=VarSpec('EnergyPerSampling[19]')), + HistoSpec("TileExt2",(100,0.,200.),title="Energy in TileExt2;E;Entries",xvar=VarSpec('EnergyPerSampling[20]')), + HistoSpec("FCAL0",(100,0.,200.),title="Energy in FCAL0;E;Entries",xvar=VarSpec('EnergyPerSampling[21]')), + HistoSpec("FCAL1",(100,0.,200.),title="Energy in FCAL1;E;Entries",xvar=VarSpec('EnergyPerSampling[22]')), + HistoSpec("FCAL2",(100,0.,200.),title="Energy in FCAL2;E;Entries",xvar=VarSpec('EnergyPerSampling[23]')), ] pflowHistosSpec = [ - # histos common to all PFlow jets - # to be filled ... + # histos common to all PFlow jets. These are defined in JetStandardHistoSpecs.py + "SumPtChargedPFOPt500[0]", + "SumPtTrkPt500[0]", + "NumTrkPt500[0]", + "NumTrkPt1000[0]", + "fCharged", ] diff --git a/Reconstruction/Jet/JetMonitoring/python/JetStandardHistoSpecs.py b/Reconstruction/Jet/JetMonitoring/python/JetStandardHistoSpecs.py index 0513121a2ab35e0dba92eb553807af7f390b0a97..77951b7d039a8670661289e87523337811a06048 100644 --- a/Reconstruction/Jet/JetMonitoring/python/JetStandardHistoSpecs.py +++ b/Reconstruction/Jet/JetMonitoring/python/JetStandardHistoSpecs.py @@ -19,7 +19,6 @@ knownVar = dict( # this variable has an index specified. It will thus has only 1 value per jet : the JVF at pos 0 JVF0 = VarSpec('JVF', 'vecfloat', 0), - ) # Explicitly declare variables which have underlying type vector<int> (otherwise the system would automatically configure them as vector<float>) @@ -78,14 +77,14 @@ _knownHistos = [ HistoSpec( 'rapidity', (50,-5,5) , title='rapidity;y;Entries'), # Test non-EDM variable HistoSpec( 'phi', (50,-3.3,3.3) , title='#phi;#phi;Entries'), # Same but we indicate that the variable is to be plotted in GeV by appending ':GeV' - HistoSpec( 'pt:GeV', (100,0,750) , title='p_{T};p_{T} [GeV];'), + HistoSpec( 'pt:GeV', (200,0,800) , title='p_{T};p_{T} [GeV];'), HistoSpec( 'm:GeV', (100,0,300) , title='mass;mass [GeV];'), - HistoSpec( 'e:GeV', (100,0,750) , title='E;E [GeV];'), - HistoSpec( 'et:GeV', (100,0,750), title='E_{T};E_{T} [GeV],'), + HistoSpec( 'e:GeV', (200,0,800) , title='E;E [GeV];'), + HistoSpec( 'et:GeV', (200,0,800), title='E_{T};E_{T} [GeV],'), # We want an other pT histo, with different bins. # We add a new spec with a new name and we indicate the actual variable with the argument xvar - HistoSpec( 'highpt', (100,0.,4000) , title='p_{T};p_{T} [GeV];', xvar='pt:GeV'), + HistoSpec( 'highpt', (390,200.,8000) , title='p_{T};p_{T} [GeV];', xvar='pt:GeV'), HistoSpec( 'avgMu', (100, 0., 200.) , title='Ave. Interactions per Crossing; Ave. mu' , xvar='avgMu'), #EventHistoSpec( 'njets', (30,0,30), title='Jet Multiplicity;Njets;Entries' ), @@ -227,22 +226,22 @@ _knownHistos = [ HistoSpec( 'JetConstitScaleMomentum_eta', (50,-5,5) , title='ConstitScale #eta;ConstitScale #eta;Entries'), HistoSpec( 'JetConstitScaleMomentum_phi', (50,-3.3,3.3) , title='ConstitScale #phi;ConstitScale #phi;Entries'), - HistoSpec( 'JetConstitScaleMomentum_pt:GeV', (100,0,200) , title='ConstitScale p_{T};ConstitScale p_{T} [GeV];Entries'), + HistoSpec( 'JetConstitScaleMomentum_pt:GeV', (200,0,800) , title='ConstitScale p_{T};ConstitScale p_{T} [GeV];Entries'), HistoSpec( 'JetConstitScaleMomentum_m:GeV', (100,0,300) , title='ConstitScale mass;ConstitScale mass [GeV];Entries'), HistoSpec( 'JetEMScaleMomentum_eta', (50,-5,5) , title='EMScale #eta;EMScale #eta;Entries'), HistoSpec( 'JetEMScaleMomentum_phi', (50,-3.3,3.3) , title='EMScale #phi;EMScale #phi;Entries'), - HistoSpec( 'JetEMScaleMomentum_pt:GeV', (100,0,200) , title='EMScale p_{T};EMScale p_{T} [GeV];Entries'), + HistoSpec( 'JetEMScaleMomentum_pt:GeV', (200,0,800) , title='EMScale p_{T};EMScale p_{T} [GeV];Entries'), HistoSpec( 'JetEMScaleMomentum_m:GeV', (100,0,300) , title='EMScale mass;EMScale mass [GeV];Entries'), HistoSpec( 'JetPileupScaleMomentum_eta', (50,-5,5) , title='PileupScale #eta;PileupScale #eta;Entries'), HistoSpec( 'JetPileupScaleMomentum_phi', (50,-3.3,3.3) , title='PileupScale #phi;PileupScale #phi;Entries'), - HistoSpec( 'JetPileupScaleMomentum_pt:GeV', (100,0,200) , title='PileupScale p_{T};PileupScale p_{T} [GeV];Entries'), + HistoSpec( 'JetPileupScaleMomentum_pt:GeV', (200,0,800) , title='PileupScale p_{T};PileupScale p_{T} [GeV];Entries'), HistoSpec( 'JetPileupScaleMomentum_m:GeV', (100,0,300) , title='PileupScale mass;PileupScale mass [GeV];Entries'), HistoSpec( 'JetEtaJESScaleMomentum_eta', (50,-5,5) , title='EtaJESScale #eta;EtaJESScale #eta;Entries'), HistoSpec( 'JetEtaJESScaleMomentum_phi', (50,-3.3,3.3) , title='EtaJESScale #phi;EtaJESScale #phi;Entries'), - HistoSpec( 'JetEtaJESScaleMomentum_pt:GeV', (100,0,200) , title='EtaJESScale p_{T};EtaJESScale p_{T} [GeV];Entries'), + HistoSpec( 'JetEtaJESScaleMomentum_pt:GeV', (200,0,800) , title='EtaJESScale p_{T};EtaJESScale p_{T} [GeV];Entries'), HistoSpec( 'JetEtaJESScaleMomentum_m:GeV', (100,0,300) , title='EtaJESScale mass;EtaJESScale mass [GeV];Entries'), # --------------------- # 2D histogram (x and y vars are separated by ';' ) diff --git a/Reconstruction/Jet/JetRec/JetRec/PseudoJetAlgorithm.h b/Reconstruction/Jet/JetRec/JetRec/PseudoJetAlgorithm.h index 08a661e04c4cd89a8f0414316d018931c65269fb..94cacbd38fc98fcd61f0275ca2bb73d2ea3a6a77 100644 --- a/Reconstruction/Jet/JetRec/JetRec/PseudoJetAlgorithm.h +++ b/Reconstruction/Jet/JetRec/JetRec/PseudoJetAlgorithm.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // PseudoJetAlgorithm.h @@ -72,6 +72,18 @@ private: /// Flag indicating to treat objects with E<0 as ghosts (useful for HI) Gaudi::Property<bool> m_negEnergyAsGhosts{this, "TreatNegativeEnergyAsGhost", false, "Whether to convert negative energy inputs into ghosts"}; + /// Flag to define if charged PFOs / FEs should be considered + Gaudi::Property<bool> m_useCharged{this, "UseCharged", true, "Whether to use charged PFOs/FEs"}; + + /// Flag to define if neutral PFOs / FEs should be considered + Gaudi::Property<bool> m_useNeutral{this, "UseNeutral", true, "Whether to use neutral PFOs/FEs"}; + + /// Flag to define if charged PFOs / FEs should be matched to PV + Gaudi::Property<bool> m_useChargedPV{this, "UseChargedPV", true, "Whether to use charged PFOs/FEs matched to the PV"}; + + /// Flag for PFlow sideband definition + Gaudi::Property<bool> m_useChargedPUsideband{this, "UseChargedPUsideband", false, "Whether to use charged PU sideband only"}; + /// Internal steering flags /// Set in initialize() bool m_isGhost{false}; /// Determines whether the PJs should be made ghosts diff --git a/Reconstruction/Jet/JetRec/JetRec/PseudoJetGetter.h b/Reconstruction/Jet/JetRec/JetRec/PseudoJetGetter.h index 35a9d447cb14e97abdee68f75b7f33c9ef3ca012..fed596114d1c64454ab7adf234073f092b888606 100644 --- a/Reconstruction/Jet/JetRec/JetRec/PseudoJetGetter.h +++ b/Reconstruction/Jet/JetRec/JetRec/PseudoJetGetter.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /// Implementations of concrete input-to-PseudoJet conversions @@ -112,19 +112,39 @@ namespace PseudoJetGetter { struct PFlowRejecter{ bool skipNegativeEnergy{false}; - - PFlowRejecter(bool skip): skipNegativeEnergy(skip){ + bool useChargedPFOs{true}; + bool useNeutralPFOs{true}; + bool useChargedPV{true}; + bool useChargedPUsideband{false}; + + PFlowRejecter(bool skip, bool useCharged, bool useNeutral, bool chargedPV, bool chargedPUsideband): + skipNegativeEnergy(skip), + useChargedPFOs(useCharged), + useNeutralPFOs(useNeutral), + useChargedPV(chargedPV), + useChargedPUsideband(chargedPUsideband){ } bool operator()(const xAOD::IParticle* ip){ + + bool reject = false; if(ip->type() == xAOD::Type::FlowElement){ const xAOD::FlowElement* pfo = dynamic_cast<const xAOD::FlowElement*>(ip); + + reject = (skipNegativeEnergy && pfo->e()<FLT_MIN); + if( pfo->isCharged() ){ + if(!useChargedPFOs) reject = true; const static SG::AuxElement::ConstAccessor<char> PVMatchedAcc("matchedToPV"); - return !PVMatchedAcc(*pfo); + if(useChargedPV && !PVMatchedAcc(*pfo)) reject = true; + const static SG::AuxElement::ConstAccessor<char> PUsidebandMatchedAcc("matchedToPUsideband"); + if (useChargedPUsideband && !PUsidebandMatchedAcc(*pfo)) reject = true; + } + else{ + if(!useNeutralPFOs) reject = true; } - return skipNegativeEnergy && pfo->e()<FLT_MIN; + return reject; } const xAOD::PFO* pfo = dynamic_cast<const xAOD::PFO*>(ip); @@ -135,21 +155,27 @@ namespace PseudoJetGetter { // showers, but need to be present for overlap removal, because they // don't retain these weights when added to the TST + reject = (skipNegativeEnergy && pfo->e()<FLT_MIN); + if( pfo->isCharged() ) { - const static SG::AuxElement::ConstAccessor<char> - PVMatchedAcc("matchedToPV"); - return !PVMatchedAcc(*pfo); + if(!useChargedPFOs) reject = true; + const static SG::AuxElement::ConstAccessor<char> PVMatchedAcc("matchedToPV"); + if(useChargedPV && !PVMatchedAcc(*pfo)) reject = true; + const static SG::AuxElement::ConstAccessor<char> PUsidebandMatchedAcc("matchedToPUsideband"); + if (useChargedPUsideband && !PUsidebandMatchedAcc(*pfo)) reject = true; } - - return skipNegativeEnergy && pfo->e()<FLT_MIN; + else{ + if(!useNeutralPFOs) reject = true; + } + return reject; } }; std::vector<fastjet::PseudoJet> - PFlowsToPJs(const xAOD::IParticleContainer& ips, bool skipNegativeEnergy) { + PFlowsToPJs(const xAOD::IParticleContainer& ips, bool skipNegativeEnergy, bool useChargedPFOs, bool useNeutralPFOs, bool useChargedPV, bool useChargedPUsideband) { - PFlowRejecter rejecter(skipNegativeEnergy); + PFlowRejecter rejecter(skipNegativeEnergy, useChargedPFOs, useNeutralPFOs, useChargedPV, useChargedPUsideband); std::vector<fastjet::PseudoJet> vpj; int index = -1; diff --git a/Reconstruction/Jet/JetRec/python/JetRecStandardTools.py b/Reconstruction/Jet/JetRec/python/JetRecStandardTools.py index 0b2e842d35eca2b9fe528f4d40999e9dd38b5820..92db91ec11717fb036d75c6c54bd4d4030b5eb07 100644 --- a/Reconstruction/Jet/JetRec/python/JetRecStandardTools.py +++ b/Reconstruction/Jet/JetRec/python/JetRecStandardTools.py @@ -369,6 +369,10 @@ jtm += PseudoJetAlgorithm( InputContainer = "CHSParticleFlowObjects", OutputContainer = "PseudoJetEMPFlow", SkipNegativeEnergy = True, + UseCharged = True, + UseNeutral = True, + UseChargedPV = True, + UseChargedPUsideband = False, ) # EM-scale pflow with custom selection for the primary vertex @@ -378,6 +382,36 @@ jtm += PseudoJetAlgorithm( InputContainer = "CustomVtxParticleFlowObjects", OutputContainer = "PseudoJetPFlowCustomVtx", SkipNegativeEnergy = True, + UseCharged = True, + UseNeutral = True, + UseChargedPV = True, + UseChargedPUsideband = False, +) + +#New sideband definition (default for precision recs) +jtm += PseudoJetAlgorithm( + "empflowpusbget", + Label = "EMPFlowPUSB", + InputContainer = "CHSParticleFlowObjects", + OutputContainer = "PseudoJetEMPFlowPUSB", + SkipNegativeEnergy = True, + UseCharged = True, + UseNeutral = True, + UseChargedPV = False, + UseChargedPUsideband = True, +) + +# EM-scale pflow - neutral objects only +jtm += PseudoJetAlgorithm( + "empflowneutget", + Label = "EMPFlowNeut", + InputContainer = "CHSParticleFlowObjects", + OutputContainer = "PseudoJetEMPFlowNeut", + SkipNegativeEnergy = True, + UseCharged = False, + UseNeutral = True, + UseChargedPV = False, + UseChargedPUsideband = False, ) # AntiKt2 track jets. diff --git a/Reconstruction/Jet/JetRec/src/PseudoJetAlgorithm.cxx b/Reconstruction/Jet/JetRec/src/PseudoJetAlgorithm.cxx index b996e0e3be34682d7297efdffe4ff9fbd9fd4fef..8e9a752958cf4c2430a880331680573e990194df 100644 --- a/Reconstruction/Jet/JetRec/src/PseudoJetAlgorithm.cxx +++ b/Reconstruction/Jet/JetRec/src/PseudoJetAlgorithm.cxx @@ -93,7 +93,7 @@ std::unique_ptr<PseudoJetContainer> PseudoJetAlgorithm::createPJContainer(const std::vector<fastjet::PseudoJet> PseudoJetAlgorithm::createPseudoJets(const xAOD::IParticleContainer& ips) const{ #ifndef GENERATIONBASE - if (m_pflow) {return PseudoJetGetter::PFlowsToPJs(ips,m_skipNegativeEnergy);} + if (m_pflow) {return PseudoJetGetter::PFlowsToPJs(ips,m_skipNegativeEnergy,m_useCharged,m_useNeutral,m_useChargedPV,m_useChargedPUsideband);} if (m_emtopo) {return PseudoJetGetter::EMToposToPJs(ips,m_skipNegativeEnergy);} #endif return PseudoJetGetter::IParticlesToPJs(ips,m_skipNegativeEnergy); diff --git a/Reconstruction/Jet/JetRec/src/PseudoJetAlgorithm.h b/Reconstruction/Jet/JetRec/src/PseudoJetAlgorithm.h index 478d7e186cee77334456e2ddf25bfd8044d42ee8..94cacbd38fc98fcd61f0275ca2bb73d2ea3a6a77 100644 --- a/Reconstruction/Jet/JetRec/src/PseudoJetAlgorithm.h +++ b/Reconstruction/Jet/JetRec/src/PseudoJetAlgorithm.h @@ -72,6 +72,18 @@ private: /// Flag indicating to treat objects with E<0 as ghosts (useful for HI) Gaudi::Property<bool> m_negEnergyAsGhosts{this, "TreatNegativeEnergyAsGhost", false, "Whether to convert negative energy inputs into ghosts"}; + /// Flag to define if charged PFOs / FEs should be considered + Gaudi::Property<bool> m_useCharged{this, "UseCharged", true, "Whether to use charged PFOs/FEs"}; + + /// Flag to define if neutral PFOs / FEs should be considered + Gaudi::Property<bool> m_useNeutral{this, "UseNeutral", true, "Whether to use neutral PFOs/FEs"}; + + /// Flag to define if charged PFOs / FEs should be matched to PV + Gaudi::Property<bool> m_useChargedPV{this, "UseChargedPV", true, "Whether to use charged PFOs/FEs matched to the PV"}; + + /// Flag for PFlow sideband definition + Gaudi::Property<bool> m_useChargedPUsideband{this, "UseChargedPUsideband", false, "Whether to use charged PU sideband only"}; + /// Internal steering flags /// Set in initialize() bool m_isGhost{false}; /// Determines whether the PJs should be made ghosts diff --git a/Reconstruction/Jet/JetRecConfig/python/JetInputConfig.py b/Reconstruction/Jet/JetRecConfig/python/JetInputConfig.py index 41f3072e22060a35f899fcab46a1fe492f8c1fc8..0c85f190a0ba56650470b6b6cd065a8373440c59 100644 --- a/Reconstruction/Jet/JetRecConfig/python/JetInputConfig.py +++ b/Reconstruction/Jet/JetRecConfig/python/JetInputConfig.py @@ -75,7 +75,7 @@ def getEventShapeName( parentjetdef, inputspec): return nameprefix+"Kt4"+label+"EventShape" -def buildEventShapeAlg( parentjetdef, inputspec, voronoiRf = 0.9 ): +def buildEventShapeAlg( parentjetdef, inputspec, voronoiRf = 0.9, radius = 0.4 ): """Function producing an EventShapeAlg to calculate median energy density for pileup correction""" @@ -88,7 +88,7 @@ def buildEventShapeAlg( parentjetdef, inputspec, voronoiRf = 0.9 ): rhotoolname, InputContainer = "PseudoJet"+label, # same as in PseudoJet algs OutputContainer = rhokey, - JetRadius = parentjetdef.radius, + JetRadius = radius, UseFourMomArea = True, VoronoiRfact = voronoiRf, JetAlgorithm = "Kt",) diff --git a/Reconstruction/Jet/JetRecConfig/test/test_StandardJets.py b/Reconstruction/Jet/JetRecConfig/test/test_StandardJets.py index 5b4ccb9d9b6799e90c8557c2e7cf11e93b538f43..e9ae1ac3af239fd8a978e269d6c3153bab86f64a 100755 --- a/Reconstruction/Jet/JetRecConfig/test/test_StandardJets.py +++ b/Reconstruction/Jet/JetRecConfig/test/test_StandardJets.py @@ -122,9 +122,8 @@ cfg.merge(PoolReadCfg(ConfigFlags)) from LumiBlockComps.LuminosityCondAlgConfig import LuminosityCondAlgCfg cfg.merge(LuminosityCondAlgCfg(ConfigFlags)) -from AthenaConfiguration.ComponentFactory import CompFactory -muWriter = CompFactory.LumiBlockMuWriter("LumiBlockMuWriter",LumiDataKey="LuminosityCondData") -cfg.addEventAlgo(muWriter,"AthAlgSeq") +from LumiBlockComps.LumiBlockMuWriterConfig import LumiBlockMuWriterCfg +cfg.merge(LumiBlockMuWriterCfg(ConfigFlags)) diff --git a/Reconstruction/Jet/JetRecTools/JetRecTools/ChargedHadronSubtractionTool.h b/Reconstruction/Jet/JetRecTools/JetRecTools/ChargedHadronSubtractionTool.h index e7a2f6aab33508f3e374e83040de56cb360c1f01..3ce70af752c327b6603df5fa2e9d432df0bddebe 100644 --- a/Reconstruction/Jet/JetRecTools/JetRecTools/ChargedHadronSubtractionTool.h +++ b/Reconstruction/Jet/JetRecTools/JetRecTools/ChargedHadronSubtractionTool.h @@ -47,6 +47,7 @@ class ChargedHadronSubtractionTool : public JetConstituentModifierBase{ const xAOD::Vertex* getPrimaryVertex() const; bool m_useTrackToVertexTool; bool m_ignoreVertex; + float m_z0sinThetaCutValue; SG::ReadHandleKey<xAOD::VertexContainer> m_vertexContainer_key; SG::ReadHandleKey<jet::TrackVertexAssociation> m_trkVtxAssoc_key; diff --git a/Reconstruction/Jet/JetRecTools/Root/ChargedHadronSubtractionTool.cxx b/Reconstruction/Jet/JetRecTools/Root/ChargedHadronSubtractionTool.cxx index 79a88c10cc147a661e680ca8931c07c0e7526182..34e13917547619e9928323bf729c0a0de61ae239 100644 --- a/Reconstruction/Jet/JetRecTools/Root/ChargedHadronSubtractionTool.cxx +++ b/Reconstruction/Jet/JetRecTools/Root/ChargedHadronSubtractionTool.cxx @@ -20,6 +20,8 @@ ChargedHadronSubtractionTool::ChargedHadronSubtractionTool(const std::string& na declareProperty("IgnoreVertex", m_ignoreVertex=false, "Dummy option for cosmics - accept everything"); + declareProperty("Z0sinThetaCutValue", m_z0sinThetaCutValue=2.0, "True if we will use the track to vertex tool"); + } StatusCode ChargedHadronSubtractionTool::initialize() { @@ -95,6 +97,7 @@ const xAOD::Vertex* ChargedHadronSubtractionTool::getPrimaryVertex() const { StatusCode ChargedHadronSubtractionTool::matchToPrimaryVertex(xAOD::PFOContainer& cont) const { const static SG::AuxElement::Accessor<char> PVMatchedAcc("matchedToPV"); + const static SG::AuxElement::Accessor<char> PUsidebandMatchedAcc("matchedToPUsideband"); // Use only one of TVA or PV const jet::TrackVertexAssociation* trkVtxAssoc = nullptr; @@ -125,6 +128,7 @@ StatusCode ChargedHadronSubtractionTool::matchToPrimaryVertex(xAOD::PFOContainer if(fabs(ppfo->charge()) < FLT_MIN) continue; bool matchedToPrimaryVertex = false; + bool matchedToPileupSideband = false; if(m_ignoreVertex) { // If we don't use vertex information, don't bother computing the decision // Just pass every cPFO -- there shouldn't be many in cosmics! @@ -146,11 +150,13 @@ StatusCode ChargedHadronSubtractionTool::matchToPrimaryVertex(xAOD::PFOContainer // Thus we correct the track z0 to be w.r.t z = 0 float z0 = ptrk->z0() + ptrk->vz() - vtx->z(); float theta = ptrk->theta(); - matchedToPrimaryVertex = ( fabs(z0*sin(theta)) < 2.0 ); + matchedToPrimaryVertex = ( std::abs(z0*sin(theta)) < m_z0sinThetaCutValue ); + if (std::abs(z0*sin(theta)) < 2.0*m_z0sinThetaCutValue && std::abs(z0*sin(theta)) >= m_z0sinThetaCutValue ) matchedToPileupSideband = true; } } // TVA vs PV decision } PVMatchedAcc(*ppfo) = matchedToPrimaryVertex; + PUsidebandMatchedAcc(*ppfo) = matchedToPileupSideband; } return StatusCode::SUCCESS; @@ -158,6 +164,7 @@ StatusCode ChargedHadronSubtractionTool::matchToPrimaryVertex(xAOD::PFOContainer StatusCode ChargedHadronSubtractionTool::matchToPrimaryVertex(xAOD::FlowElementContainer& cont) const { const static SG::AuxElement::Accessor<char> PVMatchedAcc("matchedToPV"); + const static SG::AuxElement::Accessor<char> PUsidebandMatchedAcc("matchedToPUsideband"); // Use only one of TVA or PV const jet::TrackVertexAssociation* trkVtxAssoc = nullptr; @@ -188,6 +195,7 @@ StatusCode ChargedHadronSubtractionTool::matchToPrimaryVertex(xAOD::FlowElementC if(!ppfo->isCharged()) continue; bool matchedToPrimaryVertex = false; + bool matchedToPileupSideband = false; if(m_ignoreVertex) { // If we don't use vertex information, don't bother computing the decision // Just pass every cPFO -- there shouldn't be many in cosmics! @@ -209,11 +217,13 @@ StatusCode ChargedHadronSubtractionTool::matchToPrimaryVertex(xAOD::FlowElementC // Thus we correct the track z0 to be w.r.t z = 0 float z0 = ptrk->z0() + ptrk->vz() - vtx->z(); float theta = ptrk->theta(); - matchedToPrimaryVertex = ( fabs(z0*sin(theta)) < 2.0 ); + matchedToPrimaryVertex = ( fabs(z0*sin(theta)) < m_z0sinThetaCutValue ); + if (std::abs(z0*sin(theta)) < 2.0*m_z0sinThetaCutValue && std::abs(z0*sin(theta)) >= m_z0sinThetaCutValue ) matchedToPileupSideband = true; } } // TVA vs PV decision } PVMatchedAcc(*ppfo) = matchedToPrimaryVertex; + PUsidebandMatchedAcc(*ppfo) = matchedToPileupSideband; } return StatusCode::SUCCESS; diff --git a/Reconstruction/MuonIdentification/MuonCombinedTrackFindingTools/src/MuonStauRecoTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedTrackFindingTools/src/MuonStauRecoTool.cxx index 3bfc7524ff75e088ceda53355b4a8c0c6425e06b..11174ee72a77c2b1e7a36512695d8881b56ef43e 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedTrackFindingTools/src/MuonStauRecoTool.cxx +++ b/Reconstruction/MuonIdentification/MuonCombinedTrackFindingTools/src/MuonStauRecoTool.cxx @@ -22,7 +22,7 @@ #include "MuonSegment/MuonSegment.h" #include "TrkDriftCircleMath/DCSLFitter.h" #include "TrkDriftCircleMath/Line.h" -#include "TrkDriftCircleMath/LocPos.h" +#include "TrkDriftCircleMath/LocVec2D.h" #include "TrkDriftCircleMath/Segment.h" #include "TrkDriftCircleMath/SegmentFinder.h" #include "TrkDriftCircleMath/TransformToLine.h" @@ -511,7 +511,7 @@ namespace MuonCombined { Trk::LocalDirection seedLocDir; surf->globalToLocalDirection(firstPars.momentum(), seedLocDir); Amg::Vector3D seedLocPos = gToStation * slIntersection.position; - TrkDriftCircleMath::LocPos seedPos(seedLocPos.y(), seedLocPos.z()); + TrkDriftCircleMath::LocVec2D seedPos(seedLocPos.y(), seedLocPos.z()); TrkDriftCircleMath::Line seedLine(seedPos, seedLocDir.angleYZ()); TrkDriftCircleMath::DCOnTrackVec dcs; @@ -541,7 +541,7 @@ namespace MuonCombined { // calculate local AMDB position Amg::Vector3D locPos = gToStation * gpos; - TrkDriftCircleMath::LocPos lpos(locPos.y(), locPos.z()); + TrkDriftCircleMath::LocVec2D lpos(locPos.y(), locPos.z()); double r = std::abs(calibratedMdt->driftRadius()); double dr = Amg::error(calibratedMdt->localCovariance(), Trk::locR); @@ -561,7 +561,7 @@ namespace MuonCombined { // now loop over the hits and fit the segment taking out each of the hits individually for (unsigned int i = 0; i < dcs.size(); ++i) { - TrkDriftCircleMath::DCSLFitter::HitSelection selection(dcs.size(), 0); + TrkDriftCircleMath::HitSelection selection(dcs.size(), 0); selection[i] = 1; TrkDriftCircleMath::Segment result(TrkDriftCircleMath::Line(0., 0., 0.), TrkDriftCircleMath::DCOnTrackVec()); if (!mdtFitter.fit(result, seedLine, dcs, selection)) { diff --git a/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_noLinking.sh b/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_noLinking.sh deleted file mode 100755 index e58888ac259905b12c3c1a7c8cb2fd2029b513e7..0000000000000000000000000000000000000000 --- a/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_noLinking.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# -# art-description: Athena runs Standard ESD pflow reconstruction, PFO linking off, thinning off. -# art-type: grid -# art-include: master/Athena -# art-athena-mt: 8 -# art-output: AOD.pool.root -# art-output: log_FE_validation.txt - -export ATHENA_CORE_NUMBER=8 # set number of cores used in multithread to 8. - -athena.py --threads=8 eflowRec/run_ESDPFlowRecoR22.py -rc1=$? - -echo "art-result: ${rc1}" diff --git a/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_noTrackMasking.sh b/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_noTrackMasking.sh deleted file mode 100755 index 4f241c010684a97245e404bc9388826a145a699e..0000000000000000000000000000000000000000 --- a/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_noTrackMasking.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# -# art-description: Athena runs Standard ESD pflow reconstruction, PFO linking off, thinning off. -# art-type: grid -# art-include: master/Athena -# art-athena-mt: 8 -# art-output: AOD.pool.root -# art-output: log_FE_validation.txt - -export ATHENA_CORE_NUMBER=8 # set number of cores used in multithread to 8. - -athena.py --threads=8 eflowRec/run_ESDPFlowRecoR22_noTrackMasking.py -rc1=$? - -echo "art-result: ${rc1}" diff --git a/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_useNewEOverP.sh b/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_useNewEOverP.sh deleted file mode 100755 index 4352be2777488848da987ceec7754ca503c302e6..0000000000000000000000000000000000000000 --- a/Reconstruction/PFlow/PFlowTests/test/test_pflow_fromESD_useNewEOverP.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# -# art-description: Athena runs Standard ESD pflow reconstruction, PFO linking off, thinning off. -# art-type: grid -# art-include: master/Athena -# art-athena-mt: 8 -# art-output: AOD.pool.root -# art-output: log_FE_validation.txt - -export ATHENA_CORE_NUMBER=8 # set number of cores used in multithread to 8. - -athena.py --threads=8 eflowRec/run_ESDPFlowRecoR22_useNewEOverP.py -rc1=$? - -echo "art-result: ${rc1}" diff --git a/Reconstruction/PFlow/PFlowUtils/share/PFlowCalibHitDecorator_jobOptions.py b/Reconstruction/PFlow/PFlowUtils/share/PFlowCalibHitDecorator_jobOptions.py index 6ecaf89f35cee14ff4bd85a9b4563968933d617e..56520ffcdc09b145d1d42b41fa6847719c127245 100644 --- a/Reconstruction/PFlow/PFlowUtils/share/PFlowCalibHitDecorator_jobOptions.py +++ b/Reconstruction/PFlow/PFlowUtils/share/PFlowCalibHitDecorator_jobOptions.py @@ -1,5 +1,5 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PFlowTests/mc16_13TeV/mc16_13TeV.361021.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ1W.recon.ESD.e3569_s3170_r12310_r12253_r12310/ESD.23850840._000295.pool.root.1"] +athenaCommonFlags.FilesInput=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PFlowTests/mc16_13TeV.410470.PhPy8EG_A14_ttbar_hdamp258p75_nonallhad.recon.ESD.e6337_e5984_s3170_r12674/ESD.25732025._000034.pool.root.1"] #Disable reco of trigger, egamma, muons and taus from RecExConfig.RecFlags import rec @@ -29,3 +29,5 @@ include ("RecExCommon/RecExCommon_topOptions.py") #Add decoration to output item list StreamAOD.ItemList+=['xAOD::FlowElementAuxContainer#JetETMissNeutralParticleFlowObjectsAux.+calfe_NLeadingTruthParticleBarcodeEnergyPairs'] StreamAOD.ItemList+=['xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.calclus_NLeadingTruthParticleBarcodeEnergyPairs'] +#Update the name of the FlowElement container to use (not needed in newest ESD because the string used in the c++ matches what is stored in those - this test uses an older ESD which contains old container names) +topSequence.PFlowCalibPFODecoratorAlgorithm.PFOWriteDecorHandleKey_NLeadingTruthParticles="JetETMissNeutralFlowElements.calpfo_NLeadingTruthParticleBarcodeEnergyPairs" diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_egamma_fromESD.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_egamma_fromESD.py index bf41570703844ffabd73f8d59882fbf11109d2fe..24abdd789d76e02354656ef102c6702059b106d7 100644 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_egamma_fromESD.py +++ b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_egamma_fromESD.py @@ -178,6 +178,7 @@ include ("CaloRecEx/CaloRecOutputItemList_jobOptions.py") StreamESD.ItemList+=CaloESDList include ("egammaRec/egammaOutputItemList_jobOptions.py") StreamESD.ItemList+=egammaESDList +StreamESD.ItemList+=["xAOD::EventInfo#*","xAOD::EventAuxInfo#*"] printfunc (StreamESD.ItemList) diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_noAlgs_fromESD.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_noAlgs_fromESD.py index ef587df10dd5fea33bd4277b5baf5988f07532b6..458e92c2527525e4f19fbb58ecf704dc51c1f63d 100644 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_noAlgs_fromESD.py +++ b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_noAlgs_fromESD.py @@ -1,6 +1,9 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags athenaCommonFlags.FilesInput= ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecExRecoTest/mc20e_13TeV/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.ESD.e4993_s3227_r12689/myESD.pool.root"] +from AthenaCommon.GlobalFlags import globalflags +globalflags.ConditionsTag.set_Value_and_Lock("OFLCOND-MC16-SDR-RUN2-08") + from RecExConfig.RecFlags import rec rec.doEgamma.set_Value_and_Lock(False) rec.doMuon.set_Value_and_Lock(False) diff --git a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_refit_fromESD.py b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_refit_fromESD.py index 101c9d0282afd7046aa352adac787aed683bca6d..982d93f36ec54bbcb463470a78dfb1de406138e8 100644 --- a/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_refit_fromESD.py +++ b/Reconstruction/RecExample/RecExRecoTest/share/RecExRecoTest_ART_refit_fromESD.py @@ -178,6 +178,7 @@ include ("CaloRecEx/CaloRecOutputItemList_jobOptions.py") StreamESD.ItemList+=CaloESDList include ("egammaRec/egammaOutputItemList_jobOptions.py") StreamESD.ItemList+=egammaESDList +StreamESD.ItemList+=["xAOD::EventInfo#*","xAOD::EventAuxInfo#*"] printfunc (StreamESD.ItemList) diff --git a/Reconstruction/RecJobTransforms/python/recTransformUtils.py b/Reconstruction/RecJobTransforms/python/recTransformUtils.py index 1b318fd958f928ca4e17cf54311d4fcdbe49d97f..a0175293f720d88cca6843ba283421b6bad7ac76 100644 --- a/Reconstruction/RecJobTransforms/python/recTransformUtils.py +++ b/Reconstruction/RecJobTransforms/python/recTransformUtils.py @@ -108,7 +108,7 @@ def addRecoSubsteps(executorSet): outData = ['ESD', 'HIST_ESD_INT', 'TXT_JIVEXMLTGZ'],)) executorSet.add(athenaExecutor(name = 'ESDtoAOD', skeletonFile = 'RecJobTransforms/skeleton.ESDtoAOD_tf.py', substep = 'e2a', inData = ['ESD'], outData = ['AOD', 'HIST_AOD_INT'])) - executorSet.add(DQMergeExecutor(name = 'DQHistogramMerge', inData = [('HIST_ESD_INT', 'HIST_AOD_INT'), 'HIST_R2A'], outData = ['HIST'])) + executorSet.add(DQMergeExecutor(name = 'DQHistogramMerge', inData = [('HIST_ESD_INT', 'HIST_AOD_INT'), 'HIST_R2A', 'HIST_AOD'], outData = ['HIST'])) executorSet.add(athenaExecutor(name = 'ESDtoDPD', skeletonFile = 'PATJobTransforms/skeleton.ESDtoDPD_tf.py', substep = 'e2d', inData = ['ESD'], outData = [])) executorSet.add(athenaExecutor(name = 'AODtoDPD', skeletonFile = 'PATJobTransforms/skeleton.AODtoDPD_tf.py', diff --git a/Reconstruction/RecoAlgs/IsolationAlgs/src/IsolationBuilder.cxx b/Reconstruction/RecoAlgs/IsolationAlgs/src/IsolationBuilder.cxx index 9e78aec762ba03139078fa60e5a063162bf7558c..10323a0ed286b05ca0a4625c6f111d5d853024b5 100644 --- a/Reconstruction/RecoAlgs/IsolationAlgs/src/IsolationBuilder.cxx +++ b/Reconstruction/RecoAlgs/IsolationAlgs/src/IsolationBuilder.cxx @@ -13,6 +13,7 @@ #include "xAODEgamma/Egamma.h" #include "xAODEgamma/EgammaxAODHelpers.h" #include "xAODEgamma/Photon.h" +#include "xAODEgamma/Electron.h" IsolationBuilder::IsolationBuilder(const std::string& name, ISvcLocator* pSvcLocator) @@ -634,10 +635,18 @@ IsolationBuilder::executeTrackIso( const auto * eg = dynamic_cast<const xAOD::Egamma*>(part); if (eg) { ATH_MSG_DEBUG("Doing track isolation on an egamma particle"); + std::unique_ptr<xAOD::Vertex> trigVtx = nullptr; std::set<const xAOD::TrackParticle*> tracksToExclude; if (xAOD::EgammaHelpers::isElectron(eg)) { tracksToExclude = xAOD::EgammaHelpers::getTrackParticles(eg, m_useBremAssoc); + if (m_isTrigger) { + const xAOD::Electron* el = static_cast<const xAOD::Electron*>(part); + trigVtx = std::make_unique<xAOD::Vertex>(); + trigVtx->makePrivateStore(); + trigVtx->setZ(el->trackParticle()->z0() + el->trackParticle()->vz()); + ATH_MSG_DEBUG("will use a vertex at z = " << trigVtx->z() << " to compute electron track isolation"); + } } else { if (m_allTrackRemoval) { // New (from ??/??/16) : now this gives all // tracks @@ -661,7 +670,7 @@ IsolationBuilder::executeTrackIso( *part, keys.isoTypes, keys.CorrList, - nullptr, + trigVtx.get(), &tracksToExclude); } else { ATH_MSG_DEBUG("Not doing track isolation on an egamma particle"); diff --git a/Reconstruction/RecoAlgs/IsolationAlgs/src/IsolationBuilder.h b/Reconstruction/RecoAlgs/IsolationAlgs/src/IsolationBuilder.h index 02efbfe68c74c844813591ea2e24183017a2f456..6e7bbccb41553fa01d2b7c20da3e4c840d74b7d0 100644 --- a/Reconstruction/RecoAlgs/IsolationAlgs/src/IsolationBuilder.h +++ b/Reconstruction/RecoAlgs/IsolationAlgs/src/IsolationBuilder.h @@ -144,6 +144,9 @@ private: "Handle of the track IsolationTool" }; + /** @brief is the alg run at trigger level */ + Gaudi::Property<bool> m_isTrigger{ this, "IsTrigger", false }; + // FIXME: need to add the electron bremAssoc stuff Gaudi::Property<bool> m_useBremAssoc{ this, "useBremAssoc", diff --git a/Reconstruction/RecoTools/IsolationTool/Root/TrackIsolationTool.cxx b/Reconstruction/RecoTools/IsolationTool/Root/TrackIsolationTool.cxx index 695d9d3135e9bbd64b03933835d311c7bcb50f68..2327ef7ee4fe4b00c198a3fa95c8664dcaf9d05b 100644 --- a/Reconstruction/RecoTools/IsolationTool/Root/TrackIsolationTool.cxx +++ b/Reconstruction/RecoTools/IsolationTool/Root/TrackIsolationTool.cxx @@ -195,7 +195,7 @@ namespace xAOD { ATH_MSG_DEBUG("reject track pt = " << tp->pt()); continue; } else{ - ATH_MSG_DEBUG("Accept track, pt = " << tp->pt()); + ATH_MSG_DEBUG("Accept track " << tp << " pt = " << tp->pt() << " z+vz = " << tp->z0()+tp->vz() << " eta = " << tp->eta() << " phi = " << tp->phi()); } add( input,*tp, result ); diff --git a/Reconstruction/eflowRec/python/PFRun3Config.py b/Reconstruction/eflowRec/python/PFRun3Config.py index 978300133987fc1924df1ae137471c8f43dbc06d..d7dd5d5448996aa8958023b2a05e49eb4e252315 100644 --- a/Reconstruction/eflowRec/python/PFRun3Config.py +++ b/Reconstruction/eflowRec/python/PFRun3Config.py @@ -121,7 +121,11 @@ def PFCfg(inputFlags,**kwargs): #Cache the track extrapolations from TrackToCalo.CaloExtensionBuilderAlgCfg import CaloExtensionBuilderAlgCfg - result.merge(CaloExtensionBuilderAlgCfg(inputFlags)) + # FIXME: This inversion to merge in CAs is a workaround, which can be removed once SiDetElementCondAlgs + # don't depend on Muons/TRT/alignment/otherSiSubdetectorAlignment anymore. + tempCA = CaloExtensionBuilderAlgCfg(inputFlags) + tempCA.merge(result) + result = tempCA #Configure the pflow algorithms PFLeptonSelector=CompFactory.PFLeptonSelector diff --git a/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22.py b/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22.py deleted file mode 100644 index 067ca343bcc84b5e97551efbe9267209080bbb4f..0000000000000000000000000000000000000000 --- a/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22.py +++ /dev/null @@ -1,70 +0,0 @@ -#This file is to run topocluster + pflow reconstruction on an ESD file produced in the release 22 mc16 campaign - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PFlowTests/mc16_13TeV/mc16_13TeV.361021.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ1W.recon.ESD.e3569_s3170_r12310_r12253_r12310/ESD.23850840._000295.pool.root.1"] - -doDumpProperties=True - -#Set some jet flags to ensure we rebuild origin corrected topoclusters -from JetRec.JetRecFlags import jetFlags -jetFlags.useVertices.set_Value_and_Lock(True) -jetFlags.useTracks.set_Value_and_Lock(True) - -#Turn on calotopocluster algorithms, such that we rebuild CaloTopoCluster -from CaloRec.CaloRecFlags import jobproperties -jobproperties.CaloRecFlags.Enabled.set_Value_and_Lock(True) -jobproperties.CaloRecFlags.doCaloCluster.set_Value_and_Lock(True) -jobproperties.CaloRecFlags.doEmCluster.set_Value_and_Lock(False) -jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(True) - -#Turn pflow on -from RecExConfig.RecAlgsFlags import recAlgs -recAlgs.doEFlow.set_Value_and_Lock(True) - -#Disable reco of trigger, egamma, muons -from RecExConfig.RecFlags import rec -rec.doTrigger.set_Value_and_Lock(False) -rec.doEgamma.set_Value_and_Lock(False) -rec.doMuon.set_Value_and_Lock(False) - -#Disable linking of PFO/FE to and from other objects - this won't work because e.g electrons already have links to PFO/FE and -#we cannot overwrite those. -from eflowRec.eflowRecFlags import jobproperties -jobproperties.eflowRecFlags.usePFFlowElementAssoc.set_Value_and_Lock(False) - -#Disable thinning, which would mess up links for e.g taus -from ParticleBuilderOptions.AODFlags import AODFlags -AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False) -AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False) - -#Do not write out TAG file -rec.doWriteTAG.set_Value_and_Lock(False) -#Disable truth reco -rec.doTruth.set_Value_and_Lock(False) -#Don't build AOD CaloCell container -rec.doAODCaloCells.set_Value_and_Lock(False) -#Turn off xAODRingSetConfWriter -rec.doCaloRinger.set_Value_and_Lock(False) - -#Disable VertexCnvAlg -from InDetRecExample.InDetJobProperties import jobproperties -jobproperties.InDetJobProperties.doxAOD.set_Value_and_Lock(False) -#Disable AllExecutedEvents -rec.doFileMetaData.set_Value_and_Lock(False) - -athenaCommonFlags.EvtMax=100 -#Rerun jet finding because constituents (pflow,calocluster) were rebuilt -UserAlgs = ["eflowRec/jetAlgs.py"] -#Rerun taus because we rebuild MET - will get errors if do not rebuild taus -from tauRec.tauRecFlags import tauFlags -tauFlags.isStandalone.set_Value_and_Lock(True) -UserAlgs += ["tauRec/tauRec_jobOptions.py"] -#Rebuild MET from the rebuilt PFO etc -import ROOT -ROOT.gROOT.ProcessLine ('#include "xAODTracking/TrackParticleContainer.h"') -ROOT.gROOT.ProcessLine ('#include "xAODJet/JetContainer.h"') -ROOT.gROOT.ProcessLine ('#include "xAODCaloEvent/CaloClusterContainer.h"') -UserAlgs+=["eflowRec/metAlgs.py"] -UserAlgs+=["METReconstruction/METReconstruction_jobOptions.py"] -include ("RecExCommon/RecExCommon_topOptions.py") -include("eflowRec/RemapItems.py") \ No newline at end of file diff --git a/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22_noTrackMasking.py b/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22_noTrackMasking.py deleted file mode 100644 index 8aefa0899545671419328a04c93276084435c7dc..0000000000000000000000000000000000000000 --- a/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22_noTrackMasking.py +++ /dev/null @@ -1,74 +0,0 @@ -#This file is to run topocluster + pflow reconstruction on an ESD file produced in the release 22 mc16 campaign - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PFlowTests/mc16_13TeV/mc16_13TeV.361021.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ1W.recon.ESD.e3569_s3170_r12310_r12253_r12310/ESD.23850840._000295.pool.root.1"] - -doDumpProperties=True - -#Set some jet flags to ensure we rebuild origin corrected topoclusters -from JetRec.JetRecFlags import jetFlags -jetFlags.useVertices.set_Value_and_Lock(True) -jetFlags.useTracks.set_Value_and_Lock(True) - -#Turn on calotopocluster algorithms, such that we rebuild CaloTopoCluster -from CaloRec.CaloRecFlags import jobproperties -jobproperties.CaloRecFlags.Enabled.set_Value_and_Lock(True) -jobproperties.CaloRecFlags.doCaloCluster.set_Value_and_Lock(True) -jobproperties.CaloRecFlags.doEmCluster.set_Value_and_Lock(False) -jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(True) - -#Turn pflow on -from RecExConfig.RecAlgsFlags import recAlgs -recAlgs.doEFlow.set_Value_and_Lock(True) - -#Disable reco of trigger, egamma, muons -from RecExConfig.RecFlags import rec -rec.doTrigger.set_Value_and_Lock(False) -rec.doEgamma.set_Value_and_Lock(False) -rec.doMuon.set_Value_and_Lock(False) - -#Disable linking of FE to taus - we run tau reco via UserAlgs and so will have to also run the linking there directly -from eflowRec.eflowRecFlags import jobproperties -jobproperties.eflowRecFlags.usePFlowFlowElementTauAssoc.set_Value_and_Lock(False) -#Disable masking of electron and muon tracks -jobproperties.eflowRecFlags.useElectrons.set_Value_and_Lock(False) -jobproperties.eflowRecFlags.useMuons.set_Value_and_Lock(False) - -#Disable thinning, which would mess up links for e.g taus -from ParticleBuilderOptions.AODFlags import AODFlags -AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False) -AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False) - -#Do not write out TAG file -rec.doWriteTAG.set_Value_and_Lock(False) -#Disable truth reco -rec.doTruth.set_Value_and_Lock(False) -#Don't build AOD CaloCell container -rec.doAODCaloCells.set_Value_and_Lock(False) -#Turn off xAODRingSetConfWriter -rec.doCaloRinger.set_Value_and_Lock(False) - -#Disable VertexCnvAlg -from InDetRecExample.InDetJobProperties import jobproperties -jobproperties.InDetJobProperties.doxAOD.set_Value_and_Lock(False) -#Disable AllExecutedEvents -rec.doFileMetaData.set_Value_and_Lock(False) - -athenaCommonFlags.EvtMax=100 -#Rerun jet finding because constituents (pflow,calocluster) were rebuilt -UserAlgs = ["eflowRec/jetAlgs.py"] -#Rerun taus because we rebuild MET - will get errors if do not rebuild taus -from tauRec.tauRecFlags import tauFlags -tauFlags.isStandalone.set_Value_and_Lock(True) -UserAlgs += ["tauRec/tauRec_jobOptions.py"] -#Rerun tau-FE linking -UserAlgs += ["eflowRec/link_tauFE.py"] -#Rebuild MET from the rebuilt PFO etc -import ROOT -ROOT.gROOT.ProcessLine ('#include "xAODTracking/TrackParticleContainer.h"') -ROOT.gROOT.ProcessLine ('#include "xAODJet/JetContainer.h"') -ROOT.gROOT.ProcessLine ('#include "xAODCaloEvent/CaloClusterContainer.h"') -UserAlgs+=["eflowRec/metAlgs.py"] -UserAlgs+=["METReconstruction/METReconstruction_jobOptions.py"] -include ("RecExCommon/RecExCommon_topOptions.py") -include("eflowRec/RemapItems.py") \ No newline at end of file diff --git a/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22_useNewEOverP.py b/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22_useNewEOverP.py deleted file mode 100644 index e358f536807629c61aa57f96fc2d52c9c75a1c1e..0000000000000000000000000000000000000000 --- a/Reconstruction/eflowRec/share/run_ESDPFlowRecoR22_useNewEOverP.py +++ /dev/null @@ -1,73 +0,0 @@ -#This file is to run topocluster + pflow reconstruction on an ESD file produced in the release 22 mc16 campaign - -from AthenaCommon.AthenaCommonFlags import athenaCommonFlags -athenaCommonFlags.FilesInput=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PFlowTests/mc16_13TeV/mc16_13TeV.361021.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ1W.recon.ESD.e3569_s3170_r12310_r12253_r12310/ESD.23850840._000295.pool.root.1"] - -doDumpProperties=True - -#Set some jet flags to ensure we rebuild origin corrected topoclusters -from JetRec.JetRecFlags import jetFlags -jetFlags.useVertices.set_Value_and_Lock(True) -jetFlags.useTracks.set_Value_and_Lock(True) - -#Turn on calotopocluster algorithms, such that we rebuild CaloTopoCluster -from CaloRec.CaloRecFlags import jobproperties -jobproperties.CaloRecFlags.Enabled.set_Value_and_Lock(True) -jobproperties.CaloRecFlags.doCaloCluster.set_Value_and_Lock(True) -jobproperties.CaloRecFlags.doEmCluster.set_Value_and_Lock(False) -jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(True) - -#Turn pflow on -from RecExConfig.RecAlgsFlags import recAlgs -recAlgs.doEFlow.set_Value_and_Lock(True) - -#Disable reco of trigger, egamma, muons -from RecExConfig.RecFlags import rec -rec.doTrigger.set_Value_and_Lock(False) -rec.doEgamma.set_Value_and_Lock(False) -rec.doMuon.set_Value_and_Lock(False) - -#Disable linking of FE to taus - we run tau reco via UserAlgs and so will have to also run the linking there directly -from eflowRec.eflowRecFlags import jobproperties -jobproperties.eflowRecFlags.usePFlowFlowElementTauAssoc.set_Value_and_Lock(False) -#Enable usage of new e/p reference file -jobproperties.eflowRecFlags.useRun2_mc20_EOverP.set_Value_and_Lock(True) - -#Disable thinning, which would mess up links for e.g taus -from ParticleBuilderOptions.AODFlags import AODFlags -AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False) -AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(False) - -#Do not write out TAG file -rec.doWriteTAG.set_Value_and_Lock(False) -#Disable truth reco -rec.doTruth.set_Value_and_Lock(False) -#Don't build AOD CaloCell container -rec.doAODCaloCells.set_Value_and_Lock(False) -#Turn off xAODRingSetConfWriter -rec.doCaloRinger.set_Value_and_Lock(False) - -#Disable VertexCnvAlg -from InDetRecExample.InDetJobProperties import jobproperties -jobproperties.InDetJobProperties.doxAOD.set_Value_and_Lock(False) -#Disable AllExecutedEvents -rec.doFileMetaData.set_Value_and_Lock(False) - -athenaCommonFlags.EvtMax=100 -#Rerun jet finding because constituents (pflow,calocluster) were rebuilt -UserAlgs = ["eflowRec/jetAlgs.py"] -#Rerun taus because we rebuild MET - will get errors if do not rebuild taus -from tauRec.tauRecFlags import tauFlags -tauFlags.isStandalone.set_Value_and_Lock(True) -UserAlgs += ["tauRec/tauRec_jobOptions.py"] -#Rerun tau-FE linking -UserAlgs += ["eflowRec/link_tauFE.py"] -#Rebuild MET from the rebuilt PFO etc -import ROOT -ROOT.gROOT.ProcessLine ('#include "xAODTracking/TrackParticleContainer.h"') -ROOT.gROOT.ProcessLine ('#include "xAODJet/JetContainer.h"') -ROOT.gROOT.ProcessLine ('#include "xAODCaloEvent/CaloClusterContainer.h"') -UserAlgs+=["eflowRec/metAlgs.py"] -UserAlgs+=["METReconstruction/METReconstruction_jobOptions.py"] -include ("RecExCommon/RecExCommon_topOptions.py") -include("eflowRec/RemapItems.py") \ No newline at end of file diff --git a/Reconstruction/egamma/egammaTools/src/EMPIDBuilder.cxx b/Reconstruction/egamma/egammaTools/src/EMPIDBuilder.cxx index d558b4103bfcb868694fa009d06c020329d9b6c4..ba92f2eb19195d3f0f009f0602ac5141014878f5 100644 --- a/Reconstruction/egamma/egammaTools/src/EMPIDBuilder.cxx +++ b/Reconstruction/egamma/egammaTools/src/EMPIDBuilder.cxx @@ -7,6 +7,10 @@ #include "PATCore/AcceptData.h" #include "xAODEgamma/Egamma.h" +namespace { +const SG::AuxElement::Accessor<float> accLH("LHValue"); +} + EMPIDBuilder::EMPIDBuilder(const std::string& type, const std::string& name, const IInterface* parent) @@ -140,10 +144,8 @@ EMPIDBuilder::execute(const EventContext& ctx, xAOD::Egamma* eg) const // save the LHValue only once if (i == 0) { - eg->setLikelihoodValue( - static_cast<float>( - m_electronLHselectors[i]->calculate(ctx, eg, avg_mu)), - m_LHValueName); + accLH(*eg) = static_cast<float>( + m_electronLHselectors[i]->calculate(ctx, eg, avg_mu)); } } diff --git a/Simulation/Digitization/python/PileUpUtils.py b/Simulation/Digitization/python/PileUpUtils.py index c63b2129b171427ca5eee436ac101ff1c3e3c4b6..6c9cc6d7dd681d144876dc36013024f5dd6e2db6 100644 --- a/Simulation/Digitization/python/PileUpUtils.py +++ b/Simulation/Digitization/python/PileUpUtils.py @@ -232,9 +232,6 @@ def scaleNumberOfCollisions(flags): def setupPileUpProfile(flags): bunchStructure = flags.Digitization.PU.BunchStructureConfig - pileUpProfile = flags.Digitization.PU.ProfileConfig - if not bunchStructure or not pileUpProfile: - raise ValueError('Bunch structure and pile-up profile need to be set') # custom pile-up if flags.Digitization.PU.CustomProfile: @@ -242,6 +239,12 @@ def setupPileUpProfile(flags): flags.Digitization.PU.CustomProfile = eval(flags.Digitization.PU.CustomProfile) if isinstance(flags.Digitization.PU.CustomProfile, dict): pileUpProfile = 'RunDependentSimData.PileUpProfile_muRange' + else: + pileUpProfile = flags.Digitization.PU.ProfileConfig + + # sanity check + if not bunchStructure or not pileUpProfile: + raise ValueError('Bunch structure and pile-up profile need to be set') # Setup beam intensity pattern parts = bunchStructure.split('.') diff --git a/Simulation/G4Atlas/G4AtlasApps/python/tbtile_flags.py b/Simulation/G4Atlas/G4AtlasApps/python/tbtile_flags.py index b64ea8e49f2ecfe2f1f7bc44569820f334f35f65..df8d336cab3814b13e22a202d444598dcdbb363c 100644 --- a/Simulation/G4Atlas/G4AtlasApps/python/tbtile_flags.py +++ b/Simulation/G4Atlas/G4AtlasApps/python/tbtile_flags.py @@ -82,8 +82,8 @@ class Theta(JobProperty): #print (name, n_value) if name == "StoredValue": if type(n_value) == int or type (n_value) == float: - if abs(n_value) > 60. and not (abs(abs(n_value)-90.0) < 0.01) : - raise ValueError ('THETA MUST BE IN [-60,60] or +/-90 !!! The selected value %s is not in the range.' %n_value) + if abs(n_value) > 70. and not (abs(abs(n_value)-90.0) < 0.01) : + raise ValueError ('THETA MUST BE IN [-70,70] or +/-90 !!! The selected value %s is not in the range.' %n_value) JobProperty.__setattr__(self, name, n_value) diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfigDb.py b/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfigDb.py index 4762a2defabe2ad10c6c6183189e94bf2d9222ee..1adbf1e48d700cd67546134be61fb30777f84d14 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfigDb.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4AtlasToolsConfigDb.py @@ -29,7 +29,7 @@ addTool("G4AtlasTools.G4GeometryConfig.getATLAS", "Atlas") addTool("G4AtlasTools.G4GeometryConfig.getCavernWorld", "Cavern") addTool("G4AtlasTools.G4GeometryConfig.getG4AtlasDetectorConstructionTool", "G4AtlasDetectorConstructionTool") addTool("G4AtlasTools.G4GeometryConfig.getMaterialDescriptionTool", "MaterialDescriptionTool") -addTool("G4AtlasTools.G4GeometryConfig.getSmartlessnessTool", "SmartlessnessTool") +addTool("G4AtlasTools.G4GeometryConfig.getVoxelDensityTool", "VoxelDensityTool") addTool("G4AtlasTools.G4TestBeamGeometryConfig.getTileTB_Beampipe1", "TileTB_BeamPipe1") addTool("G4AtlasTools.G4TestBeamGeometryConfig.getTileTB_Beampipe2", "TileTB_BeamPipe2") diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryConfig.py b/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryConfig.py index 16c0f17617b160fd5ccccb3827e4f9087ee38002..541f0219f311e48374734a01e52fa87e815b1a92 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryConfig.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryConfig.py @@ -280,8 +280,8 @@ def getMaterialDescriptionTool(name="MaterialDescriptionTool", **kwargs): kwargs.setdefault("TestBeam", True) return CfgMgr.MaterialDescriptionTool(name, **kwargs) -def getSmartlessnessTool(name="SmartlessnessTool", **kwargs): - return CfgMgr.SmartlessnessTool(name, **kwargs) +def getVoxelDensityTool(name="VoxelDensityTool", **kwargs): + return CfgMgr.VoxelDensityTool(name, **kwargs) def getATLAS_RegionCreatorList(): regionCreatorList = [] @@ -435,7 +435,7 @@ def getGeometryConfigurationTools(): # CfgGetter methods for these tools should be defined in the # package containing each tool, so G4AtlasTools in this case geoConfigToolList += ["MaterialDescriptionTool"] - geoConfigToolList += ["SmartlessnessTool"] + geoConfigToolList += ["VoxelDensityTool"] return geoConfigToolList def getG4AtlasDetectorConstructionTool(name="G4AtlasDetectorConstructionTool", **kwargs): diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryToolConfig.py b/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryToolConfig.py index 24b875bffa5791936c8f00ad753bca7c3a551735..f6ccbe12ebd3569d4157cd63a8e32a5a55a8f484 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryToolConfig.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4GeometryToolConfig.py @@ -26,7 +26,7 @@ from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg from AtlasGeoModel.ForDetGeoModelConfig import ForDetGeometryCfg from AtlasGeoModel.CavernGMConfig import CavernGeometryCfg -CylindricalEnvelope, PolyconicalEnvelope, MaterialDescriptionTool,SmartlessnessTool,G4AtlasDetectorConstructionTool,BoxEnvelope=CompFactory.getComps("CylindricalEnvelope","PolyconicalEnvelope","MaterialDescriptionTool","SmartlessnessTool","G4AtlasDetectorConstructionTool","BoxEnvelope") +CylindricalEnvelope, PolyconicalEnvelope, MaterialDescriptionTool,VoxelDensityTool,G4AtlasDetectorConstructionTool,BoxEnvelope=CompFactory.getComps("CylindricalEnvelope","PolyconicalEnvelope","MaterialDescriptionTool","VoxelDensityTool","G4AtlasDetectorConstructionTool","BoxEnvelope") from AthenaCommon.SystemOfUnits import mm, cm, m @@ -489,10 +489,20 @@ def MaterialDescriptionToolCfg(ConfigFlags, name="MaterialDescriptionTool", **kw return result -def SmartlessnessToolCfg(ConfigFlags, name="SmartlessnessTool", **kwargs): +def VoxelDensityToolCfg(ConfigFlags, name="VoxelDensityTool", **kwargs): ## kwargs.setdefault("SomeProperty", aValue) + voxelDensitySettings = {} + if ConfigFlags.Detector.GeometryITkPixel: + voxelDensitySettings["ITkPixelDetector"] = 0.05 + if ConfigFlags.Detector.GeometryITkStrip: + voxelDensitySettings["ITkStrip::Barrel"] = 0.05 + voxelDensitySettings["ITkStrip::ITkStrip_Forward"] = 0.05 + ##The below is only needed temporarily, while we wait for + ##improved naming to be propagated to all necessary geo tags + voxelDensitySettings["ITkStrip::SCT_Forward"] = 0.05 + kwargs.setdefault("VolumeVoxellDensityLevel",voxelDensitySettings) result = ComponentAccumulator() - result.setPrivateTools(SmartlessnessTool(name, **kwargs)) + result.setPrivateTools(VoxelDensityTool(name, **kwargs)) return result @@ -707,7 +717,7 @@ def getGeometryConfigurationTools(ConfigFlags): # package containing each tool, so G4AtlasTools in this case result =ComponentAccumulator() geoConfigToolList += [result.popToolsAndMerge(MaterialDescriptionToolCfg(ConfigFlags))] - geoConfigToolList += [result.popToolsAndMerge(SmartlessnessToolCfg(ConfigFlags))] + geoConfigToolList += [result.popToolsAndMerge(VoxelDensityToolCfg(ConfigFlags))] return result, geoConfigToolList diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfig.py b/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfig.py index d79f218ad86466e95147b3878ef2528c7c55c8f8..5073dbede5b1749ccd3bd239d272b885cedc33b3 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfig.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfig.py @@ -63,9 +63,8 @@ def getPixelPhysicsRegionTool(name='PixelPhysicsRegionTool', **kwargs): def getSCTPhysicsRegionTool(name='SCTPhysicsRegionTool', **kwargs): kwargs.setdefault("RegionName", 'SCT') - volumeList = ['SCT::BRLSensor', 'SCT::BRLSensorSS', 'SCT::BRLSensorMS', - 'SCT::ECSensor0', 'SCT::ECSensor1', 'SCT::ECSensor2', - 'SCT::ECSensor3', 'SCT::ECSensor4', 'SCT::ECSensor5'] + volumeList = ['SCT::BRLSensor','SCT::ECSensor0', 'SCT::ECSensor1', + 'SCT::ECSensor2','SCT::ECSensor3'] kwargs.setdefault("VolumeList", volumeList) kwargs.setdefault("ElectronCut", 0.05) kwargs.setdefault("PositronCut", 0.05) diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfigNew.py b/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfigNew.py index 257048f4c835e01338bc9eea244f9265b4211ec4..70b097cb3370c0660d4beff61958f1854229abf4 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfigNew.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4PhysicsRegionConfigNew.py @@ -64,9 +64,8 @@ def PixelPhysicsRegionToolCfg(ConfigFlags, name='PixelPhysicsRegionTool', **kwar def SCTPhysicsRegionToolCfg(ConfigFlags, name='SCTPhysicsRegionTool', **kwargs): kwargs.setdefault("RegionName", 'SCT') - volumeList = ['SCT::BRLSensor', 'SCT::BRLSensorSS', 'SCT::BRLSensorMS', - 'SCT::ECSensor0', 'SCT::ECSensor1', 'SCT::ECSensor2', - 'SCT::ECSensor3', 'SCT::ECSensor4', 'SCT::ECSensor5'] + volumeList = ['SCT::BRLSensor', 'SCT::ECSensor0', 'SCT::ECSensor1', + 'SCT::ECSensor2','SCT::ECSensor3'] kwargs.setdefault("VolumeList", volumeList) kwargs.setdefault("ElectronCut", 0.05) kwargs.setdefault("PositronCut", 0.05) @@ -84,7 +83,7 @@ def ITkPixelPhysicsRegionToolCfg(ConfigFlags, name='ITkPixelPhysicsRegionTool', def ITkStripPhysicsRegionToolCfg(ConfigFlags, name='ITkStripPhysicsRegionTool', **kwargs): kwargs.setdefault("RegionName", 'ITkStrip') - volumeList = ['ITkStrip::BRLSensor', 'ITkStrip::BRLSensorSS', 'ITkStrip::BRLSensorMS', + volumeList = ['ITkStrip::BRLSensorSS', 'ITkStrip::BRLSensorMS', 'ITkStrip::ECSensor0', 'ITkStrip::ECSensor1', 'ITkStrip::ECSensor2', 'ITkStrip::ECSensor3', 'ITkStrip::ECSensor4', 'ITkStrip::ECSensor5'] kwargs.setdefault("VolumeList", volumeList) diff --git a/Simulation/G4Atlas/G4AtlasTools/python/G4TestBeamGeometryConfig.py b/Simulation/G4Atlas/G4AtlasTools/python/G4TestBeamGeometryConfig.py index 7324bb6e32001f292360770fe5a02fcc543779f6..1d2589bf2dab03c943e7472c5bfc1c451db7c659 100644 --- a/Simulation/G4Atlas/G4AtlasTools/python/G4TestBeamGeometryConfig.py +++ b/Simulation/G4Atlas/G4AtlasTools/python/G4TestBeamGeometryConfig.py @@ -110,7 +110,7 @@ def getTileTB_CALOEnvelope(name="TileTB_CALO", **kwargs): theta=simFlags.Theta.get_Value() z=simFlags.Z.get_Value() eta=0.0 - if abs(theta) < 60.01: + if abs(theta) < 70.01: # Mode 2 -> User enters theta!=+/-90 and Z # Z is the distance from center of the module to the desired # entrace point calculated at R=2290 (start of tilecal diff --git a/Simulation/G4Atlas/G4AtlasTools/src/SmartlessnessTool.cxx b/Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.cxx similarity index 69% rename from Simulation/G4Atlas/G4AtlasTools/src/SmartlessnessTool.cxx rename to Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.cxx index 47169437f0cec847ebaabc888f91be8f55ee25c4..33586accb5396ae5e2fa45f2629fe1a477c8e3e2 100644 --- a/Simulation/G4Atlas/G4AtlasTools/src/SmartlessnessTool.cxx +++ b/Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.cxx @@ -3,7 +3,7 @@ */ // Primary include -#include "SmartlessnessTool.h" +#include "VoxelDensityTool.h" // Geant4 includes #include "G4LogicalVolumeStore.hh" @@ -11,24 +11,24 @@ //============================================================================= // Standard constructor, initializes variables //============================================================================= -SmartlessnessTool::SmartlessnessTool(const std::string& type, +VoxelDensityTool::VoxelDensityTool(const std::string& type, const std::string& name, const IInterface* parent) : GeometryConfigurationToolBase(type, name, parent) { } -StatusCode SmartlessnessTool::preGeometryConfigure() const +StatusCode VoxelDensityTool::preGeometryConfigure() const { - ATH_MSG_DEBUG("SmartlessnessTool::preGeometryConfigure()"); + ATH_MSG_DEBUG("VoxelDensityTool::preGeometryConfigure()"); return StatusCode::SUCCESS; } -StatusCode SmartlessnessTool::postGeometryConfigure() const +StatusCode VoxelDensityTool::postGeometryConfigure() const { - ATH_MSG_INFO("SmartlessnessTool::postGeometryConfigure()"); - // Set smartlessness + ATH_MSG_INFO("VoxelDensityTool::postGeometryConfigure()"); + // Set VoxelDensity G4LogicalVolumeStore *logicalVolumeStore = G4LogicalVolumeStore::GetInstance(); if (logicalVolumeStore->size() == 0) { ATH_MSG_ERROR( "G4 logical volume store is empty." ); @@ -39,29 +39,29 @@ StatusCode SmartlessnessTool::postGeometryConfigure() const for (auto* ilv : *logicalVolumeStore ) { if ( ilv->GetName() == muonSys ) { ilv->SetSmartless( 0.1 ); - ATH_MSG_INFO( "Set smartlessness for Muon::MuonSys to 0.1" ); + ATH_MSG_INFO( "Set VoxelDensity for Muon::MuonSys to 0.1" ); ilvMuonSys = true; } else if ( ilv->GetName() == embSTAC ) { ilv->SetSmartless( 0.5 ); - ATH_MSG_INFO( "Set smartlessness for LArMgr::LAr::EMB::STAC to 0.5" ); + ATH_MSG_INFO( "Set VoxelDensity for LArMgr::LAr::EMB::STAC to 0.5" ); ilvEmbSTAC = true; } //Now for any volumes set via job property std::pair<volume name, value>... - for (auto& volToSet:m_volumeSmartlessLevel) { + for (auto& volToSet:m_volumeVoxelDensityLevel) { if (ilv->GetName().contains(volToSet.first)) { ilv->SetSmartless(volToSet.second); - ATH_MSG_INFO("Set smartlessness for "<<ilv->GetName()<<" to "<<volToSet.second); + ATH_MSG_INFO("Set VoxelDensity for "<<ilv->GetName()<<" to "<<volToSet.second); } } } if (ilvMuonSys == false) { - ATH_MSG_INFO( "Muon::MuonSys not in G4 logical volume store. Smartlessness not set." ); + ATH_MSG_INFO( "Muon::MuonSys not in G4 logical volume store. VoxelDensity not set." ); } if (ilvEmbSTAC == false) { - ATH_MSG_INFO( "LArMgr::LAr::EMB::STAC not in G4 logical volume store. Smartlessness not set." ); + ATH_MSG_INFO( "LArMgr::LAr::EMB::STAC not in G4 logical volume store. VoxelDensity not set." ); } return StatusCode::SUCCESS; diff --git a/Simulation/G4Atlas/G4AtlasTools/src/SmartlessnessTool.h b/Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.h similarity index 50% rename from Simulation/G4Atlas/G4AtlasTools/src/SmartlessnessTool.h rename to Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.h index f0c2b78ef4aedb79d77caf8e20cdb60fc7921e72..e96fc2a6ba3740561405d0421cc5e994f2f5fa22 100644 --- a/Simulation/G4Atlas/G4AtlasTools/src/SmartlessnessTool.h +++ b/Simulation/G4Atlas/G4AtlasTools/src/VoxelDensityTool.h @@ -2,14 +2,14 @@ Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -#ifndef G4ATLASTOOLS_SMARTLESSNESSTOOL_H -#define G4ATLASTOOLS_SMARTLESSNESSTOOL_H +#ifndef G4ATLASTOOLS_VOXELDENSITYTOOL_H +#define G4ATLASTOOLS_VOXELDENSITYTOOL_H // G4Atlas includes #include "G4AtlasTools/GeometryConfigurationToolBase.h" -/** @class SmartlessnessTool SmartlessnessTool.h "G4AtlasTools/SmartlessnessTool.h" +/** @class VoxelDensityTool VoxelDensityTool.h "G4AtlasTools/VoxelDensityTool.h" * * Class to allow for not-standard material construction * @@ -17,23 +17,23 @@ * @date 2016-08-16 */ -class SmartlessnessTool : public GeometryConfigurationToolBase +class VoxelDensityTool : public GeometryConfigurationToolBase { public: /// Standard constructor - SmartlessnessTool(const std::string& type, const std::string& name, + VoxelDensityTool(const std::string& type, const std::string& name, const IInterface* parent); /// Destructor - virtual ~SmartlessnessTool() = default; + virtual ~VoxelDensityTool() = default; /// Configure method virtual StatusCode preGeometryConfigure() const override final; virtual StatusCode postGeometryConfigure() const override final; private: - Gaudi::Property<std::map<std::string,double>> m_volumeSmartlessLevel{this, "VolumeSmartlessLevel", {}, "Allow setting of indivial volumes' smartless level"}; + Gaudi::Property<std::map<std::string,double>> m_volumeVoxelDensityLevel{this, "VolumeVoxellDensityLevel", {}, "Allow setting of indivial volumes' voxel density level"}; }; -#endif // G4ATLASTOOLS_SMARTLESSNESSTOOL_H +#endif // G4ATLASTOOLS_VOXELDENSITYTOOL_H diff --git a/Simulation/G4Atlas/G4AtlasTools/src/components/G4AtlasTools_entries.cxx b/Simulation/G4Atlas/G4AtlasTools/src/components/G4AtlasTools_entries.cxx index 5337ad2efa30a45b842b35947e4ed957d9b5c66a..5f78bd0c9fdebb90cd28729445b4453ceaa2ce95 100644 --- a/Simulation/G4Atlas/G4AtlasTools/src/components/G4AtlasTools_entries.cxx +++ b/Simulation/G4Atlas/G4AtlasTools/src/components/G4AtlasTools_entries.cxx @@ -12,7 +12,7 @@ #include "G4AtlasTools/DetectorFieldManagerTool.h" #include "../G4ThreadInitTool.h" #include "../MaterialDescriptionTool.h" -#include "../SmartlessnessTool.h" +#include "../VoxelDensityTool.h" DECLARE_COMPONENT( DetectorGeometryBase ) DECLARE_COMPONENT( CylindricalEnvelope ) @@ -28,4 +28,4 @@ DECLARE_COMPONENT( GlobalFieldManagerTool ) DECLARE_COMPONENT( DetectorFieldManagerTool ) DECLARE_COMPONENT( G4ThreadInitTool ) DECLARE_COMPONENT( MaterialDescriptionTool ) -DECLARE_COMPONENT( SmartlessnessTool ) +DECLARE_COMPONENT( VoxelDensityTool ) diff --git a/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py b/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py index d8a9d802ea650cdbc11ae9688643e8b40bbb5eed..c1a038369eff69cce1c3cdf9ef261a8dc07eab8f 100644 --- a/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py +++ b/Simulation/ISF/ISF_Config/python/ISF_MainConfig.py @@ -191,10 +191,6 @@ def getKernel_GenericSimulator(name="ISF_Kernel_GenericSimulator", **kwargs): from ISF_Algorithms.ISF_AlgorithmsConf import ISF__SimKernel SimKernel = ISF__SimKernel(name, **kwargs) - ##FIXME shouldn't really be doing this here - from AthenaCommon.AlgSequence import AlgSequence - topSequence = AlgSequence() - topSequence += SimKernel return SimKernel ############## Simulator: GenericSimulatorMT ############### @@ -219,10 +215,6 @@ def getKernel_GenericSimulatorMT(name="ISF_Kernel_GenericSimulatorMT", **kwargs) from ISF_Algorithms.ISF_AlgorithmsConf import ISF__SimKernelMT SimKernelMT = ISF__SimKernelMT(name, **kwargs) - ##FIXME shouldn't really be doing this here - from AthenaCommon.AlgSequence import AlgSequence - topSequence = AlgSequence() - topSequence += SimKernelMT return SimKernelMT ############## Simulator: GenericSimulatorNoG4 ############### diff --git a/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py b/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py index 03148705a2d012f8afe84e2a2b73ec497cf81410..0b837f79f207112f9a71a03d1838da8475380256 100644 --- a/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py +++ b/Simulation/ISF/ISF_Config/share/ISF_ConfigJobInclude.py @@ -152,6 +152,7 @@ topSeq += getAlgorithm("BeamEffectsAlg") collection_merger_alg = getAlgorithm('ISF_CollectionMerger') SimKernel = getAlgorithm(ISF_Flags.Simulator.KernelName()) +topSeq += SimKernel if ISF_Flags.ValidationMode(): topSeq += getAlgorithm("ISF_SimHitTreeCreator") @@ -177,7 +178,7 @@ createSimulationParametersMetadata() configureRunNumberOverrides() if ISF_Flags.HITSMergingRequired.anyOn(): - topSequence += collection_merger_alg + topSeq += collection_merger_alg #-------------------------------------------------------------- # Post kernel configuration @@ -199,7 +200,7 @@ if ISF_Flags.DumpStoreGate() : if ISF_Flags.RunVP1() : # VP1 part (better switch off PerMon when using VP1) from VP1Algs.VP1AlgsConf import VP1Alg - topSequence += VP1Alg() + topSeq += VP1Alg() elif ISF_Flags.DoPerfMonStats() : # Performance Monitoring (VP1 does not like this) @@ -213,7 +214,7 @@ if ISF_Flags.DumpMcEvent() : # McEventCollection Dumper DumpMC = CfgMgr.DumpMC("DumpMC") DumpMC.McEventKey = "TruthEvent" - topSequence += DumpMC + topSeq += DumpMC if ISF_Flags.RunValgrind() : @@ -225,4 +226,4 @@ if ISF_Flags.RunValgrind() : ServiceMgr += valgrindSvc # useful for debugging: -printfunc (topSequence) +printfunc (topSeq) diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/CMakeLists.txt b/Simulation/ISF/ISF_Core/ISF_Algorithms/CMakeLists.txt index 42944ce5690b58a3de7f9e33ddd0093097813d49..7036f3cc549c48d185179a04d0f35aaab807100e 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/CMakeLists.txt +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/CMakeLists.txt @@ -18,16 +18,16 @@ atlas_add_component( ISF_Algorithms INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS} LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} GaudiKernel AthenaBaseComps StoreGateLib AtlasDetDescr GeneratorObjects HepMC_InterfacesLib - ISF_Event ISF_InterfacesLib PmbCxxUtils InDetSimEvent LArSimEvent TileSimEvent - MuonSimEvent TrackRecordLib ) + ISF_Event ISF_InterfacesLib ISF_HepMC_Interfaces PmbCxxUtils InDetSimEvent + CaloSimEvent LArSimEvent TileSimEvent MuonSimEvent TrackRecordLib RecEvent ) atlas_add_test( CollectionMerger_test SOURCES test/CollectionMerger_test.cxx src/CollectionMerger.h src/CollectionMerger.cxx INCLUDE_DIRS ${GTEST_INCLUDE_DIRS} #${GMOCK_INCLUDE_DIRS} LINK_LIBRARIES TestTools GaudiKernel AthenaBaseComps AtlasDetDescr - ISF_Event ISF_InterfacesLib PmbCxxUtils InDetSimEvent LArSimEvent TileSimEvent - MuonSimEvent ${GTEST_LIBRARIES} #${GMOCK_LIBRARIES} + ISF_Event ISF_InterfacesLib PmbCxxUtils InDetSimEvent CaloSimEvent LArSimEvent + TileSimEvent MuonSimEvent RecEvent ${GTEST_LIBRARIES} #${GMOCK_LIBRARIES} ENVIRONMENT "JOBOPTSEARCHPATH=${CMAKE_CURRENT_SOURCE_DIR}/share" ) atlas_add_test(collection_merger_helpers_tests diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfig.py b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfig.py index c7779981e4d6196afe23253ee0f36958cac94d4a..41bcba5f31510a4cc383bc9d2a99908b41e85345 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfig.py +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from AthenaCommon import CfgMgr @@ -48,3 +48,96 @@ def getCollectionMerger(name="ISF_CollectionMerger", **kwargs): def getSimHitTreeCreator(name="ISF_SimHitTreeCreator", **kwargs): return CfgMgr.ISF__SimHitTreeCreator(name, **kwargs) + +def getSimEventFilter(name="ISF_SimEventFilter", **kwargs): + kwargs.setdefault( "InputHardScatterCollection", "BeamTruthEvent") + kwargs.setdefault( "GenParticleCommonFilters", ['ISF_ParticlePositionFilterDynamic','ISF_EtaPhiFilter','ISF_GenParticleInteractingFilter'] ) + kwargs.setdefault( "GenParticleOldFilters", ['ISF_ParticleFinalStateFilter'] ) + kwargs.setdefault( "GenParticleNewFilters", ['ISF_ParticleSimWhiteList_ExtraParticles'] ) + + from ISF_Algorithms.ISF_AlgorithmsConf import ISF__SimEventFilter + simEventFilter = ISF__SimEventFilter(name, **kwargs) + return simEventFilter + +def getInvertedSimEventFilter(name="ISF_InvertedSimEventFilter", **kwargs): + kwargs.setdefault("InvertFilter", True) + return getSimEventFilter(name, **kwargs) + +def getRenameHitCollections(name="RenameHitCollections", **kwargs): + kwargs.setdefault( "InputMcEventCollection", "TruthEventOLD" ) + kwargs.setdefault( "OutputMcEventCollection", "TruthEvent" ) + kwargs.setdefault( "InputCaloEntryLayer", "CaloEntryLayerOLD" ) + kwargs.setdefault( "InputMuonEntryLayer", "MuonEntryLayerOLD" ) + kwargs.setdefault( "InputMuonExitLayer", "MuonExitLayerOLD" ) + kwargs.setdefault( "OutputCaloEntryLayer", "CaloEntryLayer" ) + kwargs.setdefault( "OutputMuonEntryLayer", "MuonEntryLayer" ) + kwargs.setdefault( "OutputMuonExitLayer", "MuonExitLayer" ) + + from AthenaCommon.DetFlags import DetFlags + if DetFlags.simulate.BCM_on(): + kwargs.setdefault( "InputBCMHits", "BCMHitsOLD" ) + kwargs.setdefault( "InputBLMHits", "BLMHitsOLD" ) + kwargs.setdefault( "OutputBCMHits", "BCMHits" ) + kwargs.setdefault( "OutputBLMHits", "BLMHits" ) + if DetFlags.simulate.Pixel_on(): + kwargs.setdefault( "InputPixelHits", "PixelHitsOLD" ) + kwargs.setdefault( "OutputPixelHits", "PixelHits" ) + if DetFlags.simulate.SCT_on(): + kwargs.setdefault( "InputSCTHits", "SCT_HitsOLD" ) + kwargs.setdefault( "OutputSCTHits", "SCT_Hits" ) + if DetFlags.simulate.TRT_on(): + kwargs.setdefault( "InputTRTUncompressedHits", "TRTUncompressedHitsOLD" ) + kwargs.setdefault( "OutputTRTUncompressedHits", "TRTUncompressedHits" ) + + if DetFlags.simulate.LAr_on(): + kwargs.setdefault( "InputLArEMBHits", "LArHitEMBOLD" ) + kwargs.setdefault( "InputLArEMECHits", "LArHitEMECOLD" ) + kwargs.setdefault( "InputLArFCALHits", "LArHitFCALOLD" ) + kwargs.setdefault( "InputLArHECHits", "LArHitHECOLD" ) + kwargs.setdefault( "OutputLArEMBHits", "LArHitEMB" ) + kwargs.setdefault( "OutputLArEMECHits", "LArHitEMEC" ) + kwargs.setdefault( "OutputLArFCALHits", "LArHitFCAL" ) + kwargs.setdefault( "OutputLArHECHits", "LArHitHEC" ) + #TODO: proper treatment of calibration hits + #kwargs.setdefault( "InputLArActiveCalibHits", "LArCalibrationHitActive") + #kwargs.setdefault( "InputLArInactiveCalibHits", "LArCalibrationHitInactive") + #kwargs.setdefault( "InputLArDeadCalibHits", "LArCalibrationHitDeadMaterial") + kwargs.setdefault( "OutputLArActiveCalibHits", "LArCalibrationHitActive") + kwargs.setdefault( "OutputLArInactiveCalibHits", "LArCalibrationHitInactive") + kwargs.setdefault( "OutputLArDeadCalibHits", "LArCalibrationHitDeadMaterial") + + if DetFlags.simulate.Tile_on(): + kwargs.setdefault( "InputTileHits", "TileHitVecOLD" ) + kwargs.setdefault( "OutputTileHits", "TileHitVec" ) + #TODO: proper treatment of calibration hits + #kwargs.setdefault( "InputTileActiveCalibHits", "TileCalibHitActiveCellOLD") + #kwargs.setdefault( "InputTileInactiveCalibHits", "TileCalibHitInactiveCellOLD") + #kwargs.setdefault( "InputTileDeadCalibHits", "TileCalibHitDeadMaterialOLD") + kwargs.setdefault( "OutputTileActiveCalibHits", "TileCalibHitActiveCell") + kwargs.setdefault( "OutputTileInactiveCalibHits", "TileCalibHitInactiveCell") + kwargs.setdefault( "OutputTileDeadCalibHits", "TileCalibHitDeadMaterial") + if DetFlags.simulate.Tile_on() and not DetFlags.simulate.HGTD_on(): + kwargs.setdefault( "InputMBTSHits", "MBTSHitsOLD" ) + kwargs.setdefault( "OutputMBTSHits", "MBTSHits" ) + + if DetFlags.simulate.CSC_on(): + kwargs.setdefault( "InputCSCHits", "CSC_HitsOLD" ) + kwargs.setdefault( "OutputCSCHits", "CSC_Hits" ) + if DetFlags.simulate.MDT_on(): + kwargs.setdefault( "InputMDTHits", "MDT_HitsOLD" ) + kwargs.setdefault( "OutputMDTHits", "MDT_Hits" ) + if DetFlags.simulate.RPC_on(): + kwargs.setdefault( "InputRPCHits", "RPC_HitsOLD" ) + kwargs.setdefault( "OutputRPCHits", "RPC_Hits" ) + if DetFlags.simulate.TGC_on(): + kwargs.setdefault( "InputTGCHits", "TGC_HitsOLD" ) + kwargs.setdefault( "OutputTGCHits", "TGC_Hits" ) + if DetFlags.simulate.Micromegas_on(): + kwargs.setdefault( "InputMMHits", "MicromegasSensitiveDetectorOLD" ) + kwargs.setdefault( "OutputMMHits", "MicromegasSensitiveDetector" ) + if DetFlags.simulate.sTGC_on(): + kwargs.setdefault( "InputsTGCHits", "sTGCSensitiveDetectorOLD" ) + kwargs.setdefault( "OutputsTGCHits", "sTGCSensitiveDetector" ) + + from ISF_Algorithms.ISF_AlgorithmsConf import ISF__RenameHitCollectionsAlg + return ISF__RenameHitCollectionsAlg(name, **kwargs) diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfigDb.py b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfigDb.py index fe206d04c3d2bafb601e5ad6a4dfec627cc027fe..482a27e002dc49c9953f07ae2052bf09358a25f7 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfigDb.py +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfigDb.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration """ Configuration database for ISF_Algorithms package @@ -9,3 +9,6 @@ from AthenaCommon.CfgGetter import addAlgorithm # Common tools, services and algorithms used by jobs addAlgorithm("ISF_Algorithms.ISF_AlgorithmsConfig.getCollectionMerger", "ISF_CollectionMerger") addAlgorithm("ISF_Algorithms.ISF_AlgorithmsConfig.getSimHitTreeCreator", "ISF_SimHitTreeCreator") +addAlgorithm("ISF_Algorithms.ISF_AlgorithmsConfig.getSimEventFilter", "ISF_SimEventFilter") +addAlgorithm("ISF_Algorithms.ISF_AlgorithmsConfig.getInvertedSimEventFilter", "ISF_InvertedSimEventFilter") +addAlgorithm("ISF_Algorithms.ISF_AlgorithmsConfig.getRenameHitCollections", "RenameHitCollections") diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfigNew.py b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfigNew.py new file mode 100644 index 0000000000000000000000000000000000000000..b2f095b0519e17047d18836792580b31c8a22c8b --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/python/ISF_AlgorithmsConfigNew.py @@ -0,0 +1,110 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + +from ISF_HepMC_Tools import ParticleSimWhiteList_ExtraParticlesCfg, ParticleFinalStateFilterCfg, GenParticleInteractingFilterCfg, EtaPhiFilterCfg, ParticlePositionFilterDynamicCfg + +def SimEventFilterCfg(flags, name="ISF_SimEventFilter", sequenceName='SimSequence', **kwargs): + result = ComponentAccumulator() + kwargs.setdefault( "InputHardScatterCollection", "BeamTruthEvent") + kwargs.setdefault( "GenParticleCommonFilters", [result.popToolsAndMerge(ParticlePositionFilterDynamicCfg(flags)), + result.popToolsAndMerge(EtaPhiFilterCfg(flags)), + result.popToolsAndMerge(GenParticleInteractingFilterCfg(flags))] ) + kwargs.setdefault( "GenParticleOldFilters", [result.popToolsAndMerge(ParticleFinalStateFilterCfg(flags))] ) + kwargs.setdefault( "GenParticleNewFilters", [result.popToolsAndMerge(ParticleSimWhiteList_ExtraParticlesCfg(flags))] ) + + result.addEventAlgo(CompFactory.ISF.SimEventFilter(name, **kwargs), sequenceName) # TODO Need to ensure that sequence has been created + return result + +def InvertedSimEventFilterCfg(flags, name="ISF_InvertedSimEventFilter", sequenceName='CopyHitSequence', **kwargs): + kwargs.setdefault("InvertFilter", True) + return SimEventFilterCfg(flags, name, sequenceName, **kwargs) + +def RenameHitCollectionsCfg(flags, name="RenameHitCollections", sequenceName='CopyHitSequence', **kwargs): + result = ComponentAccumulator() + kwargs.setdefault( "InputMcEventCollection", "TruthEventOLD" ) + kwargs.setdefault( "OutputMcEventCollection", "TruthEvent" ) + kwargs.setdefault( "InputCaloEntryLayer", "CaloEntryLayerOLD" ) + kwargs.setdefault( "InputMuonEntryLayer", "MuonEntryLayerOLD" ) + kwargs.setdefault( "InputMuonExitLayer", "MuonExitLayerOLD" ) + kwargs.setdefault( "OutputCaloEntryLayer", "CaloEntryLayer" ) + kwargs.setdefault( "OutputMuonEntryLayer", "MuonEntryLayer" ) + kwargs.setdefault( "OutputMuonExitLayer", "MuonExitLayer" ) + + if flags.Detector.EnableBCM: + kwargs.setdefault( "InputBCMHits", "BCMHitsOLD" ) + kwargs.setdefault( "InputBLMHits", "BLMHitsOLD" ) + kwargs.setdefault( "OutputBCMHits", "BCMHits" ) + kwargs.setdefault( "OutputBLMHits", "BLMHits" ) + if flags.Detector.EnablePixel: + kwargs.setdefault( "InputPixelHits", "PixelHitsOLD" ) + kwargs.setdefault( "OutputPixelHits", "PixelHits" ) + if flags.Detector.EnableSCT: + kwargs.setdefault( "InputSCTHits", "SCT_HitsOLD" ) + kwargs.setdefault( "OutputSCTHits", "SCT_Hits" ) + if flags.Detector.EnableTRT: + kwargs.setdefault( "InputTRTUncompressedHits", "TRTUncompressedHitsOLD" ) + kwargs.setdefault( "OutputTRTUncompressedHits", "TRTUncompressedHits" ) + if flags.Detector.EnableITkPixel: + kwargs.setdefault( "InputITkPixelHits", "ITkPixelHitsOLD" ) + kwargs.setdefault( "OutputITkPixelHits", "ITkPixelHits" ) + if flags.Detector.EnableITkStrip: + kwargs.setdefault( "InputITkStripHits", "ITkStripHitsOLD" ) + kwargs.setdefault( "OutputITkStripHits", "ITkStripHits" ) + + if flags.Detector.EnableLAr: + kwargs.setdefault( "InputLArEMBHits", "LArHitEMBOLD" ) + kwargs.setdefault( "InputLArEMECHits", "LArHitEMECOLD" ) + kwargs.setdefault( "InputLArFCALHits", "LArHitFCALOLD" ) + kwargs.setdefault( "InputLArHECHits", "LArHitHECOLD" ) + kwargs.setdefault( "OutputLArEMBHits", "LArHitEMB" ) + kwargs.setdefault( "OutputLArEMECHits", "LArHitEMEC" ) + kwargs.setdefault( "OutputLArFCALHits", "LArHitFCAL" ) + kwargs.setdefault( "OutputLArHECHits", "LArHitHEC" ) + #TODO: proper treatment of calibration hits + #kwargs.setdefault( "InputLArActiveCalibHits", "LArCalibrationHitActive") + #kwargs.setdefault( "InputLArInactiveCalibHits", "LArCalibrationHitInactive") + #kwargs.setdefault( "InputLArDeadCalibHits", "LArCalibrationHitDeadMaterial") + kwargs.setdefault( "OutputLArActiveCalibHits", "LArCalibrationHitActive") + kwargs.setdefault( "OutputLArInactiveCalibHits", "LArCalibrationHitInactive") + kwargs.setdefault( "OutputLArDeadCalibHits", "LArCalibrationHitDeadMaterial") + + if flags.Detector.EnableTile: + kwargs.setdefault( "InputTileHits", "TileHitVecOLD" ) + kwargs.setdefault( "OutputTileHits", "TileHitVec" ) + #TODO: proper treatment of calibration hits + #kwargs.setdefault( "InputTileActiveCalibHits", "TileCalibHitActiveCellOLD") + #kwargs.setdefault( "InputTileInactiveCalibHits", "TileCalibHitInactiveCellOLD") + #kwargs.setdefault( "InputTileDeadCalibHits", "TileCalibHitDeadMaterialOLD") + kwargs.setdefault( "OutputTileActiveCalibHits", "TileCalibHitActiveCell") + kwargs.setdefault( "OutputTileInactiveCalibHits", "TileCalibHitInactiveCell") + kwargs.setdefault( "OutputTileDeadCalibHits", "TileCalibHitDeadMaterial") + if flags.Detector.EnableMBTS: + kwargs.setdefault( "InputMBTSHits", "MBTSHitsOLD" ) + kwargs.setdefault( "OutputMBTSHits", "MBTSHits" ) + if flags.Detector.EnableHGTD: + kwargs.setdefault( "InputHGTDHits", "HGTD_HitsOLD" ) + kwargs.setdefault( "OutputHGTDHits", "HGTD_Hits" ) + + if flags.Detector.EnableCSC: + kwargs.setdefault( "InputCSCHits", "CSC_HitsOLD" ) + kwargs.setdefault( "OutputCSCHits", "CSC_Hits" ) + if flags.Detector.EnableMDT: + kwargs.setdefault( "InputMDTHits", "MDT_HitsOLD" ) + kwargs.setdefault( "OutputMDTHits", "MDT_Hits" ) + if flags.Detector.EnableRPC: + kwargs.setdefault( "InputRPCHits", "RPC_HitsOLD" ) + kwargs.setdefault( "OutputRPCHits", "RPC_Hits" ) + if flags.Detector.EnableTGC: + kwargs.setdefault( "InputTGCHits", "TGC_HitsOLD" ) + kwargs.setdefault( "OutputTGCHits", "TGC_Hits" ) + if flags.Detector.EnableMM: + kwargs.setdefault( "InputMMHits", "MicromegasSensitiveDetectorOLD" ) + kwargs.setdefault( "OutputMMHits", "MicromegasSensitiveDetector" ) + if flags.Detector.EnablesTGC: + kwargs.setdefault( "InputsTGCHits", "sTGCSensitiveDetectorOLD" ) + kwargs.setdefault( "OutputsTGCHits", "sTGCSensitiveDetector" ) + + result.addEventAlgo(CompFactory.ISF.RenameHitCollectionsAlg(name, **kwargs), sequenceName) # TODO Need to ensure that sequence has been created + return result diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/RenameHitCollectionsAlg.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/RenameHitCollectionsAlg.cxx new file mode 100644 index 0000000000000000000000000000000000000000..d9bf935775684c6abcc08d0d5ad4a08383807ed8 --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/RenameHitCollectionsAlg.cxx @@ -0,0 +1,155 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "RenameHitCollectionsAlg.h" + +/** Constructor */ +ISF::RenameHitCollectionsAlg::RenameHitCollectionsAlg( const std::string& name, ISvcLocator* pSvcLocator ) : + ::AthReentrantAlgorithm( name, pSvcLocator ) +{ +} + + +/** Athena Algorithm initialize */ +StatusCode ISF::RenameHitCollectionsAlg::initialize() +{ + ATH_CHECK( initializeVarHandleKey(m_inputMcEventCollection ) ); + ATH_CHECK( initializeVarHandleKey(m_inputBCMHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputBLMHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputPixelHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputSCTHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputTRTUncompressedHits) ); + + ATH_CHECK( initializeVarHandleKey(m_inputLArEMBHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputLArEMECHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputLArFCALHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputLArHECHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputLArActiveCalibHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputLArInactiveCalibHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputLArDeadCalibHits ) ); + + ATH_CHECK( initializeVarHandleKey(m_inputTileHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputMBTSHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputTileActiveCalibHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputTileInactiveCalibHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputTileDeadCalibHits ) ); + + ATH_CHECK( initializeVarHandleKey(m_inputCSCHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputMDTHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputRPCHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputTGCHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputMMHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputsTGCHits ) ); + + ATH_CHECK( initializeVarHandleKey(m_inputITkPixelHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputITkStripHits ) ); + ATH_CHECK( initializeVarHandleKey(m_inputHGTDHits) ); + + ATH_CHECK( initializeVarHandleKey(m_inputCaloEntryLayer ) ); + ATH_CHECK( initializeVarHandleKey(m_inputMuonEntryLayer) ); + ATH_CHECK( initializeVarHandleKey(m_inputMuonExitLayer ) ); + + ATH_CHECK( initializeVarHandleKey(m_outputMcEventCollection ) ); + ATH_CHECK( initializeVarHandleKey(m_outputBCMHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputBLMHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputPixelHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputSCTHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputTRTUncompressedHits) ); + + ATH_CHECK( initializeVarHandleKey(m_outputLArEMBHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputLArEMECHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputLArFCALHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputLArHECHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputLArActiveCalibHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputLArInactiveCalibHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputLArDeadCalibHits ) ); + + ATH_CHECK( initializeVarHandleKey(m_outputTileHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputMBTSHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputTileActiveCalibHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputTileInactiveCalibHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputTileDeadCalibHits ) ); + + ATH_CHECK( initializeVarHandleKey(m_outputCSCHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputMDTHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputRPCHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputTGCHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputMMHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputsTGCHits ) ); + + ATH_CHECK( initializeVarHandleKey(m_outputITkPixelHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputITkStripHits ) ); + ATH_CHECK( initializeVarHandleKey(m_outputHGTDHits) ); + + ATH_CHECK( initializeVarHandleKey(m_outputCaloEntryLayer ) ); + ATH_CHECK( initializeVarHandleKey(m_outputMuonEntryLayer) ); + ATH_CHECK( initializeVarHandleKey(m_outputMuonExitLayer ) ); + + return StatusCode::SUCCESS; +} + + +/** Athena Algorithm execute */ +StatusCode ISF::RenameHitCollectionsAlg::execute(const EventContext &ctx) const +{ + SG::ReadHandle<McEventCollection> inputMcEventCollection(m_inputMcEventCollection, ctx); + if (!inputMcEventCollection.isValid()) { + ATH_MSG_ERROR("Could not find input McEventCollection called " << inputMcEventCollection.name() << " in store " << inputMcEventCollection.store() << "."); + return StatusCode::FAILURE; + } + SG::WriteHandle<McEventCollection> outputMcEventCollection(m_outputMcEventCollection, ctx); + ATH_CHECK(outputMcEventCollection.record(std::make_unique<McEventCollection>(*inputMcEventCollection))); + if (!outputMcEventCollection.isValid()) { + ATH_MSG_ERROR("Could not record output McEventCollection called " << outputMcEventCollection.name() << " in store " << outputMcEventCollection.store() << "."); + return StatusCode::FAILURE; + } + + ATH_CHECK(copyCollections( m_inputBCMHits, m_outputBCMHits , ctx )); + ATH_CHECK(copyCollections( m_inputBLMHits, m_outputBLMHits , ctx )); + ATH_CHECK(copyCollections( m_inputPixelHits, m_outputPixelHits , ctx )); + ATH_CHECK(copyCollections( m_inputSCTHits, m_outputSCTHits , ctx )); + ATH_CHECK(copyCollections( m_inputTRTUncompressedHits, m_outputTRTUncompressedHits , ctx )); + + ATH_CHECK(copyCollections( m_inputLArEMBHits, m_outputLArEMBHits , ctx )); + ATH_CHECK(copyCollections( m_inputLArEMECHits, m_outputLArEMECHits , ctx )); + ATH_CHECK(copyCollections( m_inputLArFCALHits, m_outputLArFCALHits , ctx )); + ATH_CHECK(copyCollections( m_inputLArHECHits, m_outputLArHECHits , ctx )); + ATH_CHECK(copyCollections( m_inputLArActiveCalibHits, m_outputLArActiveCalibHits , ctx )); + ATH_CHECK(copyCollections( m_inputLArInactiveCalibHits,m_outputLArInactiveCalibHits, ctx )); + ATH_CHECK(copyCollections( m_inputLArDeadCalibHits, m_outputLArDeadCalibHits , ctx )); + + ATH_CHECK(copyCollections( m_inputTileHits, m_outputTileHits , ctx )); + ATH_CHECK(copyCollections( m_inputMBTSHits, m_outputMBTSHits , ctx )); + ATH_CHECK(copyCollections( m_inputTileActiveCalibHits, m_outputTileActiveCalibHits , ctx )); + ATH_CHECK(copyCollections( m_inputTileInactiveCalibHits,m_outputTileInactiveCalibHits, ctx )); + ATH_CHECK(copyCollections( m_inputTileDeadCalibHits, m_outputTileDeadCalibHits , ctx )); + + ATH_CHECK(copyCollections( m_inputCSCHits, m_outputCSCHits , ctx )); + ATH_CHECK(copyCollections( m_inputMDTHits, m_outputMDTHits , ctx )); + ATH_CHECK(copyCollections( m_inputRPCHits, m_outputRPCHits , ctx )); + ATH_CHECK(copyCollections( m_inputTGCHits, m_outputTGCHits , ctx )); + ATH_CHECK(copyCollections( m_inputMMHits, m_outputMMHits , ctx )); + ATH_CHECK(copyCollections( m_inputsTGCHits, m_outputsTGCHits , ctx )); + + ATH_CHECK(copyCollections( m_inputITkPixelHits, m_outputITkPixelHits , ctx )); + ATH_CHECK(copyCollections( m_inputITkStripHits, m_outputITkStripHits , ctx )); + ATH_CHECK(copyCollections( m_inputHGTDHits, m_outputHGTDHits , ctx )); + + ATH_CHECK(copyCollections(m_inputCaloEntryLayer ,m_outputCaloEntryLayer , ctx )); + ATH_CHECK(copyCollections(m_inputMuonEntryLayer,m_outputMuonEntryLayer, ctx )); + ATH_CHECK(copyCollections(m_inputMuonExitLayer ,m_outputMuonExitLayer , ctx )); + + + + return StatusCode::SUCCESS; +} + + +/** Initialize the given VarHandleKey */ +StatusCode ISF::RenameHitCollectionsAlg::initializeVarHandleKey( SG::VarHandleKey& varHandleKey ) const { + if ( varHandleKey.key().empty() ) + return StatusCode::SUCCESS; + + return varHandleKey.initialize(); +} diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/RenameHitCollectionsAlg.h b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/RenameHitCollectionsAlg.h new file mode 100644 index 0000000000000000000000000000000000000000..372b56fa59ac0a981c3beb68502c11838e485fe0 --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/RenameHitCollectionsAlg.h @@ -0,0 +1,277 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ISF_ALGORITHMS_RENAMEHITCOLLECTIONSALG_H +#define ISF_ALGORITHMS_RENAMEHITCOLLECTIONSALG_H 1 + +// STL includes +#include <string> +#include <memory> + +// Framework includes +#include <AthenaBaseComps/AthReentrantAlgorithm.h> +#include "StoreGate/ReadHandleKey.h" +#include "StoreGate/WriteHandleKey.h" + +#include "GeneratorObjects/McEventCollection.h" +#include "CaloSimEvent/CaloCalibrationHitContainer.h" +#include "CaloSimEvent/CaloCalibrationHit.h" +#include "TrackRecord/TrackRecordCollection.h" + +// SimHit EDM includes +// InnerDetector +#include "InDetSimEvent/SiHitCollection.h" +#include "InDetSimEvent/TRTUncompressedHitCollection.h" +// Calorimeter +#include "LArSimEvent/LArHitContainer.h" +#include "TileSimEvent/TileHitVector.h" +// Muon Spectrometer +#include "MuonSimEvent/CSCSimHitCollection.h" +#include "MuonSimEvent/MDTSimHitCollection.h" +#include "MuonSimEvent/RPCSimHitCollection.h" +#include "MuonSimEvent/TGCSimHitCollection.h" +#include <MuonSimEvent/MMSimHitCollection.h> +#include <MuonSimEvent/sTGCSimHitCollection.h> + +// forward declarations +namespace ISFTesting { + class RenameHitCollectionsAlg_test; +} + + +namespace ISF { + + /** @class RenameHitCollectionsAlg + + @brief Athena Algorithm that makes copies of existing + collections in StoreGate and stores them under new keys. + + */ + class RenameHitCollectionsAlg final : public AthReentrantAlgorithm { + + /** Allow the test class access to all methods */ + friend class ISFTesting::RenameHitCollectionsAlg_test; + + public: + /** Constructor */ + RenameHitCollectionsAlg( const std::string& name, ISvcLocator* pSvcLocator ); + + /** Destructor */ + virtual ~RenameHitCollectionsAlg() = default; + + /** Athena algorithm's interface methods */ + virtual StatusCode initialize() override final; + virtual StatusCode execute(const EventContext &ctx) const override final; + + private: + /** Initialize the given VarHandleKey */ + StatusCode initializeVarHandleKey( SG::VarHandleKey& varHandleKey ) const; + + /** Merge all hits of inputReadHandleKeys's collections into outputWriteHandleKey */ + template <typename T> + StatusCode copyCollections( const SG::ReadHandleKey<T>& inputReadHandleKeys, + const SG::WriteHandleKey<T>& outputWriteHandleKey, const EventContext &ctx) const; + + /** Copy the given hit into the given output collection, container or DataHandle */ + template <typename HitType_t, typename OutputType_t> + void insertCopy(const HitType_t& hit, OutputType_t& outputHandle) const; + + /** Copy the given const pointer to a hit into the given output collection, + container or DataHandle */ + template <typename HitType_t, typename OutputType_t> + void insertCopy(HitType_t * const hit, OutputType_t& outputHandle) const; + + + /** Input collection ReadHandleKeys */ + SG::ReadHandleKey<McEventCollection> m_inputMcEventCollection {this, "InputMcEventCollection", "", "Input truth collection name"}; + SG::ReadHandleKey<SiHitCollection> m_inputBCMHits{this, "InputBCMHits", "", ""}; + SG::ReadHandleKey<SiHitCollection> m_inputBLMHits{this, "InputBLMHits", "", ""}; + SG::ReadHandleKey<SiHitCollection> m_inputPixelHits{this, "InputPixelHits", "", ""}; + SG::ReadHandleKey<SiHitCollection> m_inputSCTHits{this, "InputSCTHits", "", ""}; + SG::ReadHandleKey<TRTUncompressedHitCollection> m_inputTRTUncompressedHits{this, "InputTRTUncompressedHits", "", ""}; + + SG::ReadHandleKey<LArHitContainer> m_inputLArEMBHits{this, "InputLArEMBHits", "", ""}; + SG::ReadHandleKey<LArHitContainer> m_inputLArEMECHits{this, "InputLArEMECHits", "", ""}; + SG::ReadHandleKey<LArHitContainer> m_inputLArFCALHits{this, "InputLArFCALHits", "", ""}; + SG::ReadHandleKey<LArHitContainer> m_inputLArHECHits{this, "InputLArHECHits", "", ""}; + SG::ReadHandleKey<CaloCalibrationHitContainer> m_inputLArActiveCalibHits{this, "InputLArActiveCalibHits", "", ""}; + SG::ReadHandleKey<CaloCalibrationHitContainer> m_inputLArInactiveCalibHits{this, "InputLArInactiveCalibHits", "", ""}; + SG::ReadHandleKey<CaloCalibrationHitContainer> m_inputLArDeadCalibHits{this, "InputLArDeadCalibHits", "", ""}; + + SG::ReadHandleKey<TileHitVector> m_inputTileHits{this, "InputTileHits", "", ""}; + SG::ReadHandleKey<TileHitVector> m_inputMBTSHits{this, "InputMBTSHits", "", ""}; + SG::ReadHandleKey<CaloCalibrationHitContainer> m_inputTileActiveCalibHits{this, "InputTileActiveCalibHits", "", ""}; + SG::ReadHandleKey<CaloCalibrationHitContainer> m_inputTileInactiveCalibHits{this, "InputTileInactiveCalibHits", "", ""}; + SG::ReadHandleKey<CaloCalibrationHitContainer> m_inputTileDeadCalibHits{this, "InputTileDeadCalibHits", "", ""}; + + SG::ReadHandleKey<CSCSimHitCollection> m_inputCSCHits{this, "InputCSCHits", "", ""}; + SG::ReadHandleKey<MDTSimHitCollection> m_inputMDTHits{this, "InputMDTHits", "", ""}; + SG::ReadHandleKey<RPCSimHitCollection> m_inputRPCHits{this, "InputRPCHits", "", ""}; + SG::ReadHandleKey<TGCSimHitCollection> m_inputTGCHits{this, "InputTGCHits", "", ""}; + SG::ReadHandleKey<MMSimHitCollection> m_inputMMHits{this, "InputMMHits", "", "Input MM hits name"}; + SG::ReadHandleKey<sTGCSimHitCollection> m_inputsTGCHits{this, "InputsTGCHits", "", "Input TGC hits name"}; + + // Phase 2 Upgrade HitCollections + SG::ReadHandleKey<SiHitCollection> m_inputITkPixelHits{this, "InputITkPixelHits", "", ""}; + SG::ReadHandleKey<SiHitCollection> m_inputITkStripHits{this, "InputITkStripHits", "", ""}; + SG::ReadHandleKey<SiHitCollection> m_inputHGTDHits{this, "InputHGTDHits", "", ""}; + + SG::ReadHandleKey<TrackRecordCollection> m_inputCaloEntryLayer{this, "InputCaloEntryLayer", "", ""}; + SG::ReadHandleKey<TrackRecordCollection> m_inputMuonEntryLayer{this, "InputMuonEntryLayer", "", ""}; + SG::ReadHandleKey<TrackRecordCollection> m_inputMuonExitLayer{this, "InputMuonExitLayer", "", ""}; + + /** Output collection WriteHandleKeys */ + SG::WriteHandleKey<McEventCollection> m_outputMcEventCollection{this, "OutputMcEventCollection", "", ""}; + SG::WriteHandleKey<SiHitCollection> m_outputBCMHits{this, "OutputBCMHits", "", ""}; + SG::WriteHandleKey<SiHitCollection> m_outputBLMHits{this, "OutputBLMHits", "", ""}; + SG::WriteHandleKey<SiHitCollection> m_outputPixelHits{this, "OutputPixelHits", "", ""}; + SG::WriteHandleKey<SiHitCollection> m_outputSCTHits{this, "OutputSCTHits", "", ""}; + SG::WriteHandleKey<TRTUncompressedHitCollection> m_outputTRTUncompressedHits{this, "OutputTRTUncompressedHits", "", ""}; + + SG::WriteHandleKey<LArHitContainer> m_outputLArEMBHits{this, "OutputLArEMBHits", "", ""}; + SG::WriteHandleKey<LArHitContainer> m_outputLArEMECHits{this, "OutputLArEMECHits", "", ""}; + SG::WriteHandleKey<LArHitContainer> m_outputLArFCALHits{this, "OutputLArFCALHits", "", ""}; + SG::WriteHandleKey<LArHitContainer> m_outputLArHECHits{this, "OutputLArHECHits", "", ""}; + SG::WriteHandleKey<CaloCalibrationHitContainer> m_outputLArActiveCalibHits{this, "OutputLArActiveCalibHits", "", ""}; + SG::WriteHandleKey<CaloCalibrationHitContainer> m_outputLArInactiveCalibHits{this, "OutputLArInactiveCalibHits", "", ""}; + SG::WriteHandleKey<CaloCalibrationHitContainer> m_outputLArDeadCalibHits{this, "OutputLArDeadCalibHits", "", ""}; + + SG::WriteHandleKey<TileHitVector> m_outputTileHits{this, "OutputTileHits", "", ""}; + SG::WriteHandleKey<TileHitVector> m_outputMBTSHits{this, "OutputMBTSHits", "", ""}; + SG::WriteHandleKey<CaloCalibrationHitContainer> m_outputTileActiveCalibHits{this, "OutputTileActiveCalibHits", "", ""}; + SG::WriteHandleKey<CaloCalibrationHitContainer> m_outputTileInactiveCalibHits{this, "OutputTileInactiveCalibHits", "", ""}; + SG::WriteHandleKey<CaloCalibrationHitContainer> m_outputTileDeadCalibHits{this, "OutputTileDeadCalibHits", "", ""}; + + SG::WriteHandleKey<CSCSimHitCollection> m_outputCSCHits{this, "OutputCSCHits", "", ""}; + SG::WriteHandleKey<MDTSimHitCollection> m_outputMDTHits{this, "OutputMDTHits", "", ""}; + SG::WriteHandleKey<RPCSimHitCollection> m_outputRPCHits{this, "OutputRPCHits", "", ""}; + SG::WriteHandleKey<TGCSimHitCollection> m_outputTGCHits{this, "OutputTGCHits", "", ""}; + SG::WriteHandleKey<MMSimHitCollection> m_outputMMHits{this, "OutputHits", "", "Output MM hits name"}; + SG::WriteHandleKey<sTGCSimHitCollection> m_outputsTGCHits{this, "OutputsTGCHits", "", "Output TGC hits name"}; + + // Phase 2 Upgrade HitCollections + SG::WriteHandleKey<SiHitCollection> m_outputITkPixelHits{this, "OutputITkPixelHits", "", ""}; + SG::WriteHandleKey<SiHitCollection> m_outputITkStripHits{this, "OutputITkStripHits", "", ""}; + SG::WriteHandleKey<SiHitCollection> m_outputHGTDHits{this, "OutputHGTDHits", "", ""}; + + SG::WriteHandleKey<TrackRecordCollection> m_outputCaloEntryLayer{this, "OutputCaloEntryLayer", "", ""}; + SG::WriteHandleKey<TrackRecordCollection> m_outputMuonEntryLayer{this, "OutputMuonEntryLayer", "", ""}; + SG::WriteHandleKey<TrackRecordCollection> m_outputMuonExitLayer{this, "OutputMuonExitLayer", "", ""}; + }; + + + // + // templated methods below + // + + /** Copy all hits of inputReadHandleKey collection into outputWriteHandleKey */ + template <typename T> + inline StatusCode ISF::RenameHitCollectionsAlg::copyCollections( const SG::ReadHandleKey<T>& inputReadHandleKey, + const SG::WriteHandleKey<T>& outputWriteHandleKey, const EventContext &ctx ) const { + // skip if not input collection + if ( inputReadHandleKey.key().empty() ) { + return StatusCode::SUCCESS; + } + // TODO: is there a way to conveniently get the total number of hits in all inputReadHandleKeys + // and reserve the corresponding size in the outputHandle + SG::WriteHandle<T> outputHandle{outputWriteHandleKey, ctx}; + ATH_CHECK( outputHandle.record(std::make_unique<T>()) ); + + SG::ReadHandle<T> inputHandle{inputReadHandleKey, ctx}; + for ( const auto& hit: *inputHandle ) { + this->insertCopy(hit, outputHandle); + } + + return StatusCode::SUCCESS; + } + + + template <> + inline StatusCode ISF::RenameHitCollectionsAlg::copyCollections( const SG::ReadHandleKey<LArHitContainer>& inputReadHandleKey, + const SG::WriteHandleKey<LArHitContainer>& outputWriteHandleKey, const EventContext &ctx ) const { + // skip if not input collection + if ( inputReadHandleKey.key().empty() ) { + return StatusCode::SUCCESS; + } + // TODO: is there a way to conveniently get the total number of hits in all inputReadHandleKeys + // and reserve the corresponding size in the outputHandle + SG::WriteHandle<LArHitContainer> outputHandle{outputWriteHandleKey, ctx}; + ATH_CHECK( outputHandle.record(std::make_unique<LArHitContainer>()) ); + + SG::ReadHandle<LArHitContainer> inputHandle{inputReadHandleKey, ctx}; + for ( const auto& hit: *inputHandle ) { + this->insertCopy(hit, outputHandle); + } + outputHandle->setName(inputHandle->Name()); + + return StatusCode::SUCCESS; + } + + + template <> + inline StatusCode ISF::RenameHitCollectionsAlg::copyCollections( const SG::ReadHandleKey<TileHitVector>& inputReadHandleKey, + const SG::WriteHandleKey<TileHitVector>& outputWriteHandleKey, const EventContext &ctx ) const { + // skip if not input collection + if ( inputReadHandleKey.key().empty() ) { + return StatusCode::SUCCESS; + } + // TODO: is there a way to conveniently get the total number of hits in all inputReadHandleKeys + // and reserve the corresponding size in the outputHandle + SG::WriteHandle<TileHitVector> outputHandle{outputWriteHandleKey, ctx}; + ATH_CHECK( outputHandle.record(std::make_unique<TileHitVector>()) ); + + SG::ReadHandle<TileHitVector> inputHandle{inputReadHandleKey, ctx}; + for ( const auto& hit: *inputHandle ) { + this->insertCopy(hit, outputHandle); + } + outputHandle->setName(inputHandle->Name()); + + return StatusCode::SUCCESS; + } + + + template <> + inline StatusCode ISF::RenameHitCollectionsAlg::copyCollections( const SG::ReadHandleKey<TrackRecordCollection>& inputReadHandleKey, + const SG::WriteHandleKey<TrackRecordCollection>& outputWriteHandleKey, const EventContext &ctx ) const { + // skip if not input collection + if ( inputReadHandleKey.key().empty() ) { + return StatusCode::SUCCESS; + } + // TODO: is there a way to conveniently get the total number of hits in all inputReadHandleKeys + // and reserve the corresponding size in the outputHandle + SG::WriteHandle<TrackRecordCollection> outputHandle{outputWriteHandleKey, ctx}; + ATH_CHECK( outputHandle.record(std::make_unique<TrackRecordCollection>()) ); + + SG::ReadHandle<TrackRecordCollection> inputHandle{inputReadHandleKey, ctx}; + for ( const auto& hit: *inputHandle ) { + this->insertCopy(hit, outputHandle); + } + outputHandle->setName(inputHandle->Name()); + + return StatusCode::SUCCESS; + } + + + /** Copy the given hit into the given output collection, container or DataHandle */ + template <typename HitType_t, typename OutputType_t> + inline void ISF::RenameHitCollectionsAlg::insertCopy(const HitType_t& hit, + OutputType_t& outputHandle) const { + static_assert(!std::is_pointer<HitType_t>::value, + "The hit provided to ISF::RenameHitCollectionsAlg::insertCopy(..) must not be a pointer!"); + outputHandle->Emplace( hit ); + } + + + /** Copy the given const pointer to a hit into the given output collection, container or DataHandle */ + template <typename HitType_t, typename OutputType_t> + inline void ISF::RenameHitCollectionsAlg::insertCopy(HitType_t * const hit, + OutputType_t& outputHandle) const { + auto&& hitCopy = std::make_unique<HitType_t>(*hit); + outputHandle->push_back( hitCopy.release() ); + } + + +} + +#endif //> !ISF_ALGORITHMS_RENAMEHITCOLLECTIONSALG_H diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimEventFilter.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimEventFilter.cxx new file mode 100644 index 0000000000000000000000000000000000000000..dd3710ecc14b3c85b80e09276407f985c9e41222 --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimEventFilter.cxx @@ -0,0 +1,174 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +// ISF_Algs includes +#include "SimEventFilter.h" +// FrameWork includes +#include "Gaudi/Property.h" +// McEventCollection +#include "GeneratorObjects/McEventCollection.h" + +/////////////////////////////////////////////////////////////////// +// Public methods: +/////////////////////////////////////////////////////////////////// + +// Constructors +//////////////// +ISF::SimEventFilter::SimEventFilter( const std::string& name, ISvcLocator* pSvcLocator ) : + ::AthFilterAlgorithm( name, pSvcLocator ) +{ + setFilterDescription("Filter to select events where two particle filter chains gave different selection results for at least one particle"); + +} + +// Athena Algorithm's Hooks +//////////////////////////// +StatusCode ISF::SimEventFilter::initialize() +{ + + ATH_MSG_VERBOSE ( "--------------------------------------------------------" ); + ATH_MSG_VERBOSE ( "Initializing the ISF Sim Filter " ); + + if (!m_genParticleCommonFilters.empty()) ATH_CHECK(m_genParticleCommonFilters.retrieve()); + if (!m_genParticleOldFilters.empty() ) ATH_CHECK(m_genParticleOldFilters.retrieve()); + if (!m_genParticleNewFilters.empty() ) ATH_CHECK(m_genParticleNewFilters.retrieve()); + + ATH_CHECK( m_inputHardScatterEvgenKey.initialize() ); + + // intialziation successful + return StatusCode::SUCCESS; +} + +StatusCode ISF::SimEventFilter::finalize() +{ + ATH_MSG_VERBOSE ( "Finalizing ..." ); + + //TODO: thread safe output of filter decisions + + ATH_MSG_INFO(" pass = "<<m_pass<<" / "<<m_total<<" = "<<(m_total>0 ? (100.0*m_pass)/m_total : 0)<<"%"); + ATH_MSG_VERBOSE(" ====================================================================="); + + return StatusCode::SUCCESS; +} + +/** check if the given particle passes all filters */ +bool ISF::SimEventFilter::passesFilters(HepMC::ConstGenParticlePtr part, ToolHandleArray<IGenParticleFilter>& filters) const +{ + // TODO: implement this as a std::find_if with a lambda function + for ( const auto& filter : filters ) { + // determine if the particle passes current filter +#ifdef HEPMC3 + bool passFilter = filter->pass(part); +#else + bool passFilter = filter->pass(*part); +#endif + ATH_MSG_VERBOSE("Filter '" << filter.typeAndName() << "' returned: " + << (passFilter ? "true, will keep particle." + : "false, will remove particle.")); + + if (!passFilter) return false; + } + + return true; +} + +StatusCode ISF::SimEventFilter::execute() +{ + ATH_MSG_DEBUG ("Executing ..."); + + SG::ReadHandle<McEventCollection> inputHardScatterEvgen(m_inputHardScatterEvgenKey); + if (!inputHardScatterEvgen.isValid()) { + ATH_MSG_FATAL("Unable to read input GenEvent collection '" << inputHardScatterEvgen.key() << "'"); + return StatusCode::FAILURE; + } + + bool pass = false; + + for ( const auto& eventPtr : *inputHardScatterEvgen ) { + // skip empty events + if (eventPtr == nullptr) { continue; } + + ATH_MSG_DEBUG("Starting check of GenEvent with" + " signal_process_id=" << HepMC::signal_process_id(eventPtr) << + " and event_number=" << eventPtr->event_number() ); + + for (auto p : *eventPtr) { + ATH_MSG_VERBOSE("Checking filters for particle: "<< p); + ATH_MSG_VERBOSE("Common filters:"); + bool b_common = passesFilters(p,m_genParticleCommonFilters); + ATH_MSG_VERBOSE("Old filters:"); + bool b_old = passesFilters(p,m_genParticleOldFilters); + ATH_MSG_VERBOSE("New filters:"); + bool b_new = passesFilters(p,m_genParticleNewFilters); + + if ( b_common && (b_old!=b_new) ) { + pass=true; + } + if ( b_common && m_genParticleOldFilters.empty() && m_genParticleNewFilters.empty()) { + pass=true; + } + if ( pass ) { + ATH_MSG_DEBUG("Different result for particle "<<p<<" common="<<b_common<<" old="<<b_old<<" new="<<b_new); + if (p->production_vertex ()) { + ATH_MSG_VERBOSE(" prod :"<<p->production_vertex()); + } + if (p->end_vertex ()) { + ATH_MSG_VERBOSE(" decay:"<<p->end_vertex()); + } + + for ( const auto& filter : m_genParticleCommonFilters ) { + // determine if the particle passes current filter +#ifdef HEPMC3 + bool passFilter = filter->pass(p); +#else + bool passFilter = filter->pass(*p); +#endif + ATH_MSG_DEBUG(" GenParticleCommonFilter '" << filter.typeAndName() << "' returned: " + << (passFilter ? "true, will keep particle." + : "false, will remove particle.")); + } + for ( const auto& filter : m_genParticleOldFilters ) { + // determine if the particle passes current filter +#ifdef HEPMC3 + bool passFilter = filter->pass(p); +#else + bool passFilter = filter->pass(*p); +#endif + ATH_MSG_DEBUG(" GenParticleOldFilter '" << filter.typeAndName() << "' returned: " + << (passFilter ? "true, will keep particle." + : "false, will remove particle.")); + } + for ( const auto& filter : m_genParticleNewFilters ) { + // determine if the particle passes current filter +#ifdef HEPMC3 + bool passFilter = filter->pass(p); +#else + bool passFilter = filter->pass(*p); +#endif + ATH_MSG_DEBUG(" GenParticleNewFilter '" << filter.typeAndName() << "' returned: " + << (passFilter ? "true, will keep particle." + : "false, will remove particle.")); + } + + break; + } + } + } + + ATH_MSG_DEBUG ("End SimEventFilter, difference in filters: "<<(pass ? "found" : "not found")<<"="<<pass<<", invert="<<m_invertfilter); + + if (m_invertfilter) { + pass =! pass; + } + + if (pass) { + ++m_pass; + } + + ++m_total; + + setFilterPassed(pass); + + return StatusCode::SUCCESS; +} diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimEventFilter.h b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimEventFilter.h new file mode 100644 index 0000000000000000000000000000000000000000..07cac6586fcfb630a3e7a2ba594cec55c7f5e995 --- /dev/null +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/SimEventFilter.h @@ -0,0 +1,61 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef ISF_ALGORITHMS_SIMEVENTFILTER_H +#define ISF_ALGORITHMS_SIMEVENTFILTER_H 1 + +// STL includes +#include <string> + +// FrameWork includes +#include "StoreGate/ReadHandle.h" +#include "GaudiKernel/ToolHandle.h" +#include "AthenaBaseComps/AthFilterAlgorithm.h" + +// ISF_Interfaces includes +#include "ISF_HepMC_Interfaces/IGenParticleFilter.h" + +// McEventCollection +#include "GeneratorObjects/McEventCollection.h" + +namespace ISF { + + class SimEventFilter : public AthFilterAlgorithm { + + public: + /** Constructor with parameters */ + SimEventFilter( const std::string& name, ISvcLocator* pSvcLocator ); + + /** Destructor */ + virtual ~SimEventFilter() = default; + + /** Athena algorithm's interface method initialize() */ + virtual StatusCode initialize() override final; /** Athena algorithm's interface method execute() */ + virtual StatusCode execute() override final; + + /** Athena algorithm's interface method finalize() */ + virtual StatusCode finalize() override final; + + private: + bool passesFilters(HepMC::ConstGenParticlePtr part, ToolHandleArray<IGenParticleFilter>& filters) const; + + /** Input truth collections */ + SG::ReadHandleKey<McEventCollection> m_inputHardScatterEvgenKey{this, "InputHardScatterCollection", "", "Input Hard Scatter EVGEN collection."}; //!< input hard scatter collection + + /** Filter passes if a difference between the decision of m_genParticleOldFilters and m_genParticleNewFilters is found. + m_genParticleCommonFilters is applied before to select relevant particles. + If only m_genParticleCommonFilters is specified, filter passes if any particle passes this one + **/ + ToolHandleArray<IGenParticleFilter> m_genParticleCommonFilters{this, "GenParticleCommonFilters", {}, "Tools for filtering out GenParticles for both selections."}; //!< HepMC::GenParticle filters for both selections + ToolHandleArray<IGenParticleFilter> m_genParticleOldFilters{this, "GenParticleOldFilters", {}, "Tools for filtering out GenParticles with the old selection."}; //!< HepMC::GenParticle filters for old selection + ToolHandleArray<IGenParticleFilter> m_genParticleNewFilters{this, "GenParticleNewFilters", {}, "Tools for filtering out GenParticles with the new selection."}; //!< HepMC::GenParticle filters for new selection + + Gaudi::Property<bool> m_invertfilter{this, "InvertFilter", false, "Invert filter decision."}; //!< invert filter decision at the end + + int m_pass = 0; //< number of events passing the filter + int m_total = 0 ; //< number of total events seen + }; +} + +#endif //> !ISF_ALGORITHMS_SIMEVENTFILTER_H diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/components/ISF_Algorithms_entries.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/components/ISF_Algorithms_entries.cxx index 24b498ed0158aae349778d27df8899e4aa304a83..d6a02d0890b97f4d9f3e501aea9589a346816ab8 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/src/components/ISF_Algorithms_entries.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/src/components/ISF_Algorithms_entries.cxx @@ -2,9 +2,12 @@ #include "../SimKernelMT.h" #include "../CollectionMerger.h" #include "../SimHitTreeCreator.h" +#include "../SimEventFilter.h" +#include "../RenameHitCollectionsAlg.h" DECLARE_COMPONENT( ISF::SimKernel ) DECLARE_COMPONENT( ISF::SimKernelMT ) DECLARE_COMPONENT( ISF::CollectionMerger ) DECLARE_COMPONENT( ISF::SimHitTreeCreator ) - +DECLARE_COMPONENT( ISF::SimEventFilter ) +DECLARE_COMPONENT( ISF::RenameHitCollectionsAlg ) diff --git a/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx b/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx index 22981e8680e08dc0488f0c7b938938bf966af37d..662aab17cd6004777748bbc47ed8c426d27b0c49 100644 --- a/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Algorithms/test/SimKernelMT_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @@ -208,6 +208,7 @@ public: virtual ISF::EntryLayer identifyEntryLayer( const ISF::ISFParticle& ) { return ISF::fUnsetEntryLayer; }; virtual ISF::EntryLayer registerParticle( const ISF::ISFParticle&, ISF::EntryLayer layer=ISF::fUnsetEntryLayer ) { return layer; }; virtual StatusCode registerTrackRecordCollection(TrackRecordCollection*, ISF::EntryLayer) { return StatusCode::SUCCESS; }; + virtual void setupEvent() { return; } }; // MockEntryLayerTool diff --git a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/IEntryLayerTool.h b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/IEntryLayerTool.h index c206a1f738a21407f1f31bbac285315fd653849d..0bd2177f6afba6efb4aa533ffc7b7f518d0422d3 100644 --- a/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/IEntryLayerTool.h +++ b/Simulation/ISF/ISF_Core/ISF_Interfaces/ISF_Interfaces/IEntryLayerTool.h @@ -45,6 +45,8 @@ namespace ISF { /** Register the TrackRecordCollection pointer for a layer */ virtual StatusCode registerTrackRecordCollection(TrackRecordCollection* collection, EntryLayer layer) = 0; + + virtual void setupEvent() = 0; }; } // end of namespace diff --git a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleBrokerDynamicOnReadIn.cxx b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleBrokerDynamicOnReadIn.cxx index 33b0d73167d2691fdd27f28a3d02e3c9c6d7d711..2241f7b6a7dfdb0a1860537bf4c0d9759b6c46da 100644 --- a/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleBrokerDynamicOnReadIn.cxx +++ b/Simulation/ISF/ISF_Core/ISF_Services/src/ParticleBrokerDynamicOnReadIn.cxx @@ -363,6 +363,7 @@ StatusCode ISF::ParticleBrokerDynamicOnReadIn::initializeEvent(ISFParticleContai simSelector->beginEvent(); } + m_entryLayerTool->setupEvent(); // update the routing chain selectors with the particles in the initial stack for ( auto& particlePointer : simParticles ) { auto& particle = *particlePointer; diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesTestHelpers.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesTestHelpers.py index 82cec4704f7e1b5dc165a032c234f71f8f8e15d7..c18f6593ef50c42d322644aba1bbf32af77b46ba 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesTestHelpers.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesTestHelpers.py @@ -60,7 +60,6 @@ def defaultTestFlags(configFlags, args): configFlags.Sim.PhysicsList = "FTFP_BERT_ATL" configFlags.Sim.CalibrationRun = "Off" #"DeadLAr" configFlags.Sim.RecordStepInfo = False - configFlags.Sim.CavernBG = "Signal" configFlags.Sim.BeamPipeSimMode = 'FastSim' configFlags.Sim.ReleaseGeoModel = False configFlags.Sim.ISFRun = True diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerTool.cxx b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerTool.cxx index 793aaf88f22a9df72fb590cb02eaba30faf48b7d..da96e1d95a515d2e2e2e106b41845309642af3da 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerTool.cxx +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerTool.cxx @@ -1,11 +1,7 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -/////////////////////////////////////////////////////////////////// -// EntryLayerTool.cxx, (c) ATLAS Detector software -/////////////////////////////////////////////////////////////////// - // class header include #include "EntryLayerTool.h" @@ -19,7 +15,6 @@ /** Constructor **/ ISF::EntryLayerTool::EntryLayerTool(const std::string& t, const std::string& n, const IInterface* p) : base_class(t,n,p), - m_incidentSvc("IncidentSvc",n), m_geoIDSvc("GeoIDSvc",n), m_geoIDSvcQuick(0), m_particleFilterHandle(), @@ -68,15 +63,6 @@ StatusCode ISF::EntryLayerTool::initialize() { ATH_MSG_INFO("initialize() ..."); - // incident service from Athena/Gaudi framework - if (m_incidentSvc.retrieve().isFailure()) { - ATH_MSG_FATAL("Could not retrieve IncidentService '" << m_incidentSvc << "'. Exiting."); - return StatusCode::FAILURE; - } - // register to the incident service: BeginEvent for TrackRecordCollection - m_incidentSvc->addListener( this, IncidentType::BeginEvent); - - // retrieve the GeoIDSvc if ( m_geoIDSvc.retrieve().isFailure() ){ ATH_MSG_FATAL( "Could not retrieve GeoID service. Abort."); @@ -104,17 +90,13 @@ StatusCode ISF::EntryLayerTool::initialize() } -/** framework handle */ -void ISF::EntryLayerTool::handle( const Incident& inc ) { +void ISF::EntryLayerTool::setupEvent() { - // check the incident type - if ( inc.type() == IncidentType::BeginEvent ) { - // initialize storegate collections at BeginEvent incident - for ( int entryLayer=ISF::fFirstAtlasEntryLayer; - entryLayer<ISF::fNumAtlasEntryLayers; - entryLayer++) { - m_collection[entryLayer] = setupSGCollection( m_SGName[entryLayer] ); - } + // initialize storegate collections at BeginEvent incident + for ( int entryLayer=ISF::fFirstAtlasEntryLayer; + entryLayer<ISF::fNumAtlasEntryLayers; + entryLayer++) { + m_collection[entryLayer] = setupSGCollection( m_SGName[entryLayer] ); } return; @@ -133,8 +115,8 @@ bool ISF::EntryLayerTool::passesFilters( const ISFParticle& particle) { } -/** Identify the corresponding entry layer for the given particle (may return - ISF::fUnsetEntryLayere if particle is not on an entry layer surface) */ +/** Identify the corresponding entry layer for the given particle (may return + ISF::fUnsetEntryLayer if particle is not on an entry layer surface) */ ISF::EntryLayer ISF::EntryLayerTool::identifyEntryLayer( const ISFParticle& particle) { // the return value ISF::EntryLayer layerHit = ISF::fUnsetEntryLayer; diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerTool.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerTool.h index 38646572e346ee09c733e107e1cf4dbb0d1cb252..cf4f679b16b46146e25d5eadb300e8091c4192a9 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerTool.h +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef ISF_GEANT4COMMONTOOLS_ENTRYLAYERTOOL_H @@ -8,7 +8,6 @@ // Gaudi #include "GaudiKernel/ToolHandle.h" #include "GaudiKernel/ServiceHandle.h" -#include "GaudiKernel/IIncidentListener.h" // Athena #include "AthenaBaseComps/AthAlgTool.h" @@ -38,7 +37,7 @@ namespace ISF { @author Elmar.Ritsch -at- cern.ch */ - class EntryLayerTool : public extends<AthAlgTool, ISF::IEntryLayerTool, IIncidentListener> { + class EntryLayerTool : public extends<AthAlgTool, ISF::IEntryLayerTool> { public: /** Constructor with parameters */ @@ -50,14 +49,11 @@ namespace ISF { /** Athena algtool's Hooks */ virtual StatusCode initialize() override final; - /** handle for incident service */ - virtual void handle(const Incident& inc) override; - /** Check if given particle passes the EntryLayer filters */ virtual bool passesFilters( const ISFParticle& particle) override final; - /** Identify the corresponding entry layer for the given particle (may return - ISF::fUnsetEntryLayere if particle is not on an entry layer surface) */ + /** Identify the corresponding entry layer for the given particle (may return + ISF::fUnsetEntryLayer if particle is not on an entry layer surface) */ virtual ISF::EntryLayer identifyEntryLayer( const ISFParticle& particle) override final; /** Add the given particle to the corresponding Entry/Exit layer if applicable */ @@ -67,13 +63,12 @@ namespace ISF { /** Register the TrackRecordCollection pointer for a layer */ virtual StatusCode registerTrackRecordCollection(TrackRecordCollection* collection, EntryLayer layer) override final; + virtual void setupEvent() override final; + private: /** used to setup a TrackRecordCollection on storegate */ TrackRecordCollection *setupSGCollection(const std::string &name); - /* Incident Service */ - ServiceHandle<IIncidentSvc> m_incidentSvc; - /** GeoIDSvc will be used to determine the entry layer surface, the particle is on */ ServiceHandle<ISF::IGeoIDSvc> m_geoIDSvc; ISF::IGeoIDSvc *m_geoIDSvcQuick; diff --git a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerToolMT.h b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerToolMT.h index 287dc1879718977671c14201c622ca0b3b26c555..94f76af8f9511b410a97962ab9e95012369ef573 100644 --- a/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerToolMT.h +++ b/Simulation/ISF/ISF_Geant4/ISF_Geant4CommonTools/src/EntryLayerToolMT.h @@ -67,6 +67,8 @@ namespace ISF { /** Register the TrackRecordCollection pointer for a layer */ virtual StatusCode registerTrackRecordCollection(TrackRecordCollection* collection, EntryLayer layer) override final; + virtual void setupEvent() { return; } + private: /** GeoIDSvc will be used to determine the entry layer surface, the particle is on */ ServiceHandle<ISF::IGeoIDSvc> m_geoIDSvc{this, "GeoIDSvc", "GeoIDSvc", "AthenaService used to indentify sub-detector by (x,y,z) coordintes."}; diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfigNew.py b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfigNew.py index b4d4a9b24fa33225febf43bc28898ce579f84bb6..3e67be6ee68c2cfbd537e59c0275ffff393aff1f 100644 --- a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfigNew.py +++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Tools/python/ISF_HepMC_ToolsConfigNew.py @@ -24,7 +24,7 @@ def ParticleSimWhiteListCfg(ConfigFlags, name="ISF_ParticleSimWhiteList", **kwar result.setPrivateTools(CompFactory.ISF.GenParticleSimWhiteList(name, **kwargs)) return result -def ParticleSimWhiteList_ExtraParticles(ConfigFlags, name="ISF_ParticleSimWhiteList_ExtraParticles", **kwargs): +def ParticleSimWhiteList_ExtraParticlesCfg(ConfigFlags, name="ISF_ParticleSimWhiteList_ExtraParticles", **kwargs): result = ComponentAccumulator() kwargs.setdefault("WhiteLists" , ["G4particle_whitelist.txt", "G4particle_whitelist_ExtraParticles.txt"] ) result.setPrivateTools(CompFactory.ISF.GenParticleSimWhiteList(name, **kwargs)) diff --git a/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py b/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py index df1aa2f626f4551916305fa33f7b08d29e37ea55..9402340a5214cba9431602465a7786fea48076be 100644 --- a/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/FilterHit_Skeleton.py @@ -92,6 +92,11 @@ def fromRunArgs(runArgs): from AthenaConfiguration.AllConfigFlags import ConfigFlags commonRunArgsToFlags(runArgs, ConfigFlags) + if hasattr(runArgs, 'inputHITSFile'): + ConfigFlags.Input.Files = runArgs.inputHITSFile + else: + raise RuntimeError('No input HITS file defined') + if hasattr(runArgs, 'detectors'): detectors = runArgs.detectors else: @@ -113,11 +118,6 @@ def fromRunArgs(runArgs): # Setup common simulation flags defaultFilterHitFlags(ConfigFlags, detectors) - if hasattr(runArgs, 'inputHITSFile'): - ConfigFlags.Input.Files = runArgs.inputHITSFile - else: - raise RuntimeError('No input HITS file defined') - ## from SimuJobTransforms.HitsFilePeeker import HitsFilePeeker ## HitsFilePeeker(runArgs, filterHitLog) @@ -148,15 +148,72 @@ def fromRunArgs(runArgs): cfg.merge(PoolWriteCfg(ConfigFlags)) # add LArHitFilter + AddressRemappingSvc - from LArDigitization.LArDigitizationConfigNew import LArHitFilterCfg - cfg.merge(LArHitFilterCfg(ConfigFlags)) # TODO add output configuration here? + if ConfigFlags.Detector.EnableLAr: + from LArDigitization.LArDigitizationConfigNew import LArHitFilterCfg + cfg.merge(LArHitFilterCfg(ConfigFlags)) # TODO add output configuration here? - if hasattr(runArgs,'TruthReductionScheme'): + if hasattr(runArgs, 'TruthReductionScheme'): if runArgs.TruthReductionScheme != 'SingleGenParticle': - log.warning( 'Unknown TruthReductionScheme (' + runArgs.TruthReductionScheme + '). Currently just a dummy value, but please check.' ) + log.warning(f'Unknown TruthReductionScheme ({runArgs.TruthReductionScheme}). Currently just a dummy value, but please check.') + # add McEventCollectionFtiler + AddressRemappingSvc - from McEventCollectionFilter.McEventCollectionFilterConfigNew import McEventCollectionFilterCfg + from McEventCollectionFilter.McEventCollectionFilterConfig import McEventCollectionFilterCfg cfg.merge(McEventCollectionFilterCfg(ConfigFlags)) + # Check for Truth Containers + for entry in ConfigFlags.Input.Collections: + if 'AntiKt4TruthJets' == entry: + from McEventCollectionFilter.McEventCollectionFilterConfig import DecoratePileupAntiKt4TruthJetsCfg + cfg.merge(DecoratePileupAntiKt4TruthJetsCfg(ConfigFlags)) + if 'AntiKt6TruthJets' == entry: + from McEventCollectionFilter.McEventCollectionFilterConfig import DecoratePileupAntiKt6TruthJetsCfg + cfg.merge(DecoratePileupAntiKt6TruthJetsCfg(ConfigFlags)) + if 'TruthPileupParticles' == entry: + from McEventCollectionFilter.McEventCollectionFilterConfig import DecorateTruthPileupParticlesCfg + cfg.merge(DecorateTruthPileupParticlesCfg(ConfigFlags)) + + # ID + if ConfigFlags.Detector.EnableBCM: + from McEventCollectionFilter.McEventCollectionFilterConfig import BCM_HitsTruthRelinkCfg + cfg.merge(BCM_HitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnablePixel: + from McEventCollectionFilter.McEventCollectionFilterConfig import PixelHitsTruthRelinkCfg + cfg.merge(PixelHitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableSCT: + from McEventCollectionFilter.McEventCollectionFilterConfig import SCT_HitsTruthRelinkCfg + cfg.merge(SCT_HitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableTRT: + from McEventCollectionFilter.McEventCollectionFilterConfig import TRT_HitsTruthRelinkCfg + cfg.merge(TRT_HitsTruthRelinkCfg(ConfigFlags)) + # ITk + if ConfigFlags.Detector.EnableITkPixel: + from McEventCollectionFilter.McEventCollectionFilterConfig import ITkPixelHitsTruthRelinkCfg + cfg.merge(ITkPixelHitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableITkPixel: + from McEventCollectionFilter.McEventCollectionFilterConfig import ITkPixelHitsTruthRelinkCfg + cfg.merge(ITkPixelHitsTruthRelinkCfg(ConfigFlags)) + # HGTD + if ConfigFlags.Detector.EnableHGTD: + from McEventCollectionFilter.McEventCollectionFilterConfig import HGTD_HitsTruthRelinkCfg + cfg.merge(HGTD_HitsTruthRelinkCfg(ConfigFlags)) + # Muons + if ConfigFlags.Detector.EnableCSC: + from McEventCollectionFilter.McEventCollectionFilterConfig import CSC_HitsTruthRelinkCfg + cfg.merge(CSC_HitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableMDT: + from McEventCollectionFilter.McEventCollectionFilterConfig import MDT_HitsTruthRelinkCfg + cfg.merge(MDT_HitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableMM: + from McEventCollectionFilter.McEventCollectionFilterConfig import MM_HitsTruthRelinkCfg + cfg.merge(MM_HitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableRPC: + from McEventCollectionFilter.McEventCollectionFilterConfig import RPC_HitsTruthRelinkCfg + cfg.merge(RPC_HitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnableTGC: + from McEventCollectionFilter.McEventCollectionFilterConfig import TGC_HitsTruthRelinkCfg + cfg.merge(TGC_HitsTruthRelinkCfg(ConfigFlags)) + if ConfigFlags.Detector.EnablesTGC: + from McEventCollectionFilter.McEventCollectionFilterConfig import sTGC_HitsTruthRelinkCfg + cfg.merge(sTGC_HitsTruthRelinkCfg(ConfigFlags)) from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg cfg.merge( OutputStreamCfg(ConfigFlags,"HITS", ItemList=getStreamHITS_ItemList(ConfigFlags), disableEventTag=True) ) diff --git a/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py b/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py index 685faae5228157278f5e178cd3d6cd49604e61bd..a7bee81d1c4e0110dfea536e282770fa905c9a97 100644 --- a/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py +++ b/Simulation/SimuJobTransforms/python/G4AtlasAlg_Skeleton.py @@ -10,7 +10,7 @@ def defaultSimulationFlags(ConfigFlags, detectors): from AthenaConfiguration.Enums import ProductionStep ConfigFlags.Common.ProductionStep = ProductionStep.Simulation # Writing out CalibrationHits only makes sense if we are running FullG4 simulation without frozen showers - if (ConfigFlags.Sim.ISF.Simulator not in ('FullG4MT', 'FullG4MT_LongLived')) or ConfigFlags.Sim.LArParameterization!=0: + if ConfigFlags.Sim.LArParameterization!=0: ConfigFlags.Sim.CalibrationRun = "Off" ConfigFlags.Sim.RecordStepInfo = False diff --git a/Simulation/SimuJobTransforms/python/HitsFilePeeker.py b/Simulation/SimuJobTransforms/python/HitsFilePeeker.py index 9c7ca502cc7507a809a913edbadff1ae09a5ab5b..0b5ada67fcad21a784af34e8e8125c4e04c7c51a 100644 --- a/Simulation/SimuJobTransforms/python/HitsFilePeeker.py +++ b/Simulation/SimuJobTransforms/python/HitsFilePeeker.py @@ -31,6 +31,10 @@ def getHITSFile(runArgs): raise SystemExit("No HITS file in runArgs!!") def HitsFilePeeker(runArgs, skeletonLog): + peekInfo = dict() + peekInfo["AntiKt4TruthJetsPresent"] = False + peekInfo["AntiKt6TruthJetsPresent"] = False + peekInfo["PileUpTruthParticlesPresent"] = False from PyUtils.MetaReader import read_metadata try: input_file = getHITSFile(runArgs) @@ -78,6 +82,16 @@ def HitsFilePeeker(runArgs, skeletonLog): else : metadatadict['SimulatedDetectors'] = ['pixel','SCT','TRT','BCM','Lucid','LAr','Tile','MDT','CSC','TGC','RPC','Truth'] + # Check for Truth Containers + if 'itemList' in metadata_peeker: + for entry in metadata_peeker['itemList']: + if 'AntiKt4TruthJets' == entry[1]: + peekInfo["AntiKt4TruthJetsPresent"] = True + if 'AntiKt6TruthJets' == entry[1]: + peekInfo["AntiKt6TruthJetsPresent"] = True + if 'TruthPileupParticles' == entry[1]: + peekInfo["PileUpTruthParticlesPresent"] = True + from AthenaCommon.GlobalFlags import globalflags globalflags.DataSource="geant4" ## Configure DetDescrVersion @@ -142,4 +156,4 @@ def HitsFilePeeker(runArgs, skeletonLog): DetFlags.writeRDOPool.all_setOff() DetFlags.writeRIOPool.all_setOff() print('{} -> __Test__001__:\n{}'.format(__file__, metadatadict)) - return + return peekInfo diff --git a/Simulation/SimuJobTransforms/share/skeleton.FilterHit.py b/Simulation/SimuJobTransforms/share/skeleton.FilterHit.py index a2426f6c2d3a375b3b39767b94e6400cc0311ccf..d7def2ff9f5400cad6968e733f3f792718b5974b 100644 --- a/Simulation/SimuJobTransforms/share/skeleton.FilterHit.py +++ b/Simulation/SimuJobTransforms/share/skeleton.FilterHit.py @@ -38,7 +38,7 @@ if not hasattr(runArgs,"inputHITSFile"): raise RuntimeError("No inputHITSFile provided.") from SimuJobTransforms.HitsFilePeeker import HitsFilePeeker -HitsFilePeeker(runArgs, filterHitLog) +peekInfo = HitsFilePeeker(runArgs, filterHitLog) #============================================================== # Job Configuration parameters: @@ -258,38 +258,78 @@ if hasattr(runArgs,'TruthReductionScheme'): if runArgs.TruthReductionScheme != 'SingleGenParticle': filterHitLog.warning( 'Unknown TruthReductionScheme (' + runArgs.TruthReductionScheme + '). Currently just a dummy value, but please check.' ) ## here configure the level of Truth reduction required - - ## For upgrade geometries the TRT has been removed, so should be switched off. - if not DetFlags.detdescr.TRT_on(): + topSequence += McEventCollectionFilter + from AthenaCommon.CfgGetter import getAlgorithm + if peekInfo["AntiKt4TruthJetsPresent"]: + topSequence += getAlgorithm("DecoratePileupAntiKt4TruthJets") + if peekInfo["AntiKt6TruthJetsPresent"]: + topSequence += getAlgorithm("DecoratePileupAntiKt6TruthJets") + if peekInfo["PileUpTruthParticlesPresent"]: + topSequence += getAlgorithm("DecorateTruthPileupParticles") + + if DetFlags.detdescr.TRT_on(): try: - McEventCollectionFilter.UseTRTHits = False + from McEventCollectionFilter.McEventCollectionFilterConf import TRT_HitsTruthRelink + topSequence += TRT_HitsTruthRelink("TRT_HitsTruthRelink") except: filterHitLog.error('Trying to run on upgrade samples (no TRT) with an old tag of McEventCollectionFilter - job will fail.') - - ## For upgrade geometries the BCM has been removed, so should be switched off - if not DetFlags.detdescr.BCM_on(): + + if DetFlags.detdescr.BCM_on(): + try: + from McEventCollectionFilter.McEventCollectionFilterConf import SiliconHitsTruthRelink + topSequence += SiliconHitsTruthRelink("BCM_HitsTruthRelink", InputHits="BCMHitsOLD", OutputHits="BCMHits") + except: + filterHitLog.error('Trying to run on upgrade samples (no BCM) with an old version of McEventCollectionFilter - job will fail.') + if DetFlags.detdescr.pixel_on(): + try: + from McEventCollectionFilter.McEventCollectionFilterConf import SiliconHitsTruthRelink + topSequence += SiliconHitsTruthRelink("PixelHitsTruthRelink", InputHits="PixelHitsOLD", OutputHits="PixelHits") + except: + filterHitLog.error('Trying to run on upgrade samples (no BCM) with an old version of McEventCollectionFilter - job will fail.') + if DetFlags.detdescr.SCT_on(): try: - McEventCollectionFilter.UseBCMHits = False + from McEventCollectionFilter.McEventCollectionFilterConf import SiliconHitsTruthRelink + topSequence += SiliconHitsTruthRelink("SCT_HitsTruthRelink", InputHits="SCT_HitsOLD", OutputHits="SCT_Hits") except: filterHitLog.error('Trying to run on upgrade samples (no BCM) with an old version of McEventCollectionFilter - job will fail.') - if not DetFlags.detdescr.CSC_on(): + if DetFlags.detdescr.CSC_on(): try: - McEventCollectionFilter.UseCSCHits = False + from McEventCollectionFilter.McEventCollectionFilterConf import CSC_HitsTruthRelink + topSequence += CSC_HitsTruthRelink("CSC_HitsTruthRelink") except: filterHitLog.error('Trying to run on upgrade samples (no CSC) with an old tag of McEventCollectionFilter - job will fail.') + if DetFlags.detdescr.MDT_on(): + try: + from McEventCollectionFilter.McEventCollectionFilterConf import MDT_HitsTruthRelink + topSequence += MDT_HitsTruthRelink("MDT_HitsTruthRelink") + except: + filterHitLog.error('Failed to add MDT Hits to McEventCollectionFilter - job will fail.') + if DetFlags.detdescr.RPC_on(): + try: + from McEventCollectionFilter.McEventCollectionFilterConf import RPC_HitsTruthRelink + topSequence += RPC_HitsTruthRelink("RPC_HitsTruthRelink") + except: + filterHitLog.error('Failed to add RPC Hits to McEventCollectionFilter - job will fail.') + if DetFlags.detdescr.TGC_on(): + try: + from McEventCollectionFilter.McEventCollectionFilterConf import TGC_HitsTruthRelink + topSequence += TGC_HitsTruthRelink("TGC_HitsTruthRelink") + except: + filterHitLog.error('Failed to add TGC Hits to McEventCollectionFilter - job will fail.') ## For RUN3 geometries, turn on the NSW technologies. if DetFlags.detdescr.sTGC_on(): try: - McEventCollectionFilter.UseSTGCHits = True + from McEventCollectionFilter.McEventCollectionFilterConf import sTGC_HitsTruthRelink + topSequence += sTGC_HitsTruthRelink("sTGC_HitsTruthRelink") except: filterHitLog.error('Failed to add sTGC Hits to McEventCollectionFilter - job will fail.') if DetFlags.detdescr.Micromegas_on(): try: - McEventCollectionFilter.UseMMHits = True + from McEventCollectionFilter.McEventCollectionFilterConf import MM_HitsTruthRelink + topSequence += MM_HitsTruthRelink("MM_HitsTruthRelink") except: filterHitLog.error('Failed to add Micromega Hits to McEventCollectionFilter - job will fail.') - topSequence += McEventCollectionFilter #-------------------------------------------------------------- diff --git a/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_presampling_mu200.sh b/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_presampling_mu200.sh new file mode 100755 index 0000000000000000000000000000000000000000..4fa597b361dba91ef608d31a85942058a809f10d --- /dev/null +++ b/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_presampling_mu200.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# +# art-description: Run 4 pile-up presampling +# art-type: grid +# art-include: master/Athena +# art-output: RUN4_presampling.mu200.RDO.pool.root + +Events=3 +HSHitsFile="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/HITS/single_neutrino.HITS.pool.root" +HighPtMinbiasHitsFiles="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/HITS/user.tadej.Upgrade.800381.Py8EG_A3NNPDF23LO_minbias_inelastic_high_keepJets.simul.HITS_FILT.20210902.r1_EXT0/*" +LowPtMinbiasHitsFiles="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/HITS/user.tadej.Upgrade.800380.Py8EG_A3NNPDF23LO_minbias_inelastic_low_keepJets.simul.HITS_FILT.20210902.r1_EXT0/*" +DigiOutFileName="RUN4_presampling.mu200.RDO.pool.root" + +Digi_tf.py \ +--CA \ +--PileUpPresampling True \ +--conditionsTag default:OFLCOND-MC15c-SDR-14-05 \ +--digiSeedOffset1 170 --digiSeedOffset2 170 \ +--digiSteeringConf "StandardSignalOnlyTruth" \ +--geometryVersion default:ATLAS-P2-ITK-24-00-00 \ +--inputHITSFile ${HSHitsFile} \ +--inputHighPtMinbiasHitsFile ${HighPtMinbiasHitsFiles} \ +--inputLowPtMinbiasHitsFile ${LowPtMinbiasHitsFiles} \ +--jobNumber 568 \ +--maxEvents ${Events} \ +--outputRDOFile ${DigiOutFileName} \ +--preInclude 'HITtoRDO:Campaigns.PhaseIIPileUp' \ +--postInclude 'PyJobTransforms.UseFrontier' \ +--skipEvents 0 + +rc=$? +status=$rc +echo "art-result: $rc Digi_tf.py" + +exit $status diff --git a/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_single_muon_no_pileup.sh b/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_single_muon_no_pileup.sh new file mode 100755 index 0000000000000000000000000000000000000000..71ee9c08f196a93ff788ebe5b59e0fbdb244c681 --- /dev/null +++ b/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_single_muon_no_pileup.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# +# art-description: Run 4 digitization of a single muon sample without pile-up +# art-type: grid +# art-include: master/Athena +# art-output: RUN4_muons.RDO.pool.root + +Events=300 +HSHitsFile="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/HITS/single_muon.HITS.pool.root" +DigiOutFileName="RUN4_muons.RDO.pool.root" + +Digi_tf.py \ +--CA \ +--detectors RPC \ +--conditionsTag default:OFLCOND-MC15c-SDR-14-05 \ +--digiSeedOffset1 170 --digiSeedOffset2 170 \ +--geometryVersion default:ATLAS-P2-ITK-24-00-00 \ +--inputHITSFile ${HSHitsFile} \ +--jobNumber 568 \ +--maxEvents ${Events} \ +--outputRDOFile ${DigiOutFileName} \ +--postInclude 'PyJobTransforms.UseFrontier' \ +--preInclude 'HITtoRDO:Campaigns.PhaseIINoPileUp' \ +--skipEvents 0 + +rc=$? +status=$rc +echo "art-result: $rc Digi_tf.py" + +exit $status diff --git a/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_ttbar_mu200.sh b/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_ttbar_mu200.sh new file mode 100755 index 0000000000000000000000000000000000000000..7bf8747b32ba5d7d7953199d63e2bf32ca32dfaa --- /dev/null +++ b/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_ttbar_mu200.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# art-description: Run 4 digitization of a ttbar sample with pile-up +# art-type: grid +# art-include: master/Athena +# art-output: RUN4_ttbar.mu200.RDO.pool.root + +Events=3 +HSHitsFile="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/HITS/ttbar.HITS.pool.root" +HighPtMinbiasHitsFiles="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/HITS/user.tadej.Upgrade.800381.Py8EG_A3NNPDF23LO_minbias_inelastic_high_keepJets.simul.HITS_FILT.20210902.r1_EXT0/*" +LowPtMinbiasHitsFiles="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/HITS/user.tadej.Upgrade.800380.Py8EG_A3NNPDF23LO_minbias_inelastic_low_keepJets.simul.HITS_FILT.20210902.r1_EXT0/*" +DigiOutFileName="RUN4_ttbar.mu200.RDO.pool.root" + +Digi_tf.py \ +--CA \ +--conditionsTag default:OFLCOND-MC15c-SDR-14-05 \ +--digiSeedOffset1 170 --digiSeedOffset2 170 \ +--digiSteeringConf "StandardSignalOnlyTruth" \ +--geometryVersion default:ATLAS-P2-ITK-24-00-00 \ +--inputHITSFile ${HSHitsFile} \ +--inputHighPtMinbiasHitsFile ${HighPtMinbiasHitsFiles} \ +--inputLowPtMinbiasHitsFile ${LowPtMinbiasHitsFiles} \ +--jobNumber 568 \ +--maxEvents ${Events} \ +--outputRDOFile ${DigiOutFileName} \ +--preInclude 'HITtoRDO:Campaigns.PhaseIIPileUp' \ +--postInclude 'PyJobTransforms.UseFrontier' \ +--skipEvents 0 + +rc=$? +status=$rc +echo "art-result: $rc Digi_tf.py" + +exit $status diff --git a/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_ttbar_no_pileup.sh b/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_ttbar_no_pileup.sh new file mode 100755 index 0000000000000000000000000000000000000000..c1202060cc5cc1a2e515e7a4db64558ea30a7565 --- /dev/null +++ b/Simulation/Tests/DigitizationTests/test/test_Digi_tf_RUN4_ttbar_no_pileup.sh @@ -0,0 +1,29 @@ +#!/bin/sh +# +# art-description: Run 4 digitization of a ttbar sample without pile-up +# art-type: grid +# art-include: master/Athena +# art-output: RUN4_ttbar.RDO.pool.root + +Events=5 +HSHitsFile="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/HITS/ttbar.HITS.pool.root" +DigiOutFileName="RUN4_ttbar.RDO.pool.root" + +Digi_tf.py \ +--CA \ +--conditionsTag default:OFLCOND-MC15c-SDR-14-05 \ +--digiSeedOffset1 170 --digiSeedOffset2 170 \ +--geometryVersion default:ATLAS-P2-ITK-24-00-00 \ +--inputHITSFile ${HSHitsFile} \ +--jobNumber 568 \ +--maxEvents ${Events} \ +--outputRDOFile ${DigiOutFileName} \ +--preInclude 'HITtoRDO:Campaigns.PhaseIINoPileUp' \ +--postInclude 'PyJobTransforms.UseFrontier' \ +--skipEvents 0 + +rc=$? +status=$rc +echo "art-result: $rc Digi_tf.py" + +exit $status diff --git a/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_minbias.sh b/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_minbias.sh new file mode 100755 index 0000000000000000000000000000000000000000..c0afba699a746662547372b5ca54931974e476fe --- /dev/null +++ b/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_minbias.sh @@ -0,0 +1,49 @@ +#!/bin/sh +# +# art-description: MC16-style simulation using FullG4 and RUN4 geometry, minimum bias +# art-include: master/Athena +# art-type: grid +# art-output: test_minbias.HITS.pool.root +# art-output: test_minbias.HITS_FILT.pool.root + +Input=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EVNT/mc15_14TeV.800381.Py8EG_A3NNPDF23LO_minbias_inelastic_high_keepJets.evgen.EVNT.e8205/EVNT.22128782._000036.pool.root.1 +Output=test_minbias.HITS.pool.root + +# RUN4 setup +# ATLAS-P2-ITK-24-00-00 and OFLCOND-MC15c-SDR-14-05 +Sim_tf.py \ +--multithreaded \ +--CA \ +--conditionsTag 'default:OFLCOND-MC15c-SDR-14-05' \ +--physicsList 'FTFP_BERT_ATL' \ +--truthStrategy 'MC15aPlus' \ +--simulator 'FullG4MT' \ +--postInclude 'default:PyJobTransforms.UseFrontier' \ +--preInclude 'EVNTtoHITS:SimuJobTransforms.BeamPipeKill,SimuJobTransforms.FrozenShowersFCalOnly,SimuJobTransforms.TightMuonStepping' \ +--DataRunNumber '242000' \ +--geometryVersion 'default:ATLAS-P2-ITK-24-00-00' \ +--inputEVNTFile $Input \ +--outputHITSFile $Output \ +--maxEvents 10 \ +--imf False + +rc=$? +status=$rc +echo "art-result: $rc simulation" + +rc2=-9999 +if [ $rc -eq 0 ] +then + FilterHit_tf.py \ + --CA \ + --TruthReductionScheme SingleGenParticle \ + --inputHITSFile $Output \ + --outputHITS_FILTFile test_minbias.HITS_FILT.pool.root + + rc2=$? + status=$rc2 +fi + +echo "art-result: $rc2 filtering" + +exit $status diff --git a/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_single_muon.sh b/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_single_muon.sh index ec58401c68cf12efe5bbeae0139c246c9834d818..c4a1049cff0084975787abc7ca0c52b9640a25b3 100755 --- a/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_single_muon.sh +++ b/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_single_muon.sh @@ -3,9 +3,9 @@ # art-description: MC16-style simulation using FullG4 and RUN4 geometry, single muon # art-include: master/Athena # art-type: grid -# art-output: test.HITS.pool.root +# art-output: test_muons.HITS.pool.root -Input=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/InDetSLHC_Example/inputs/EVNT.09244578._000001.pool.root.1 +Input=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EVNT/mc15_14TeV.422036.ParticleGun_single_mu_Pt100.evgen.EVNT.e5286/EVNT.09244578._000001.pool.root.1 # RUN4 setup # ATLAS-P2-ITK-24-00-00 and OFLCOND-MC15c-SDR-14-05 @@ -20,7 +20,7 @@ Sim_tf.py \ --DataRunNumber '242000' \ --geometryVersion 'default:ATLAS-P2-ITK-24-00-00' \ --inputEVNTFile $Input \ ---outputHITSFile "test.HITS.pool.root" \ +--outputHITSFile "test_muons.HITS.pool.root" \ --maxEvents 1000 \ --imf False diff --git a/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_single_neutrino.sh b/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_single_neutrino.sh new file mode 100755 index 0000000000000000000000000000000000000000..54fde7b46766c5e088e4845322522fef2ca5a0b6 --- /dev/null +++ b/Simulation/Tests/ISF_Validation/test/test_RUN4_FullG4_single_neutrino.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# +# art-description: MC16-style simulation using FullG4 and RUN4 geometry, single neutrino +# art-include: master/Athena +# art-type: grid +# art-output: test_neutrino.HITS.pool.root + +Input=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/EVNT/mc15_14TeV.900149.PG_single_nu_Pt50.evgen.EVNT.e8371/EVNT.26393337._000001.pool.root.1 + +# RUN4 setup +# ATLAS-P2-ITK-24-00-00 and OFLCOND-MC15c-SDR-14-05 +Sim_tf.py \ +--CA \ +--conditionsTag 'default:OFLCOND-MC15c-SDR-14-05' \ +--physicsList 'FTFP_BERT_ATL' \ +--truthStrategy 'MC15aPlus' \ +--simulator 'FullG4MT' \ +--postInclude 'default:PyJobTransforms.UseFrontier' \ +--preInclude 'EVNTtoHITS:SimuJobTransforms.BeamPipeKill,SimuJobTransforms.FrozenShowersFCalOnly,SimuJobTransforms.TightMuonStepping' \ +--DataRunNumber '242000' \ +--geometryVersion 'default:ATLAS-P2-ITK-24-00-00' \ +--inputEVNTFile $Input \ +--outputHITSFile "test_neutrino.HITS.pool.root" \ +--maxEvents 1000 \ +--imf False + +rc=$? +echo "art-result: $rc simulation" + +exit $rc diff --git a/Simulation/Tests/SimCoreTests/test/test_AtlasG4_CavernBg_EVNT2TR_CGvsCA.sh b/Simulation/Tests/SimCoreTests/test/test_AtlasG4_CavernBg_EVNT2TR_CGvsCA.sh index f60f1e5cbee120b509f76ea667d0aac12c3679df..cb93d50543d3e1a38ae1f9508d5563b86c25e8b2 100755 --- a/Simulation/Tests/SimCoreTests/test/test_AtlasG4_CavernBg_EVNT2TR_CGvsCA.sh +++ b/Simulation/Tests/SimCoreTests/test/test_AtlasG4_CavernBg_EVNT2TR_CGvsCA.sh @@ -2,6 +2,7 @@ # # art-description: Run simulation outside ISF, reading min bias events, write cavern background track records, using 2015 geometry and conditions # art-type: grid +# art-include: master/Athena # art-output: test.*.EVNT_TR.pool.root # art-output: log.* # art-output: Config*.pkl diff --git a/Simulation/Tests/SimCoreTests/test/test_AtlasG4_CosmicSimTR_CGvsCA.sh b/Simulation/Tests/SimCoreTests/test/test_AtlasG4_CosmicSimTR_CGvsCA.sh index 97a0dddfc440a5ea4b299d6d9b7ba3b281ef02fb..d7f1f06fbea7c283e3e8f07910e0145e2b7efb96 100755 --- a/Simulation/Tests/SimCoreTests/test/test_AtlasG4_CosmicSimTR_CGvsCA.sh +++ b/Simulation/Tests/SimCoreTests/test/test_AtlasG4_CosmicSimTR_CGvsCA.sh @@ -2,6 +2,7 @@ # # art-description: Run cosmics simulation outside ISF, using TrackRecords as input, using 2015 geometry and conditions # art-type: grid +# art-include: master/Athena # art-output: test.*.HITS.pool.root # art-output: log.* # art-output: Config*.pkl diff --git a/Simulation/Tools/McEventCollectionFilter/CMakeLists.txt b/Simulation/Tools/McEventCollectionFilter/CMakeLists.txt index 9b04f0b0665729e20c7a6011bcda2b4eaa96cb38..6dbdc612d615e4deef35c94602bb528656b8196a 100644 --- a/Simulation/Tools/McEventCollectionFilter/CMakeLists.txt +++ b/Simulation/Tools/McEventCollectionFilter/CMakeLists.txt @@ -1,25 +1,11 @@ -################################################################################ -# Package: McEventCollectionFilter -################################################################################ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( McEventCollectionFilter ) -# External dependencies: -find_package( CLHEP ) -find_package( Eigen ) - # Component(s) in the package: -atlas_add_library( McEventCollectionFilterLib - src/*.cxx - NO_PUBLIC_HEADERS - PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIRS} - PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS} - LINK_LIBRARIES AthenaBaseComps GeneratorObjects InDetSimEvent MuonSimEvent StoreGateLib - PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} AtlasHepMCLib ${EIGEN_LIBRARIES} GeoPrimitives GaudiKernel ) - atlas_add_component( McEventCollectionFilter - src/components/*.cxx - LINK_LIBRARIES McEventCollectionFilterLib ) + src/*.cxx src/components/*.cxx + PRIVATE_LINK_LIBRARIES AthenaBaseComps AtlasHepMCLib GaudiKernel GeneratorObjects InDetSimEvent MuonSimEvent ) atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfig.py b/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfig.py index 8a2ff3a43374e947f9a2d3267f84d6a552648cdd..d0a62422855e02ab65bb26c7533b5928a223be26 100644 --- a/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfig.py +++ b/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfig.py @@ -1,7 +1,219 @@ -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -from AthenaCommon import CfgMgr -def getMcEventCollectionFilter(name="McEventCollectionFilter", **kwargs): - from AthenaCommon.DetFlags import DetFlags - kwargs.setdefault("UseTRTHits", DetFlags.detdescr.TRT_on()) - return CfgMgr.McEventCollectionFilter(name, **kwargs) +# utilities +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory +from SGComps.AddressRemappingConfig import InputRenameCfg + + +def McEventCollectionFilterCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("McEventCollection", "TruthEvent", "TruthEventOLD")) + + if flags.Detector.EnableTRT: + kwargs.setdefault("InputTRTHits", "TRTUncompressedHitsOLD") + else: + kwargs.setdefault("InputTRTHits", "") + + kwargs.setdefault("KeepElectronsLinkedToTRTHits", False) + + acc.addEventAlgo(CompFactory.McEventCollectionFilter(name="McEventCollectionFilter", **kwargs)) + return acc + + +def BCM_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("SiHitCollection", "BCMHits", "BCMHitsOLD")) + + kwargs.setdefault("InputHits", "BCMHitsOLD") + kwargs.setdefault("OutputHits", "BCMHits") + + acc.addEventAlgo(CompFactory.SiliconHitsTruthRelink(name="BCM_HitsTruthRelink", **kwargs)) + return acc + + +def PixelHitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("SiHitCollection", "PixelHits", "PixelHitsOLD")) + + kwargs.setdefault("InputHits", "PixelHitsOLD") + kwargs.setdefault("OutputHits", "PixelHits") + + acc.addEventAlgo(CompFactory.SiliconHitsTruthRelink(name="PixelHitsTruthRelink", **kwargs)) + return acc + + +def SCT_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("SiHitCollection", "SCT_Hits", "SCT_HitsOLD")) + + kwargs.setdefault("InputHits", "SCT_HitsOLD") + kwargs.setdefault("OutputHits", "SCT_Hits") + + acc.addEventAlgo(CompFactory.SiliconHitsTruthRelink(name="SCT_HitsTruthRelink", **kwargs)) + return acc + + +def TRT_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("TRTUncompressedHitCollection", "TRTUncompressedHits", "TRTUncompressedHitsOLD")) + + kwargs.setdefault("InputHits", "TRTUncompressedHitsOLD") + kwargs.setdefault("OutputHits", "TRTUncompressedHits") + + kwargs.setdefault("KeepElectronsLinkedToTRTHits", False) + + acc.addEventAlgo(CompFactory.TRT_HitsTruthRelink(name="TRT_HitsTruthRelink", **kwargs)) + return acc + + + +def ITkPixelHitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("SiHitCollection", "ITkPixelHits", "ITkPixelHitsOLD")) + + kwargs.setdefault("InputHits", "ITkPixelHitsOLD") + kwargs.setdefault("OutputHits", "ITkPixelHits") + + acc.addEventAlgo(CompFactory.SiliconHitsTruthRelink(name="ITkPixelHitsTruthRelink", **kwargs)) + return acc + + +def ITkStripHitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("SiHitCollection", "ITkStripHits", "ITkStripHitsOLD")) + + kwargs.setdefault("InputHits", "ITkStripHitsOLD") + kwargs.setdefault("OutputHits", "ITkStripHits") + + acc.addEventAlgo(CompFactory.SiliconHitsTruthRelink(name="ITkStripHitsTruthRelink", **kwargs)) + return acc + + +def HGTD_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("SiHitCollection", "HGTD_Hits", "HGTD_HitsOLD")) + + kwargs.setdefault("InputHits", "HGTD_HitsOLD") + kwargs.setdefault("OutputHits", "HGTD_Hits") + + acc.addEventAlgo(CompFactory.SiliconHitsTruthRelink(name="HGTD_HitsTruthRelink", **kwargs)) + return acc + + +def CSC_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("CSCSimHitCollection", "CSC_Hits", "CSC_HitsOLD")) + + kwargs.setdefault("InputHits", "CSC_HitsOLD") + kwargs.setdefault("OutputHits", "CSC_Hits") + + acc.addEventAlgo(CompFactory.CSC_HitsTruthRelink(name="CSC_HitsTruthRelink", **kwargs)) + return acc + + +def MDT_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("MDTSimHitCollection", "MDT_Hits", "MDT_HitsOLD")) + + kwargs.setdefault("InputHits", "MDT_HitsOLD") + kwargs.setdefault("OutputHits", "MDT_Hits") + + acc.addEventAlgo(CompFactory.MDT_HitsTruthRelink(name="MDT_HitsTruthRelink", **kwargs)) + return acc + + +def MM_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("MMSimHitCollection", "MicromegasSensitiveDetector", "MicromegasSensitiveDetectorOLD")) + + kwargs.setdefault("InputHits", "MicromegasSensitiveDetectorOLD") + kwargs.setdefault("OutputHits", "MicromegasSensitiveDetector") + + acc.addEventAlgo(CompFactory.MM_HitsTruthRelink(name="MM_HitsTruthRelink", **kwargs)) + return acc + + +def RPC_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("RPCSimHitCollection", "RPC_Hits", "RPC_HitsOLD")) + + kwargs.setdefault("InputHits", "RPC_HitsOLD") + kwargs.setdefault("OutputHits", "RPC_Hits") + + acc.addEventAlgo(CompFactory.RPC_HitsTruthRelink(name="RPC_HitsTruthRelink", **kwargs)) + return acc + + +def TGC_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("TGCSimHitCollection", "TGC_Hits", "TGC_HitsOLD")) + + kwargs.setdefault("InputHits", "TGC_HitsOLD") + kwargs.setdefault("OutputHits", "TGC_Hits") + + acc.addEventAlgo(CompFactory.TGC_HitsTruthRelink(name="TGC_HitsTruthRelink", **kwargs)) + return acc + + +def sTGC_HitsTruthRelinkCfg(flags, **kwargs): + acc = ComponentAccumulator() + + acc.merge(InputRenameCfg("sTGCSimHitCollection", "sTGCSensitiveDetector", "sTGCSensitiveDetectorOLD")) + + kwargs.setdefault("InputHits", "sTGCSensitiveDetectorOLD") + kwargs.setdefault("OutputHits", "sTGCSensitiveDetector") + + acc.addEventAlgo(CompFactory.sTGC_HitsTruthRelink(name="sTGC_HitsTruthRelink", **kwargs)) + return acc + + +def DecorateTruthPileupParticlesCfg(flags, **kwargs): + acc = ComponentAccumulator() + + kwargs.setdefault("InputParticleContainer", "TruthPileupParticles") + kwargs.setdefault("OutputDecoration", "TruthPileupParticles.PVz") + + acc.addEventAlgo(CompFactory.PileUpTruthDecoration(name="DecorateTruthPileupParticles", **kwargs)) + return acc + + +def DecoratePileupAntiKt4TruthJetsCfg(flags, **kwargs): + acc = ComponentAccumulator() + + kwargs.setdefault("InputParticleContainer", "AntiKt4TruthJets") + kwargs.setdefault("OutputDecoration", "AntiKt4TruthJets.PVz") + + acc.addEventAlgo(CompFactory.PileUpTruthDecoration(name="DecoratePileupAntiKt4TruthJets", **kwargs)) + return acc + + +def DecoratePileupAntiKt6TruthJetsCfg(flags, **kwargs): + acc = ComponentAccumulator() + + kwargs.setdefault("InputParticleContainer", "AntiKt6TruthJets") + kwargs.setdefault("OutputDecoration", "AntiKt6TruthJets.PVz") + + acc.addEventAlgo(CompFactory.PileUpTruthDecoration(name="DecoratePileupAntiKt6TruthJets", **kwargs)) + return acc + + +def TruthResetAlgCfg(flags, sequenceName='SimSequence', **kwargs): + result = ComponentAccumulator() + kwargs.setdefault("InputMcEventCollection", "TruthEventOLD") + kwargs.setdefault("OutputMcEventCollection", "BeamTruthEvent") + result.addEventAlgo(CompFactory.TruthResetAlg(name="TruthResetAlg", **kwargs), sequenceName) + return result diff --git a/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigDb.py b/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigDb.py index a3ff437a0ff9d6c19d92284f955f2dc662ec9eb2..dd157cdd95c99fd192c3c77948c6ca4ff26fb7c6 100644 --- a/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigDb.py +++ b/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigDb.py @@ -1,4 +1,7 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from AthenaCommon.CfgGetter import addAlgorithm -addAlgorithm("McEventCollectionFilter.McEventCollectionFilterConfig.getMcEventCollectionFilter" , "McEventCollectionFilter") + +addAlgorithm("McEventCollectionFilter.McEventCollectionFilterConfigLegacy.getDecorateTruthPileupParticles", "DecorateTruthPileupParticles") +addAlgorithm("McEventCollectionFilter.McEventCollectionFilterConfigLegacy.getDecoratePileupAntiKt4TruthJets", "DecoratePileupAntiKt4TruthJets") +addAlgorithm("McEventCollectionFilter.McEventCollectionFilterConfigLegacy.getDecoratePileupAntiKt6TruthJets", "DecoratePileupAntiKt6TruthJets") diff --git a/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigLegacy.py b/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigLegacy.py new file mode 100644 index 0000000000000000000000000000000000000000..cab6a68a1b55b2de6668d57b762bd257d9a71b9f --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigLegacy.py @@ -0,0 +1,20 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +from AthenaCommon import CfgMgr + +def getDecorateTruthPileupParticles(name="DecorateTruthPileupParticles", **kwargs): + kwargs.setdefault("InputParticleContainer", "TruthPileupParticles") + kwargs.setdefault("OutputDecoration", "TruthPileupParticles.PVz") + return CfgMgr.PileUpTruthDecoration(name, **kwargs) + + +def getDecoratePileupAntiKt4TruthJets(name="DecoratePileupAntiKt4TruthJets", **kwargs): + kwargs.setdefault("InputParticleContainer", "AntiKt4TruthJets") + kwargs.setdefault("OutputDecoration", "AntiKt4TruthJets.PVz") + return CfgMgr.PileUpTruthDecoration(name, **kwargs) + + +def getDecoratePileupAntiKt6TruthJets(name="DecoratePileupAntiKt6TruthJets", **kwargs): + kwargs.setdefault("InputParticleContainer", "AntiKt6TruthJets") + kwargs.setdefault("OutputDecoration", "AntiKt6TruthJets.PVz") + return CfgMgr.PileUpTruthDecoration(name, **kwargs) diff --git a/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigNew.py b/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigNew.py deleted file mode 100644 index 0c0770b7683bc17e254d4630f88c8e7063eed120..0000000000000000000000000000000000000000 --- a/Simulation/Tools/McEventCollectionFilter/python/McEventCollectionFilterConfigNew.py +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration - -# utilities -from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from AthenaConfiguration.ComponentFactory import CompFactory -from SGComps.AddressRemappingConfig import InputRenameCfg - -def McEventCollectionFilterCfg(flags, **kwargs): - acc = ComponentAccumulator() - #acc.merge(LArGMCfg(flags)) - acc.merge(InputRenameCfg("McEventCollection","TruthEvent","TruthEventOLD")) - acc.merge(InputRenameCfg("SiHitCollection","BCMHits","BCMHitsOLD")) - acc.merge(InputRenameCfg("SiHitCollection","PixelHits","PixelHitsOLD")) - acc.merge(InputRenameCfg("SiHitCollection","SCT_Hits","SCT_HitsOLD")) - acc.merge(InputRenameCfg("TRTUncompressedHitCollection","TRTUncompressedHits","TRTUncompressedHitsOLD")) - acc.merge(InputRenameCfg("CSCSimHitCollection","CSC_Hits","CSC_HitsOLD")) - acc.merge(InputRenameCfg("MDTSimHitCollection","MDT_Hits","MDT_HitsOLD")) - acc.merge(InputRenameCfg("RPCSimHitCollection","RPC_Hits","RPC_HitsOLD")) - acc.merge(InputRenameCfg("TGCSimHitCollection","TGC_Hits","TGC_HitsOLD")) - acc.merge(InputRenameCfg("sTGCSimHitCollection","sTGCSensitiveDetector","sTGCSensitiveDetectorOLD")) - acc.merge(InputRenameCfg("MMSimHitCollection","MicromegasSensitiveDetector","MicromegasSensitiveDetectorOLD")) - kwargs.setdefault("UseBCMHits", flags.Detector.EnableBCM) - kwargs.setdefault("UseTRTHits", flags.Detector.EnableTRT) - kwargs.setdefault("UseCSCHits", flags.Detector.EnableCSC) - kwargs.setdefault("UseSTGCHits", flags.Detector.EnablesTGC) - kwargs.setdefault("UseMMHits", flags.Detector.EnableMM) - McEventCollectionFilter = CompFactory.McEventCollectionFilter - acc.addEventAlgo(McEventCollectionFilter(name="McEventCollectionFilter", **kwargs)) - return acc diff --git a/Simulation/Tools/McEventCollectionFilter/src/CSC_HitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/CSC_HitsTruthRelink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..3885bad30f221cb33fe05818bada590dffc842ca --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/CSC_HitsTruthRelink.cxx @@ -0,0 +1,71 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "CSC_HitsTruthRelink.h" + + +CSC_HitsTruthRelink::CSC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator) + : HitsTruthRelinkBase(name, pSvcLocator) +{ +} + + +StatusCode CSC_HitsTruthRelink::initialize() +{ + ATH_CHECK(HitsTruthRelinkBase::initialize()); + + // Check and initialize keys + ATH_CHECK( m_inputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey); + ATH_CHECK( m_outputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey); + return StatusCode::SUCCESS; +} + + +StatusCode CSC_HitsTruthRelink::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Doing truth relinking"); + + SG::ReadHandle<CSCSimHitCollection> inputCollection(m_inputHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); + + SG::WriteHandle<CSCSimHitCollection> outputCollection(m_outputHitsKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<CSCSimHitCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store()); + + // Do relinking + int referenceBarcode{}; + ATH_CHECK(getReferenceBarcode(ctx, &referenceBarcode)); + + for (const CSCSimHit &hit : *inputCollection) { + const HepMcParticleLink oldLink = hit.particleLink(); + + int currentBarcode{}; + if (oldLink.barcode() != 0) { + currentBarcode = referenceBarcode; + } + + HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), oldLink.getEventCollection(), HepMcParticleLink::IS_INDEX, ctx); + int id = hit.CSCid(); + double time = hit.globalTime(); + double energyDeposit = hit.energyDeposit(); + Amg::Vector3D start = hit.getHitStart(); + Amg::Vector3D end = hit.getHitEnd(); + int pdgID = hit.particleID(); + double kineticEnergy = hit.kineticEnergy(); + + outputCollection->Emplace(id, time, energyDeposit, start, end, pdgID, particleLink, kineticEnergy); + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/CSC_HitsTruthRelink.h b/Simulation/Tools/McEventCollectionFilter/src/CSC_HitsTruthRelink.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9d089987716c177dea380806c7367635799091 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/CSC_HitsTruthRelink.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef CSCHITSTRUTHRELINK_H +#define CSCHITSTRUTHRELINK_H + +// Base class include +#include "HitsTruthRelinkBase.h" + +#include <MuonSimEvent/CSCSimHitCollection.h> + + +class CSC_HitsTruthRelink : public HitsTruthRelinkBase +{ +public: + CSC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + SG::ReadHandleKey<CSCSimHitCollection> m_inputHitsKey {this, "InputHits", "CSC_HitsOLD", "Input CSC hits name"}; + SG::WriteHandleKey<CSCSimHitCollection> m_outputHitsKey {this, "OutputHits", "CSC_Hits", "Output CSC hits name"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/HitsTruthRelinkBase.cxx b/Simulation/Tools/McEventCollectionFilter/src/HitsTruthRelinkBase.cxx new file mode 100644 index 0000000000000000000000000000000000000000..b5c34ca9a7276cd8e688203ffd884333d3ae10df --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/HitsTruthRelinkBase.cxx @@ -0,0 +1,64 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "HitsTruthRelinkBase.h" + + +HitsTruthRelinkBase::HitsTruthRelinkBase(const std::string &name, ISvcLocator *pSvcLocator) + : AthReentrantAlgorithm(name, pSvcLocator) +{ +} + + +StatusCode HitsTruthRelinkBase::initialize() +{ + // Check and initialize keys + ATH_CHECK( m_inputTruthCollectionKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputTruthCollectionKey); + return StatusCode::SUCCESS; +} + + +StatusCode HitsTruthRelinkBase::getReferenceBarcode(const EventContext &ctx, int *barcode) const +{ + SG::ReadHandle<McEventCollection> inputCollection(m_inputTruthCollectionKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input truth collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input truth collection " << inputCollection.name() << " in store " << inputCollection.store()); + + const HepMC::GenEvent *genEvt = *(inputCollection->begin()); +#ifdef HEPMC3 + size_t nVertices = genEvt->vertices().size(); +#else + size_t nVertices = genEvt->vertices_size(); +#endif + if (nVertices == 0) { + ATH_MSG_ERROR("Truth collection should have at least one vertex!"); + return StatusCode::FAILURE; + } + + const HepMC::ConstGenVertexPtr genVtx = HepMC::barcode_to_vertex(genEvt, -nVertices); +#ifdef HEPMC3 + size_t nParticles = genVtx->particles_out().size(); +#else + size_t nParticles = genVtx->particles_out_size(); +#endif + if (nParticles == 0) { + ATH_MSG_ERROR("Truth vertex should have at least one particle!"); + return StatusCode::FAILURE; + } + +#ifdef HEPMC3 + *barcode = HepMC::barcode(genVtx->particles_out().back()); +#else + *barcode = HepMC::barcode(*(genVtx->particles_out_const_begin())); +#endif + + ATH_MSG_DEBUG("Reference barcode: " << *barcode); + + return StatusCode::SUCCESS; + +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/HitsTruthRelinkBase.h b/Simulation/Tools/McEventCollectionFilter/src/HitsTruthRelinkBase.h new file mode 100644 index 0000000000000000000000000000000000000000..b6fa45d6fcba79df7a870a5c44e9e3e3ff03aa02 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/HitsTruthRelinkBase.h @@ -0,0 +1,26 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef HITSTRUTHRELINKBASE_H +#define HITSTRUTHRELINKBASE_H + +// Base class include +#include <AthenaBaseComps/AthReentrantAlgorithm.h> +#include <GeneratorObjects/McEventCollection.h> + + +class HitsTruthRelinkBase : public AthReentrantAlgorithm +{ +public: + HitsTruthRelinkBase(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + +protected: + StatusCode getReferenceBarcode(const EventContext &ctx, int *barcode) const; + + SG::ReadHandleKey<McEventCollection> m_inputTruthCollectionKey {this, "InputTruthCollection", "TruthEvent", "Input truth collection name"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/MDT_HitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/MDT_HitsTruthRelink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..e537ae13dcf8f70516a155cdc770c7f6459de7fc --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/MDT_HitsTruthRelink.cxx @@ -0,0 +1,72 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "MDT_HitsTruthRelink.h" + + +MDT_HitsTruthRelink::MDT_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator) + : HitsTruthRelinkBase(name, pSvcLocator) +{ +} + + +StatusCode MDT_HitsTruthRelink::initialize() +{ + ATH_CHECK(HitsTruthRelinkBase::initialize()); + + // Check and initialize keys + ATH_CHECK( m_inputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey); + ATH_CHECK( m_outputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey); + return StatusCode::SUCCESS; +} + + +StatusCode MDT_HitsTruthRelink::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Doing truth relinking"); + + SG::ReadHandle<MDTSimHitCollection> inputCollection(m_inputHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); + + SG::WriteHandle<MDTSimHitCollection> outputCollection(m_outputHitsKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<MDTSimHitCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store()); + + // Do relinking + int referenceBarcode{}; + ATH_CHECK(getReferenceBarcode(ctx, &referenceBarcode)); + + for (const MDTSimHit &hit : *inputCollection) { + const HepMcParticleLink oldLink = hit.particleLink(); + + int currentBarcode{}; + if (oldLink.barcode() != 0) { + currentBarcode = referenceBarcode; + } + + HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), oldLink.getEventCollection(), HepMcParticleLink::IS_INDEX, ctx); + int id = hit.MDTid(); + double time = hit.globalTime(); + double radius = hit.driftRadius(); + Amg::Vector3D position = hit.localPosition(); + double stepLength = hit.stepLength(); + double energyDeposit = hit.energyDeposit(); + int pdgID = hit.particleEncoding(); + double kineticEnergy = hit.kineticEnergy(); + + outputCollection->Emplace(id, time, radius, position, particleLink, stepLength, energyDeposit, pdgID, kineticEnergy); + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/MDT_HitsTruthRelink.h b/Simulation/Tools/McEventCollectionFilter/src/MDT_HitsTruthRelink.h new file mode 100644 index 0000000000000000000000000000000000000000..fcb4e6f517eeb189d02e97ed4fd35ebfe83005e3 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/MDT_HitsTruthRelink.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef MDTHITSTRUTHRELINK_H +#define MDTHITSTRUTHRELINK_H + +// Base class include +#include "HitsTruthRelinkBase.h" + +#include <MuonSimEvent/MDTSimHitCollection.h> + + +class MDT_HitsTruthRelink : public HitsTruthRelinkBase +{ +public: + MDT_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + SG::ReadHandleKey<MDTSimHitCollection> m_inputHitsKey {this, "InputHits", "MDT_HitsOLD", "Input MDT hits name"}; + SG::WriteHandleKey<MDTSimHitCollection> m_outputHitsKey {this, "OutputHits", "MDT_Hits", "Output MDT hits name"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/MM_HitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/MM_HitsTruthRelink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..ae7837548f7d3801a4371c044ce4fee597da4262 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/MM_HitsTruthRelink.cxx @@ -0,0 +1,72 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "MM_HitsTruthRelink.h" + + +MM_HitsTruthRelink::MM_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator) + : HitsTruthRelinkBase(name, pSvcLocator) +{ +} + + +StatusCode MM_HitsTruthRelink::initialize() +{ + ATH_CHECK(HitsTruthRelinkBase::initialize()); + + // Check and initialize keys + ATH_CHECK( m_inputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey); + ATH_CHECK( m_outputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey); + return StatusCode::SUCCESS; +} + + +StatusCode MM_HitsTruthRelink::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Doing truth relinking"); + + SG::ReadHandle<MMSimHitCollection> inputCollection(m_inputHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); + + SG::WriteHandle<MMSimHitCollection> outputCollection(m_outputHitsKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<MMSimHitCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store()); + + // Do relinking + int referenceBarcode{}; + ATH_CHECK(getReferenceBarcode(ctx, &referenceBarcode)); + + for (const MMSimHit &hit : *inputCollection) { + const HepMcParticleLink oldLink = hit.particleLink(); + + int currentBarcode{}; + if (oldLink.barcode() != 0) { + currentBarcode = referenceBarcode; + } + + HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), oldLink.getEventCollection(), HepMcParticleLink::IS_INDEX, ctx); + + int id = hit.MMId(); + double time = hit.globalTime(); + Amg::Vector3D position = hit.globalPosition(); + int pdgID = hit.particleEncoding(); + double kineticEnergy = hit.kineticEnergy(); + Amg::Vector3D direction = hit.globalDirection(); + double energyDeposit = hit.depositEnergy(); + + outputCollection->Emplace(id, time, position, pdgID, kineticEnergy, direction, energyDeposit, particleLink); + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/MM_HitsTruthRelink.h b/Simulation/Tools/McEventCollectionFilter/src/MM_HitsTruthRelink.h new file mode 100644 index 0000000000000000000000000000000000000000..326a295634d1190b26a54e1a5418b55bf5eff6cc --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/MM_HitsTruthRelink.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef MMHITSTRUTHRELINK_H +#define MMHITSTRUTHRELINK_H + +// Base class include +#include "HitsTruthRelinkBase.h" + +#include <MuonSimEvent/MMSimHitCollection.h> + + +class MM_HitsTruthRelink : public HitsTruthRelinkBase +{ +public: + MM_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + SG::ReadHandleKey<MMSimHitCollection> m_inputHitsKey {this, "InputHits", "MicromegasSensitiveDetectorOLD", "Input MM hits name"}; + SG::WriteHandleKey<MMSimHitCollection> m_outputHitsKey {this, "OutputHits", "MicromegasSensitiveDetector", "Output MM hits name"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.cxx b/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.cxx index cfcd574779e981574b089d34ac5008eadbfb3af4..5e1076d6e6e023e672d7942b1aa1cb33a25ebdd8 100644 --- a/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.cxx +++ b/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ ////////////////////////////////////////////////////////////////////////// @@ -26,192 +26,90 @@ #include "GeoPrimitives/GeoPrimitives.h" #include <climits> -McEventCollectionFilter::McEventCollectionFilter(const std::string& name, ISvcLocator* pSvcLocator) - : AthAlgorithm(name, pSvcLocator) - , m_inputTruthCollection("StoreGateSvc+TruthEventOLD") - , m_inputBCMHits("StoreGateSvc+BCMHitsOLD") - , m_inputPixelHits("StoreGateSvc+PixelHitsOLD") - , m_inputSCTHits("StoreGateSvc+SCT_HitsOLD") - , m_inputTRTHits("StoreGateSvc+TRTUncompressedHitsOLD") - , m_inputCSCHits("StoreGateSvc+CSC_HitsOLD") - , m_inputMDTHits("StoreGateSvc+MDT_HitsOLD") - , m_inputRPCHits("StoreGateSvc+RPC_HitsOLD") - , m_inputTGCHits("StoreGateSvc+TGC_HitsOLD") - , m_inputSTGCHits("StoreGateSvc+sTGCSensitiveDetectorOLD") - , m_inputMMHits("StoreGateSvc+MicromegasSensitiveDetectorOLD") - , m_outputTruthCollection("StoreGateSvc+TruthEvent") - , m_outputBCMHits("StoreGateSvc+BCMHits") - , m_outputPixelHits("StoreGateSvc+PixelHits") - , m_outputSCTHits("StoreGateSvc+SCT_Hits") - , m_outputTRTHits("StoreGateSvc+TRTUncompressedHits") - , m_outputCSCHits("StoreGateSvc+CSC_Hits") - , m_outputMDTHits("StoreGateSvc+MDT_Hits") - , m_outputRPCHits("StoreGateSvc+RPC_Hits") - , m_outputTGCHits("StoreGateSvc+TGC_Hits") - , m_outputSTGCHits("StoreGateSvc+sTGCSensitiveDetector") - , m_outputMMHits("StoreGateSvc+MicromegasSensitiveDetector") - , m_IsKeepTRTElect(false) - , m_PileupPartPDGID(999) //Geantino - , m_UseTRTHits(true) - , m_UseCSCHits(true) // On unless RUN3 symmetric layout - , m_UseSTGCHits(false) // Off unless RUN3 layout - , m_UseMMHits(false) // Off unless RUN3 layout - , m_UseBCMHits(true) //On unless RUN4 layout - , m_RefBarcode(0) -{ - declareProperty("TruthInput" , m_inputTruthCollection); - declareProperty("TruthOutput" , m_outputTruthCollection); - declareProperty("BCMHitsInput" , m_inputBCMHits); - declareProperty("BCMHitsOutput" , m_outputBCMHits); - declareProperty("PixelHitsInput" , m_inputPixelHits); - declareProperty("PixelHitsOutput" , m_outputPixelHits); - declareProperty("SCTHitsInput" , m_inputSCTHits); - declareProperty("SCTHitsOutput" , m_outputSCTHits); - declareProperty("TRTHitsInput" , m_inputTRTHits); - declareProperty("TRTHitsOutput" , m_outputTRTHits); - declareProperty("CSCHitsInput" , m_inputCSCHits); - declareProperty("CSCHitsOutput" , m_outputCSCHits); - declareProperty("MDTHitsInput" , m_inputMDTHits); - declareProperty("MDTHitsOutput" , m_outputMDTHits); - declareProperty("RPCHitsInput" , m_inputRPCHits); - declareProperty("RPCHitsOutput" , m_outputRPCHits); - declareProperty("TGCHitsInput" , m_inputTGCHits); - declareProperty("TGCHitsOutput" , m_outputTGCHits); - declareProperty("sTGCHitsInput" , m_inputSTGCHits); - declareProperty("sTGCHitsOutput" , m_outputSTGCHits); - declareProperty("MMHitsInput" , m_inputMMHits); - declareProperty("MMHitsOutput" , m_outputMMHits); - declareProperty("IsKeepTRTElect" , m_IsKeepTRTElect); - declareProperty("PileupPartPDGID" , m_PileupPartPDGID); - declareProperty("UseTRTHits" , m_UseTRTHits); - declareProperty("UseCSCHits" , m_UseCSCHits); - declareProperty("UseSTGCHits" , m_UseSTGCHits); - declareProperty("UseMMHits" , m_UseMMHits); - declareProperty("UseBCMHits" , m_UseBCMHits); +McEventCollectionFilter::McEventCollectionFilter(const std::string &name, ISvcLocator *pSvcLocator) + : AthReentrantAlgorithm(name, pSvcLocator) +{ } -//----------------------------------------------------- -McEventCollectionFilter::~McEventCollectionFilter(){ - //---------------------------------------------------- -} +StatusCode McEventCollectionFilter::initialize() +{ + // Check and initialize keys + ATH_CHECK( m_inputTruthCollectionKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputTruthCollectionKey); + ATH_CHECK( m_outputTruthCollectionKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputTruthCollectionKey); -//---------------------------------------------------- -StatusCode McEventCollectionFilter::initialize(){ - //---------------------------------------------------- + ATH_CHECK( m_inputTRTHitsKey.initialize(!m_inputTRTHitsKey.empty() && m_keepElectronsLinkedToTRTHits) ); + if (m_keepElectronsLinkedToTRTHits) { + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputTRTHitsKey); + } else { + ATH_MSG_DEBUG("Not keeping electrons from TRT hits"); + } return StatusCode::SUCCESS; - } -//------------------------------------------------- -StatusCode McEventCollectionFilter::execute(){ - //------------------------------------------------- - - ATH_MSG_DEBUG( " execute..... " ); - - //... to find electron barcodes linked to TRT hists - if(m_IsKeepTRTElect&&m_UseTRTHits) { - ATH_CHECK( FindTRTElectronHits() ); - } - - //.......Reduce McEventCollection - ATH_CHECK( ReduceMCEventCollection() ); - //.......to relink all Pixel/SCT hits to the new particle - ATH_CHECK( SiliconHitsTruthRelink() ); +StatusCode McEventCollectionFilter::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Filtering McEventCollection..."); - //.......to relink all TRT hits to the new particle - if(m_UseTRTHits) { - ATH_CHECK( TRTHitsTruthRelink() ); + SG::ReadHandle<McEventCollection> inputCollection(m_inputTruthCollectionKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input truth collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; } + ATH_MSG_DEBUG("Found input truth collection " << inputCollection.name() << " in store " << inputCollection.store()); - //.......to relink all MDT hits to the new particle - ATH_CHECK( MDTHitsTruthRelink() ); - - //.......to relink all CSC hits to the new particle - if(m_UseCSCHits) { - ATH_CHECK( CSCHitsTruthRelink() ); + SG::WriteHandle<McEventCollection> outputCollection(m_outputTruthCollectionKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<McEventCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output truth collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; } - - //.......to relink all RPC hits to the new particle - ATH_CHECK( RPCHitsTruthRelink() ); - - //.......to relink all TGC hits to the new particle - ATH_CHECK( TGCHitsTruthRelink() ); - - //.......to relink all sTGC hits to the new particle - if(m_UseSTGCHits) { - ATH_CHECK( STGC_HitsTruthRelink() ); - } - - //.......to relink all MM hits to the new particle - if(m_UseMMHits) { - ATH_CHECK( MM_HitsTruthRelink() ); - } - - //.......to relink all BCM hits to the new particle - if(m_UseBCMHits) { - ATH_CHECK( BCMHitsTruthRelink() ); - } - - ATH_MSG_DEBUG( "succeded McEventCollectionFilter ..... " ); - - return StatusCode::SUCCESS; - -} - -//------------------------------------------------- -StatusCode McEventCollectionFilter::finalize(){ - //------------------------------------------------- - // - ATH_MSG_DEBUG( "McEventCollectionFilter:: finalize completed successfully" ); - return StatusCode::SUCCESS; - -} -//---------------------------------------------------------------- -StatusCode McEventCollectionFilter::ReduceMCEventCollection(){ - //---------------------------------------------------------------- - //.......to reduce McEventCollection for pileup particles - //---------------------------------------------------------------- - // - if(!m_inputTruthCollection.isValid()) - { - ATH_MSG_ERROR( "Could not find McEventCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found McEventCollection"); - - if (!m_outputTruthCollection.isValid()) m_outputTruthCollection = std::make_unique<McEventCollection>(); + ATH_MSG_DEBUG("Recorded output truth collection " << outputCollection.name() << " in store " << outputCollection.store()); //.......Create new particle (geantino) to link hits from pileup HepMC::GenParticlePtr genPart=HepMC::newGenParticlePtr(); - genPart->set_pdg_id(m_PileupPartPDGID); //Geantino + genPart->set_pdg_id(m_pileUpParticlePDGID); //Geantino genPart->set_status(1); //!< set decay status HepMC::suggest_barcode(genPart, std::numeric_limits<int32_t>::max() ); HepMC::GenVertexPtr genVertex = HepMC::newGenVertexPtr(); genVertex->add_particle_out(genPart); - const HepMC::GenEvent* genEvt = *(m_inputTruthCollection->begin()); - + const HepMC::GenEvent* genEvt = *(inputCollection->begin()); //......copy GenEvent to the new one and remove all vertex - HepMC::GenEvent* evt=new HepMC::GenEvent(*genEvt); - + HepMC::GenEvent* evt = HepMC::copyemptyGenEvent(genEvt); +#ifdef HEPMC3 + for (const auto &bp : evt->beams()) { + evt->add_beam_particle(bp); + } + if (genEvt->cross_section()) { + auto cs = std::make_shared<HepMC3::GenCrossSection>(*genEvt->cross_section().get()); + evt->set_cross_section(cs); + } +#else + evt->set_beam_particles(genEvt->beam_particles()); + if (genEvt->cross_section()) { + evt->set_cross_section(*genEvt->cross_section()); + } +#endif - //to set geantino vertex as a truth primary vertex + // to set geantino vertex as a truth primary vertex HepMC::ConstGenVertexPtr hScatVx = HepMC::barcode_to_vertex(genEvt,-3); - if(hScatVx!=nullptr) { + if (hScatVx != nullptr) { HepMC::FourVector pmvxpos=hScatVx->position(); genVertex->set_position(pmvxpos); - //to set geantino kinematic phi=eta=0, E=p=E_hard_scat + // to set geantino kinematic phi=eta=0, E=p=E_hard_scat #ifdef HEPMC3 auto itrp = hScatVx->particles_in().begin(); - if (hScatVx->particles_in().size()==2){ + if (hScatVx->particles_in().size()==2) { #else HepMC::GenVertex::particles_in_const_iterator itrp =hScatVx->particles_in_const_begin(); - if (hScatVx->particles_in_size()==2){ + if (hScatVx->particles_in_size()==2) { #endif HepMC::FourVector mom1=(*itrp)->momentum(); HepMC::FourVector mom2=(*(++itrp))->momentum(); @@ -225,392 +123,60 @@ StatusCode McEventCollectionFilter::ReduceMCEventCollection(){ } } -#ifdef HEPMC3 - if(!evt->vertices().empty()) for (auto vtx: evt->vertices()) evt->remove_vertex(vtx); -#else - if(!evt->vertices_empty()){ - HepMC::GenEvent::vertex_iterator itvtx = evt->vertices_begin(); - for (;itvtx != evt ->vertices_end(); ++itvtx ) { - HepMC::GenVertexPtr vtx = *itvtx++; - evt->remove_vertex(vtx); - delete vtx; - } - } -#endif + // electrons from TRT hits + if (m_keepElectronsLinkedToTRTHits) { + std::vector<int> barcodes; + ATH_CHECK(findElectronsLinkedToTRTHits(ctx, &barcodes)); - //-------------------------------------- - if(m_IsKeepTRTElect){ - for(int i=0;i<(int) m_elecBarcode.size();i++){ - HepMC::ConstGenParticlePtr thePart=HepMC::barcode_to_particle(genEvt,m_elecBarcode[i]); - if (!thePart){ - ATH_MSG_DEBUG( "Could not find particle for barcode " << m_elecBarcode[i] ); + for (int barcode : barcodes) { + HepMC::ConstGenParticlePtr particle = HepMC::barcode_to_particle(genEvt, barcode); + if (particle == nullptr) { + ATH_MSG_DEBUG("Could not find particle for barcode " << barcode); continue; } - HepMC::ConstGenVertexPtr vx = thePart->production_vertex(); - HepMC::GenParticlePtr thePart_new = HepMC::newGenParticlePtr( thePart->momentum(),thePart->pdg_id(), - thePart->status()); - HepMC::suggest_barcode(thePart_new, m_elecBarcode[i]); + HepMC::ConstGenVertexPtr vx = particle->production_vertex(); + HepMC::GenParticlePtr newParticle = HepMC::newGenParticlePtr(particle->momentum(), + particle->pdg_id(), + particle->status()); + HepMC::suggest_barcode(newParticle, barcode); - const HepMC::FourVector& pos= vx->position(); - HepMC::GenVertexPtr vx_new = HepMC::newGenVertexPtr(pos); - vx_new->add_particle_out(thePart_new); - evt->add_vertex(vx_new); + const HepMC::FourVector &position = vx->position(); + HepMC::GenVertexPtr newVertex = HepMC::newGenVertexPtr(position); + newVertex->add_particle_out(newParticle); + evt->add_vertex(newVertex); } } //.....add new vertex with geantino evt->add_vertex(genVertex); - m_RefBarcode=HepMC::barcode(genPart); - - m_outputTruthCollection->push_back(evt); - - return StatusCode::SUCCESS; - -} -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::SiliconHitsTruthRelink(){ - //-------------------------------------------------------- - //.......to relink all Pixel/SCT hits to the new particle - //-------------------------------------------------------- - // - if(!m_inputPixelHits.isValid()) - { - ATH_MSG_ERROR( "Could not find Pixel SiHitCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found Pixel SiHitCollection"); - - if (!m_outputPixelHits.isValid()) m_outputPixelHits = std::make_unique<SiHitCollection>(); - - ATH_CHECK(this->SiHitsTruthRelink(m_inputPixelHits,m_outputPixelHits)); - - if(!m_inputSCTHits.isValid()) - { - ATH_MSG_ERROR( "Could not find SCT SiHitCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found SCT SiHitCollection"); - - if (!m_outputSCTHits.isValid()) m_outputSCTHits = std::make_unique<SiHitCollection>(); - - ATH_CHECK(this->SiHitsTruthRelink(m_inputSCTHits,m_outputSCTHits)); - - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::BCMHitsTruthRelink(){ - //-------------------------------------------------------- - //.......to relink BCM hits to the new particle - //-------------------------------------------------------- - // - - if(!m_inputBCMHits.isValid()) - { - ATH_MSG_ERROR( "Could not find BCM SiHitCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found BCM SiHitCollection"); - - if (!m_outputBCMHits.isValid()) m_outputBCMHits = std::make_unique<SiHitCollection>(); + + int referenceBarcode = HepMC::barcode(genPart); + ATH_MSG_DEBUG("Reference barcode: " << referenceBarcode); - ATH_CHECK(this->SiHitsTruthRelink(m_inputBCMHits,m_outputBCMHits)); + outputCollection->push_back(evt); return StatusCode::SUCCESS; } -StatusCode McEventCollectionFilter::SiHitsTruthRelink(SG::ReadHandle<SiHitCollection>& inputHits, SG::WriteHandle<SiHitCollection>& outputHits){ - for (SiHitCollection::const_iterator i = inputHits->begin(); i != inputHits->end(); ++i) { - const HepMcParticleLink oldLink = (*i).particleLink(); - - - HepGeom::Point3D<double> lP1 = (*i).localStartPosition(); - HepGeom::Point3D<double> lP2 = (*i).localEndPosition(); - double edep = (*i).energyLoss(); - double mt = (*i).meanTime(); - unsigned int id = (*i).identify(); - int curBarcode=0; - if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; - HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); - outputHits->Emplace(lP1,lP2, edep, mt,curBarcode , id); - } - - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::TRTHitsTruthRelink() +StatusCode McEventCollectionFilter::findElectronsLinkedToTRTHits(const EventContext &ctx, std::vector<int> *barcodes) const { - //-------------------------------------------------------- - //.......to relink all TRT hits to the new particle - //-------------------------------------------------------- - // - if(!m_inputTRTHits.isValid()) - { - ATH_MSG_ERROR( "Could not find TRTUncompressedHitsCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found TRTUncompressedHitsCollection"); - - if (!m_outputTRTHits.isValid()) m_outputTRTHits = std::make_unique<TRTUncompressedHitCollection>(); - for (TRTUncompressedHitCollection::const_iterator i = m_inputTRTHits->begin(); i != m_inputTRTHits->end(); ++i) - { - - const HepMcParticleLink oldLink = (*i).particleLink(); - - int pdgID = (*i).GetParticleEncoding(); - int curBarcode=oldLink.barcode(); - if(curBarcode!=0) - { - if(!(m_IsKeepTRTElect && std::abs(pdgID)==11)) - { - curBarcode=m_RefBarcode; - } - } - HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); - int id = (*i).GetHitID(); - float kinEnergy = (*i).GetKineticEnergy(); - float eneDeposit = (*i).GetEnergyDeposit(); - float preX = (*i).GetPreStepX(); - float preY = (*i).GetPreStepY(); - float preZ = (*i).GetPreStepZ(); - float postX = (*i).GetPostStepX(); - float postY = (*i).GetPostStepY() ; - float postZ = (*i).GetPostStepZ(); - float time = (*i).GetGlobalTime(); - - m_outputTRTHits->Emplace(id,partLink,pdgID,kinEnergy,eneDeposit,preX,preY,preZ,postX,postY,postZ,time); - } - - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::MDTHitsTruthRelink(){ - //-------------------------------------------------------- - //.......to relink all MDT hits to the new particle - //-------------------------------------------------------- - if(!m_inputMDTHits.isValid()) - { - ATH_MSG_ERROR( "Could not find MDTSimHitCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found MDTSimHitCollection"); - - if (!m_outputMDTHits.isValid()) m_outputMDTHits = std::make_unique<MDTSimHitCollection>(); - for(MDTSimHitConstIterator i=m_inputMDTHits->begin();i!=m_inputMDTHits->end();++i){ - - const HepMcParticleLink oldLink = (*i).particleLink(); - int curBarcode=0; - if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; - HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); - int id = (*i).MDTid(); - double time = (*i).globalTime(); - double radius = (*i).driftRadius(); - Amg::Vector3D lP = (*i).localPosition(); - //int trackNumber = (*i).trackNumber(); - double stepLength = (*i).stepLength(); - double eneDeposit = (*i).energyDeposit(); - int pdgID = (*i).particleEncoding(); - double kinEnergy = (*i).kineticEnergy(); - - m_outputMDTHits->Emplace(id,time,radius,lP,partLink,stepLength,eneDeposit,pdgID,kinEnergy); - } - - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::CSCHitsTruthRelink(){ - //-------------------------------------------------------- - //.......to relink all CSC hits to the new particle - //-------------------------------------------------------- - if(!m_inputCSCHits.isValid()) - { - ATH_MSG_ERROR( "Could not find CSCSimHitCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found CSCSimHitCollection"); - - if (!m_outputCSCHits.isValid()) m_outputCSCHits = std::make_unique<CSCSimHitCollection>(); - for(CSCSimHitConstIterator i=m_inputCSCHits->begin();i!=m_inputCSCHits->end();++i){ - - const HepMcParticleLink oldLink = (*i).particleLink(); - int curBarcode=0; - if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; - HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); - int id = (*i).CSCid(); - double time = (*i).globalTime(); - double eneDeposit = (*i).energyDeposit(); - Amg::Vector3D HitStart = (*i).getHitStart(); - Amg::Vector3D HitEnd = (*i).getHitEnd(); - int pdgID = (*i).particleID(); - double kinEnergy = (*i).kineticEnergy(); - - m_outputCSCHits->Emplace(id,time,eneDeposit,HitStart,HitEnd,pdgID,partLink,kinEnergy); - } - - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::RPCHitsTruthRelink(){ - //-------------------------------------------------------- - //.......to relink all RPC hits to the new particle - //-------------------------------------------------------- - if(!m_inputRPCHits.isValid()) - { - ATH_MSG_ERROR( "Could not find RPCSimHitCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found RPCSimHitCollection"); - - if (!m_outputRPCHits.isValid()) m_outputRPCHits = std::make_unique<RPCSimHitCollection>(); - for(RPCSimHitConstIterator i=m_inputRPCHits->begin();i!=m_inputRPCHits->end();++i){ - - const HepMcParticleLink oldLink = (*i).particleLink(); - int curBarcode=0; - if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; - HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); - int id = (*i).RPCid(); - double time = (*i).globalTime(); - Amg::Vector3D prepos = (*i).preLocalPosition(); - Amg::Vector3D ppos = (*i).postLocalPosition(); - double eneDeposit = (*i).energyDeposit(); - int pdgID = (*i).particleEncoding(); - double kinEnergy = (*i).kineticEnergy(); - double stepLength = (*i).stepLength(); - - m_outputRPCHits->Emplace(id,time,prepos,partLink,ppos,eneDeposit,stepLength,pdgID,kinEnergy); - } - - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::TGCHitsTruthRelink(){ - //-------------------------------------------------------- - //.......to relink all TGC hits to the new particle - //-------------------------------------------------------- - if(!m_inputTGCHits.isValid()) - { - ATH_MSG_ERROR( "Could not find TGCSimHitCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found TGCSimHitCollection"); - - if (!m_outputTGCHits.isValid()) m_outputTGCHits = std::make_unique<TGCSimHitCollection>(); - for(TGCSimHitConstIterator i=m_inputTGCHits->begin();i!=m_inputTGCHits->end();++i){ - - const HepMcParticleLink oldLink = (*i).particleLink(); - int curBarcode=0; - if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; - HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); - int id = (*i).TGCid(); - double time = (*i).globalTime(); - Amg::Vector3D pos = (*i).localPosition(); - Amg::Vector3D dir = (*i).localDireCos(); - double enDeposit = (*i).energyDeposit(); - double stpLen = (*i).stepLength(); - int pdgID = (*i).particleEncoding(); - double kinEnergy = (*i).kineticEnergy(); - - m_outputTGCHits->Emplace(id,time,pos,dir,partLink,enDeposit,stpLen,pdgID,kinEnergy); - } - - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::STGC_HitsTruthRelink(){ - //-------------------------------------------------------- - //.......to relink all sTGC hits to the new particle - //-------------------------------------------------------- - if(!m_inputSTGCHits.isValid()) - { - ATH_MSG_ERROR( "Could not find sTGCSimHitCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found sTGCSimHitCollection"); - - if (!m_outputSTGCHits.isValid()) m_outputSTGCHits = std::make_unique<sTGCSimHitCollection>(); - for(sTGCSimHitConstIterator i=m_inputSTGCHits->begin();i!=m_inputSTGCHits->end();++i){ - const HepMcParticleLink oldLink = (*i).particleLink(); - int curBarcode=0; - if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; - HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); - - int id = (*i).sTGCId(); - double time = (*i).globalTime(); - Amg::Vector3D pos = (*i).globalPosition(); - int pdgID = (*i).particleEncoding(); - Amg::Vector3D dir = (*i).globalDirection(); - double enDeposit = (*i).depositEnergy(); - - m_outputSTGCHits->Emplace(id,time,pos,pdgID,dir,enDeposit,partLink); + SG::ReadHandle<TRTUncompressedHitCollection> inputCollection(m_inputTRTHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::MM_HitsTruthRelink(){ - //-------------------------------------------------------- - //.......to relink all MM hits to the new particle - //-------------------------------------------------------- - if(!m_inputMMHits.isValid()) - { - ATH_MSG_ERROR( "Could not find MMSimHitCollection"); - return StatusCode::FAILURE; + std::set<int> barcodeSet; + for (const TRTUncompressedHit &hit : *inputCollection) { + const HepMcParticleLink link = hit.particleLink(); + int pdgID = hit.GetParticleEncoding(); + if (std::abs(pdgID) == 11 && link.barcode() != 0) { + barcodeSet.insert(link.barcode()); } - ATH_MSG_DEBUG( "Found MMSimHitCollection"); - - if (!m_outputMMHits.isValid()) m_outputMMHits = std::make_unique<MMSimHitCollection>(); - for(MMSimHitConstIterator i=m_outputMMHits->begin();i!=m_outputMMHits->end();++i){ - const HepMcParticleLink oldLink = (*i).particleLink(); - int curBarcode=0; - if(oldLink.barcode()!=0) curBarcode=m_RefBarcode; - HepMcParticleLink partLink(curBarcode, oldLink.eventIndex(), oldLink.getEventCollection()); - - int id = (*i).MMId(); - double time = (*i).globalTime(); - Amg::Vector3D pos = (*i).globalPosition(); - int pdgID = (*i).particleEncoding(); - double kinEnergy = (*i).kineticEnergy(); - Amg::Vector3D dir = (*i).globalDirection(); - double enDeposit = (*i).depositEnergy(); - - m_outputMMHits->Emplace(id,time,pos,pdgID,kinEnergy,dir,enDeposit,partLink); } - - return StatusCode::SUCCESS; -} - -//-------------------------------------------------------- -StatusCode McEventCollectionFilter::FindTRTElectronHits() -{ - //-------------------------------------------------------- - //.......retrive TRTUncompressedHitCollection collection - if(!m_inputTRTHits.isValid()) - { - ATH_MSG_ERROR( "Could not find TRTUncompressedHitsCollection"); - return StatusCode::FAILURE; - } - ATH_MSG_DEBUG( "Found TRTUncompressedHitsCollection"); - - m_elecBarcode.clear(); - - std::set<int> barcode_tmp; - - for (TRTUncompressedHitCollection::const_iterator i = m_inputTRTHits->begin(); i != m_inputTRTHits->end(); ++i) - { - const HepMcParticleLink McLink = (*i).particleLink(); - int pdgID = (*i).GetParticleEncoding(); - if(std::abs(pdgID)==11&&McLink.barcode()!=0) barcode_tmp.insert(McLink.barcode()); - } - - m_elecBarcode.assign(barcode_tmp.begin(),barcode_tmp.end()); + barcodes->assign(barcodeSet.begin(), barcodeSet.end()); return StatusCode::SUCCESS; } diff --git a/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.h b/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.h index 28c363055ea4e1bdd127ef1d62fd4d005025b753..f2b483734f84a49021ad35691d54b876d1edf26c 100644 --- a/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.h +++ b/Simulation/Tools/McEventCollectionFilter/src/McEventCollectionFilter.h @@ -1,92 +1,34 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef MCEVENTCOLLECTIONFILTER_H #define MCEVENTCOLLECTIONFILTER_H // Base class include -#include "AthenaBaseComps/AthAlgorithm.h" -#include "StoreGate/ReadHandle.h" -#include "StoreGate/WriteHandle.h" -#include "GeneratorObjects/McEventCollection.h" -#include "InDetSimEvent/SiHitCollection.h" -#include "InDetSimEvent/TRTUncompressedHitCollection.h" -#include "MuonSimEvent/MDTSimHitCollection.h" -#include "MuonSimEvent/RPCSimHitCollection.h" -#include "MuonSimEvent/TGCSimHitCollection.h" -#include "MuonSimEvent/CSCSimHitCollection.h" -#include "MuonSimEvent/sTGCSimHitCollection.h" -#include "MuonSimEvent/MMSimHitCollection.h" +#include <AthenaBaseComps/AthReentrantAlgorithm.h> +#include <GeneratorObjects/McEventCollection.h> +#include <InDetSimEvent/TRTUncompressedHitCollection.h> -#include "AtlasHepMC/GenParticle.h" -// std library includes -#include <string> -#include <vector> - -class McEventCollectionFilter : public AthAlgorithm { - // - // +class McEventCollectionFilter : public AthReentrantAlgorithm +{ public: - McEventCollectionFilter(const std::string& name, ISvcLocator* pSvcLocator); - ~McEventCollectionFilter(); - virtual StatusCode initialize(); - virtual StatusCode execute(); - virtual StatusCode finalize(); - -private: - - StatusCode ReduceMCEventCollection(); - StatusCode FindTRTElectronHits(); - StatusCode SiliconHitsTruthRelink(); - StatusCode SiHitsTruthRelink(SG::ReadHandle<SiHitCollection>& inputHits, SG::WriteHandle<SiHitCollection>& outputHits); - StatusCode TRTHitsTruthRelink(); - StatusCode MDTHitsTruthRelink(); - StatusCode CSCHitsTruthRelink(); - StatusCode RPCHitsTruthRelink(); - StatusCode TGCHitsTruthRelink(); - StatusCode STGC_HitsTruthRelink(); - StatusCode MM_HitsTruthRelink(); - StatusCode BCMHitsTruthRelink(); + McEventCollectionFilter(const std::string &name, ISvcLocator *pSvcLocator); - SG::ReadHandle<McEventCollection> m_inputTruthCollection; - SG::ReadHandle<SiHitCollection> m_inputBCMHits; - SG::ReadHandle<SiHitCollection> m_inputPixelHits; - SG::ReadHandle<SiHitCollection> m_inputSCTHits; - SG::ReadHandle<TRTUncompressedHitCollection> m_inputTRTHits; - SG::ReadHandle<CSCSimHitCollection> m_inputCSCHits; - SG::ReadHandle<MDTSimHitCollection> m_inputMDTHits; - SG::ReadHandle<RPCSimHitCollection> m_inputRPCHits; - SG::ReadHandle<TGCSimHitCollection> m_inputTGCHits; - SG::ReadHandle<sTGCSimHitCollection> m_inputSTGCHits; - SG::ReadHandle<MMSimHitCollection> m_inputMMHits; + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; - SG::WriteHandle<McEventCollection> m_outputTruthCollection; - SG::WriteHandle<SiHitCollection> m_outputBCMHits; - SG::WriteHandle<SiHitCollection> m_outputPixelHits; - SG::WriteHandle<SiHitCollection> m_outputSCTHits; - SG::WriteHandle<TRTUncompressedHitCollection> m_outputTRTHits; - SG::WriteHandle<CSCSimHitCollection> m_outputCSCHits; - SG::WriteHandle<MDTSimHitCollection> m_outputMDTHits; - SG::WriteHandle<RPCSimHitCollection> m_outputRPCHits; - SG::WriteHandle<TGCSimHitCollection> m_outputTGCHits; - SG::WriteHandle<sTGCSimHitCollection> m_outputSTGCHits; - SG::WriteHandle<MMSimHitCollection> m_outputMMHits; - - bool m_IsKeepTRTElect; - int m_PileupPartPDGID; - bool m_UseTRTHits; - bool m_UseCSCHits; - bool m_UseSTGCHits; - bool m_UseMMHits; - bool m_UseBCMHits; - //--------------------- - //std::string m_HitName; - int m_RefBarcode; - std::vector<int> m_elecBarcode; +private: + StatusCode findElectronsLinkedToTRTHits(const EventContext &ctx, std::vector<int> *barcodes) const; + SG::ReadHandleKey<McEventCollection> m_inputTruthCollectionKey {this, "InputTruthCollection", "TruthEventOLD", "Input truth collection name"}; + SG::WriteHandleKey<McEventCollection> m_outputTruthCollectionKey {this, "OutputTruthCollection", "TruthEvent", "Output truth collection name"}; + Gaudi::Property<bool> m_keepElectronsLinkedToTRTHits {this, "KeepElectronsLinkedToTRTHits", false, "Keep electrons linked to TRT hits"}; + SG::ReadHandleKey<TRTUncompressedHitCollection> m_inputTRTHitsKey {this, "InputTRTHits", "TRTUncompressedHitsOLD", "Input TRT hits name"}; + Gaudi::Property<int> m_pileUpParticlePDGID {this, "PileUpParticlePDGID", 999, "Pile-up particle PDG ID (defaults to geantino)"}; }; + #endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/PileUpTruthDecoration.cxx b/Simulation/Tools/McEventCollectionFilter/src/PileUpTruthDecoration.cxx new file mode 100644 index 0000000000000000000000000000000000000000..ae69fd3431e1b87f6889170af7ccd37a99b68bfb --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/PileUpTruthDecoration.cxx @@ -0,0 +1,62 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "PileUpTruthDecoration.h" +// +#include "AtlasHepMC/GenEvent.h" +#include "AtlasHepMC/GenVertex.h" +#include "StoreGate/WriteDecorHandle.h" + +PileUpTruthDecoration::PileUpTruthDecoration(const std::string &name, ISvcLocator *pSvcLocator) + : AthReentrantAlgorithm(name, pSvcLocator) +{ +} + + +StatusCode PileUpTruthDecoration::initialize() +{ + // Check and initialize keys + ATH_CHECK( m_inputTruthCollectionKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputTruthCollectionKey); + ATH_CHECK(m_particleKey.initialize()); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_particleKey); + ATH_CHECK(m_decKey.initialize()); + ATH_MSG_VERBOSE("Initialized DecorHandleKey: " << m_decKey); + return StatusCode::SUCCESS; +} + + +StatusCode PileUpTruthDecoration::execute(const EventContext &ctx) const +{ + ATH_MSG_VERBOSE("PileUpTruthDecoration::execute()"); + SG::ReadHandle<McEventCollection> inputCollection(m_inputTruthCollectionKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input truth collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input truth collection " << inputCollection.name() << " in store " << inputCollection.store()); + const float refPVtxZ = getPVtxZ(inputCollection); + + SG::WriteDecorHandle<xAOD::IParticleContainer, float> decHandle(m_decKey, ctx); + SG::ReadHandle<xAOD::IParticleContainer> particles(m_particleKey, ctx); + if( !particles.isValid() ) { + ATH_MSG_WARNING ("Couldn't retrieve container with key: " << m_particleKey.key() ); + return StatusCode::FAILURE; + } + for( const xAOD::IParticle* truthParticle : *particles ) { + decHandle( *truthParticle ) = refPVtxZ; + } + return StatusCode::SUCCESS; +} + +float PileUpTruthDecoration::getPVtxZ(SG::ReadHandle<McEventCollection>& inputCollection) const +{ + const HepMC::GenEvent* genEvt = *(inputCollection->begin()); + HepMC::ConstGenVertexPtr hScatVx = HepMC::barcode_to_vertex(genEvt,-3); + if (hScatVx != nullptr) { + HepMC::FourVector pmvxpos=hScatVx->position(); + return static_cast<float>(pmvxpos.z()); + } + return 0.0f; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/PileUpTruthDecoration.h b/Simulation/Tools/McEventCollectionFilter/src/PileUpTruthDecoration.h new file mode 100644 index 0000000000000000000000000000000000000000..10c2aa50a15211e6a849d36bf3c9719e60522fe4 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/PileUpTruthDecoration.h @@ -0,0 +1,30 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef PILEUPTRUTHDECORATION_H +#define PILEUPTRUTHDECORATION_H + +// Base class include +#include <AthenaBaseComps/AthReentrantAlgorithm.h> +#include <GeneratorObjects/McEventCollection.h> +#include <xAODBase/IParticleContainer.h> +#include <StoreGate/WriteDecorHandleKey.h> + +class PileUpTruthDecoration : public AthReentrantAlgorithm +{ +public: + PileUpTruthDecoration(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + virtual float getPVtxZ(SG::ReadHandle<McEventCollection>& inputCollection) const; + + SG::ReadHandleKey<McEventCollection> m_inputTruthCollectionKey {this, "InputTruthCollection", "TruthEventOLD", "Input truth collection name"}; + SG::ReadHandleKey<xAOD::IParticleContainer> m_particleKey{this, "InputParticleContainer", "", "Input particle collection name"}; + SG::WriteDecorHandleKey<xAOD::IParticleContainer> m_decKey{this, "OutputDecoration", "", "Output decoration name"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/RPC_HitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/RPC_HitsTruthRelink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..cd41f34634ecc26d87e930815654c6bf64e69498 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/RPC_HitsTruthRelink.cxx @@ -0,0 +1,72 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "RPC_HitsTruthRelink.h" + + +RPC_HitsTruthRelink::RPC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator) + : HitsTruthRelinkBase(name, pSvcLocator) +{ +} + + +StatusCode RPC_HitsTruthRelink::initialize() +{ + ATH_CHECK(HitsTruthRelinkBase::initialize()); + + // Check and initialize keys + ATH_CHECK( m_inputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey); + ATH_CHECK( m_outputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey); + return StatusCode::SUCCESS; +} + + +StatusCode RPC_HitsTruthRelink::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Doing truth relinking"); + + SG::ReadHandle<RPCSimHitCollection> inputCollection(m_inputHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); + + SG::WriteHandle<RPCSimHitCollection> outputCollection(m_outputHitsKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<RPCSimHitCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store()); + + // Do relinking + int referenceBarcode{}; + ATH_CHECK(getReferenceBarcode(ctx, &referenceBarcode)); + + for (const RPCSimHit & hit : *inputCollection) { + const HepMcParticleLink oldLink = hit.particleLink(); + + int currentBarcode{}; + if (oldLink.barcode() != 0) { + currentBarcode = referenceBarcode; + } + + HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), oldLink.getEventCollection(), HepMcParticleLink::IS_INDEX, ctx); + int id = hit.RPCid(); + double time = hit.globalTime(); + Amg::Vector3D prePos = hit.preLocalPosition(); + Amg::Vector3D postPos = hit.postLocalPosition(); + double energyDeposit = hit.energyDeposit(); + int pdgID = hit.particleEncoding(); + double kineticEnergy = hit.kineticEnergy(); + double stepLength = hit.stepLength(); + + outputCollection->Emplace(id, time, prePos, particleLink, postPos, energyDeposit, stepLength, pdgID, kineticEnergy); + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/RPC_HitsTruthRelink.h b/Simulation/Tools/McEventCollectionFilter/src/RPC_HitsTruthRelink.h new file mode 100644 index 0000000000000000000000000000000000000000..9999dbc117a6066da2c809bbc1d20c749f5a46ba --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/RPC_HitsTruthRelink.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef RPCHITSTRUTHRELINK_H +#define RPCHITSTRUTHRELINK_H + +// Base class include +#include "HitsTruthRelinkBase.h" + +#include <MuonSimEvent/RPCSimHitCollection.h> + + +class RPC_HitsTruthRelink : public HitsTruthRelinkBase +{ +public: + RPC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + SG::ReadHandleKey<RPCSimHitCollection> m_inputHitsKey {this, "InputHits", "RPC_HitsOLD", "Input RPC hits name"}; + SG::WriteHandleKey<RPCSimHitCollection> m_outputHitsKey {this, "OutputHits", "RPC_Hits", "Output RPC hits name"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..bfe64ed10fa97035fecd26c51e37c4078fec95be --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.cxx @@ -0,0 +1,68 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "SiliconHitsTruthRelink.h" + + +SiliconHitsTruthRelink::SiliconHitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator) + : HitsTruthRelinkBase(name, pSvcLocator) +{ +} + + +StatusCode SiliconHitsTruthRelink::initialize() +{ + ATH_CHECK(HitsTruthRelinkBase::initialize()); + + // Check and initialize keys + ATH_CHECK( m_inputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey); + ATH_CHECK( m_outputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey); + return StatusCode::SUCCESS; +} + + +StatusCode SiliconHitsTruthRelink::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Doing truth relinking"); + + SG::ReadHandle<SiHitCollection> inputCollection(m_inputHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); + + SG::WriteHandle<SiHitCollection> outputCollection(m_outputHitsKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<SiHitCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store()); + + // Do relinking + int referenceBarcode{}; + ATH_CHECK(getReferenceBarcode(ctx, &referenceBarcode)); + + for (const SiHit &hit : *inputCollection) { + const HepMcParticleLink oldLink = hit.particleLink(); + + HepGeom::Point3D<double> lP1 = hit.localStartPosition(); + HepGeom::Point3D<double> lP2 = hit.localEndPosition(); + double energyLoss = hit.energyLoss(); + double meanTime = hit.meanTime(); + unsigned int id = hit.identify(); + + int currentBarcode{}; + if (oldLink.barcode() != 0) { + currentBarcode = referenceBarcode; + } + HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), oldLink.getEventCollection(), HepMcParticleLink::IS_INDEX, ctx); + outputCollection->Emplace(lP1, lP2, energyLoss, meanTime, currentBarcode, id); + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.h b/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.h new file mode 100644 index 0000000000000000000000000000000000000000..2bb084b281db540b45ad2d5f7e5c9a37f18cbbd6 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/SiliconHitsTruthRelink.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef SILICONHITSTRUTHRELINK_H +#define SILICONHITSTRUTHRELINK_H + +// Base class include +#include "HitsTruthRelinkBase.h" + +#include <InDetSimEvent/SiHitCollection.h> + + +class SiliconHitsTruthRelink : public HitsTruthRelinkBase +{ +public: + SiliconHitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + SG::ReadHandleKey<SiHitCollection> m_inputHitsKey {this, "InputHits", "", "Input silicon hits name"}; + SG::WriteHandleKey<SiHitCollection> m_outputHitsKey {this, "OutputHits", "", "Output silicon hits name"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/TGC_HitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/TGC_HitsTruthRelink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..7baf7a020da5dd548bdc557ba4440bd1635182a5 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/TGC_HitsTruthRelink.cxx @@ -0,0 +1,73 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TGC_HitsTruthRelink.h" + + +TGC_HitsTruthRelink::TGC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator) + : HitsTruthRelinkBase(name, pSvcLocator) +{ +} + + +StatusCode TGC_HitsTruthRelink::initialize() +{ + ATH_CHECK(HitsTruthRelinkBase::initialize()); + + // Check and initialize keys + ATH_CHECK( m_inputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey); + ATH_CHECK( m_outputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey); + return StatusCode::SUCCESS; +} + + +StatusCode TGC_HitsTruthRelink::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Doing truth relinking"); + + SG::ReadHandle<TGCSimHitCollection> inputCollection(m_inputHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); + + SG::WriteHandle<TGCSimHitCollection> outputCollection(m_outputHitsKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<TGCSimHitCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store()); + + // Do relinking + int referenceBarcode{}; + ATH_CHECK(getReferenceBarcode(ctx, &referenceBarcode)); + + for (const TGCSimHit &hit : *inputCollection) { + const HepMcParticleLink oldLink = hit.particleLink(); + + int currentBarcode{}; + if (oldLink.barcode() != 0) { + currentBarcode = referenceBarcode; + } + + HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), oldLink.getEventCollection(), HepMcParticleLink::IS_INDEX, ctx); + + int id = hit.TGCid(); + double time = hit.globalTime(); + Amg::Vector3D position = hit.localPosition(); + Amg::Vector3D direction = hit.localDireCos(); + double energyDeposit = hit.energyDeposit(); + double stepLength = hit.stepLength(); + int pdgID = hit.particleEncoding(); + double kineticEnergy = hit.kineticEnergy(); + + outputCollection->Emplace(id, time, position, direction, particleLink, energyDeposit, stepLength, pdgID, kineticEnergy); + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/TGC_HitsTruthRelink.h b/Simulation/Tools/McEventCollectionFilter/src/TGC_HitsTruthRelink.h new file mode 100644 index 0000000000000000000000000000000000000000..4a010ca4da4e6067e2bc0a0517d459e347e4fa73 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/TGC_HitsTruthRelink.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TGCHITSTRUTHRELINK_H +#define TGCHITSTRUTHRELINK_H + +// Base class include +#include "HitsTruthRelinkBase.h" + +#include <MuonSimEvent/TGCSimHitCollection.h> + + +class TGC_HitsTruthRelink : public HitsTruthRelinkBase +{ +public: + TGC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + SG::ReadHandleKey<TGCSimHitCollection> m_inputHitsKey {this, "InputHits", "TGC_HitsOLD", "Input TGC hits name"}; + SG::WriteHandleKey<TGCSimHitCollection> m_outputHitsKey {this, "OutputHits", "TGC_Hits", "Output TGC hits name"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/TRT_HitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/TRT_HitsTruthRelink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..069bfed3f087fcb253b997c54efff630b96d4301 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/TRT_HitsTruthRelink.cxx @@ -0,0 +1,77 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TRT_HitsTruthRelink.h" + + +TRT_HitsTruthRelink::TRT_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator) + : HitsTruthRelinkBase(name, pSvcLocator) +{ +} + + +StatusCode TRT_HitsTruthRelink::initialize() +{ + ATH_CHECK(HitsTruthRelinkBase::initialize()); + + // Check and initialize keys + ATH_CHECK( m_inputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey); + ATH_CHECK( m_outputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey); + return StatusCode::SUCCESS; +} + + +StatusCode TRT_HitsTruthRelink::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Doing truth relinking"); + + SG::ReadHandle<TRTUncompressedHitCollection> inputCollection(m_inputHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); + + SG::WriteHandle<TRTUncompressedHitCollection> outputCollection(m_outputHitsKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<TRTUncompressedHitCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store()); + + // Do relinking + int referenceBarcode{}; + ATH_CHECK(getReferenceBarcode(ctx, &referenceBarcode)); + + for (const TRTUncompressedHit &hit : *inputCollection) { + const HepMcParticleLink oldLink = hit.particleLink(); + + int pdgID = hit.GetParticleEncoding(); + int currentBarcode = oldLink.barcode(); + if (currentBarcode != 0) { + if (!(m_keepElectronsLinkedToTRTHits && std::abs(pdgID) == 11)) { + currentBarcode = referenceBarcode; + } + } + + HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), oldLink.getEventCollection(), HepMcParticleLink::IS_INDEX, ctx); + int id = hit.GetHitID(); + float kineticEnergy = hit.GetKineticEnergy(); + float energyDeposit = hit.GetEnergyDeposit(); + float preX = hit.GetPreStepX(); + float preY = hit.GetPreStepY(); + float preZ = hit.GetPreStepZ(); + float postX = hit.GetPostStepX(); + float postY = hit.GetPostStepY() ; + float postZ = hit.GetPostStepZ(); + float time = hit.GetGlobalTime(); + + outputCollection->Emplace(id, particleLink, pdgID, kineticEnergy, energyDeposit, preX, preY, preZ, postX, postY, postZ, time); + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/TRT_HitsTruthRelink.h b/Simulation/Tools/McEventCollectionFilter/src/TRT_HitsTruthRelink.h new file mode 100644 index 0000000000000000000000000000000000000000..72106a35ee16cae6ee2f498473f4842d885a098c --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/TRT_HitsTruthRelink.h @@ -0,0 +1,29 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRTHITSTRUTHRELINK_H +#define TRTHITSTRUTHRELINK_H + +// Base class include +#include "HitsTruthRelinkBase.h" + +#include <InDetSimEvent/TRTUncompressedHitCollection.h> + + +class TRT_HitsTruthRelink : public HitsTruthRelinkBase +{ +public: + TRT_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + SG::ReadHandleKey<TRTUncompressedHitCollection> m_inputHitsKey {this, "InputHits", "TRTUncompressedHitsOLD", "Input TRT hits name"}; + SG::WriteHandleKey<TRTUncompressedHitCollection> m_outputHitsKey {this, "OutputHits", "TRTUncompressedHits", "Output TRT hits name"}; + + Gaudi::Property<bool> m_keepElectronsLinkedToTRTHits {this, "KeepElectronsLinkedToTRTHits", false, "Keep electrons linked to TRT hits"}; +}; + +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.cxx b/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.cxx new file mode 100644 index 0000000000000000000000000000000000000000..3d8d00a0b9ba398dd614d507449c45b105d0594e --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.cxx @@ -0,0 +1,320 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TruthClosureCheck.h" +// +#include "HepMC/GenEvent.h" +#include "HepMC/GenVertex.h" +#include "GeneratorObjects/McEventCollection.h" + +#include "StoreGate/ReadHandle.h" + +#include "CLHEP/Vector/LorentzVector.h" +#include "CLHEP/Units/SystemOfUnits.h" +// +#include "CLHEP/Geometry/Point3D.h" +#include "GeoPrimitives/GeoPrimitives.h" +#include <climits> + +TruthClosureCheck::TruthClosureCheck(const std::string& name, ISvcLocator* pSvcLocator): + AthAlgorithm(name, pSvcLocator) +{ + declareProperty("OriginalMcEventCollection" , m_originalMcEventCollection = "BeamTruthEvent"); + declareProperty("ResetMcEventCollection" , m_resetMcEventCollection = "NewTruthEvent"); + declareProperty("CompareMomenta", m_compareMomenta); + declareProperty("PostSimulation", m_postSimulation); +} + + +//---------------------------------------------------- +StatusCode TruthClosureCheck::initialize() { + //---------------------------------------------------- + + ATH_CHECK(m_originalMcEventCollection.initialize()); + ATH_CHECK(m_resetMcEventCollection.initialize()); + return StatusCode::SUCCESS; + +} + + +StatusCode TruthClosureCheck::sanityCheck(const HepMC::GenEvent& event) const { + //Sanity check + HepMC::GenEvent::particle_const_iterator partIter = event.particles_begin(); + const HepMC::GenEvent::particle_const_iterator partEnd = event.particles_end(); + bool resetProblem(false); + while (partIter!=partEnd) { + const HepMC::GenParticle& particle(**partIter); + if (particle.status()==1) { + if (!particle.production_vertex()) { + ATH_MSG_ERROR("Status 1 particle without a production vertex!! " << particle); + resetProblem = true; + } + if (!m_postSimulation && particle.end_vertex()) { + ATH_MSG_ERROR("Status 1 particle with an end vertex!! " << particle); + resetProblem = true; + } + } + else if (particle.status()==2) { + if (!particle.production_vertex()) { + ATH_MSG_ERROR("Status 2 particle without a production vertex!! " << particle); + resetProblem = true; + } + if (!particle.end_vertex()) { + ATH_MSG_ERROR("Status 2 particle without an end vertex!! " << particle); + resetProblem = true; + } + } + ++partIter; + } + if (resetProblem) { + return StatusCode::FAILURE; + } + + return StatusCode::SUCCESS; +} + + +void TruthClosureCheck::printGenVertex(const HepMC::GenVertex& origVertex, + const HepMC::GenVertex& resetVertex) const +{ + ATH_MSG_INFO("----------------------------------"); + ATH_MSG_INFO("Original Vertex:"); + ATH_MSG_INFO( origVertex ); + ATH_MSG_INFO("Particles In:"); + HepMC::GenVertex::particles_in_const_iterator originalPartInIter(origVertex.particles_in_const_begin()); + const HepMC::GenVertex::particles_in_const_iterator endOfOriginalListOfParticlesIn(origVertex.particles_in_const_end()); + while( originalPartInIter!=endOfOriginalListOfParticlesIn ) { + ATH_MSG_INFO( **originalPartInIter ); + ++originalPartInIter; + } + ATH_MSG_INFO("Particles Out:"); + HepMC::GenVertex::particles_out_const_iterator originalPartOutIter(origVertex.particles_out_const_begin()); + const HepMC::GenVertex::particles_out_const_iterator endOfOriginalListOfParticlesOut(origVertex.particles_out_const_end()); + while( originalPartOutIter!=endOfOriginalListOfParticlesOut) { + ATH_MSG_INFO( **originalPartOutIter ); + ++originalPartOutIter; + } + ATH_MSG_INFO("----------------------------------"); + ATH_MSG_INFO("Reset Vertex:"); + ATH_MSG_INFO( resetVertex ); + ATH_MSG_INFO("Particles In:"); + HepMC::GenVertex::particles_in_const_iterator resetPartInIter(resetVertex.particles_in_const_begin()); + const HepMC::GenVertex::particles_in_const_iterator endOfResetListOfParticlesIn(resetVertex.particles_in_const_end()); + while( resetPartInIter!=endOfResetListOfParticlesIn ) { + ATH_MSG_INFO( **resetPartInIter ); + ++resetPartInIter; + } + ATH_MSG_INFO("Particles Out:"); + HepMC::GenVertex::particles_out_const_iterator resetPartOutIter(resetVertex.particles_out_const_begin()); + const HepMC::GenVertex::particles_out_const_iterator endOfResetListOfParticlesOut(resetVertex.particles_out_const_end()); + while( resetPartOutIter!=endOfResetListOfParticlesOut) { + ATH_MSG_INFO( **resetPartOutIter ); + ++resetPartOutIter; + } + ATH_MSG_INFO("----------------------------------"); + return; +} + +StatusCode TruthClosureCheck::compareGenVertex(const HepMC::GenVertex& origVertex, + const HepMC::GenVertex& resetVertex) const +{ + bool pass{true}; + + if (origVertex.barcode() != resetVertex.barcode()) { + ATH_MSG_ERROR ("vertex barcode differs! Original: "<<origVertex.barcode()<<", Reset: "<<resetVertex.barcode()); + pass = false; + } + if (origVertex.position() != resetVertex.position()) { + const HepMC::FourVector& oP = origVertex.position(); + const HepMC::FourVector& rP = resetVertex.position(); + ATH_MSG_ERROR("vertex position differs! Original: ("<<oP.x()<<","<<oP.y()<<","<<oP.z()<<","<<oP.t()<<"), Reset: ("<<rP.x()<<","<<rP.y()<<","<<rP.z()<<","<<rP.t()<<")"); + pass = false; + } + if (origVertex.particles_in_size() != resetVertex.particles_in_size() ) { + ATH_MSG_ERROR ("particles_in_size differs! Original: "<<origVertex.particles_in_size()<<", Reset: "<<resetVertex.particles_in_size()); + pass = false; + } + if (origVertex.particles_out_size() != resetVertex.particles_out_size() ) { + ATH_MSG_ERROR ("particles_out_size differs! Original: "<<origVertex.particles_out_size()<<", Reset: "<<resetVertex.particles_out_size()); + pass = false; + } + HepMC::GenVertex::particles_in_const_iterator originalPartInIter(origVertex.particles_in_const_begin()); + const HepMC::GenVertex::particles_in_const_iterator endOfOriginalListOfParticlesIn(origVertex.particles_in_const_end()); + HepMC::GenVertex::particles_in_const_iterator resetPartInIter(resetVertex.particles_in_const_begin()); + const HepMC::GenVertex::particles_in_const_iterator endOfResetListOfParticlesIn(resetVertex.particles_in_const_end()); + while( originalPartInIter!=endOfOriginalListOfParticlesIn && + resetPartInIter!=endOfResetListOfParticlesIn ) { + if (compareGenParticle(**originalPartInIter,**resetPartInIter).isFailure()) { + ATH_MSG_ERROR ( "input particle properties differ!" ); + pass &= false; + } + ATH_MSG_VERBOSE ( "particles match!" ); + ++resetPartInIter; + ++originalPartInIter; + } + + HepMC::GenVertex::particles_out_const_iterator originalPartOutIter(origVertex.particles_out_const_begin()); + const HepMC::GenVertex::particles_out_const_iterator endOfOriginalListOfParticlesOut(origVertex.particles_out_const_end()); + // ordering of particles may differ in each case - sigh.. + const HepMC::GenVertex::particles_out_const_iterator endOfResetListOfParticlesOut(resetVertex.particles_out_const_end()); + while( originalPartOutIter!=endOfOriginalListOfParticlesOut) { + const int barcodeOrig{(*originalPartOutIter)->barcode()}; + HepMC::GenVertex::particles_out_const_iterator resetPartOutIter(resetVertex.particles_out_const_begin()); + HepMC::GenVertex::particles_in_const_iterator matchingResetParticleIter{endOfResetListOfParticlesOut}; + while(resetPartOutIter!=endOfResetListOfParticlesOut) { + if ( barcodeOrig == (*resetPartOutIter)->barcode() ) { + matchingResetParticleIter = resetPartOutIter; + break; + } + ++resetPartOutIter; + } + if (matchingResetParticleIter==endOfResetListOfParticlesOut || + compareGenParticle(**originalPartOutIter,**matchingResetParticleIter).isFailure()) { + ATH_MSG_ERROR ( "output particle properties differ!" ); + pass &= false; + } + ATH_MSG_VERBOSE ( "particles match!" ); + ++originalPartOutIter; + } + + if(!pass) { return StatusCode::FAILURE; } + return StatusCode::SUCCESS; +} + + +StatusCode TruthClosureCheck::compareMomenta(const HepMC::FourVector& origMomenta, + const HepMC::FourVector& resetMomenta) const +{ + bool pass{true}; + if (m_compareMomenta) { + if (m_momentaLimit<std::abs(origMomenta.px()-resetMomenta.px())) { + pass &= false; + } + if (m_momentaLimit<std::abs(origMomenta.py()-resetMomenta.py())) { + pass &= false; + } + if (m_momentaLimit<std::abs(origMomenta.pz()-resetMomenta.pz())) { + pass &= false; + } + if (m_momentaLimit<std::abs(origMomenta.e()-resetMomenta.e())) { + pass &= false; + } + if(origMomenta != resetMomenta) { + ATH_MSG_ERROR ("Exact momenta agreement check failed."); + pass &= false; + } + } + if(!pass) { return StatusCode::FAILURE; } + return StatusCode::SUCCESS; +} + +StatusCode TruthClosureCheck::compareGenParticle(const HepMC::GenParticle& origParticle, + const HepMC::GenParticle& resetParticle) const +{ + bool pass{true}; + if (origParticle.barcode() != resetParticle.barcode()) { + ATH_MSG_ERROR ("particle barcode differs! Original: "<<origParticle.barcode()<<", Reset: "<<resetParticle.barcode()); + pass &= false; + } + if (origParticle.status() != resetParticle.status()) { + ATH_MSG_ERROR ("particle status differs! Original: "<<origParticle.status()<<", Reset: "<<resetParticle.status()); + pass &= false; + } + if (origParticle.pdg_id() != resetParticle.pdg_id()) { + ATH_MSG_ERROR ("particle pdg_id differs! Original: "<<origParticle.pdg_id()<<", Reset: "<<resetParticle.pdg_id()); + pass &= false; + } + if (compareMomenta(origParticle.momentum(), resetParticle.momentum()).isFailure()) { + const HepMC::FourVector& oM = origParticle.momentum(); + const HepMC::FourVector& rM = resetParticle.momentum(); + ATH_MSG_DEBUG("particle momentum differs! Original: ("<<oM.x()<<","<<oM.y()<<","<<oM.z()<<","<<oM.t()<<"), Reset: ("<<rM.x()<<","<<rM.y()<<","<<rM.z()<<","<<rM.t()<<")"); + pass &= false; + } + if(!pass) { return StatusCode::FAILURE; } + return StatusCode::SUCCESS; +} + + +//------------------------------------------------- +StatusCode TruthClosureCheck::execute() { + //------------------------------------------------- + + ATH_MSG_DEBUG( " execute..... " ); + SG::ReadHandle<McEventCollection> originalMcEventCollection(m_originalMcEventCollection); + if (!originalMcEventCollection.isValid()) { + ATH_MSG_ERROR("Could not find original McEventCollection called " << originalMcEventCollection.name() << " in store " << originalMcEventCollection.store() << "."); + return StatusCode::FAILURE; + } + const HepMC::GenEvent& originalEvent(**(originalMcEventCollection->begin())); + + if (sanityCheck(originalEvent).isFailure()) { + ATH_MSG_FATAL("Problems in original GenEvent - bailing out."); + return StatusCode::FAILURE; + } + + SG::ReadHandle<McEventCollection> resetMcEventCollection(m_resetMcEventCollection); + if (!resetMcEventCollection.isValid()) { + ATH_MSG_ERROR("Could not find reset McEventCollection called " << resetMcEventCollection.name() << " in store " << resetMcEventCollection.store() << "."); + return StatusCode::FAILURE; + } + const HepMC::GenEvent& resetEvent(**(resetMcEventCollection->begin())); + + if (sanityCheck(resetEvent).isFailure()) { + ATH_MSG_FATAL("Problems in reset GenEvent - bailing out."); + return StatusCode::FAILURE; + } + + if (originalEvent.event_number() != resetEvent.event_number() ) { + ATH_MSG_ERROR ("event_number differs! Original: "<<originalEvent.event_number()<<", Reset: "<<resetEvent.event_number()); + } + + if (originalEvent.signal_process_id() != resetEvent.signal_process_id() ) { + ATH_MSG_ERROR ("signal_process_id differs! Original: "<<originalEvent.signal_process_id()<<", Reset: "<<resetEvent.signal_process_id()); + } + + if (originalEvent.valid_beam_particles() != resetEvent.valid_beam_particles() ) { + ATH_MSG_ERROR ("valid_beam_particles differs! Original: "<<originalEvent.valid_beam_particles()<<", Reset: "<<resetEvent.valid_beam_particles()); + } + else if (originalEvent.valid_beam_particles() && resetEvent.valid_beam_particles()) { + std::pair<HepMC::GenParticle*,HepMC::GenParticle*> originalBP = originalEvent.beam_particles(); + std::pair<HepMC::GenParticle*,HepMC::GenParticle*> resetBP = resetEvent.beam_particles(); + if ( ( !originalBP.first && resetBP.first ) || + ( originalBP.first && !resetBP.first ) || + ( originalBP.first && resetBP.first && compareGenParticle(*(originalBP.first), *(resetBP.first)).isFailure() ) ) { + ATH_MSG_ERROR ( "First beam particle does not match" ); + } + if ( ( !originalBP.second && resetBP.second ) || + ( originalBP.second && !resetBP.second ) || + ( originalBP.second && resetBP.second && compareGenParticle(*(originalBP.second), *(resetBP.second)).isFailure() ) ) { + ATH_MSG_ERROR ( "Second beam particle does not match" ); + } + + if (originalEvent.particles_size() != resetEvent.particles_size() ) { + ATH_MSG_ERROR ("particles_size differs! Original: "<<originalEvent.particles_size()<<", Reset: "<<resetEvent.particles_size()); + } + + if (originalEvent.vertices_size() != resetEvent.vertices_size() ) { + ATH_MSG_ERROR ("vertices_size differs! Original: "<<originalEvent.vertices_size()<<", Reset: "<<resetEvent.vertices_size()); + } + } + + //loop over vertices in Background GenEvent + HepMC::GenEvent::vertex_const_iterator origVertexIter(originalEvent.vertices_begin()); + const HepMC::GenEvent::vertex_const_iterator endOfOriginalListOfVertices(originalEvent.vertices_end()); + HepMC::GenEvent::vertex_const_iterator resetVertexIter(resetEvent.vertices_begin()); + const HepMC::GenEvent::vertex_const_iterator endOfResetListOfVertices(resetEvent.vertices_end()); + while( origVertexIter!=endOfOriginalListOfVertices && + resetVertexIter!=endOfResetListOfVertices) { + if (compareGenVertex(**origVertexIter,**resetVertexIter).isFailure()) { + ATH_MSG_ERROR ( "vertices differ!" ); + printGenVertex(**origVertexIter,**resetVertexIter); + } + ++origVertexIter; + ++resetVertexIter; + } + ATH_MSG_INFO( "Completed Truth reset closure check ..... " ); + + return StatusCode::SUCCESS; + +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.h b/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.h new file mode 100644 index 0000000000000000000000000000000000000000..ed51fe64686a888afd6a59482cfe9c80c229b1f6 --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/TruthClosureCheck.h @@ -0,0 +1,40 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRUTHCLOSURECHECK_H +#define TRUTHCLOSURECHECK_H + +// Base class include +#include "AthenaBaseComps/AthAlgorithm.h" + +// Athena includes +#include "StoreGate/ReadHandleKey.h" +#include "GeneratorObjects/McEventCollection.h" + +class TruthClosureCheck : public AthAlgorithm { + +public: + TruthClosureCheck(const std::string& name, ISvcLocator* pSvcLocator); + ~TruthClosureCheck() = default; + virtual StatusCode initialize() override final; + virtual StatusCode execute() override final; + + private: + StatusCode sanityCheck(const HepMC::GenEvent& event) const; + StatusCode compareGenVertex(const HepMC::GenVertex& origVertex, + const HepMC::GenVertex& resetVertex) const; + StatusCode compareGenParticle(const HepMC::GenParticle& origParticle, + const HepMC::GenParticle& resetParticle) const; + StatusCode compareMomenta(const HepMC::FourVector& origMomenta, + const HepMC::FourVector& resetMomenta) const; + void printGenVertex(const HepMC::GenVertex& origVertex, + const HepMC::GenVertex& resetVertex) const; + + SG::ReadHandleKey<McEventCollection> m_originalMcEventCollection; + SG::ReadHandleKey<McEventCollection> m_resetMcEventCollection; + bool m_compareMomenta{true}; + double m_momentaLimit{0.000000000001}; + bool m_postSimulation{false}; +}; +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/TruthResetAlg.cxx b/Simulation/Tools/McEventCollectionFilter/src/TruthResetAlg.cxx new file mode 100644 index 0000000000000000000000000000000000000000..f92958588dc474c10226826e6f0e32d61c1b5c3d --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/TruthResetAlg.cxx @@ -0,0 +1,226 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "TruthResetAlg.h" +// +#include "AtlasHepMC/GenEvent.h" +#include "AtlasHepMC/GenVertex.h" +#include "GeneratorObjects/McEventCollection.h" + +#include "StoreGate/ReadHandle.h" +#include "StoreGate/WriteHandle.h" + +#include "CLHEP/Vector/LorentzVector.h" +#include "CLHEP/Units/SystemOfUnits.h" +// +#include "CLHEP/Geometry/Point3D.h" +#include "GeoPrimitives/GeoPrimitives.h" +#include <climits> + +TruthResetAlg::TruthResetAlg(const std::string& name, ISvcLocator* pSvcLocator): + AthAlgorithm(name, pSvcLocator) +{ + declareProperty("InputMcEventCollection" , m_inputMcEventCollection = "TruthEvent"); + declareProperty("OutputMcEventCollection" , m_outputMcEventCollection = "NewTruthEvent"); +} + + +//---------------------------------------------------- +StatusCode TruthResetAlg::initialize() { +//---------------------------------------------------- + + ATH_CHECK(m_inputMcEventCollection.initialize()); + ATH_CHECK(m_outputMcEventCollection.initialize()); + return StatusCode::SUCCESS; + +} + +//------------------------------------------------- +StatusCode TruthResetAlg::execute() { +//------------------------------------------------- + + ATH_MSG_DEBUG( " execute..... " ); + SG::ReadHandle<McEventCollection> inputMcEventCollection(m_inputMcEventCollection); + if (!inputMcEventCollection.isValid()) { + ATH_MSG_ERROR("Could not find input McEventCollection called " << inputMcEventCollection.name() << " in store " << inputMcEventCollection.store() << "."); + return StatusCode::FAILURE; + } + const HepMC::GenEvent& inputEvent(**(inputMcEventCollection->begin())); + + //Sanity check + bool inputProblem(false); + for (auto particle: inputEvent) { + if (particle->status() == 1) { + if (!particle->production_vertex()) { + ATH_MSG_ERROR("Status 1 particle without a production vertex!! " << particle); + inputProblem = true; + } + } + else if (particle->status() == 2) { + if (!particle->production_vertex()) { + ATH_MSG_ERROR("Status 2 particle without a production vertex!! " << particle); + inputProblem = true; + } + if (!particle->end_vertex()) { + ATH_MSG_ERROR("Status 2 particle without an end vertex!! " << particle); + inputProblem = true; + } + } + } + if (inputProblem) { + ATH_MSG_FATAL("Problems in input GenEvent - bailing out."); + return StatusCode::FAILURE; + } +#ifdef HEPMC3 + /// The algorithm makes a deep copy of the event and drops the particles and vertices created by the simulation + /// from the copied event. + std::unique_ptr<HepMC::GenEvent> outputEvent = std::make_unique<HepMC::GenEvent>(inputEvent); + if (inputEvent.run_info()) outputEvent->set_run_info(std::make_shared<HepMC3::GenRunInfo>(*(inputEvent.run_info().get()))); + for (;;) { + bool requires_update = false; + for (auto particle: outputEvent->particles()) { + if (HepMC::barcode(particle) > 200000) { + outputEvent->remove_particle(particle); + requires_update = true; + } + } + for (auto vertex: outputEvent->vertices()) { + if (HepMC::barcode(vertex) < -200000 || vertex->particles_out().empty() ) { + outputEvent->remove_vertex(vertex); + requires_update = true; + } + } + if (!requires_update) break; + } +#else + + std::unique_ptr<HepMC::GenEvent> outputEvent = std::make_unique<HepMC::GenEvent>(inputEvent.signal_process_id(), + inputEvent.event_number()); + + outputEvent->set_mpi ( inputEvent.mpi() ); + outputEvent->set_event_scale ( inputEvent.event_scale() ); + outputEvent->set_alphaQCD ( inputEvent.alphaQCD() ); + outputEvent->set_alphaQED ( inputEvent.alphaQED() ); + if ( inputEvent.cross_section() ) { + outputEvent->set_cross_section ( *inputEvent.cross_section()); + } + if (inputEvent.heavy_ion()) { + outputEvent->set_heavy_ion(*(inputEvent.heavy_ion())); + } + if (inputEvent.pdf_info()) { + outputEvent->set_pdf_info(*(inputEvent.pdf_info())); + } + outputEvent->define_units( inputEvent.momentum_unit(), inputEvent.length_unit() ); + + // 1. create a NEW copy of all vertices from inputEvent + // taking care to map new vertices onto the vertices being copied + // and add these new vertices to this event. + // We do not use GenVertex::operator= because that would copy + // the attached particles as well. + std::map<const HepMC::GenVertex*,HepMC::GenVertex*> inputEvtVtxToOutputEvtVtx; + HepMC::GenEvent::vertex_const_iterator currentVertexIter(inputEvent.vertices_begin()); + const HepMC::GenEvent::vertex_const_iterator endOfCurrentListOfVertices(inputEvent.vertices_end()); + ATH_MSG_VERBOSE( "Starting a vertex loop ... " ); + for (; currentVertexIter != endOfCurrentListOfVertices; ++currentVertexIter) { + const HepMC::GenVertex *pCurrentVertex(*currentVertexIter); + if (pCurrentVertex->barcode()<-200000) { // FIXME configurable constant + continue; // skip vertices created by the simulation + } + std::unique_ptr<HepMC::GenVertex> copyOfGenVertex = + std::make_unique<HepMC::GenVertex>(pCurrentVertex->position(), pCurrentVertex->id(), pCurrentVertex->weights() ); + copyOfGenVertex->suggest_barcode( pCurrentVertex->barcode() ); + inputEvtVtxToOutputEvtVtx[pCurrentVertex] = copyOfGenVertex.get(); + outputEvent->add_vertex( copyOfGenVertex.release() ); + } //vertex loop + + // 2. copy the signal process vertex info. + if ( inputEvent.signal_process_vertex() ) { + outputEvent->set_signal_process_vertex( inputEvtVtxToOutputEvtVtx[inputEvent.signal_process_vertex()] ); + } + else { + outputEvent->set_signal_process_vertex( nullptr ); + } + // + // 3. create a NEW copy of all particles from inputEvent + // taking care to attach them to the appropriate vertex + HepMC::GenParticle* beam1{}; + HepMC::GenParticle* beam2{}; + for ( HepMC::GenEvent::particle_const_iterator particleIter = inputEvent.particles_begin(); + particleIter != inputEvent.particles_end(); ++particleIter ) { + const HepMC::GenParticle* currentParticle = *particleIter; + if (currentParticle->barcode()>200000) { // FIXME configurable constant + continue; // skip particles created by the simulation + } + std::unique_ptr<HepMC::GenParticle> copyOfGenParticle = std::make_unique<HepMC::GenParticle>(*currentParticle); + if ( currentParticle == inputEvent.beam_particles().first ) beam1 = copyOfGenParticle.get(); + if ( currentParticle == inputEvent.beam_particles().second ) beam2 = copyOfGenParticle.get(); + // There may (will) be particles which had end vertices added by + // the simulation (inputEvent). Those vertices will not be copied + // to the outputEvent, so we should not try to use them here. + const bool shouldAddProdVertex(currentParticle->production_vertex() && inputEvtVtxToOutputEvtVtx[ currentParticle->production_vertex() ]); + const bool shouldAddEndVertex(currentParticle->end_vertex() && inputEvtVtxToOutputEvtVtx[ currentParticle->end_vertex() ]); + if ( shouldAddProdVertex || shouldAddEndVertex ) { + HepMC::GenParticle* particleCopy = copyOfGenParticle.release(); + if ( shouldAddEndVertex ) { + inputEvtVtxToOutputEvtVtx[ currentParticle->end_vertex() ]-> + add_particle_in(particleCopy); + } + if ( shouldAddProdVertex ) { + inputEvtVtxToOutputEvtVtx[ currentParticle->production_vertex() ]-> + add_particle_out(particleCopy); + } + } + else { + ATH_MSG_WARNING ( "Found GenParticle with no production or end vertex! \n" << *currentParticle); + } + } + outputEvent->set_beam_particles( beam1, beam2 ); + // + // 4. now that vtx/particles are copied, copy weights and random states + outputEvent->set_random_states( inputEvent.random_states() ); + outputEvent->weights() = inputEvent.weights(); +#endif + + //Sanity check + bool outputProblem(false); + for (auto particle: *(outputEvent.get())) { + if (particle->status() == 1) { + if (!particle->production_vertex()) { + ATH_MSG_ERROR("Status 1 particle without a production vertex!! " << particle); + outputProblem = true; + } + if (particle->end_vertex()) { + ATH_MSG_ERROR("Status 1 particle with an end vertex!! " << particle); + outputProblem = true; + } + } + else if (particle->status() == 2) { + if (!particle->production_vertex()) { + ATH_MSG_ERROR("Status 2 particle without a production vertex!! " << particle); + outputProblem = true; + } + if (!particle->end_vertex()) { + ATH_MSG_ERROR("Status 2 particle without an end vertex!! " << particle); + outputProblem = true; + } + } + } + if (outputProblem) { + ATH_MSG_FATAL("Problems in output GenEvent - bailing out."); + return StatusCode::FAILURE; + } + + SG::WriteHandle<McEventCollection> outputMcEventCollection(m_outputMcEventCollection); + ATH_CHECK(outputMcEventCollection.record(std::make_unique<McEventCollection>())); + outputMcEventCollection->push_back(outputEvent.release()); + if (!outputMcEventCollection.isValid()) { + ATH_MSG_ERROR("Could not record output McEventCollection called " << outputMcEventCollection.name() << " in store " << outputMcEventCollection.store() << "."); + return StatusCode::FAILURE; + } + + ATH_MSG_DEBUG( "succeded TruthResetAlg ..... " ); + + return StatusCode::SUCCESS; + +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/TruthResetAlg.h b/Simulation/Tools/McEventCollectionFilter/src/TruthResetAlg.h new file mode 100644 index 0000000000000000000000000000000000000000..47321b5e9dc9f891493d8d32c44d3094ea53408c --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/TruthResetAlg.h @@ -0,0 +1,30 @@ +/* + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TRUTHRESETALG_H +#define TRUTHRESETALG_H + +// Base class include +#include "AthenaBaseComps/AthAlgorithm.h" + +// Athena includes +#include "StoreGate/ReadHandleKey.h" +#include "StoreGate/WriteHandleKey.h" +#include "GeneratorObjects/McEventCollection.h" + +class TruthResetAlg : public AthAlgorithm { + +public: + TruthResetAlg(const std::string& name, ISvcLocator* pSvcLocator); + ~TruthResetAlg() = default; + virtual StatusCode initialize() override final; + virtual StatusCode execute() override final; + + private: + + SG::ReadHandleKey<McEventCollection> m_inputMcEventCollection; + SG::WriteHandleKey<McEventCollection> m_outputMcEventCollection; + +}; +#endif diff --git a/Simulation/Tools/McEventCollectionFilter/src/components/McEventCollectionFilter_entries.cxx b/Simulation/Tools/McEventCollectionFilter/src/components/McEventCollectionFilter_entries.cxx index 503304140c98fc7570672f33903f118f2bb7f6e6..8109ea1dac92487014154e1397fa640f5db13d17 100644 --- a/Simulation/Tools/McEventCollectionFilter/src/components/McEventCollectionFilter_entries.cxx +++ b/Simulation/Tools/McEventCollectionFilter/src/components/McEventCollectionFilter_entries.cxx @@ -1,4 +1,29 @@ #include "../McEventCollectionFilter.h" - + +#include "../CSC_HitsTruthRelink.h" +#include "../MDT_HitsTruthRelink.h" +#include "../MM_HitsTruthRelink.h" +#include "../RPC_HitsTruthRelink.h" +#include "../SiliconHitsTruthRelink.h" +#include "../sTGC_HitsTruthRelink.h" +#include "../TGC_HitsTruthRelink.h" +#include "../TRT_HitsTruthRelink.h" +#include "../PileUpTruthDecoration.h" + +#include "../TruthResetAlg.h" +#include "../TruthClosureCheck.h" + DECLARE_COMPONENT( McEventCollectionFilter ) +DECLARE_COMPONENT( CSC_HitsTruthRelink ) +DECLARE_COMPONENT( MDT_HitsTruthRelink ) +DECLARE_COMPONENT( MM_HitsTruthRelink ) +DECLARE_COMPONENT( RPC_HitsTruthRelink ) +DECLARE_COMPONENT( SiliconHitsTruthRelink ) +DECLARE_COMPONENT( sTGC_HitsTruthRelink ) +DECLARE_COMPONENT( TGC_HitsTruthRelink ) +DECLARE_COMPONENT( TRT_HitsTruthRelink ) +DECLARE_COMPONENT( PileUpTruthDecoration ) + +DECLARE_COMPONENT( TruthResetAlg ) +DECLARE_COMPONENT( TruthClosureCheck ) diff --git a/Simulation/Tools/McEventCollectionFilter/src/sTGC_HitsTruthRelink.cxx b/Simulation/Tools/McEventCollectionFilter/src/sTGC_HitsTruthRelink.cxx new file mode 100644 index 0000000000000000000000000000000000000000..33dc077290b77fd16efc2e8a4b2cb6b7f8f343ec --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/sTGC_HitsTruthRelink.cxx @@ -0,0 +1,71 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "sTGC_HitsTruthRelink.h" + + +sTGC_HitsTruthRelink::sTGC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator) + : HitsTruthRelinkBase(name, pSvcLocator) +{ +} + + +StatusCode sTGC_HitsTruthRelink::initialize() +{ + ATH_CHECK(HitsTruthRelinkBase::initialize()); + + // Check and initialize keys + ATH_CHECK( m_inputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized ReadHandleKey: " << m_inputHitsKey); + ATH_CHECK( m_outputHitsKey.initialize() ); + ATH_MSG_VERBOSE("Initialized WriteHandleKey: " << m_outputHitsKey); + return StatusCode::SUCCESS; +} + + +StatusCode sTGC_HitsTruthRelink::execute(const EventContext &ctx) const +{ + ATH_MSG_DEBUG("Doing truth relinking"); + + SG::ReadHandle<sTGCSimHitCollection> inputCollection(m_inputHitsKey, ctx); + if (!inputCollection.isValid()) { + ATH_MSG_ERROR("Could not get input hits collection " << inputCollection.name() << " from store " << inputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Found input hits collection " << inputCollection.name() << " in store " << inputCollection.store()); + + SG::WriteHandle<sTGCSimHitCollection> outputCollection(m_outputHitsKey, ctx); + ATH_CHECK(outputCollection.record(std::make_unique<sTGCSimHitCollection>())); + if (!outputCollection.isValid()) { + ATH_MSG_ERROR("Could not record output hits collection " << outputCollection.name() << " to store " << outputCollection.store()); + return StatusCode::FAILURE; + } + ATH_MSG_DEBUG("Recorded output hits collection " << outputCollection.name() << " in store " << outputCollection.store()); + + // Do relinking + int referenceBarcode{}; + ATH_CHECK(getReferenceBarcode(ctx, &referenceBarcode)); + + for (const sTGCSimHit &hit : *inputCollection) { + const HepMcParticleLink oldLink = hit.particleLink(); + + int currentBarcode{}; + if (oldLink.barcode() != 0) { + currentBarcode = referenceBarcode; + } + + HepMcParticleLink particleLink(currentBarcode, oldLink.eventIndex(), oldLink.getEventCollection(), HepMcParticleLink::IS_INDEX, ctx); + + int id = hit.sTGCId(); + double time = hit.globalTime(); + Amg::Vector3D position = hit.globalPosition(); + int pdgID = hit.particleEncoding(); + Amg::Vector3D direction = hit.globalDirection(); + double energyDeposit = hit.depositEnergy(); + + outputCollection->Emplace(id, time, position, pdgID, direction, energyDeposit, particleLink); + } + + return StatusCode::SUCCESS; +} diff --git a/Simulation/Tools/McEventCollectionFilter/src/sTGC_HitsTruthRelink.h b/Simulation/Tools/McEventCollectionFilter/src/sTGC_HitsTruthRelink.h new file mode 100644 index 0000000000000000000000000000000000000000..f7f640279a79b068a1210c7efea116262627b48a --- /dev/null +++ b/Simulation/Tools/McEventCollectionFilter/src/sTGC_HitsTruthRelink.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef STGCHITSTRUTHRELINK_H +#define STGCHITSTRUTHRELINK_H + +// Base class include +#include "HitsTruthRelinkBase.h" + +#include <MuonSimEvent/sTGCSimHitCollection.h> + + +class sTGC_HitsTruthRelink : public HitsTruthRelinkBase +{ +public: + sTGC_HitsTruthRelink(const std::string &name, ISvcLocator *pSvcLocator); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext &ctx) const override; + +private: + SG::ReadHandleKey<sTGCSimHitCollection> m_inputHitsKey {this, "InputHits", "sTGCSensitiveDetectorOLD", "Input TGC hits name"}; + SG::WriteHandleKey<sTGCSimHitCollection> m_outputHitsKey {this, "OutputHits", "sTGCSensitiveDetector", "Output TGC hits name"}; +}; + +#endif diff --git a/TileCalorimeter/TileDetDescr/TileDetDescr/TileDddbManager.h b/TileCalorimeter/TileDetDescr/TileDetDescr/TileDddbManager.h index d97fd52d725f04692e0305a42751e90a15697689..dba35937324848fa5e14857c06fa52207b54ae2c 100755 --- a/TileCalorimeter/TileDetDescr/TileDetDescr/TileDddbManager.h +++ b/TileCalorimeter/TileDetDescr/TileDetDescr/TileDddbManager.h @@ -257,9 +257,14 @@ class TileDddbManager double TICLholes(unsigned int ind) const; // fields of tile switches - bool addPlatesToCell() const; - int uShape() const; - int glue() const; + int getSwitch (const char *name, int def_val) const; + int addPlatesToCell() const { return getSwitch("ADDPLATESTOCELL",1); } + int uShape() const { return getSwitch("USHAPE",0); } + int glue() const { return getSwitch("GLUE",1); } + int PVT() const { return getSwitch("PVT",0); } + int steel() const { return getSwitch("STEEL",0); } + int csTube() const { return getSwitch("CSTUBE",0); } + private: IRDBRecordset_ptr m_tiglob; diff --git a/TileCalorimeter/TileDetDescr/src/TileDddbManager.cxx b/TileCalorimeter/TileDetDescr/src/TileDddbManager.cxx index a1222249d04098ebcc63941875e0aacbb4cc92e5..335fdebf2be0a89e1ab01b96042638130ac4f16f 100755 --- a/TileCalorimeter/TileDetDescr/src/TileDddbManager.cxx +++ b/TileCalorimeter/TileDetDescr/src/TileDddbManager.cxx @@ -1743,76 +1743,23 @@ double TileDddbManager::TICLholes(unsigned int ind) const } } -bool TileDddbManager::addPlatesToCell() const -{ - if (m_tileSwitches) - { - if ((*m_tileSwitches)[0]->isFieldNull("ADDPLATESTOCELL")) - { - MLOG(DEBUG) << "TileDddbManager::addPlatesToCell() - TileSwitches(ADDPLATESTOCELL) is EMPTY, returning TRUE" << endmsg; - return true; - } - else - { - return (*m_tileSwitches)[0]->getInt("ADDPLATESTOCELL"); - } - } - else - { - MLOG(ERROR) << "TileDddbManager::addPlatesToCell() - TileSwitches is not set, returning addPlatesToCell= TRUE" << endmsg; - return true; - } -} - -int TileDddbManager::uShape() const -{ - if (m_tileSwitches) - { - try { - if ((*m_tileSwitches)[0]->isFieldNull("USHAPE")) - { - MLOG(DEBUG) << "TileDddbManager::uShape() - TileSwitches(USHAPE) is EMPTY, returning uShape= 0" << endmsg; - return 0; - } - else - { - return (*m_tileSwitches)[0]->getInt("USHAPE"); - } - } catch (std::exception& e) { - MLOG(WARNING) << "TileDddbManager::uShape() - TileSwitches table does not contain field USHAPE, returning uShape= 0" << endmsg; - return 0; +int TileDddbManager::getSwitch(const char *name, int val) const +{ + if (m_tileSwitches) { + try { + if ((*m_tileSwitches)[0]->isFieldNull(name)) { + MLOG(DEBUG) << "TileDddbManager::getSwitch() - TileSwitches(" << name << ") is EMPTY, returning " << name << " = " << val << endmsg; + return val; + } else { + return (*m_tileSwitches)[0]->getInt(name); } + } catch (std::exception& e) { + MLOG(WARNING) << "TileDddbManager::getSwitch() - TileSwitches table does not contain field " << name << ", returning " << name << " = " << val << endmsg; + return val; } - else - { - MLOG(ERROR) << "TileDddbManager::uShape() - TileSwitches is not set, returning uShape= 0" << endmsg; - return 0; - } -} - -int TileDddbManager::glue() const -{ - if (m_tileSwitches) - { - try { - if ((*m_tileSwitches)[0]->isFieldNull("GLUE")) - { - MLOG(DEBUG) << "TileDddbManager::glue() - TileSwitches(GLUE) is EMPTY, returning glue= 1" << endmsg; - return 1; - } - else - { - return (*m_tileSwitches)[0]->getInt("GLUE"); - } - } catch (std::exception& e) { - MLOG(WARNING) << "TileDddbManager::glue() - TileSwitches table does not contain field GLUE, returning glue= 1" << endmsg; - return 1; - } - } - else - { - MLOG(ERROR) << "TileDddbManager::glue() - TileSwitches is not set, returning glue= 1" << endmsg; - return 1; - } + } else { + MLOG(ERROR) << "TileDddbManager::getSwitch() - TileSwitches is not set, returning " << name << " = " << val << endmsg; + return val; + } } diff --git a/TileCalorimeter/TileDetDescr/src/TileDetDescrManager.cxx b/TileCalorimeter/TileDetDescr/src/TileDetDescrManager.cxx index 8fdc6ef949c140106787821659ee25677f05e4e1..83404153fb633454c29eacd466902cdb2fd755df 100755 --- a/TileCalorimeter/TileDetDescr/src/TileDetDescrManager.cxx +++ b/TileCalorimeter/TileDetDescr/src/TileDetDescrManager.cxx @@ -275,8 +275,8 @@ void TileDetDescrManager::create_elements(bool checks) zmin = -ztmp; } - double deta = 0.1; - int neta = (int)((emax-emin)*(1./deta)+0.001); + double deta = 0.1; // fixed deta for gap scin + int neta = 6; // fixed number of eta bins for gap scin depth_in[0] = zmin; depth_out[0] = zmax; CaloCell_ID::CaloSample sample = CaloCell_ID::TileGap3; @@ -384,7 +384,7 @@ void TileDetDescrManager::create_elements(bool checks) for (int ieta=0; ieta<neta; ++ieta) { - int tower = (int)((eta + 0.01) * 10); // tower number in 0.1 granularity + int tower = (sample == (int)TileID::SAMP_E) ? isamp : (int)((eta + 0.01) * 10); // tower number in 0.1 granularity try { Identifier id = m_tile_id->cell_id(section,side,module,tower,sample,checks); diff --git a/TileCalorimeter/TileG4/TileAncillary/MuonWall/python/MuonWallConfig.py b/TileCalorimeter/TileG4/TileAncillary/MuonWall/python/MuonWallConfig.py index 094ca1c286c73c7cf9f90feb0e7ef803cc00df50..f7d7c711c525bdf12f62afca04d5919ad20df553 100644 --- a/TileCalorimeter/TileG4/TileAncillary/MuonWall/python/MuonWallConfig.py +++ b/TileCalorimeter/TileG4/TileAncillary/MuonWall/python/MuonWallConfig.py @@ -51,7 +51,7 @@ def getMuonWallTileTB(name="MuonWallTileTB", **kwargs): theta=simFlags.Theta.get_Value() z=simFlags.Z.get_Value() eta=0.0 - if abs(theta) < 60.01: + if abs(theta) < 70.01: # Mode 2 -> User enters theta!=+/-90 and Z # Z is the distance from center of the module to the desired # entrace point calculated at R=2290 (start of tilecal diff --git a/TileCalorimeter/TileGeoModel/TileGeoModel/TileDetectorTool.h b/TileCalorimeter/TileGeoModel/TileGeoModel/TileDetectorTool.h index 6227788770d409a831e6e208e8e3ba1b8fa34145..0913486bd99f929a45fdf336acb0edc40776b8f9 100755 --- a/TileCalorimeter/TileGeoModel/TileGeoModel/TileDetectorTool.h +++ b/TileCalorimeter/TileGeoModel/TileGeoModel/TileDetectorTool.h @@ -6,6 +6,7 @@ #define TileDetectorTool_H #include "GeoModelUtilities/GeoModelTool.h" +#include "TileGeoModel/TileSwitches.h" #include <string> @@ -26,27 +27,17 @@ class TileDetectorTool final : public GeoModelTool virtual StatusCode create() override final; virtual StatusCode clear() override final; - bool isTestBeam() const { return m_testBeam; } - bool isAddPlates() const { return m_addPlates; } - int uShape() const { return m_uShape; } - int csTube() const { return m_csTube; } - int glue() const { return m_glue; } + bool isTestBeam() const { return m_switches.testBeam; } + bool isAddPlates() const { return m_switches.addPlatesToCell; } + int uShape() const { return m_switches.uShape; } private: StatusCode initIds(); StatusCode createElements(); + void setSwitch(int & param, int value, const char * name); - - bool m_testBeam; - bool m_addPlates; - int m_uShape; - - /** 0: glue layer is removed and replaced by iron, - 1: simulation with glue, - 2: glue is replaced by iron + width of iron is modified in order to get the same sampling fraction */ - int m_glue; - int m_csTube; + TileSwitches m_switches; bool m_not_locked; bool m_useNewFactory; diff --git a/TileCalorimeter/TileGeoModel/TileGeoModel/TileSwitches.h b/TileCalorimeter/TileGeoModel/TileGeoModel/TileSwitches.h new file mode 100644 index 0000000000000000000000000000000000000000..8818d44dbc08d307e93d81367c24cc9ecc48fdaf --- /dev/null +++ b/TileCalorimeter/TileGeoModel/TileGeoModel/TileSwitches.h @@ -0,0 +1,56 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#ifndef TILESWITCHES_h +#define TILESWITCHES_h + +/* This is a very simple struct for holding parameters + which are stored in TileSwitches table in GeoModel DB + and which can be overwritten from jobOptions + Default value -1 means that value will be taken from GeoModel DB later on +*/ + +class TileSwitches +{ +public: + /** Setup defaults */ + TileSwitches(bool tb=false, bool pl=true) : + testBeam(tb), + addPlatesToCell(pl), + uShape(-1), + glue(-1), + pvt(-1), + steel(-1), + csTube(-1) + {} + + /** setting up testbeam geometry or ATLAS geometry **/ + bool testBeam; + + /** calculate cell volumes with or without front-plates and end-plates **/ + bool addPlatesToCell; + + /** 0: simulation without U-shape + 1: simulation with U-shape **/ + int uShape; + + /** 0: glue layer is removed and replaced by iron, + 1: simulation with glue, + 2: glue is replaced by iron + width of iron is modified in order to get the same sampling fraction */ + int glue; + + /** 0: all scintillators are polystyrene + 1: crack scrintillators are PVT, others - polystyrene **/ + int pvt; + + /** 0: Absorber is pure Iron + 1: Absorber is tile::Steel defined in DB **/ + int steel; + + /** 0: without Cesium tubes + 1: with cesium tubes **/ + int csTube; +}; + +#endif diff --git a/TileCalorimeter/TileGeoModel/src/TileAtlasFactory.cxx b/TileCalorimeter/TileGeoModel/src/TileAtlasFactory.cxx index 8731032d12d2ecdc5c673c9df3cf8ebd3002b916..ac20d0f18d6239fc1d3d93391499e4dbbd2b9765 100755 --- a/TileCalorimeter/TileGeoModel/src/TileAtlasFactory.cxx +++ b/TileCalorimeter/TileGeoModel/src/TileAtlasFactory.cxx @@ -51,23 +51,17 @@ using namespace GeoXF; // Constructor: TileAtlasFactory::TileAtlasFactory(StoreGateSvc *pDetStore, TileDetDescrManager *manager, - bool addPlates, - int ushape, - int glue, - int cstube, + const TileSwitches & switches, MsgStream *log, bool fullGeo) : m_detectorStore(pDetStore) , m_detectorManager(manager) , m_log(log) - , m_addPlatesToCellVolume(addPlates) - , m_uShape(ushape) - , m_glue(glue) - , m_csTube(cstube) - , m_testbeamGeometry(false) + , m_switches(switches) , m_verbose(log->level()<=MSG::VERBOSE) , m_fullGeo(fullGeo) { + m_switches.testBeam = false; } // Destructor: @@ -107,7 +101,7 @@ void TileAtlasFactory::create(GeoPhysVol *world) // -------- -------- SECTION BUILDER -------- ---------- TileDddbManager* dbManager = m_detectorManager->getDbManager(); - TileGeoSectionBuilder* sectionBuilder = new TileGeoSectionBuilder(theMaterialManager,dbManager,m_uShape,m_glue,m_csTube,m_log); + TileGeoSectionBuilder* sectionBuilder = new TileGeoSectionBuilder(theMaterialManager,dbManager,m_switches,m_log); double DzSaddleSupport = 0, RadiusSaddle = 0; if (dbManager->BoolSaddle()) @@ -123,7 +117,7 @@ void TileAtlasFactory::create(GeoPhysVol *world) } if(m_log->level()<=MSG::DEBUG) - (*m_log) <<MSG::DEBUG << "TileAtlasFactory. addPlates = " <<m_addPlatesToCellVolume<<endmsg; + (*m_log) <<MSG::DEBUG << "TileAtlasFactory. addPlates = " <<m_switches.addPlatesToCell<<endmsg; // -------- -------- CUT BUILDER -------- ---------- //TileGeoCutBuilder* CutBuilder = new TileGeoCutBuilder(theMaterialManager,dbManager,m_log); @@ -1220,7 +1214,7 @@ void TileAtlasFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry, + m_switches.testBeam, ModuleNcp, BFingerLengthPos*(1./Gaudi::Units::cm)); @@ -1253,7 +1247,7 @@ void TileAtlasFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry, + m_switches.testBeam, ModuleNcp*100, BFingerLengthNeg*(1./Gaudi::Units::cm)); @@ -1479,7 +1473,7 @@ void TileAtlasFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry, + m_switches.testBeam, ModuleNcp); } GeoTransform* xtraModFingerPos = new GeoTransform(GeoTrf::TranslateX3D( @@ -1701,7 +1695,7 @@ void TileAtlasFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry, + m_switches.testBeam, ModuleNcp*100); } GeoTransform* xtraModFingerNeg = new GeoTransform(GeoTrf::TranslateX3D( @@ -3019,15 +3013,15 @@ void TileAtlasFactory::create(GeoPhysVol *world) for (int ii=0; ii<6; ++ii) { if (ii%2 == 0) { sectionBuilder->computeCellDim(m_detectorManager, dete[ii], - m_addPlatesToCellVolume, + m_switches.addPlatesToCell, zShiftInSection[ii+1], // zShiftPos zShiftInSection[ii]); // zShiftNeg } TileDetDescriptor* descriptor = new TileDetDescriptor(); sectionBuilder->fillDescriptor(descriptor, dete[ii], side[ii], - m_testbeamGeometry, // set to false - ATLAS geometry - m_addPlatesToCellVolume, // add front/end plates to cell volume + m_switches.testBeam, // set to false - ATLAS geometry + m_switches.addPlatesToCell, // add front/end plates to cell volume nModulesInSection[ii], // 0-64 modules zShiftInSection[ii]); // Z-shift diff --git a/TileCalorimeter/TileGeoModel/src/TileAtlasFactory.h b/TileCalorimeter/TileGeoModel/src/TileAtlasFactory.h index 8b56bbedf33f0751ea5a3e1dbeb4d6e0503e266e..2144c02e8614d24e810365bb4a9da0bb198774ba 100755 --- a/TileCalorimeter/TileGeoModel/src/TileAtlasFactory.h +++ b/TileCalorimeter/TileGeoModel/src/TileAtlasFactory.h @@ -16,6 +16,7 @@ #include "GeoModelKernel/GeoVDetectorFactory.h" #include "TileDetDescr/TileDetDescrManager.h" +#include "TileGeoModel/TileSwitches.h" class MsgStream; class StoreGateSvc; @@ -25,8 +26,8 @@ class TileAtlasFactory : public GeoVDetectorFactory public: /** Constructor */ - TileAtlasFactory(StoreGateSvc *pDetStore, TileDetDescrManager *manager, - bool addPlates, int uShape, int glue, int cstube, MsgStream *log, bool fullGeo); + TileAtlasFactory(StoreGateSvc *pDetStore, TileDetDescrManager *manager, + const TileSwitches & switches, MsgStream *log, bool fullGeo); /** Destructor */ ~TileAtlasFactory(); @@ -57,20 +58,8 @@ private: /** Get message SVC */ MsgStream *m_log; - /** Add plates to cell volume */ - bool m_addPlatesToCellVolume; - - /** U-shape version used */ - int m_uShape; - - /** 0: glue layer is removed and replaced by iron, - 1: simulation with glue, - 2: glue is replaced by iron + width of iron is modified in order to get the same sampling fraction */ - int m_glue; - - int m_csTube; - /** Flag for using test beam geometry */ - bool m_testbeamGeometry; + /** all switches */ + TileSwitches m_switches; /** Flag for activation verbose level for debugging */ bool m_verbose; diff --git a/TileCalorimeter/TileGeoModel/src/TileDetectorFactory.cxx b/TileCalorimeter/TileGeoModel/src/TileDetectorFactory.cxx index 9cda8c646078394338a3d30c3a878e75ab87ce97..16af2d8b97f1d4af4083c87c67729c5cf92238e1 100755 --- a/TileCalorimeter/TileGeoModel/src/TileDetectorFactory.cxx +++ b/TileCalorimeter/TileGeoModel/src/TileDetectorFactory.cxx @@ -44,21 +44,15 @@ using namespace GeoXF; // Constructor: TileDetectorFactory::TileDetectorFactory(StoreGateSvc *pDetStore, TileDetDescrManager *manager, - bool addPlates, - int ushape, - int glue, - int cstube, + const TileSwitches & switches, MsgStream *log) : m_detectorStore(pDetStore) , m_detectorManager(manager) , m_log(log) - , m_addPlatesToCellVolume(addPlates) - , m_uShape(ushape) - , m_glue(glue) - , m_csTube(cstube) - , m_testbeamGeometry(false) + , m_switches(switches) , m_verbose(log->level()<=MSG::VERBOSE) { + m_switches.testBeam = false; } // Destructor: @@ -92,7 +86,7 @@ void TileDetectorFactory::create(GeoPhysVol *world) // -------- -------- SECTION BUILDER -------- ---------- TileDddbManager* dbManager = m_detectorManager->getDbManager(); - TileGeoSectionBuilder* sectionBuilder = new TileGeoSectionBuilder(theMaterialManager,dbManager,m_uShape,m_glue,m_csTube,m_log); + TileGeoSectionBuilder* sectionBuilder = new TileGeoSectionBuilder(theMaterialManager,dbManager,m_switches,m_log); // --------------- TILE ------- TILE --------- TILE ---------- TILE ------------ // Envelope creation. @@ -318,7 +312,7 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->computeCellDim(m_detectorManager, TILE_REGION_CENTRAL, - m_addPlatesToCellVolume, + m_switches.addPlatesToCell, zShift, // shift for positive eta (normally zero) zShift); // shift for negative eta is the same } else @@ -336,8 +330,8 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->fillDescriptor(descriptor, TILE_REGION_CENTRAL, negSide, - m_testbeamGeometry, - m_addPlatesToCellVolume, + m_switches.testBeam, + m_switches.addPlatesToCell, nModules, zShift); @@ -352,8 +346,8 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->fillDescriptor(descriptor, TILE_REGION_CENTRAL, posSide, - m_testbeamGeometry, - m_addPlatesToCellVolume, + m_switches.testBeam, + m_switches.addPlatesToCell, nModules, zShift); @@ -450,7 +444,7 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->computeCellDim(m_detectorManager, TILE_REGION_EXTENDED, - m_addPlatesToCellVolume, + m_switches.addPlatesToCell, zShiftPos, // shift for positive eta zShiftNeg); // shift for negative eta } else @@ -468,8 +462,8 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->fillDescriptor(descriptor, TILE_REGION_EXTENDED, negSide, - m_testbeamGeometry, - m_addPlatesToCellVolume, + m_switches.testBeam, + m_switches.addPlatesToCell, nModulesNeg, zShiftNeg); @@ -484,8 +478,8 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->fillDescriptor(descriptor, TILE_REGION_EXTENDED, posSide, - m_testbeamGeometry, - m_addPlatesToCellVolume, + m_switches.testBeam, + m_switches.addPlatesToCell, nModulesPos, zShiftPos); @@ -757,7 +751,7 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->computeCellDim(m_detectorManager, TILE_REGION_GAP, - m_addPlatesToCellVolume, + m_switches.addPlatesToCell, zShiftPos, // shift for positive eta zShiftNeg); // shift for negative eta } else @@ -775,8 +769,8 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->fillDescriptor(descriptor, TILE_REGION_GAP, negSide, - m_testbeamGeometry, - m_addPlatesToCellVolume, + m_switches.testBeam, + m_switches.addPlatesToCell, nModulesNeg, zShiftNeg); @@ -791,8 +785,8 @@ void TileDetectorFactory::create(GeoPhysVol *world) sectionBuilder->fillDescriptor(descriptor, TILE_REGION_GAP, posSide, - m_testbeamGeometry, - m_addPlatesToCellVolume, + m_switches.testBeam, + m_switches.addPlatesToCell, nModulesPos, zShiftPos); @@ -915,7 +909,7 @@ void TileDetectorFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry, + m_switches.testBeam, ModuleNcp, thicknessWedgeMother*(1./Gaudi::Units::cm)); @@ -989,7 +983,7 @@ void TileDetectorFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry); + m_switches.testBeam); // --- Position N modules inside mother (positive/negative) ----- TRANSFUNCTION xfEFingerModuleMotherPos = Pow(GeoTrf::RotateZ3D(1.0),phiInd)*GeoTrf::TranslateX3D((dbManager->TILErmax()+dbManager->TILBrmax())/2.*Gaudi::Units::cm)*GeoTrf::RotateX3D(180*Gaudi::Units::deg)*GeoTrf::RotateY3D(90*Gaudi::Units::deg); diff --git a/TileCalorimeter/TileGeoModel/src/TileDetectorFactory.h b/TileCalorimeter/TileGeoModel/src/TileDetectorFactory.h index 589330157214ff02d698b596ca31321d1f8d024d..5274585007c7d7cbffeb8467feac2a5f86133d27 100755 --- a/TileCalorimeter/TileGeoModel/src/TileDetectorFactory.h +++ b/TileCalorimeter/TileGeoModel/src/TileDetectorFactory.h @@ -15,6 +15,7 @@ #include "GeoModelKernel/GeoVDetectorFactory.h" #include "TileDetDescr/TileDetDescrManager.h" +#include "TileGeoModel/TileSwitches.h" class MsgStream; class StoreGateSvc; @@ -26,7 +27,7 @@ public: /** Constructor */ TileDetectorFactory(StoreGateSvc *pDetStore, TileDetDescrManager * manager, - bool addPlates, int uShape, int glue, int cstube, MsgStream *log); + const TileSwitches & switches, MsgStream *log); /** Destructor */ ~TileDetectorFactory(); @@ -48,20 +49,8 @@ private: /** Get message SVC */ MsgStream *m_log; - /** Add plates to cell volume */ - bool m_addPlatesToCellVolume; - - /** U-shape version used */ - int m_uShape; - - /** 0: glue layer is removed and replaced by iron, - 1: simulation with glue, - 2: glue is replaced by iron + width of iron is modified in order to get the same sampling fraction */ - int m_glue; - - int m_csTube; - /** Flag for using test beam geometry */ - bool m_testbeamGeometry; + /** all switches */ + TileSwitches m_switches; /** Flag for activation verbose level for debugging */ bool m_verbose; diff --git a/TileCalorimeter/TileGeoModel/src/TileDetectorTool.cxx b/TileCalorimeter/TileGeoModel/src/TileDetectorTool.cxx index c3be4c60a26671f4e8b1e13e9963aa0eb608545a..b8d46f1f2a42ed903d3e1d3d8c495d55a9dcd6a6 100755 --- a/TileCalorimeter/TileGeoModel/src/TileDetectorTool.cxx +++ b/TileCalorimeter/TileGeoModel/src/TileDetectorTool.cxx @@ -31,29 +31,43 @@ TileDetectorTool::TileDetectorTool(const std::string& type, const std::string& name, const IInterface* parent): GeoModelTool(type, name, parent), - m_testBeam(false), - m_addPlates(true), - m_uShape(-1), - m_glue(-1), - m_csTube(-1), + m_switches(false,true), m_not_locked(true), m_useNewFactory(true), m_geometryConfig("FULL"), m_manager(0) { - declareProperty("TestBeam", m_testBeam); - // declareProperty("AddPlatesToCellVolume", m_addPlates); to make user aware that the value is taken from DB rather from JO declareProperty("UseNewFactory", m_useNewFactory); declareProperty("GeometryConfig",m_geometryConfig); - declareProperty("Ushape",m_uShape); - declareProperty("Glue",m_glue); - declareProperty("CsTube",m_csTube); + declareProperty("TestBeam", m_switches.testBeam); + // declareProperty("AddPlatesToCellVolume", m_switches.addPlatesToCell); to make user aware that the value is taken from DB rather from JO + declareProperty("Ushape",m_switches.uShape); + declareProperty("Glue",m_switches.glue); + declareProperty("PVT",m_switches.pvt); + declareProperty("Steel",m_switches.steel); + declareProperty("CsTube",m_switches.csTube); } TileDetectorTool::~TileDetectorTool() { } +void TileDetectorTool::setSwitch(int & param, int value, const char * name) +{ + if (param < 0) { + param = value; + ATH_MSG_INFO(name << " parameter from database is: " << param); + } else { + if (param != value) { + ATH_MSG_WARNING("Overriding " << name << " value from DB by value from jobOptions, using " + << param << " instead of " << value); + } else { + ATH_MSG_INFO(name << " parameter from jobOptions is: " << param); + } + } +} + + StatusCode TileDetectorTool::create() { MsgStream log(msgSvc(), name()); @@ -76,7 +90,7 @@ StatusCode TileDetectorTool::create() } if (atlasVersion.compare(0,9,"ATLAS-CTB") == 0 || tileVersion.compare(0,6,"TileTB") == 0) { ATH_MSG_INFO("CTB geometry detected: " << atlasVersion << " " << tileVersion); - m_testBeam = true; + m_switches.testBeam = true; } //Locate the top level experiment node @@ -99,62 +113,29 @@ StatusCode TileDetectorTool::create() CHECK( initIds() ); - int uShapeDB = dbManager->uShape(); - if (m_uShape < 0) { - m_uShape = uShapeDB; - ATH_MSG_INFO(" U-shape parameter from database is: " << m_uShape); - } else { - if (m_uShape != uShapeDB) { - ATH_MSG_WARNING(" Overriding U-shape value from DB by value from jobOptions, using " - << m_uShape << " instead of " << uShapeDB); - } else { - ATH_MSG_INFO(" U-shape parameter from jobOptions is: " << m_uShape); - } - } - - int glueDB = dbManager->glue(); - if (m_glue < 0) { - m_glue = glueDB; - ATH_MSG_INFO(" Glue parameter from database is: " << m_glue); - } else { - if (m_glue != glueDB) { - ATH_MSG_WARNING(" Overriding Glue value from DB by value from jobOptions, using " - << m_glue << " instead of " << glueDB); - } else { - ATH_MSG_INFO(" Glue parameter from jobOptions is: " << m_glue); - } - } - - int csTubeDB = 0; - if (m_csTube < 0) { - m_csTube = csTubeDB; - ATH_MSG_INFO(" Cs Tube parameter from database is: " << m_csTube); - } else { - if (m_csTube != csTubeDB) { - ATH_MSG_WARNING(" Overriding U-shape value from DB by value from jobOptions, using " - << m_csTube << " instead of " << csTubeDB); - } else { - ATH_MSG_INFO(" Cs Tube parameter from jobOptions is: " << m_csTube); - } - } + m_switches.addPlatesToCell = dbManager->addPlatesToCell(); + setSwitch(m_switches.uShape, dbManager->uShape(), "Ushape"); + setSwitch(m_switches.glue, dbManager->glue(), "Glue"); + setSwitch(m_switches.pvt, dbManager->PVT(), "PVT"); + setSwitch(m_switches.steel, dbManager->steel(), "Steel"); + setSwitch(m_switches.csTube, dbManager->csTube(), "CsTube"); m_not_locked = false; - m_addPlates = dbManager->addPlatesToCell(); GeoPhysVol *world=&*theExpt->getPhysVol(); - if(m_testBeam) + if(m_switches.testBeam) { - TileTBFactory theTileTBFactory(detStore().operator->(),m_manager,m_addPlates,m_uShape,m_glue,m_csTube,&log); + TileTBFactory theTileTBFactory(detStore().operator->(),m_manager,m_switches,&log); theTileTBFactory.create(world); } else if (m_useNewFactory) { - TileAtlasFactory theTileFactory(detStore().operator->(),m_manager,m_addPlates,m_uShape,m_glue,m_csTube,&log,m_geometryConfig=="FULL"); + TileAtlasFactory theTileFactory(detStore().operator->(),m_manager,m_switches,&log,m_geometryConfig=="FULL"); theTileFactory.create(world); } else { - TileDetectorFactory theTileFactory(detStore().operator->(),m_manager,m_addPlates,m_uShape,m_glue,m_csTube,&log); + TileDetectorFactory theTileFactory(detStore().operator->(),m_manager,m_switches,&log); theTileFactory.create(world); } @@ -208,7 +189,7 @@ StatusCode TileDetectorTool::initIds() return StatusCode::FAILURE; } - cabling->setTestBeam(m_testBeam); + cabling->setTestBeam(m_switches.testBeam); return StatusCode::SUCCESS; } diff --git a/TileCalorimeter/TileGeoModel/src/TileGeoSectionBuilder.cxx b/TileCalorimeter/TileGeoModel/src/TileGeoSectionBuilder.cxx index fdd30b649764ff3056590fc6c3e2fe199aa9734f..61249d5982555df18119c5a8dd99b8b7e0241b2a 100755 --- a/TileCalorimeter/TileGeoModel/src/TileGeoSectionBuilder.cxx +++ b/TileCalorimeter/TileGeoModel/src/TileGeoSectionBuilder.cxx @@ -50,16 +50,12 @@ using namespace GeoXF; TileGeoSectionBuilder::TileGeoSectionBuilder(const StoredMaterialManager* matManager, TileDddbManager * pDbManager, - int ushape, - int glue, - int cstube, + const TileSwitches & switches, MsgStream * log) : m_theMaterialManager(matManager) , m_dbManager(pDbManager) , m_log(log) - , m_uShape(ushape) - , m_glue(glue) - , m_csTube(cstube) + , m_switches(switches) , m_barrelPeriodThickness(0.) , m_barrelGlue(0.) , m_extendedPeriodThickness(0.) @@ -92,7 +88,8 @@ void TileGeoSectionBuilder::fillSection(GeoPhysVol*& mother, // Obtain required materials - Air and Iron const GeoMaterial* matAir = m_theMaterialManager->getMaterial("std::Air"); - const GeoMaterial* matIron = m_theMaterialManager->getMaterial("std::Iron"); + const GeoMaterial* matIron = (m_switches.steel) ? m_theMaterialManager->getMaterial("tile::Steel") + : m_theMaterialManager->getMaterial("std::Iron"); const GeoMaterial* matAluminium = 0; // ----------------------------------------------------------------------------------------------------------------- @@ -1399,7 +1396,8 @@ void TileGeoSectionBuilder::fillGirder(GeoPhysVol*& mother, // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // Obtain required materials - Iron, Aluminium and electronic boards - const GeoMaterial* matIron = m_theMaterialManager->getMaterial("std::Iron"); + const GeoMaterial* matIron = (m_switches.steel) ? m_theMaterialManager->getMaterial("tile::Steel") + : m_theMaterialManager->getMaterial("std::Iron"); const GeoMaterial* matAluminium = m_theMaterialManager->getMaterial("std::Aluminium"); const GeoMaterial* matElBoard = m_theMaterialManager->getMaterial("tile::SiO2CondEpox"); @@ -1496,7 +1494,8 @@ void TileGeoSectionBuilder::fillFinger(GeoPhysVol*& mother, // -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- // Obtain required materials - Iron, Aluminium and electronic boards - const GeoMaterial* matIron = m_theMaterialManager->getMaterial("std::Iron"); + const GeoMaterial* matIron = (m_switches.steel) ? m_theMaterialManager->getMaterial("tile::Steel") + : m_theMaterialManager->getMaterial("std::Iron"); const GeoMaterial* matAluminium = m_theMaterialManager->getMaterial("std::Aluminium"); const GeoMaterial* matElBoard = m_theMaterialManager->getMaterial("tile::SiO2CondEpox"); @@ -1876,7 +1875,21 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, // Obtain required materials - Air, Glue, Scintillator const GeoMaterial* matAir = m_theMaterialManager->getMaterial("std::Air"); - const GeoMaterial* matScin = m_theMaterialManager->getMaterial("tile::Scintillator"); + const GeoMaterial* matScin = nullptr; + if (m_switches.pvt) { + if (m_switches.testBeam || // choose PVT for all scintillators in testbeam setup + ( period_type>4 && // choose PVT for crack scintillators (defined starting from RUN3) + (m_dbManager->TILBsection() == 6 || m_dbManager->TILBsection() == 16) ) ) { + // different material for crack scintillators + matScin = m_theMaterialManager->getMaterial("tile::Polyvinyltoluene"); + if (matScin != nullptr) { + (*m_log) << MSG::VERBOSE << "Using Polyvinyltoluene for section = " << m_dbManager->TILBsection() << endmsg; + } else { + (*m_log) << MSG::VERBOSE << "Using Polystyrene for section = " << m_dbManager->TILBsection() << endmsg; + } + } + } + if (matScin == nullptr) matScin = m_theMaterialManager->getMaterial("tile::Scintillator"); //Cs hole parameters double csHoleR = 0.45 * Gaudi::Units::cm; @@ -1887,7 +1900,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, double thicknessMother2 = thickness/2.*Gaudi::Units::cm; double heightMother2 = (m_dbManager->TILBrmax() - m_dbManager->TILBrmin())*Gaudi::Units::cm/2.; - const bool removeGlue = (m_glue == 0 || m_glue == 2); + const bool removeGlue = (m_switches.glue == 0 || m_switches.glue == 2); //Glue layer if (dzglue>0.0 && period_type<4 && !removeGlue) { @@ -1912,7 +1925,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, glue = new GeoTrd(dzglue2,dzglue2,dy1Glue,dy2Glue,heightGlue2); //Cs tubes in mother volume and holes in glue - if (m_csTube) { + if (m_switches.csTube) { for (j = CurrentScin; j < (CurrentScin + m_dbManager->TILBnscin()); j++) { idTag = new GeoIdentifierTag(j-CurrentScin); @@ -2002,11 +2015,11 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, scintiThickness = m_dbManager->SCNTdt(); scintiWrapInZ = m_dbManager->SCNTdtw(); scintiWrapInR = m_dbManager->SCNTdrw(); - scintiDeltaInPhi = (m_uShape > 0) ? 0.0 : m_dbManager->SCNTdphi(); + scintiDeltaInPhi = (m_switches.uShape > 0) ? 0.0 : m_dbManager->SCNTdphi(); thicknessWrapper = (m_dbManager->TILBdzspac() <= (scintiThickness + 2*scintiWrapInZ)) ? (scintiThickness + 2*scintiWrapInZ)*Gaudi::Units::cm: m_dbManager->TILBdzspac()*Gaudi::Units::cm; - if (m_glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); + if (m_switches.glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); // create wrapper heightWrapper = (scintiHeight + 2*scintiWrapInR)*Gaudi::Units::cm; @@ -2024,7 +2037,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, dy2Wrapper, heightWrapper/2); - if (m_csTube) { + if (m_switches.csTube) { wrapper = makeHoles(wrapper, csHoleR, thicknessWrapper/2, scintiHeight/2.*Gaudi::Units::cm - csTubeOffCorr); } lvWrapper = new GeoLogVol("Wrapper",wrapper,matAir); @@ -2045,7 +2058,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, dy2Scintillator, scintiHeight/2*Gaudi::Units::cm); - if (m_csTube) { + if (m_switches.csTube) { scintillator = makeHolesScint(scintillator, csHoleR, scintiThickness/2 * Gaudi::Units::cm, scintiHeight/2.*Gaudi::Units::cm - csTubeOffCorr); } lvScintillator = new GeoLogVol("Scintillator",scintillator,matScin); @@ -2104,11 +2117,11 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, scintiThickness = m_dbManager->SCNTdt(); scintiWrapInZ = m_dbManager->SCNTdtw(); scintiWrapInR = m_dbManager->SCNTdrw(); - scintiDeltaInPhi = (m_uShape > 0) ? 0.0 : m_dbManager->SCNTdphi(); + scintiDeltaInPhi = (m_switches.uShape > 0) ? 0.0 : m_dbManager->SCNTdphi(); thicknessWrapper = (m_dbManager->TILBdzspac() <= (scintiThickness + 2*scintiWrapInZ)) ? (scintiThickness + 2*scintiWrapInZ)*Gaudi::Units::cm: m_dbManager->TILBdzspac()*Gaudi::Units::cm; - if (m_glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); + if (m_switches.glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); // create wrapper heightWrapper = (scintiHeight + 2*scintiWrapInR)*Gaudi::Units::cm; @@ -2126,7 +2139,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, dy2Wrapper, heightWrapper/2); - if (m_csTube) { + if (m_switches.csTube) { wrapper = makeHoles(wrapper, csHoleR, thicknessWrapper/2, scintiHeight/2.*Gaudi::Units::cm - csTubeOffCorr); } lvWrapper = new GeoLogVol("Wrapper",wrapper,matAir); @@ -2147,7 +2160,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, dy2Scintillator, scintiHeight/2*Gaudi::Units::cm); - if (m_csTube) { + if (m_switches.csTube) { scintillator = makeHolesScint(scintillator, csHoleR, scintiThickness/2 * Gaudi::Units::cm, scintiHeight/2.*Gaudi::Units::cm - csTubeOffCorr); } lvScintillator = new GeoLogVol("Scintillator",scintillator,matScin); @@ -2218,11 +2231,11 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, scintiThickness = m_dbManager->SCNTdt(); scintiWrapInZ = m_dbManager->SCNTdtw(); scintiWrapInR = m_dbManager->SCNTdrw(); - scintiDeltaInPhi = (m_uShape > 0) ? 0. : m_dbManager->SCNTdphi(); + scintiDeltaInPhi = (m_switches.uShape > 0) ? 0. : m_dbManager->SCNTdphi(); thicknessWrapper = (m_dbManager->TILBdzspac() <= (scintiThickness + 2*scintiWrapInZ)) ? (scintiThickness + 2*scintiWrapInZ)*Gaudi::Units::cm: m_dbManager->TILBdzspac()*Gaudi::Units::cm; - if (m_glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); + if (m_switches.glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); // create wrapper heightWrapper = (scintiHeight + 2*scintiWrapInR)*Gaudi::Units::cm; @@ -2241,7 +2254,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, dy2Wrapper, heightWrapper/2); - if (m_csTube) { + if (m_switches.csTube) { wrapper = makeHoles(wrapper, csHoleR, thicknessWrapper/2, scintiHeight/2.*Gaudi::Units::cm - csTubeOffCorr); } lvWrapper = new GeoLogVol("Wrapper",wrapper,matAir); @@ -2262,7 +2275,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, dy2Scintillator, scintiHeight/2*Gaudi::Units::cm); - if (m_csTube) { + if (m_switches.csTube) { scintillator = makeHolesScint(scintillator, csHoleR, scintiThickness/2 * Gaudi::Units::cm, scintiHeight/2.*Gaudi::Units::cm - csTubeOffCorr); } lvScintillator = new GeoLogVol("Scintillator",scintillator,matScin); @@ -2304,11 +2317,11 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, scintiThickness = m_dbManager->SCNTdt(); scintiWrapInZ = m_dbManager->SCNTdtw(); scintiWrapInR = m_dbManager->SCNTdrw(); - scintiDeltaInPhi = (m_uShape > 0) ? 0.0 : m_dbManager->SCNTdphi(); + scintiDeltaInPhi = (m_switches.uShape > 0) ? 0.0 : m_dbManager->SCNTdphi(); thicknessWrapper = (m_dbManager->TILBdzspac() <= (scintiThickness + 2*scintiWrapInZ)) ? (scintiThickness + 2*scintiWrapInZ)*Gaudi::Units::cm: m_dbManager->TILBdzspac()*Gaudi::Units::cm; - if (m_glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); + if (m_switches.glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); if(scintiZPos<0) { @@ -2329,7 +2342,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, dy2Wrapper, heightWrapper/2); - if (m_csTube) { + if (m_switches.csTube) { wrapper = makeHoles(wrapper, csHoleR, thicknessWrapper/2, scintiHeight/2.*Gaudi::Units::cm - csTubeOffCorr); } lvWrapper = new GeoLogVol("Wrapper",wrapper,matAir); @@ -2350,7 +2363,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, dy2Scintillator, scintiHeight/2*Gaudi::Units::cm); - if (m_csTube) { + if (m_switches.csTube) { scintillator = makeHolesScint(scintillator, csHoleR, scintiThickness/2 * Gaudi::Units::cm, scintiHeight/2.*Gaudi::Units::cm - csTubeOffCorr); } lvScintillator = new GeoLogVol("Scintillator",scintillator,matScin); @@ -2405,7 +2418,7 @@ void TileGeoSectionBuilder::fillPeriod(GeoPhysVol*& mother, // create wrapper heightWrapper = (scintiHeight + 2*scintiWrapInR)*Gaudi::Units::cm; thicknessWrapper = (scintiThickness + 2*scintiWrapInZ)*Gaudi::Units::cm; - if (m_glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); + if (m_switches.glue == 2) thicknessWrapper = std::max(thicknessWrapper - m_additionalIronLayer, scintiThickness); double thicknessEnvelope = (m_dbManager->TILBdzmodul()*Gaudi::Units::cm - thicknessWrapper); // along phi thickness is twice bigger than along Z dy1Wrapper = dy1Period - thicknessEnvelope + ((scintiRC - scintiHeight/2. - scintiWrapInR)*tanphi)*Gaudi::Units::cm; diff --git a/TileCalorimeter/TileGeoModel/src/TileGeoSectionBuilder.h b/TileCalorimeter/TileGeoModel/src/TileGeoSectionBuilder.h index 0b3f82bae3d80462446550b072a252c97df7a05f..8a44f54475e325bb5e4316b9b942106352a6ea4f 100755 --- a/TileCalorimeter/TileGeoModel/src/TileGeoSectionBuilder.h +++ b/TileCalorimeter/TileGeoModel/src/TileGeoSectionBuilder.h @@ -15,6 +15,7 @@ #include "StoreGate/StoreGateSvc.h" #include "GeoModelInterfaces/StoredMaterialManager.h" +#include "TileGeoModel/TileSwitches.h" // Definition for regions #define TILE_REGION_CENTRAL 1 @@ -37,9 +38,7 @@ class TileGeoSectionBuilder /** Constructor */ TileGeoSectionBuilder(const StoredMaterialManager* matManager, TileDddbManager* pDbManager, - int uShape, - int glue, - int csTube, + const TileSwitches & switches, MsgStream * log); /** Destructor */ @@ -188,9 +187,7 @@ class TileGeoSectionBuilder TileDddbManager * m_dbManager; MsgStream * m_log; - int m_uShape; - int m_glue; - int m_csTube; + TileSwitches m_switches; double m_barrelPeriodThickness; double m_barrelGlue; double m_extendedPeriodThickness; diff --git a/TileCalorimeter/TileGeoModel/src/TileTBFactory.cxx b/TileCalorimeter/TileGeoModel/src/TileTBFactory.cxx index 99656aa2021975c52e7a25762f0e3f560a870bdc..466401b3584e50b6dab57555efc851a478c6539e 100755 --- a/TileCalorimeter/TileGeoModel/src/TileTBFactory.cxx +++ b/TileCalorimeter/TileGeoModel/src/TileTBFactory.cxx @@ -45,21 +45,15 @@ using namespace GeoXF; // Constructor: TileTBFactory::TileTBFactory(StoreGateSvc *pDetStore, TileDetDescrManager *manager, - bool addPlates, - int ushape, - int glue, - int cstube, + const TileSwitches & switches, MsgStream *log) : m_detectorStore(pDetStore) , m_detectorManager(manager) , m_log(log) - , m_addPlatesToCellVolume(addPlates) - , m_uShape(ushape) - , m_glue(glue) - , m_csTube(cstube) - , m_testbeamGeometry(true) + , m_switches(switches) , m_verbose(log->level()<=MSG::VERBOSE) { + m_switches.testBeam = true; } // Destructor: @@ -83,7 +77,7 @@ void TileTBFactory::create(GeoPhysVol *world) // -------- -------- SECTION BUILDER -------- ---------- TileDddbManager* dbManager = m_detectorManager->getDbManager(); - TileGeoSectionBuilder* sectionBuilder = new TileGeoSectionBuilder(theMaterialManager,dbManager,m_uShape,m_glue,m_csTube,m_log); + TileGeoSectionBuilder* sectionBuilder = new TileGeoSectionBuilder(theMaterialManager,dbManager,m_switches,m_log); //Tile envelope thickness, Extended & ITC offset //and Central module center Z coordinate @@ -452,7 +446,7 @@ void TileTBFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry, + m_switches.testBeam, ModuleNcp, thicknessWedgeMother*(1./Gaudi::Units::cm)); @@ -538,7 +532,7 @@ void TileTBFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry); + m_switches.testBeam); // --- Position N modules inside mother (positive/negative) ----- @@ -616,7 +610,7 @@ void TileTBFactory::create(GeoPhysVol *world) dbManager->TILErmax(), dbManager->TILBrmax(), deltaPhi, - m_testbeamGeometry); + m_switches.testBeam); TRANSFUNCTION xfEFingerModuleMotherNeg = Pow(GeoTrf::RotateZ3D(1.0),phiInd)*GeoTrf::TranslateX3D((dbManager->TILErmax()+dbManager->TILBrmax())/2.*Gaudi::Units::cm)*GeoTrf::RotateY3D(90*Gaudi::Units::deg); @@ -1056,7 +1050,7 @@ void TileTBFactory::create(GeoPhysVol *world) if (ii%2 == 0) { sectionBuilder->computeCellDim(m_detectorManager, dete[ii], - m_addPlatesToCellVolume, + m_switches.addPlatesToCell, zShiftInSection[ii+1], // zShiftPos zShiftInSection[ii]); // zShiftNeg } @@ -1065,8 +1059,8 @@ void TileTBFactory::create(GeoPhysVol *world) sectionBuilder->fillDescriptor(descriptor, dete[ii], side[ii], - m_testbeamGeometry, // TB - m_addPlatesToCellVolume, // add front/end plates to cell volume + m_switches.testBeam, // TB + m_switches.addPlatesToCell, // add front/end plates to cell volume nModulesInSection[ii], // 0-3 modules zShiftInSection[ii]); // Z-shift diff --git a/TileCalorimeter/TileGeoModel/src/TileTBFactory.h b/TileCalorimeter/TileGeoModel/src/TileTBFactory.h index 8b3cacc2d87a77e1e7490c7778c166c1770462c4..3d8ec84eeb54f7b3ee03f61fb7dc40112f09bb4e 100755 --- a/TileCalorimeter/TileGeoModel/src/TileTBFactory.h +++ b/TileCalorimeter/TileGeoModel/src/TileTBFactory.h @@ -17,6 +17,7 @@ #include "GeoModelKernel/GeoVDetectorFactory.h" #include "TileDetDescr/TileDetDescrManager.h" +#include "TileGeoModel/TileSwitches.h" class MsgStream; class StoreGateSvc; @@ -28,7 +29,7 @@ public: /** Constructor */ TileTBFactory(StoreGateSvc *pDetStore, TileDetDescrManager *manager, - bool addPlates, int uShape, int glue, int cstube, MsgStream *log); + const TileSwitches & switches, MsgStream *log); /** Destructor */ ~TileTBFactory(); @@ -50,20 +51,8 @@ private: /** Get message SVC */ MsgStream *m_log; - /** Add plates to cell volume */ - bool m_addPlatesToCellVolume; - - /** U-shape version used */ - int m_uShape; - - /** 0: glue layer is removed and replaced by iron, - 1: simulation with glue, - 2: glue is replaced by iron + width of iron is modified in order to get the same sampling fraction */ - int m_glue; - - int m_csTube; - /** Flag for using test beam geometry */ - bool m_testbeamGeometry; + /** all switches */ + TileSwitches m_switches; /** Flag for activation verbose level for debugging */ bool m_verbose; diff --git a/TileCalorimeter/TileRecUtils/share/TileCellBuilderFromHit_test.ref b/TileCalorimeter/TileRecUtils/share/TileCellBuilderFromHit_test.ref index 3db7669248fb4193046965c9307484498fe702d1..a2b41d707d74ff53274559c305515078ad844fe7 100644 --- a/TileCalorimeter/TileRecUtils/share/TileCellBuilderFromHit_test.ref +++ b/TileCalorimeter/TileRecUtils/share/TileCellBuilderFromHit_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:47:00 CEST 2021 +Mon Sep 6 17:19:53 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileRecUtils/TileCellBuilderFromHit_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:47:13 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:19:58 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -186,7 +186,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -198,9 +198,9 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. @@ -330,7 +330,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -344,12 +344,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -383,8 +383,8 @@ TileBadChannels... INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; N TileBadChannels... INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; TileBadChannels... INFO TileBchStatus::isWrongBCID() is defined by: Wrong BCID; Online wrong BCID; TileBadChannels... INFO No drawer trips probabilities found in DB -tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct1Cond.tilecellbuilder_bct1_onl) for ASCII file name: "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" -tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct1Cond.tilecellbuilder_bct1_ofl) for ASCII file name: "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" +tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct1Cond.tilecellbuilder_bct1_onl) for ASCII file name: "/home/solodkov/git/r22.0.tile/build/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" +tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct1Cond.tilecellbuilder_bct1_ofl) for ASCII file name: "/home/solodkov/git/r22.0.tile/build/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" tilecellbuilder... INFO No TileBchStatus::isBad() definition found in DB, using defaults tilecellbuilder... INFO No TileBchStatus::isNoisy() definition found in DB, using defaults tilecellbuilder... INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults @@ -396,8 +396,8 @@ tilecellbuilder... INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; N tilecellbuilder... INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; tilecellbuilder... INFO TileBchStatus::isWrongBCID() is defined by: Wrong BCID; Online wrong BCID; tilecellbuilder... INFO No drawer trips probabilities found in DB -tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct2Cond.tilecellbuilder_bct2_onl) for ASCII file name: "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" -tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct2Cond.tilecellbuilder_bct2_ofl) for ASCII file name: "/build1/tsulaia/athena-devel/build/TileCalorimeter/TileRecUtils/CMakeFiles/unitTestRun/tilecellbuilder_bct2.bch" +tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct2Cond.tilecellbuilder_bct2_onl) for ASCII file name: "/home/solodkov/git/r22.0.tile/build/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" +tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct2Cond.tilecellbuilder_bct2_ofl) for ASCII file name: "/home/solodkov/git/r22.0.tile/build/TileCalorimeter/TileRecUtils/CMakeFiles/unitTestRun/tilecellbuilder_bct2.bch" tilecellbuilder... INFO No TileBchStatus::isBad() definition found in DB, using defaults tilecellbuilder... INFO No TileBchStatus::isNoisy() definition found in DB, using defaults tilecellbuilder... INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults @@ -432,23 +432,23 @@ testalg1 INFO Finalizing testalg1... AtRndmGenSvc INFO FINALISING PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.03 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s -IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.04 ))s -IOVDbSvc INFO bytes in (( 0.35 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s +IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.02 ))s +IOVDbSvc INFO bytes in (( 0.21 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.07 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.28 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.04 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.17 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.tool3 INFO Finalizing @@ -457,9 +457,9 @@ ToolSvc.tool1 INFO Finalizing *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 130 [ms] Ave/Min/Max= 32.5(+- 56.3)/ 0/ 130 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 180 [ms] Ave/Min/Max= 12(+- 37.6)/ 0/ 150 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 45.1 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 80 [ms] Ave/Min/Max= 20(+- 34.6)/ 0/ 80 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 100 [ms] Ave/Min/Max= 6.67(+- 22.4)/ 0/ 90 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 24.6 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileRecUtils/share/TileCellBuilder_test.ref b/TileCalorimeter/TileRecUtils/share/TileCellBuilder_test.ref index 54d6e3def42f145ce8c67ffa9c001b8e10568218..9accbe378ff3623db69feb04be23fb6eccb26422 100644 --- a/TileCalorimeter/TileRecUtils/share/TileCellBuilder_test.ref +++ b/TileCalorimeter/TileRecUtils/share/TileCellBuilder_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:45:54 CEST 2021 +Mon Sep 6 17:19:19 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileRecUtils/TileCellBuilder_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:46:07 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:19:25 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -186,7 +186,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -198,9 +198,9 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. @@ -358,7 +358,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -372,12 +372,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -411,8 +411,8 @@ TileBadChannels... INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; N TileBadChannels... INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; TileBadChannels... INFO TileBchStatus::isWrongBCID() is defined by: Wrong BCID; Online wrong BCID; TileBadChannels... INFO No drawer trips probabilities found in DB -tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct1Cond.tilecellbuilder_bct1_onl) for ASCII file name: "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" -tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct1Cond.tilecellbuilder_bct1_ofl) for ASCII file name: "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" +tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct1Cond.tilecellbuilder_bct1_onl) for ASCII file name: "/home/solodkov/git/r22.0.tile/build/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" +tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct1Cond.tilecellbuilder_bct1_ofl) for ASCII file name: "/home/solodkov/git/r22.0.tile/build/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" tilecellbuilder... INFO No TileBchStatus::isBad() definition found in DB, using defaults tilecellbuilder... INFO No TileBchStatus::isNoisy() definition found in DB, using defaults tilecellbuilder... INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults @@ -424,8 +424,8 @@ tilecellbuilder... INFO TileBchStatus::isNoGainL1() is defined by: ADC dead; N tilecellbuilder... INFO TileBchStatus::isBadTiming() is defined by: Bad timing; Online bad timing; tilecellbuilder... INFO TileBchStatus::isWrongBCID() is defined by: Wrong BCID; Online wrong BCID; tilecellbuilder... INFO No drawer trips probabilities found in DB -tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct2Cond.tilecellbuilder_bct2_onl) for ASCII file name: "/cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" -tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct2Cond.tilecellbuilder_bct2_ofl) for ASCII file name: "/build1/tsulaia/athena-devel/build/TileCalorimeter/TileRecUtils/CMakeFiles/unitTestRun/tilecellbuilder_bct2.bch" +tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct2Cond.tilecellbuilder_bct2_onl) for ASCII file name: "/home/solodkov/git/r22.0.tile/build/x86_64-centos7-gcc8-opt/share/TileNoBad.oflBch" +tilecellbuilder... INFO Creating TileCondProxyFile(tilecellbuilder_bct2Cond.tilecellbuilder_bct2_ofl) for ASCII file name: "/home/solodkov/git/r22.0.tile/build/TileCalorimeter/TileRecUtils/CMakeFiles/unitTestRun/tilecellbuilder_bct2.bch" tilecellbuilder... INFO No TileBchStatus::isBad() definition found in DB, using defaults tilecellbuilder... INFO No TileBchStatus::isNoisy() definition found in DB, using defaults tilecellbuilder... INFO No TileBchStatus::isNoGainL1() definition found in DB, using defaults @@ -476,23 +476,23 @@ prepalg1 INFO Finalizing prepalg1... testalg1 INFO Finalizing testalg1... PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.05 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.30 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.06 ))s -IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.05 ))s -IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s -IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.03 ))s -IOVDbSvc INFO bytes in (( 0.71 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s +IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.02 ))s +IOVDbSvc INFO bytes in (( 0.25 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.07 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.63 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.04 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.21 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.tool11 INFO Finalizing @@ -507,9 +507,9 @@ ToolSvc.tool1 INFO Finalizing *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 140 [ms] Ave/Min/Max= 35(+- 60.6)/ 0/ 140 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 190 [ms] Ave/Min/Max= 12.7(+- 40.1)/ 0/ 160 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 45.3 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 100 [ms] Ave/Min/Max= 25(+- 37.7)/ 0/ 90 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 120 [ms] Ave/Min/Max= 8(+- 24.8)/ 0/ 100 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 25.2 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref index 11e6e99193ad3c9afa878d6a48fe2d3c94dbce4f..05579ed785f82aa75f0c7f6c78f2e2c3cbbca69e 100644 --- a/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref +++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusAlg_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:49:10 CEST 2021 +Mon Sep 6 17:20:58 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileRecUtils/TileDQstatusAlg_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:49:24 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:21:04 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -183,7 +183,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.66S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.32S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -194,7 +194,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -206,16 +206,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -243,7 +245,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.16S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.09S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -339,7 +341,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -353,12 +355,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -410,31 +412,31 @@ record1 INFO Finalizing record1... check1 INFO Finalizing check1... PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.06 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.04 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.25 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s -IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.04 ))s -IOVDbSvc INFO bytes in (( 0.65 ))s +IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.03 ))s +IOVDbSvc INFO bytes in (( 0.35 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.07 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.58 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.05 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.30 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 140 [ms] Ave/Min/Max= 35(+- 55)/ 0/ 130 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 180 [ms] Ave/Min/Max= 12(+- 37.6)/ 0/ 150 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 43.2 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 80 [ms] Ave/Min/Max= 20(+- 34.6)/ 0/ 80 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 110 [ms] Ave/Min/Max= 7.33(+- 24.9)/ 0/ 100 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 23.6 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref index 8e71f6e826351e818d7c924fd3da2333579cd014..338ec1dded62e71a86f795f3494f23906f3d8b95 100644 --- a/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref +++ b/TileCalorimeter/TileRecUtils/share/TileDQstatusTool_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:50:13 CEST 2021 +Mon Sep 6 17:21:30 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileRecUtils/TileDQstatusTool_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:50:28 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:21:36 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -183,7 +183,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.61S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.35S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -194,7 +194,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -206,16 +206,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -243,7 +245,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.2S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.09S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -307,7 +309,7 @@ TileSampleNoise... INFO Creating TileCondProxyCool(TileSampleNoiseCondAlg.Tile TileTimingCondA... INFO Creating TileCondProxyCool(TileTimingCondAlg.TileCondProxyCool_AdcOffset) for folder: "/TILE/OFL02/TIME/CHANNELOFFSET/PHY" PyComponentMgr INFO Initializing PyComponentMgr... test1 INFO Initializing test1... -ClassIDSvc INFO getRegistryEntries: read 8169 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 8172 CLIDRegistry entries for module ALL ApplicationMgr INFO Application Manager Initialized successfully ClassIDSvc INFO getRegistryEntries: read 270 CLIDRegistry entries for module ALL CondInputLoader INFO created CondCont<CaloRec::CaloCellPositionShift> with key 'ConditionStore+LArCellPositionShift' @@ -338,7 +340,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -352,12 +354,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -415,30 +417,30 @@ test1 INFO Finalizing test1... PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.23 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.45 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.03 ))s -IOVDbSvc INFO bytes in (( 1.01 ))s +IOVDbSvc INFO bytes in (( 0.22 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.07 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.94 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.06 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.16 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 150 [ms] Ave/Min/Max= 37.5(+- 59.3)/ 0/ 140 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 190 [ms] Ave/Min/Max= 12.7(+- 40.1)/ 0/ 160 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 46.2 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 80 [ms] Ave/Min/Max= 20(+- 34.6)/ 0/ 80 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 100 [ms] Ave/Min/Max= 6.67(+- 22.4)/ 0/ 90 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 24.7 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileRecUtils/share/TileRawChannelBuilder_test.ref b/TileCalorimeter/TileRecUtils/share/TileRawChannelBuilder_test.ref index 9de13cb7255cb9032fa9136d781bdc25d35443d1..e30c1ccfacc9559bb980e044517ffb8715c197d5 100644 --- a/TileCalorimeter/TileRecUtils/share/TileRawChannelBuilder_test.ref +++ b/TileCalorimeter/TileRecUtils/share/TileRawChannelBuilder_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:48:04 CEST 2021 +Mon Sep 6 17:20:26 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileRecUtils/TileRawChannelBuilder_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:48:19 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:20:32 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -183,7 +183,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.55S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.32S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -194,7 +194,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -206,16 +206,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -243,7 +245,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.19S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.1S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -314,7 +316,7 @@ PyComponentMgr INFO Initializing PyComponentMgr... prepalg1 INFO Initializing prepalg1... ClassIDSvc INFO getRegistryEntries: read 108 CLIDRegistry entries for module ALL testalg1 INFO Initializing testalg1... -ClassIDSvc INFO getRegistryEntries: read 3106 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 3109 CLIDRegistry entries for module ALL ToolSvc.tool1 INFO TileRawChannelBuilder::initialize() ToolSvc.tool2 INFO TileRawChannelBuilder::initialize() ToolSvc.tool2.n... INFO Initializing... @@ -347,7 +349,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000057.gen.COND/cond09_mc.000057.gen.COND._0001.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -361,12 +363,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -421,23 +423,23 @@ prepalg1 INFO Finalizing prepalg1... testalg1 INFO Finalizing testalg1... PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.51 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.06 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.05 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.05 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.02 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641476 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/97884 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.01 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s -IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.04 ))s -IOVDbSvc INFO bytes in (( 0.96 ))s +IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.02 ))s +IOVDbSvc INFO bytes in (( 0.22 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.55 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.40 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.04 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.18 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.tool2 INFO Finalizing @@ -445,9 +447,9 @@ ToolSvc.tool1 INFO Finalizing *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 160 [ms] Ave/Min/Max= 40(+- 63.6)/ 0/ 150 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 200 [ms] Ave/Min/Max= 13.3(+- 42.5)/ 0/ 170 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 43.7 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 70 [ms] Ave/Min/Max= 17.5(+- 30.3)/ 0/ 70 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 100 [ms] Ave/Min/Max= 6.67(+- 20.2)/ 0/ 80 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 23.9 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileBeamElemContByteStreamCnv_test.ref b/TileCalorimeter/TileSvc/TileByteStream/share/TileBeamElemContByteStreamCnv_test.ref index 603063ff6d23ec0b2006307ee2b91581d9b9b176..24bf6d05e2532339ac495a28dbc0bd56a74cf8a2 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/share/TileBeamElemContByteStreamCnv_test.ref +++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileBeamElemContByteStreamCnv_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:54:51 CEST 2021 +Mon Sep 6 17:23:44 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileBeamElemContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:55:05 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:23:49 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -189,7 +189,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.68S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.35S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -200,7 +200,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -212,16 +212,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -249,7 +251,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.2S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.1S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -356,7 +358,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -370,12 +372,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -624,22 +626,22 @@ Finalize: compared 10 dumps PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.22 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.01 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641504 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641504 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/93060 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.03 ))s -IOVDbSvc INFO bytes in (( 0.53 ))s +IOVDbSvc INFO bytes in (( 0.24 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.06 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.47 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.18 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.TileROD... INFO Finalizing @@ -647,18 +649,18 @@ ToolSvc.ByteStr... INFO in finalize() *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 140 [ms] Ave/Min/Max= 35(+- 55)/ 0/ 130 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 180 [ms] Ave/Min/Max= 12(+- 37.6)/ 0/ 150 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 8.4 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 90 [ms] Ave/Min/Max= 22.5(+- 33.4)/ 0/ 80 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 120 [ms] Ave/Min/Max= 8(+- 25.1)/ 0/ 100 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 5.46 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully ApplicationMgr INFO Application Manager Terminated successfully Py:Athena INFO leaving with code 0: "successful run" -Sat Aug 21 21:55:18 CEST 2021 +Mon Sep 6 17:23:57 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO configuring AthenaHive with [4] concurrent threads and [4] concurrent events @@ -667,9 +669,9 @@ Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileBeamElemContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -688,7 +690,7 @@ MessageSvc INFO Activating in a separate thread ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:55:31 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:24:03 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -700,8 +702,8 @@ PoolSvc INFO io_regist PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -849,7 +851,7 @@ EMECConstruction INFO multi-lay EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstruction INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.64S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.31S GeoModelSvc.TileDetectorTool INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -860,7 +862,7 @@ TileDddbManager INFO n_tilb = TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDescrCnv INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -872,16 +874,18 @@ CaloIDHelper_IDDetDescrCnv INFO in create AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.TileDetectorTool INFO U-shape parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Cs Tube parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Ushape parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO PVT parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Steel parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO CsTube parameter from database is: 0 GeoModelSvc.TileDetectorTool INFO Entering TileAtlasFactory::create() GeoModelSvc.TileDetectorTool INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.TileDetectorTool INFO => New BFingerLengthPos 430.5 @@ -909,7 +913,7 @@ GeoModelSvc.TileDetectorTool INFO Global p GeoModelSvc.TileDetectorTool INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.TileDetectorTool INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrManager INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.19S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.1S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -1033,7 +1037,7 @@ Domain[ROOT_All] 0 0 INFO RootDatabase.open 0 0 INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv 0 0 INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDescrCnv 0 0 INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc 0 0 INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc 0 0 INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID 0 0 INFO initialize_from_dictionary AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK @@ -1047,12 +1051,12 @@ CaloIDHelper_IDDetDescrCnv 0 0 INFO in create AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIdMgrDetDescrCnv 0 0 INFO Finished CaloIdMgrDetDescrCnv 0 0 INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -1268,7 +1272,7 @@ AthenaHiveEventLoopMgr 99 1 INFO ===>>> AthenaHiveEventLoopMgr 97 2 INFO ===>>> done processing event #1148893, run #204073 on slot 2, 98 events processed so far <<<=== AthenaHiveEventLoopMgr 98 0 INFO ===>>> done processing event #1156938, run #204073 on slot 0, 99 events processed so far <<<=== AthenaHiveEventLoopMgr 99 1 INFO ===>>> done processing event #1156351, run #204073 on slot 1, 100 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 1 INFO ---> Loop Finished (seconds): 5.15436 +AthenaHiveEventLoopMgr 99 1 INFO ---> Loop Finished (seconds): 3.74352 Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] ApplicationMgr INFO Application Manager Stopped successfully SGInputLoader INFO Finalizing SGInputLoader... @@ -1279,7 +1283,7 @@ AvalancheSchedulerSvc INFO Joining S PyComponentMgr INFO Finalizing PyComponentMgr... EventDataSvc INFO Finalizing EventDataSvc IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.03 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s @@ -1292,9 +1296,9 @@ IOVDbFolder INFO Folder /T IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 0.01 ))s -IOVDbSvc INFO bytes in (( 0.04 ))s +IOVDbSvc INFO bytes in (( 0.03 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.04 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.03 ))s IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 1 nFolders: 11 ReadTime: (( 0.00 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc @@ -1304,9 +1308,9 @@ ToolSvc.ByteStreamMetadataTool INFO in finali *****Chrono***** INFO WARNING: MT job; statistics are unreliable *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 160 [ms] Ave/Min/Max= 80(+- 70)/ 10/ 150 [ms] #= 2 -cObj_ALL INFO Time User : Tot= 200 [ms] Ave/Min/Max= 100(+- 70)/ 30/ 170 [ms] #= 2 -ChronoStatSvc INFO Time User : Tot= 8.57 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 70 [ms] Ave/Min/Max= 35(+- 35)/ 0/ 70 [ms] #= 2 +cObj_ALL INFO Time User : Tot= 90 [ms] Ave/Min/Max= 45(+- 35)/ 10/ 80 [ms] #= 2 +ChronoStatSvc INFO Time User : Tot= 5.54 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.finalize() INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileDigitsContByteStreamCnv_test.ref b/TileCalorimeter/TileSvc/TileByteStream/share/TileDigitsContByteStreamCnv_test.ref index 6a2ee9478696b8a6d89c4889debf37c41acd9713..ff3f4d4abe8fc4ff48b837b244eb812f6682dc90 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/share/TileDigitsContByteStreamCnv_test.ref +++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileDigitsContByteStreamCnv_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:52:43 CEST 2021 +Mon Sep 6 17:22:39 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileDigitsContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:52:57 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:22:44 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -189,7 +189,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.69S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.4S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -200,7 +200,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -212,16 +212,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -249,7 +251,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.15S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.1S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -356,7 +358,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -370,12 +372,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -625,22 +627,22 @@ Finalize: compared 20 dumps PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.05 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.24 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641504 (( 0.06 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/93060 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641504 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/93060 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.05 ))s -IOVDbSvc INFO bytes in (( 0.66 ))s +IOVDbSvc INFO bytes in (( 0.39 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.08 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.59 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.30 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.TileDig... INFO Finalizing TileDigitsContByteStreamTool successfuly @@ -649,18 +651,18 @@ ToolSvc.ByteStr... INFO in finalize() *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 150 [ms] Ave/Min/Max= 37.5(+- 65)/ 0/ 150 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 210 [ms] Ave/Min/Max= 14(+- 42.9)/ 0/ 170 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 11.4 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 110 [ms] Ave/Min/Max= 27.5(+- 36.3)/ 0/ 90 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 130 [ms] Ave/Min/Max= 8.67(+- 25)/ 0/ 100 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 6.9 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully ApplicationMgr INFO Application Manager Terminated successfully Py:Athena INFO leaving with code 0: "successful run" -Sat Aug 21 21:53:19 CEST 2021 +Mon Sep 6 17:22:54 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO configuring AthenaHive with [4] concurrent threads and [4] concurrent events @@ -669,9 +671,9 @@ Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileDigitsContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -690,7 +692,7 @@ MessageSvc INFO Activating in a separate thread ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:53:31 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:23:00 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -702,8 +704,8 @@ PoolSvc INFO io_regist PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -851,7 +853,7 @@ EMECConstruction INFO multi-lay EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstruction INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.68S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.35S GeoModelSvc.TileDetectorTool INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -862,7 +864,7 @@ TileDddbManager INFO n_tilb = TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDescrCnv INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -874,16 +876,18 @@ CaloIDHelper_IDDetDescrCnv INFO in create AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.TileDetectorTool INFO U-shape parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Cs Tube parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Ushape parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO PVT parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Steel parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO CsTube parameter from database is: 0 GeoModelSvc.TileDetectorTool INFO Entering TileAtlasFactory::create() GeoModelSvc.TileDetectorTool INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.TileDetectorTool INFO => New BFingerLengthPos 430.5 @@ -911,7 +915,7 @@ GeoModelSvc.TileDetectorTool INFO Global p GeoModelSvc.TileDetectorTool INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.TileDetectorTool INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrManager INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.2S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.09S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -1037,7 +1041,7 @@ Domain[ROOT_All] 0 0 INFO RootDatabase.open 0 0 INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv 0 0 INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDescrCnv 0 0 INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc 0 0 INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc 0 0 INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID 0 0 INFO initialize_from_dictionary AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK @@ -1051,12 +1055,12 @@ CaloIDHelper_IDDetDescrCnv 0 0 INFO in create AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIdMgrDetDescrCnv 0 0 INFO Finished CaloIdMgrDetDescrCnv 0 0 INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -1123,157 +1127,157 @@ AthenaHiveEventLoopMgr 24 1 INFO ===>>> AthenaHiveEventLoopMgr 25 2 INFO ===>>> start processing event #1141272, run #204073 on slot 2, 22 events processed so far <<<=== AthenaHiveEventLoopMgr 22 3 INFO ===>>> done processing event #1140193, run #204073 on slot 3, 23 events processed so far <<<=== AthenaHiveEventLoopMgr 23 0 INFO ===>>> done processing event #1142953, run #204073 on slot 0, 24 events processed so far <<<=== -AthenaHiveEventLoopMgr 26 0 INFO ===>>> start processing event #1137117, run #204073 on slot 0, 24 events processed so far <<<=== -AthenaHiveEventLoopMgr 27 3 INFO ===>>> start processing event #1139599, run #204073 on slot 3, 24 events processed so far <<<=== AthenaHiveEventLoopMgr 24 1 INFO ===>>> done processing event #1139127, run #204073 on slot 1, 25 events processed so far <<<=== +AthenaHiveEventLoopMgr 26 0 INFO ===>>> start processing event #1137117, run #204073 on slot 0, 25 events processed so far <<<=== +AthenaHiveEventLoopMgr 27 1 INFO ===>>> start processing event #1139599, run #204073 on slot 1, 25 events processed so far <<<=== +AthenaHiveEventLoopMgr 28 3 INFO ===>>> start processing event #1140314, run #204073 on slot 3, 25 events processed so far <<<=== AthenaHiveEventLoopMgr 25 2 INFO ===>>> done processing event #1141272, run #204073 on slot 2, 26 events processed so far <<<=== -AthenaHiveEventLoopMgr 28 1 INFO ===>>> start processing event #1140314, run #204073 on slot 1, 26 events processed so far <<<=== -AthenaHiveEventLoopMgr 29 2 INFO ===>>> start processing event #1133685, run #204073 on slot 2, 26 events processed so far <<<=== AthenaHiveEventLoopMgr 26 0 INFO ===>>> done processing event #1137117, run #204073 on slot 0, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 27 3 INFO ===>>> done processing event #1139599, run #204073 on slot 3, 28 events processed so far <<<=== -AthenaHiveEventLoopMgr 28 1 INFO ===>>> done processing event #1140314, run #204073 on slot 1, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 30 0 INFO ===>>> start processing event #1143279, run #204073 on slot 0, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 31 1 INFO ===>>> start processing event #1137563, run #204073 on slot 1, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 32 3 INFO ===>>> start processing event #1139927, run #204073 on slot 3, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 29 2 INFO ===>>> done processing event #1133685, run #204073 on slot 2, 30 events processed so far <<<=== -AthenaHiveEventLoopMgr 30 0 INFO ===>>> done processing event #1143279, run #204073 on slot 0, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 31 1 INFO ===>>> done processing event #1137563, run #204073 on slot 1, 32 events processed so far <<<=== -AthenaHiveEventLoopMgr 33 0 INFO ===>>> start processing event #1141197, run #204073 on slot 0, 32 events processed so far <<<=== -AthenaHiveEventLoopMgr 34 1 INFO ===>>> start processing event #1140039, run #204073 on slot 1, 32 events processed so far <<<=== -AthenaHiveEventLoopMgr 35 2 INFO ===>>> start processing event #1142531, run #204073 on slot 2, 32 events processed so far <<<=== -AthenaHiveEventLoopMgr 32 3 INFO ===>>> done processing event #1139927, run #204073 on slot 3, 33 events processed so far <<<=== -AthenaHiveEventLoopMgr 33 0 INFO ===>>> done processing event #1141197, run #204073 on slot 0, 34 events processed so far <<<=== -AthenaHiveEventLoopMgr 34 1 INFO ===>>> done processing event #1140039, run #204073 on slot 1, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 36 0 INFO ===>>> start processing event #1139475, run #204073 on slot 0, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 37 1 INFO ===>>> start processing event #1139958, run #204073 on slot 1, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 38 3 INFO ===>>> start processing event #1143765, run #204073 on slot 3, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 35 2 INFO ===>>> done processing event #1142531, run #204073 on slot 2, 36 events processed so far <<<=== -AthenaHiveEventLoopMgr 36 0 INFO ===>>> done processing event #1139475, run #204073 on slot 0, 37 events processed so far <<<=== -AthenaHiveEventLoopMgr 37 1 INFO ===>>> done processing event #1139958, run #204073 on slot 1, 38 events processed so far <<<=== -AthenaHiveEventLoopMgr 39 0 INFO ===>>> start processing event #1143097, run #204073 on slot 0, 38 events processed so far <<<=== -AthenaHiveEventLoopMgr 40 1 INFO ===>>> start processing event #1134147, run #204073 on slot 1, 38 events processed so far <<<=== -AthenaHiveEventLoopMgr 41 2 INFO ===>>> start processing event #1137156, run #204073 on slot 2, 38 events processed so far <<<=== -AthenaHiveEventLoopMgr 38 3 INFO ===>>> done processing event #1143765, run #204073 on slot 3, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 39 0 INFO ===>>> done processing event #1143097, run #204073 on slot 0, 40 events processed so far <<<=== -AthenaHiveEventLoopMgr 40 1 INFO ===>>> done processing event #1134147, run #204073 on slot 1, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 42 0 INFO ===>>> start processing event #1136377, run #204073 on slot 0, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 43 1 INFO ===>>> start processing event #1137842, run #204073 on slot 1, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 44 3 INFO ===>>> start processing event #1141705, run #204073 on slot 3, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 41 2 INFO ===>>> done processing event #1137156, run #204073 on slot 2, 42 events processed so far <<<=== -AthenaHiveEventLoopMgr 42 0 INFO ===>>> done processing event #1136377, run #204073 on slot 0, 43 events processed so far <<<=== -AthenaHiveEventLoopMgr 43 1 INFO ===>>> done processing event #1137842, run #204073 on slot 1, 44 events processed so far <<<=== -AthenaHiveEventLoopMgr 45 0 INFO ===>>> start processing event #1143410, run #204073 on slot 0, 44 events processed so far <<<=== -AthenaHiveEventLoopMgr 46 1 INFO ===>>> start processing event #1144170, run #204073 on slot 1, 44 events processed so far <<<=== -AthenaHiveEventLoopMgr 47 2 INFO ===>>> start processing event #1145987, run #204073 on slot 2, 44 events processed so far <<<=== -AthenaHiveEventLoopMgr 44 3 INFO ===>>> done processing event #1141705, run #204073 on slot 3, 45 events processed so far <<<=== -AthenaHiveEventLoopMgr 45 0 INFO ===>>> done processing event #1143410, run #204073 on slot 0, 46 events processed so far <<<=== -AthenaHiveEventLoopMgr 48 0 INFO ===>>> start processing event #1145633, run #204073 on slot 0, 46 events processed so far <<<=== -AthenaHiveEventLoopMgr 49 3 INFO ===>>> start processing event #1135005, run #204073 on slot 3, 46 events processed so far <<<=== -AthenaHiveEventLoopMgr 46 1 INFO ===>>> done processing event #1144170, run #204073 on slot 1, 47 events processed so far <<<=== -AthenaHiveEventLoopMgr 47 2 INFO ===>>> done processing event #1145987, run #204073 on slot 2, 48 events processed so far <<<=== -AthenaHiveEventLoopMgr 48 0 INFO ===>>> done processing event #1145633, run #204073 on slot 0, 49 events processed so far <<<=== +AthenaHiveEventLoopMgr 27 1 INFO ===>>> done processing event #1139599, run #204073 on slot 1, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 29 0 INFO ===>>> start processing event #1133685, run #204073 on slot 0, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 30 1 INFO ===>>> start processing event #1143279, run #204073 on slot 1, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 31 2 INFO ===>>> start processing event #1137563, run #204073 on slot 2, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 28 3 INFO ===>>> done processing event #1140314, run #204073 on slot 3, 29 events processed so far <<<=== +AthenaHiveEventLoopMgr 29 0 INFO ===>>> done processing event #1133685, run #204073 on slot 0, 30 events processed so far <<<=== +AthenaHiveEventLoopMgr 30 1 INFO ===>>> done processing event #1143279, run #204073 on slot 1, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 32 0 INFO ===>>> start processing event #1139927, run #204073 on slot 0, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 33 1 INFO ===>>> start processing event #1141197, run #204073 on slot 1, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 34 3 INFO ===>>> start processing event #1140039, run #204073 on slot 3, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 31 2 INFO ===>>> done processing event #1137563, run #204073 on slot 2, 32 events processed so far <<<=== +AthenaHiveEventLoopMgr 32 0 INFO ===>>> done processing event #1139927, run #204073 on slot 0, 33 events processed so far <<<=== +AthenaHiveEventLoopMgr 33 1 INFO ===>>> done processing event #1141197, run #204073 on slot 1, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 35 0 INFO ===>>> start processing event #1142531, run #204073 on slot 0, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 36 1 INFO ===>>> start processing event #1139475, run #204073 on slot 1, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 37 2 INFO ===>>> start processing event #1139958, run #204073 on slot 2, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 34 3 INFO ===>>> done processing event #1140039, run #204073 on slot 3, 35 events processed so far <<<=== +AthenaHiveEventLoopMgr 35 0 INFO ===>>> done processing event #1142531, run #204073 on slot 0, 36 events processed so far <<<=== +AthenaHiveEventLoopMgr 36 1 INFO ===>>> done processing event #1139475, run #204073 on slot 1, 37 events processed so far <<<=== +AthenaHiveEventLoopMgr 38 0 INFO ===>>> start processing event #1143765, run #204073 on slot 0, 37 events processed so far <<<=== +AthenaHiveEventLoopMgr 39 1 INFO ===>>> start processing event #1143097, run #204073 on slot 1, 37 events processed so far <<<=== +AthenaHiveEventLoopMgr 40 3 INFO ===>>> start processing event #1134147, run #204073 on slot 3, 37 events processed so far <<<=== +AthenaHiveEventLoopMgr 37 2 INFO ===>>> done processing event #1139958, run #204073 on slot 2, 38 events processed so far <<<=== +AthenaHiveEventLoopMgr 38 0 INFO ===>>> done processing event #1143765, run #204073 on slot 0, 39 events processed so far <<<=== +AthenaHiveEventLoopMgr 39 1 INFO ===>>> done processing event #1143097, run #204073 on slot 1, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 41 0 INFO ===>>> start processing event #1137156, run #204073 on slot 0, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 42 1 INFO ===>>> start processing event #1136377, run #204073 on slot 1, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 43 2 INFO ===>>> start processing event #1137842, run #204073 on slot 2, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 40 3 INFO ===>>> done processing event #1134147, run #204073 on slot 3, 41 events processed so far <<<=== +AthenaHiveEventLoopMgr 41 0 INFO ===>>> done processing event #1137156, run #204073 on slot 0, 42 events processed so far <<<=== +AthenaHiveEventLoopMgr 42 1 INFO ===>>> done processing event #1136377, run #204073 on slot 1, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 44 0 INFO ===>>> start processing event #1141705, run #204073 on slot 0, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 45 1 INFO ===>>> start processing event #1143410, run #204073 on slot 1, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 46 3 INFO ===>>> start processing event #1144170, run #204073 on slot 3, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 43 2 INFO ===>>> done processing event #1137842, run #204073 on slot 2, 44 events processed so far <<<=== +AthenaHiveEventLoopMgr 44 0 INFO ===>>> done processing event #1141705, run #204073 on slot 0, 45 events processed so far <<<=== +AthenaHiveEventLoopMgr 45 1 INFO ===>>> done processing event #1143410, run #204073 on slot 1, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 47 0 INFO ===>>> start processing event #1145987, run #204073 on slot 0, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 48 1 INFO ===>>> start processing event #1145633, run #204073 on slot 1, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 49 2 INFO ===>>> start processing event #1135005, run #204073 on slot 2, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 46 3 INFO ===>>> done processing event #1144170, run #204073 on slot 3, 47 events processed so far <<<=== +AthenaHiveEventLoopMgr 47 0 INFO ===>>> done processing event #1145987, run #204073 on slot 0, 48 events processed so far <<<=== +AthenaHiveEventLoopMgr 48 1 INFO ===>>> done processing event #1145633, run #204073 on slot 1, 49 events processed so far <<<=== AthenaHiveEventLoopMgr 50 0 INFO ===>>> start processing event #1142167, run #204073 on slot 0, 49 events processed so far <<<=== AthenaHiveEventLoopMgr 51 1 INFO ===>>> start processing event #1144646, run #204073 on slot 1, 49 events processed so far <<<=== -AthenaHiveEventLoopMgr 52 2 INFO ===>>> start processing event #1145027, run #204073 on slot 2, 49 events processed so far <<<=== -AthenaHiveEventLoopMgr 49 3 INFO ===>>> done processing event #1135005, run #204073 on slot 3, 50 events processed so far <<<=== +AthenaHiveEventLoopMgr 52 3 INFO ===>>> start processing event #1145027, run #204073 on slot 3, 49 events processed so far <<<=== +AthenaHiveEventLoopMgr 49 2 INFO ===>>> done processing event #1135005, run #204073 on slot 2, 50 events processed so far <<<=== AthenaHiveEventLoopMgr 50 0 INFO ===>>> done processing event #1142167, run #204073 on slot 0, 51 events processed so far <<<=== AthenaHiveEventLoopMgr 51 1 INFO ===>>> done processing event #1144646, run #204073 on slot 1, 52 events processed so far <<<=== AthenaHiveEventLoopMgr 53 0 INFO ===>>> start processing event #1144112, run #204073 on slot 0, 52 events processed so far <<<=== AthenaHiveEventLoopMgr 54 1 INFO ===>>> start processing event #1138485, run #204073 on slot 1, 52 events processed so far <<<=== -AthenaHiveEventLoopMgr 55 3 INFO ===>>> start processing event #1144565, run #204073 on slot 3, 52 events processed so far <<<=== -AthenaHiveEventLoopMgr 52 2 INFO ===>>> done processing event #1145027, run #204073 on slot 2, 53 events processed so far <<<=== +AthenaHiveEventLoopMgr 55 2 INFO ===>>> start processing event #1144565, run #204073 on slot 2, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 52 3 INFO ===>>> done processing event #1145027, run #204073 on slot 3, 53 events processed so far <<<=== AthenaHiveEventLoopMgr 53 0 INFO ===>>> done processing event #1144112, run #204073 on slot 0, 54 events processed so far <<<=== AthenaHiveEventLoopMgr 54 1 INFO ===>>> done processing event #1138485, run #204073 on slot 1, 55 events processed so far <<<=== AthenaHiveEventLoopMgr 56 0 INFO ===>>> start processing event #1139498, run #204073 on slot 0, 55 events processed so far <<<=== AthenaHiveEventLoopMgr 57 1 INFO ===>>> start processing event #1136546, run #204073 on slot 1, 55 events processed so far <<<=== -AthenaHiveEventLoopMgr 58 2 INFO ===>>> start processing event #1143799, run #204073 on slot 2, 55 events processed so far <<<=== -AthenaHiveEventLoopMgr 55 3 INFO ===>>> done processing event #1144565, run #204073 on slot 3, 56 events processed so far <<<=== +AthenaHiveEventLoopMgr 58 3 INFO ===>>> start processing event #1143799, run #204073 on slot 3, 55 events processed so far <<<=== +AthenaHiveEventLoopMgr 55 2 INFO ===>>> done processing event #1144565, run #204073 on slot 2, 56 events processed so far <<<=== AthenaHiveEventLoopMgr 56 0 INFO ===>>> done processing event #1139498, run #204073 on slot 0, 57 events processed so far <<<=== AthenaHiveEventLoopMgr 57 1 INFO ===>>> done processing event #1136546, run #204073 on slot 1, 58 events processed so far <<<=== AthenaHiveEventLoopMgr 59 0 INFO ===>>> start processing event #1142877, run #204073 on slot 0, 58 events processed so far <<<=== AthenaHiveEventLoopMgr 60 1 INFO ===>>> start processing event #1149894, run #204073 on slot 1, 58 events processed so far <<<=== -AthenaHiveEventLoopMgr 61 3 INFO ===>>> start processing event #1145364, run #204073 on slot 3, 58 events processed so far <<<=== -AthenaHiveEventLoopMgr 58 2 INFO ===>>> done processing event #1143799, run #204073 on slot 2, 59 events processed so far <<<=== +AthenaHiveEventLoopMgr 61 2 INFO ===>>> start processing event #1145364, run #204073 on slot 2, 58 events processed so far <<<=== +AthenaHiveEventLoopMgr 58 3 INFO ===>>> done processing event #1143799, run #204073 on slot 3, 59 events processed so far <<<=== AthenaHiveEventLoopMgr 59 0 INFO ===>>> done processing event #1142877, run #204073 on slot 0, 60 events processed so far <<<=== AthenaHiveEventLoopMgr 60 1 INFO ===>>> done processing event #1149894, run #204073 on slot 1, 61 events processed so far <<<=== AthenaHiveEventLoopMgr 62 0 INFO ===>>> start processing event #1143770, run #204073 on slot 0, 61 events processed so far <<<=== AthenaHiveEventLoopMgr 63 1 INFO ===>>> start processing event #1148361, run #204073 on slot 1, 61 events processed so far <<<=== -AthenaHiveEventLoopMgr 64 2 INFO ===>>> start processing event #1148167, run #204073 on slot 2, 61 events processed so far <<<=== -AthenaHiveEventLoopMgr 61 3 INFO ===>>> done processing event #1145364, run #204073 on slot 3, 62 events processed so far <<<=== +AthenaHiveEventLoopMgr 64 3 INFO ===>>> start processing event #1148167, run #204073 on slot 3, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 61 2 INFO ===>>> done processing event #1145364, run #204073 on slot 2, 62 events processed so far <<<=== AthenaHiveEventLoopMgr 62 0 INFO ===>>> done processing event #1143770, run #204073 on slot 0, 63 events processed so far <<<=== AthenaHiveEventLoopMgr 63 1 INFO ===>>> done processing event #1148361, run #204073 on slot 1, 64 events processed so far <<<=== AthenaHiveEventLoopMgr 65 0 INFO ===>>> start processing event #1138948, run #204073 on slot 0, 64 events processed so far <<<=== AthenaHiveEventLoopMgr 66 1 INFO ===>>> start processing event #1144808, run #204073 on slot 1, 64 events processed so far <<<=== -AthenaHiveEventLoopMgr 67 3 INFO ===>>> start processing event #1145832, run #204073 on slot 3, 64 events processed so far <<<=== -AthenaHiveEventLoopMgr 64 2 INFO ===>>> done processing event #1148167, run #204073 on slot 2, 65 events processed so far <<<=== +AthenaHiveEventLoopMgr 67 2 INFO ===>>> start processing event #1145832, run #204073 on slot 2, 64 events processed so far <<<=== +AthenaHiveEventLoopMgr 64 3 INFO ===>>> done processing event #1148167, run #204073 on slot 3, 65 events processed so far <<<=== AthenaHiveEventLoopMgr 65 0 INFO ===>>> done processing event #1138948, run #204073 on slot 0, 66 events processed so far <<<=== AthenaHiveEventLoopMgr 66 1 INFO ===>>> done processing event #1144808, run #204073 on slot 1, 67 events processed so far <<<=== AthenaHiveEventLoopMgr 68 0 INFO ===>>> start processing event #1153100, run #204073 on slot 0, 67 events processed so far <<<=== AthenaHiveEventLoopMgr 69 1 INFO ===>>> start processing event #1142524, run #204073 on slot 1, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 70 2 INFO ===>>> start processing event #1138294, run #204073 on slot 2, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 67 3 INFO ===>>> done processing event #1145832, run #204073 on slot 3, 68 events processed so far <<<=== +AthenaHiveEventLoopMgr 70 3 INFO ===>>> start processing event #1138294, run #204073 on slot 3, 67 events processed so far <<<=== +AthenaHiveEventLoopMgr 67 2 INFO ===>>> done processing event #1145832, run #204073 on slot 2, 68 events processed so far <<<=== AthenaHiveEventLoopMgr 68 0 INFO ===>>> done processing event #1153100, run #204073 on slot 0, 69 events processed so far <<<=== AthenaHiveEventLoopMgr 69 1 INFO ===>>> done processing event #1142524, run #204073 on slot 1, 70 events processed so far <<<=== AthenaHiveEventLoopMgr 71 0 INFO ===>>> start processing event #1138350, run #204073 on slot 0, 70 events processed so far <<<=== AthenaHiveEventLoopMgr 72 1 INFO ===>>> start processing event #1149424, run #204073 on slot 1, 70 events processed so far <<<=== -AthenaHiveEventLoopMgr 73 3 INFO ===>>> start processing event #1151102, run #204073 on slot 3, 70 events processed so far <<<=== -AthenaHiveEventLoopMgr 70 2 INFO ===>>> done processing event #1138294, run #204073 on slot 2, 71 events processed so far <<<=== +AthenaHiveEventLoopMgr 73 2 INFO ===>>> start processing event #1151102, run #204073 on slot 2, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 70 3 INFO ===>>> done processing event #1138294, run #204073 on slot 3, 71 events processed so far <<<=== AthenaHiveEventLoopMgr 71 0 INFO ===>>> done processing event #1138350, run #204073 on slot 0, 72 events processed so far <<<=== AthenaHiveEventLoopMgr 72 1 INFO ===>>> done processing event #1149424, run #204073 on slot 1, 73 events processed so far <<<=== AthenaHiveEventLoopMgr 74 0 INFO ===>>> start processing event #1152242, run #204073 on slot 0, 73 events processed so far <<<=== AthenaHiveEventLoopMgr 75 1 INFO ===>>> start processing event #1148416, run #204073 on slot 1, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 76 2 INFO ===>>> start processing event #1142753, run #204073 on slot 2, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 73 3 INFO ===>>> done processing event #1151102, run #204073 on slot 3, 74 events processed so far <<<=== +AthenaHiveEventLoopMgr 76 3 INFO ===>>> start processing event #1142753, run #204073 on slot 3, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 73 2 INFO ===>>> done processing event #1151102, run #204073 on slot 2, 74 events processed so far <<<=== AthenaHiveEventLoopMgr 74 0 INFO ===>>> done processing event #1152242, run #204073 on slot 0, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 77 0 INFO ===>>> start processing event #1149997, run #204073 on slot 0, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 78 3 INFO ===>>> start processing event #1151617, run #204073 on slot 3, 75 events processed so far <<<=== AthenaHiveEventLoopMgr 75 1 INFO ===>>> done processing event #1148416, run #204073 on slot 1, 76 events processed so far <<<=== -AthenaHiveEventLoopMgr 76 2 INFO ===>>> done processing event #1142753, run #204073 on slot 2, 77 events processed so far <<<=== +AthenaHiveEventLoopMgr 77 0 INFO ===>>> start processing event #1149997, run #204073 on slot 0, 76 events processed so far <<<=== +AthenaHiveEventLoopMgr 78 1 INFO ===>>> start processing event #1151617, run #204073 on slot 1, 76 events processed so far <<<=== +AthenaHiveEventLoopMgr 79 2 INFO ===>>> start processing event #1149794, run #204073 on slot 2, 76 events processed so far <<<=== +AthenaHiveEventLoopMgr 76 3 INFO ===>>> done processing event #1142753, run #204073 on slot 3, 77 events processed so far <<<=== AthenaHiveEventLoopMgr 77 0 INFO ===>>> done processing event #1149997, run #204073 on slot 0, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 79 0 INFO ===>>> start processing event #1149794, run #204073 on slot 0, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 80 1 INFO ===>>> start processing event #1152504, run #204073 on slot 1, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 81 2 INFO ===>>> start processing event #1142485, run #204073 on slot 2, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 78 3 INFO ===>>> done processing event #1151617, run #204073 on slot 3, 79 events processed so far <<<=== -AthenaHiveEventLoopMgr 79 0 INFO ===>>> done processing event #1149794, run #204073 on slot 0, 80 events processed so far <<<=== -AthenaHiveEventLoopMgr 80 1 INFO ===>>> done processing event #1152504, run #204073 on slot 1, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 82 0 INFO ===>>> start processing event #1151364, run #204073 on slot 0, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 83 1 INFO ===>>> start processing event #1143901, run #204073 on slot 1, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 84 3 INFO ===>>> start processing event #1153979, run #204073 on slot 3, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 81 2 INFO ===>>> done processing event #1142485, run #204073 on slot 2, 82 events processed so far <<<=== -AthenaHiveEventLoopMgr 82 0 INFO ===>>> done processing event #1151364, run #204073 on slot 0, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 83 1 INFO ===>>> done processing event #1143901, run #204073 on slot 1, 84 events processed so far <<<=== -AthenaHiveEventLoopMgr 85 0 INFO ===>>> start processing event #1150212, run #204073 on slot 0, 84 events processed so far <<<=== -AthenaHiveEventLoopMgr 86 1 INFO ===>>> start processing event #1152633, run #204073 on slot 1, 84 events processed so far <<<=== -AthenaHiveEventLoopMgr 87 2 INFO ===>>> start processing event #1155482, run #204073 on slot 2, 84 events processed so far <<<=== -AthenaHiveEventLoopMgr 84 3 INFO ===>>> done processing event #1153979, run #204073 on slot 3, 85 events processed so far <<<=== -AthenaHiveEventLoopMgr 85 0 INFO ===>>> done processing event #1150212, run #204073 on slot 0, 86 events processed so far <<<=== -AthenaHiveEventLoopMgr 86 1 INFO ===>>> done processing event #1152633, run #204073 on slot 1, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 88 0 INFO ===>>> start processing event #1150472, run #204073 on slot 0, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 89 1 INFO ===>>> start processing event #1140275, run #204073 on slot 1, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 90 3 INFO ===>>> start processing event #1145882, run #204073 on slot 3, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 87 2 INFO ===>>> done processing event #1155482, run #204073 on slot 2, 88 events processed so far <<<=== -AthenaHiveEventLoopMgr 88 0 INFO ===>>> done processing event #1150472, run #204073 on slot 0, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 89 1 INFO ===>>> done processing event #1140275, run #204073 on slot 1, 90 events processed so far <<<=== -AthenaHiveEventLoopMgr 91 0 INFO ===>>> start processing event #1151732, run #204073 on slot 0, 90 events processed so far <<<=== -AthenaHiveEventLoopMgr 92 1 INFO ===>>> start processing event #1137896, run #204073 on slot 1, 90 events processed so far <<<=== -AthenaHiveEventLoopMgr 93 2 INFO ===>>> start processing event #1156381, run #204073 on slot 2, 90 events processed so far <<<=== -AthenaHiveEventLoopMgr 90 3 INFO ===>>> done processing event #1145882, run #204073 on slot 3, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 91 0 INFO ===>>> done processing event #1151732, run #204073 on slot 0, 92 events processed so far <<<=== -AthenaHiveEventLoopMgr 92 1 INFO ===>>> done processing event #1137896, run #204073 on slot 1, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 94 0 INFO ===>>> start processing event #1149161, run #204073 on slot 0, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 95 1 INFO ===>>> start processing event #1153794, run #204073 on slot 1, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 96 3 INFO ===>>> start processing event #1151312, run #204073 on slot 3, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 93 2 INFO ===>>> done processing event #1156381, run #204073 on slot 2, 94 events processed so far <<<=== -AthenaHiveEventLoopMgr 94 0 INFO ===>>> done processing event #1149161, run #204073 on slot 0, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 95 1 INFO ===>>> done processing event #1153794, run #204073 on slot 1, 96 events processed so far <<<=== -AthenaHiveEventLoopMgr 97 0 INFO ===>>> start processing event #1148893, run #204073 on slot 0, 96 events processed so far <<<=== -AthenaHiveEventLoopMgr 98 1 INFO ===>>> start processing event #1156938, run #204073 on slot 1, 96 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 2 INFO ===>>> start processing event #1156351, run #204073 on slot 2, 96 events processed so far <<<=== -AthenaHiveEventLoopMgr 96 3 INFO ===>>> done processing event #1151312, run #204073 on slot 3, 97 events processed so far <<<=== -AthenaHiveEventLoopMgr 97 0 INFO ===>>> done processing event #1148893, run #204073 on slot 0, 98 events processed so far <<<=== -AthenaHiveEventLoopMgr 98 1 INFO ===>>> done processing event #1156938, run #204073 on slot 1, 99 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 2 INFO ===>>> done processing event #1156351, run #204073 on slot 2, 100 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 2 INFO ---> Loop Finished (seconds): 5.12013 +AthenaHiveEventLoopMgr 78 1 INFO ===>>> done processing event #1151617, run #204073 on slot 1, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 80 0 INFO ===>>> start processing event #1152504, run #204073 on slot 0, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 81 1 INFO ===>>> start processing event #1142485, run #204073 on slot 1, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 82 3 INFO ===>>> start processing event #1151364, run #204073 on slot 3, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 79 2 INFO ===>>> done processing event #1149794, run #204073 on slot 2, 80 events processed so far <<<=== +AthenaHiveEventLoopMgr 80 0 INFO ===>>> done processing event #1152504, run #204073 on slot 0, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 81 1 INFO ===>>> done processing event #1142485, run #204073 on slot 1, 82 events processed so far <<<=== +AthenaHiveEventLoopMgr 83 0 INFO ===>>> start processing event #1143901, run #204073 on slot 0, 82 events processed so far <<<=== +AthenaHiveEventLoopMgr 84 1 INFO ===>>> start processing event #1153979, run #204073 on slot 1, 82 events processed so far <<<=== +AthenaHiveEventLoopMgr 85 2 INFO ===>>> start processing event #1150212, run #204073 on slot 2, 82 events processed so far <<<=== +AthenaHiveEventLoopMgr 82 3 INFO ===>>> done processing event #1151364, run #204073 on slot 3, 83 events processed so far <<<=== +AthenaHiveEventLoopMgr 83 0 INFO ===>>> done processing event #1143901, run #204073 on slot 0, 84 events processed so far <<<=== +AthenaHiveEventLoopMgr 84 1 INFO ===>>> done processing event #1153979, run #204073 on slot 1, 85 events processed so far <<<=== +AthenaHiveEventLoopMgr 86 0 INFO ===>>> start processing event #1152633, run #204073 on slot 0, 85 events processed so far <<<=== +AthenaHiveEventLoopMgr 87 1 INFO ===>>> start processing event #1155482, run #204073 on slot 1, 85 events processed so far <<<=== +AthenaHiveEventLoopMgr 88 3 INFO ===>>> start processing event #1150472, run #204073 on slot 3, 85 events processed so far <<<=== +AthenaHiveEventLoopMgr 85 2 INFO ===>>> done processing event #1150212, run #204073 on slot 2, 86 events processed so far <<<=== +AthenaHiveEventLoopMgr 86 0 INFO ===>>> done processing event #1152633, run #204073 on slot 0, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 87 1 INFO ===>>> done processing event #1155482, run #204073 on slot 1, 88 events processed so far <<<=== +AthenaHiveEventLoopMgr 89 0 INFO ===>>> start processing event #1140275, run #204073 on slot 0, 88 events processed so far <<<=== +AthenaHiveEventLoopMgr 90 1 INFO ===>>> start processing event #1145882, run #204073 on slot 1, 88 events processed so far <<<=== +AthenaHiveEventLoopMgr 91 2 INFO ===>>> start processing event #1151732, run #204073 on slot 2, 88 events processed so far <<<=== +AthenaHiveEventLoopMgr 88 3 INFO ===>>> done processing event #1150472, run #204073 on slot 3, 89 events processed so far <<<=== +AthenaHiveEventLoopMgr 89 0 INFO ===>>> done processing event #1140275, run #204073 on slot 0, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 90 1 INFO ===>>> done processing event #1145882, run #204073 on slot 1, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 92 0 INFO ===>>> start processing event #1137896, run #204073 on slot 0, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 93 1 INFO ===>>> start processing event #1156381, run #204073 on slot 1, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 94 3 INFO ===>>> start processing event #1149161, run #204073 on slot 3, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 91 2 INFO ===>>> done processing event #1151732, run #204073 on slot 2, 92 events processed so far <<<=== +AthenaHiveEventLoopMgr 92 0 INFO ===>>> done processing event #1137896, run #204073 on slot 0, 93 events processed so far <<<=== +AthenaHiveEventLoopMgr 93 1 INFO ===>>> done processing event #1156381, run #204073 on slot 1, 94 events processed so far <<<=== +AthenaHiveEventLoopMgr 95 0 INFO ===>>> start processing event #1153794, run #204073 on slot 0, 94 events processed so far <<<=== +AthenaHiveEventLoopMgr 96 1 INFO ===>>> start processing event #1151312, run #204073 on slot 1, 94 events processed so far <<<=== +AthenaHiveEventLoopMgr 97 2 INFO ===>>> start processing event #1148893, run #204073 on slot 2, 94 events processed so far <<<=== +AthenaHiveEventLoopMgr 94 3 INFO ===>>> done processing event #1149161, run #204073 on slot 3, 95 events processed so far <<<=== +AthenaHiveEventLoopMgr 95 0 INFO ===>>> done processing event #1153794, run #204073 on slot 0, 96 events processed so far <<<=== +AthenaHiveEventLoopMgr 96 1 INFO ===>>> done processing event #1151312, run #204073 on slot 1, 97 events processed so far <<<=== +AthenaHiveEventLoopMgr 98 0 INFO ===>>> start processing event #1156938, run #204073 on slot 0, 97 events processed so far <<<=== +AthenaHiveEventLoopMgr 99 1 INFO ===>>> start processing event #1156351, run #204073 on slot 1, 97 events processed so far <<<=== +AthenaHiveEventLoopMgr 97 2 INFO ===>>> done processing event #1148893, run #204073 on slot 2, 98 events processed so far <<<=== +AthenaHiveEventLoopMgr 98 0 INFO ===>>> done processing event #1156938, run #204073 on slot 0, 99 events processed so far <<<=== +AthenaHiveEventLoopMgr 99 1 INFO ===>>> done processing event #1156351, run #204073 on slot 1, 100 events processed so far <<<=== +AthenaHiveEventLoopMgr 99 1 INFO ---> Loop Finished (seconds): 3.99471 Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] ApplicationMgr INFO Application Manager Stopped successfully SGInputLoader INFO Finalizing SGInputLoader... @@ -1284,7 +1288,7 @@ AvalancheSchedulerSvc INFO Joining S PyComponentMgr INFO Finalizing PyComponentMgr... EventDataSvc INFO Finalizing EventDataSvc IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.04 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s @@ -1296,10 +1300,10 @@ IOVDbFolder INFO Folder /T IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s -IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 0.02 ))s -IOVDbSvc INFO bytes in (( 0.05 ))s +IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 0.01 ))s +IOVDbSvc INFO bytes in (( 0.04 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.05 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.04 ))s IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 1 nFolders: 11 ReadTime: (( 0.00 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc @@ -1310,9 +1314,9 @@ ToolSvc.ByteStreamMetadataTool INFO in finali *****Chrono***** INFO WARNING: MT job; statistics are unreliable *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 130 [ms] Ave/Min/Max= 65(+- 65)/ 0/ 130 [ms] #= 2 -cObj_ALL INFO Time User : Tot= 180 [ms] Ave/Min/Max= 90(+- 70)/ 20/ 160 [ms] #= 2 -ChronoStatSvc INFO Time User : Tot= 11.3 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 80 [ms] Ave/Min/Max= 40(+- 30)/ 10/ 70 [ms] #= 2 +cObj_ALL INFO Time User : Tot= 100 [ms] Ave/Min/Max= 50(+- 30)/ 20/ 80 [ms] #= 2 +ChronoStatSvc INFO Time User : Tot= 7.28 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.finalize() INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileL2ContByteStreamCnv_test.ref b/TileCalorimeter/TileSvc/TileByteStream/share/TileL2ContByteStreamCnv_test.ref index f5c91815f4b1e35b953f602524915428cc674d62..27786a1292f8edd626d7586bbde1480b3909f7c2 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/share/TileL2ContByteStreamCnv_test.ref +++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileL2ContByteStreamCnv_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:55:46 CEST 2021 +Mon Sep 6 17:24:12 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileL2ContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:56:00 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:24:17 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -189,7 +189,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.53S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.33S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -200,7 +200,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -212,16 +212,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -249,7 +251,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.15S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.1S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -356,7 +358,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -370,12 +372,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -415,9 +417,9 @@ ToolSvc.TileROD... INFO TileL2Builder initialization completed ToolSvc.TileL2C... INFO Initializing TileL2ContByteStreamTool AthenaEventLoopMgr INFO ===>>> done processing event #1129572, run #204073 1 events processed so far <<<=== /cvmfs/atlas-co... INFO Database being retired... -Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A -/cvmfs/atlas-co... INFO Database being retired... Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] 06C9EAE8-6F5B-E011-BAAA-003048F0E7AC +/cvmfs/atlas-co... INFO Database being retired... +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] 8667C6F2-1559-DE11-A611-000423D9A21A Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] AthenaEventLoopMgr INFO ===>>> start processing event #1129665, run #204073 1 events processed so far <<<=== AthenaEventLoopMgr INFO ===>>> done processing event #1129665, run #204073 2 events processed so far <<<=== @@ -624,23 +626,23 @@ Finalizer INFO Finalizing Finalizer... Finalize: compared 10 dumps PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.03 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641504 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/93060 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s +IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.03 ))s -IOVDbSvc INFO bytes in (( 0.27 ))s +IOVDbSvc INFO bytes in (( 0.30 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.05 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.21 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.06 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.24 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.TileROD... INFO Finalizing @@ -648,18 +650,18 @@ ToolSvc.ByteStr... INFO in finalize() *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 150 [ms] Ave/Min/Max= 37.5(+- 59.3)/ 0/ 140 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 190 [ms] Ave/Min/Max= 12.7(+- 40.1)/ 0/ 160 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 8.87 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 80 [ms] Ave/Min/Max= 20(+- 29.2)/ 0/ 70 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 110 [ms] Ave/Min/Max= 7.33(+- 22.6)/ 0/ 90 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 5.98 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully ApplicationMgr INFO Application Manager Terminated successfully Py:Athena INFO leaving with code 0: "successful run" -Sat Aug 21 21:56:14 CEST 2021 +Mon Sep 6 17:24:25 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO configuring AthenaHive with [4] concurrent threads and [4] concurrent events @@ -668,9 +670,9 @@ Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileL2ContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -689,7 +691,7 @@ MessageSvc INFO Activating in a separate thread ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:56:29 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:24:31 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -701,8 +703,8 @@ PoolSvc INFO io_regist PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -850,7 +852,7 @@ EMECConstruction INFO multi-lay EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstruction INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.61S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.33S GeoModelSvc.TileDetectorTool INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -861,7 +863,7 @@ TileDddbManager INFO n_tilb = TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDescrCnv INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -873,16 +875,18 @@ CaloIDHelper_IDDetDescrCnv INFO in create AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.TileDetectorTool INFO U-shape parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Cs Tube parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Ushape parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO PVT parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Steel parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO CsTube parameter from database is: 0 GeoModelSvc.TileDetectorTool INFO Entering TileAtlasFactory::create() GeoModelSvc.TileDetectorTool INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.TileDetectorTool INFO => New BFingerLengthPos 430.5 @@ -910,7 +914,7 @@ GeoModelSvc.TileDetectorTool INFO Global p GeoModelSvc.TileDetectorTool INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.TileDetectorTool INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrManager INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.15S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.09S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -1034,7 +1038,7 @@ Domain[ROOT_All] 0 0 INFO RootDatabase.open 0 0 INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv 0 0 INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDescrCnv 0 0 INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc 0 0 INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc 0 0 INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID 0 0 INFO initialize_from_dictionary AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK @@ -1048,12 +1052,12 @@ CaloIDHelper_IDDetDescrCnv 0 0 INFO in create AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIdMgrDetDescrCnv 0 0 INFO Finished CaloIdMgrDetDescrCnv 0 0 INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -1270,7 +1274,7 @@ AthenaHiveEventLoopMgr 99 1 INFO ===>>> AthenaHiveEventLoopMgr 97 2 INFO ===>>> done processing event #1148893, run #204073 on slot 2, 98 events processed so far <<<=== AthenaHiveEventLoopMgr 98 0 INFO ===>>> done processing event #1156938, run #204073 on slot 0, 99 events processed so far <<<=== AthenaHiveEventLoopMgr 99 1 INFO ===>>> done processing event #1156351, run #204073 on slot 1, 100 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 1 INFO ---> Loop Finished (seconds): 5.90471 +AthenaHiveEventLoopMgr 99 1 INFO ---> Loop Finished (seconds): 3.81328 Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] ApplicationMgr INFO Application Manager Stopped successfully SGInputLoader INFO Finalizing SGInputLoader... @@ -1306,9 +1310,9 @@ ToolSvc.ByteStreamMetadataTool INFO in finali *****Chrono***** INFO WARNING: MT job; statistics are unreliable *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 160 [ms] Ave/Min/Max= 80(+- 70)/ 10/ 150 [ms] #= 2 -cObj_ALL INFO Time User : Tot= 200 [ms] Ave/Min/Max= 100(+- 70)/ 30/ 170 [ms] #= 2 -ChronoStatSvc INFO Time User : Tot= 10.4 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 70 [ms] Ave/Min/Max= 35(+- 35)/ 0/ 70 [ms] #= 2 +cObj_ALL INFO Time User : Tot= 90 [ms] Ave/Min/Max= 45(+- 35)/ 10/ 80 [ms] #= 2 +ChronoStatSvc INFO Time User : Tot= 6.15 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.finalize() INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileLaserObjByteStreamCnv_test.ref b/TileCalorimeter/TileSvc/TileByteStream/share/TileLaserObjByteStreamCnv_test.ref index 6b660dea387674a404de0c36aa4e8c0c6e4cb521..13cf2135a98441194fbe32a801debddb22238781 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/share/TileLaserObjByteStreamCnv_test.ref +++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileLaserObjByteStreamCnv_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:56:45 CEST 2021 +Mon Sep 6 17:24:40 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileLaserObjByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:56:59 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:24:46 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -188,7 +188,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.62S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.35S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -199,7 +199,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -211,16 +211,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -248,7 +250,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.19S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.13S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -355,7 +357,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -369,12 +371,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -622,23 +624,23 @@ Finalizer INFO Finalizing Finalizer... Finalize: compared 10 dumps PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.27 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.04 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/104912 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.05 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.04 ))s IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641536 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/43176 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/43176 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s -IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.04 ))s -IOVDbSvc INFO bytes in (( 0.62 ))s +IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s +IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.03 ))s +IOVDbSvc INFO bytes in (( 0.43 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.31 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.31 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.07 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.36 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.TileROD... INFO Finalizing @@ -646,18 +648,18 @@ ToolSvc.ByteStr... INFO in finalize() *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 160 [ms] Ave/Min/Max= 40(+- 63.6)/ 0/ 150 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 210 [ms] Ave/Min/Max= 14(+- 45)/ 0/ 180 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 4.39 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 100 [ms] Ave/Min/Max= 25(+- 43.3)/ 0/ 100 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 130 [ms] Ave/Min/Max= 8.67(+- 29.9)/ 0/ 120 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 2.38 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully ApplicationMgr INFO Application Manager Terminated successfully Py:Athena INFO leaving with code 0: "successful run" -Sat Aug 21 21:57:10 CEST 2021 +Mon Sep 6 17:24:50 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO configuring AthenaHive with [4] concurrent threads and [4] concurrent events @@ -666,9 +668,9 @@ Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileLaserObjByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -687,7 +689,7 @@ MessageSvc INFO Activating in a separate thread ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:57:24 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:24:56 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -699,8 +701,8 @@ PoolSvc INFO io_regist PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -847,7 +849,7 @@ EMECConstruction INFO multi-lay EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstruction INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.6S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.38S GeoModelSvc.TileDetectorTool INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -858,7 +860,7 @@ TileDddbManager INFO n_tilb = TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDescrCnv INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -870,16 +872,18 @@ CaloIDHelper_IDDetDescrCnv INFO in create AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.TileDetectorTool INFO U-shape parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Cs Tube parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Ushape parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO PVT parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Steel parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO CsTube parameter from database is: 0 GeoModelSvc.TileDetectorTool INFO Entering TileAtlasFactory::create() GeoModelSvc.TileDetectorTool INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.TileDetectorTool INFO => New BFingerLengthPos 430.5 @@ -907,7 +911,7 @@ GeoModelSvc.TileDetectorTool INFO Global p GeoModelSvc.TileDetectorTool INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.TileDetectorTool INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrManager INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.17S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.1S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -1031,7 +1035,7 @@ Domain[ROOT_All] 0 0 INFO RootDatabase.open 0 0 INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv 0 0 INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDescrCnv 0 0 INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc 0 0 INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc 0 0 INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID 0 0 INFO initialize_from_dictionary AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK @@ -1045,12 +1049,12 @@ CaloIDHelper_IDDetDescrCnv 0 0 INFO in create AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIdMgrDetDescrCnv 0 0 INFO Finished CaloIdMgrDetDescrCnv 0 0 INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -1072,201 +1076,201 @@ AthenaHiveEventLoopMgr 1 0 INFO ===>>> AthenaHiveEventLoopMgr 2 1 INFO ===>>> start processing event #18126, run #363899 on slot 1, 1 events processed so far <<<=== AthenaHiveEventLoopMgr 3 2 INFO ===>>> start processing event #18127, run #363899 on slot 2, 1 events processed so far <<<=== AthenaHiveEventLoopMgr 4 3 INFO ===>>> start processing event #18128, run #363899 on slot 3, 1 events processed so far <<<=== -AthenaHiveEventLoopMgr 2 1 INFO ===>>> done processing event #18126, run #363899 on slot 1, 2 events processed so far <<<=== -AthenaHiveEventLoopMgr 5 1 INFO ===>>> start processing event #18129, run #363899 on slot 1, 2 events processed so far <<<=== -AthenaHiveEventLoopMgr 1 0 INFO ===>>> done processing event #18125, run #363899 on slot 0, 3 events processed so far <<<=== -AthenaHiveEventLoopMgr 6 0 INFO ===>>> start processing event #18130, run #363899 on slot 0, 3 events processed so far <<<=== -AthenaHiveEventLoopMgr 5 1 INFO ===>>> done processing event #18129, run #363899 on slot 1, 4 events processed so far <<<=== -AthenaHiveEventLoopMgr 7 1 INFO ===>>> start processing event #18131, run #363899 on slot 1, 4 events processed so far <<<=== -AthenaHiveEventLoopMgr 3 2 INFO ===>>> done processing event #18127, run #363899 on slot 2, 5 events processed so far <<<=== -AthenaHiveEventLoopMgr 8 2 INFO ===>>> start processing event #18132, run #363899 on slot 2, 5 events processed so far <<<=== -AthenaHiveEventLoopMgr 6 0 INFO ===>>> done processing event #18130, run #363899 on slot 0, 6 events processed so far <<<=== -AthenaHiveEventLoopMgr 4 3 INFO ===>>> done processing event #18128, run #363899 on slot 3, 7 events processed so far <<<=== -AthenaHiveEventLoopMgr 9 0 INFO ===>>> start processing event #18133, run #363899 on slot 0, 7 events processed so far <<<=== -AthenaHiveEventLoopMgr 10 3 INFO ===>>> start processing event #18134, run #363899 on slot 3, 7 events processed so far <<<=== -AthenaHiveEventLoopMgr 7 1 INFO ===>>> done processing event #18131, run #363899 on slot 1, 8 events processed so far <<<=== -AthenaHiveEventLoopMgr 8 2 INFO ===>>> done processing event #18132, run #363899 on slot 2, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 11 1 INFO ===>>> start processing event #18135, run #363899 on slot 1, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 12 2 INFO ===>>> start processing event #18136, run #363899 on slot 2, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 9 0 INFO ===>>> done processing event #18133, run #363899 on slot 0, 10 events processed so far <<<=== -AthenaHiveEventLoopMgr 10 3 INFO ===>>> done processing event #18134, run #363899 on slot 3, 11 events processed so far <<<=== -AthenaHiveEventLoopMgr 13 0 INFO ===>>> start processing event #18137, run #363899 on slot 0, 11 events processed so far <<<=== -AthenaHiveEventLoopMgr 14 3 INFO ===>>> start processing event #18138, run #363899 on slot 3, 11 events processed so far <<<=== -AthenaHiveEventLoopMgr 11 1 INFO ===>>> done processing event #18135, run #363899 on slot 1, 12 events processed so far <<<=== -AthenaHiveEventLoopMgr 12 2 INFO ===>>> done processing event #18136, run #363899 on slot 2, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 15 1 INFO ===>>> start processing event #18139, run #363899 on slot 1, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 16 2 INFO ===>>> start processing event #18140, run #363899 on slot 2, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 13 0 INFO ===>>> done processing event #18137, run #363899 on slot 0, 14 events processed so far <<<=== -AthenaHiveEventLoopMgr 14 3 INFO ===>>> done processing event #18138, run #363899 on slot 3, 15 events processed so far <<<=== -AthenaHiveEventLoopMgr 17 0 INFO ===>>> start processing event #18141, run #363899 on slot 0, 15 events processed so far <<<=== -AthenaHiveEventLoopMgr 18 3 INFO ===>>> start processing event #18142, run #363899 on slot 3, 15 events processed so far <<<=== -AthenaHiveEventLoopMgr 15 1 INFO ===>>> done processing event #18139, run #363899 on slot 1, 16 events processed so far <<<=== -AthenaHiveEventLoopMgr 16 2 INFO ===>>> done processing event #18140, run #363899 on slot 2, 17 events processed so far <<<=== +AthenaHiveEventLoopMgr 1 0 INFO ===>>> done processing event #18125, run #363899 on slot 0, 2 events processed so far <<<=== +AthenaHiveEventLoopMgr 5 0 INFO ===>>> start processing event #18129, run #363899 on slot 0, 2 events processed so far <<<=== +AthenaHiveEventLoopMgr 4 3 INFO ===>>> done processing event #18128, run #363899 on slot 3, 3 events processed so far <<<=== +AthenaHiveEventLoopMgr 6 3 INFO ===>>> start processing event #18130, run #363899 on slot 3, 3 events processed so far <<<=== +AthenaHiveEventLoopMgr 5 0 INFO ===>>> done processing event #18129, run #363899 on slot 0, 4 events processed so far <<<=== +AthenaHiveEventLoopMgr 7 0 INFO ===>>> start processing event #18131, run #363899 on slot 0, 4 events processed so far <<<=== +AthenaHiveEventLoopMgr 2 1 INFO ===>>> done processing event #18126, run #363899 on slot 1, 5 events processed so far <<<=== +AthenaHiveEventLoopMgr 8 1 INFO ===>>> start processing event #18132, run #363899 on slot 1, 5 events processed so far <<<=== +AthenaHiveEventLoopMgr 6 3 INFO ===>>> done processing event #18130, run #363899 on slot 3, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr 9 3 INFO ===>>> start processing event #18133, run #363899 on slot 3, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr 3 2 INFO ===>>> done processing event #18127, run #363899 on slot 2, 7 events processed so far <<<=== +AthenaHiveEventLoopMgr 7 0 INFO ===>>> done processing event #18131, run #363899 on slot 0, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 10 0 INFO ===>>> start processing event #18134, run #363899 on slot 0, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 11 2 INFO ===>>> start processing event #18135, run #363899 on slot 2, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 8 1 INFO ===>>> done processing event #18132, run #363899 on slot 1, 9 events processed so far <<<=== +AthenaHiveEventLoopMgr 12 1 INFO ===>>> start processing event #18136, run #363899 on slot 1, 9 events processed so far <<<=== +AthenaHiveEventLoopMgr 9 3 INFO ===>>> done processing event #18133, run #363899 on slot 3, 10 events processed so far <<<=== +AthenaHiveEventLoopMgr 13 3 INFO ===>>> start processing event #18137, run #363899 on slot 3, 10 events processed so far <<<=== +AthenaHiveEventLoopMgr 10 0 INFO ===>>> done processing event #18134, run #363899 on slot 0, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr 11 2 INFO ===>>> done processing event #18135, run #363899 on slot 2, 12 events processed so far <<<=== +AthenaHiveEventLoopMgr 14 0 INFO ===>>> start processing event #18138, run #363899 on slot 0, 12 events processed so far <<<=== +AthenaHiveEventLoopMgr 15 2 INFO ===>>> start processing event #18139, run #363899 on slot 2, 12 events processed so far <<<=== +AthenaHiveEventLoopMgr 12 1 INFO ===>>> done processing event #18136, run #363899 on slot 1, 13 events processed so far <<<=== +AthenaHiveEventLoopMgr 13 3 INFO ===>>> done processing event #18137, run #363899 on slot 3, 14 events processed so far <<<=== +AthenaHiveEventLoopMgr 16 1 INFO ===>>> start processing event #18140, run #363899 on slot 1, 14 events processed so far <<<=== +AthenaHiveEventLoopMgr 17 3 INFO ===>>> start processing event #18141, run #363899 on slot 3, 14 events processed so far <<<=== +AthenaHiveEventLoopMgr 14 0 INFO ===>>> done processing event #18138, run #363899 on slot 0, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr 18 0 INFO ===>>> start processing event #18142, run #363899 on slot 0, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr 15 2 INFO ===>>> done processing event #18139, run #363899 on slot 2, 16 events processed so far <<<=== +AthenaHiveEventLoopMgr 16 1 INFO ===>>> done processing event #18140, run #363899 on slot 1, 17 events processed so far <<<=== AthenaHiveEventLoopMgr 19 1 INFO ===>>> start processing event #18143, run #363899 on slot 1, 17 events processed so far <<<=== AthenaHiveEventLoopMgr 20 2 INFO ===>>> start processing event #18144, run #363899 on slot 2, 17 events processed so far <<<=== -AthenaHiveEventLoopMgr 17 0 INFO ===>>> done processing event #18141, run #363899 on slot 0, 18 events processed so far <<<=== -AthenaHiveEventLoopMgr 18 3 INFO ===>>> done processing event #18142, run #363899 on slot 3, 19 events processed so far <<<=== -AthenaHiveEventLoopMgr 21 0 INFO ===>>> start processing event #18145, run #363899 on slot 0, 19 events processed so far <<<=== -AthenaHiveEventLoopMgr 22 3 INFO ===>>> start processing event #18146, run #363899 on slot 3, 19 events processed so far <<<=== +AthenaHiveEventLoopMgr 17 3 INFO ===>>> done processing event #18141, run #363899 on slot 3, 18 events processed so far <<<=== +AthenaHiveEventLoopMgr 21 3 INFO ===>>> start processing event #18145, run #363899 on slot 3, 18 events processed so far <<<=== +AthenaHiveEventLoopMgr 18 0 INFO ===>>> done processing event #18142, run #363899 on slot 0, 19 events processed so far <<<=== AthenaHiveEventLoopMgr 19 1 INFO ===>>> done processing event #18143, run #363899 on slot 1, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr 22 0 INFO ===>>> start processing event #18146, run #363899 on slot 0, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr 23 1 INFO ===>>> start processing event #18147, run #363899 on slot 1, 20 events processed so far <<<=== AthenaHiveEventLoopMgr 20 2 INFO ===>>> done processing event #18144, run #363899 on slot 2, 21 events processed so far <<<=== -AthenaHiveEventLoopMgr 23 1 INFO ===>>> start processing event #18147, run #363899 on slot 1, 21 events processed so far <<<=== -AthenaHiveEventLoopMgr 24 2 INFO ===>>> start processing event #18148, run #363899 on slot 2, 21 events processed so far <<<=== -AthenaHiveEventLoopMgr 21 0 INFO ===>>> done processing event #18145, run #363899 on slot 0, 22 events processed so far <<<=== -AthenaHiveEventLoopMgr 22 3 INFO ===>>> done processing event #18146, run #363899 on slot 3, 23 events processed so far <<<=== -AthenaHiveEventLoopMgr 25 0 INFO ===>>> start processing event #18149, run #363899 on slot 0, 23 events processed so far <<<=== -AthenaHiveEventLoopMgr 26 3 INFO ===>>> start processing event #18150, run #363899 on slot 3, 23 events processed so far <<<=== -AthenaHiveEventLoopMgr 23 1 INFO ===>>> done processing event #18147, run #363899 on slot 1, 24 events processed so far <<<=== -AthenaHiveEventLoopMgr 24 2 INFO ===>>> done processing event #18148, run #363899 on slot 2, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 27 1 INFO ===>>> start processing event #18151, run #363899 on slot 1, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 28 2 INFO ===>>> start processing event #18152, run #363899 on slot 2, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 25 0 INFO ===>>> done processing event #18149, run #363899 on slot 0, 26 events processed so far <<<=== -AthenaHiveEventLoopMgr 26 3 INFO ===>>> done processing event #18150, run #363899 on slot 3, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 29 0 INFO ===>>> start processing event #18153, run #363899 on slot 0, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 30 3 INFO ===>>> start processing event #18154, run #363899 on slot 3, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 27 1 INFO ===>>> done processing event #18151, run #363899 on slot 1, 28 events processed so far <<<=== -AthenaHiveEventLoopMgr 28 2 INFO ===>>> done processing event #18152, run #363899 on slot 2, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 31 1 INFO ===>>> start processing event #18155, run #363899 on slot 1, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 32 2 INFO ===>>> start processing event #18156, run #363899 on slot 2, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 29 0 INFO ===>>> done processing event #18153, run #363899 on slot 0, 30 events processed so far <<<=== -AthenaHiveEventLoopMgr 30 3 INFO ===>>> done processing event #18154, run #363899 on slot 3, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 33 0 INFO ===>>> start processing event #18157, run #363899 on slot 0, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 34 3 INFO ===>>> start processing event #18158, run #363899 on slot 3, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 31 1 INFO ===>>> done processing event #18155, run #363899 on slot 1, 32 events processed so far <<<=== -AthenaHiveEventLoopMgr 32 2 INFO ===>>> done processing event #18156, run #363899 on slot 2, 33 events processed so far <<<=== +AthenaHiveEventLoopMgr 21 3 INFO ===>>> done processing event #18145, run #363899 on slot 3, 22 events processed so far <<<=== +AthenaHiveEventLoopMgr 24 2 INFO ===>>> start processing event #18148, run #363899 on slot 2, 22 events processed so far <<<=== +AthenaHiveEventLoopMgr 25 3 INFO ===>>> start processing event #18149, run #363899 on slot 3, 22 events processed so far <<<=== +AthenaHiveEventLoopMgr 22 0 INFO ===>>> done processing event #18146, run #363899 on slot 0, 23 events processed so far <<<=== +AthenaHiveEventLoopMgr 26 0 INFO ===>>> start processing event #18150, run #363899 on slot 0, 23 events processed so far <<<=== +AthenaHiveEventLoopMgr 24 2 INFO ===>>> done processing event #18148, run #363899 on slot 2, 24 events processed so far <<<=== +AthenaHiveEventLoopMgr 27 2 INFO ===>>> start processing event #18151, run #363899 on slot 2, 24 events processed so far <<<=== +AthenaHiveEventLoopMgr 25 3 INFO ===>>> done processing event #18149, run #363899 on slot 3, 25 events processed so far <<<=== +AthenaHiveEventLoopMgr 23 1 INFO ===>>> done processing event #18147, run #363899 on slot 1, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 28 1 INFO ===>>> start processing event #18152, run #363899 on slot 1, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 29 3 INFO ===>>> start processing event #18153, run #363899 on slot 3, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 26 0 INFO ===>>> done processing event #18150, run #363899 on slot 0, 27 events processed so far <<<=== +AthenaHiveEventLoopMgr 30 0 INFO ===>>> start processing event #18154, run #363899 on slot 0, 27 events processed so far <<<=== +AthenaHiveEventLoopMgr 27 2 INFO ===>>> done processing event #18151, run #363899 on slot 2, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 31 2 INFO ===>>> start processing event #18155, run #363899 on slot 2, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 28 1 INFO ===>>> done processing event #18152, run #363899 on slot 1, 29 events processed so far <<<=== +AthenaHiveEventLoopMgr 29 3 INFO ===>>> done processing event #18153, run #363899 on slot 3, 30 events processed so far <<<=== +AthenaHiveEventLoopMgr 32 1 INFO ===>>> start processing event #18156, run #363899 on slot 1, 30 events processed so far <<<=== +AthenaHiveEventLoopMgr 33 3 INFO ===>>> start processing event #18157, run #363899 on slot 3, 30 events processed so far <<<=== +AthenaHiveEventLoopMgr 30 0 INFO ===>>> done processing event #18154, run #363899 on slot 0, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 34 0 INFO ===>>> start processing event #18158, run #363899 on slot 0, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 31 2 INFO ===>>> done processing event #18155, run #363899 on slot 2, 32 events processed so far <<<=== +AthenaHiveEventLoopMgr 32 1 INFO ===>>> done processing event #18156, run #363899 on slot 1, 33 events processed so far <<<=== AthenaHiveEventLoopMgr 35 1 INFO ===>>> start processing event #18159, run #363899 on slot 1, 33 events processed so far <<<=== AthenaHiveEventLoopMgr 36 2 INFO ===>>> start processing event #18160, run #363899 on slot 2, 33 events processed so far <<<=== -AthenaHiveEventLoopMgr 33 0 INFO ===>>> done processing event #18157, run #363899 on slot 0, 34 events processed so far <<<=== -AthenaHiveEventLoopMgr 34 3 INFO ===>>> done processing event #18158, run #363899 on slot 3, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 37 0 INFO ===>>> start processing event #18161, run #363899 on slot 0, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 38 3 INFO ===>>> start processing event #18162, run #363899 on slot 3, 35 events processed so far <<<=== +AthenaHiveEventLoopMgr 33 3 INFO ===>>> done processing event #18157, run #363899 on slot 3, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 37 3 INFO ===>>> start processing event #18161, run #363899 on slot 3, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 34 0 INFO ===>>> done processing event #18158, run #363899 on slot 0, 35 events processed so far <<<=== +AthenaHiveEventLoopMgr 38 0 INFO ===>>> start processing event #18162, run #363899 on slot 0, 35 events processed so far <<<=== AthenaHiveEventLoopMgr 35 1 INFO ===>>> done processing event #18159, run #363899 on slot 1, 36 events processed so far <<<=== +AthenaHiveEventLoopMgr 39 1 INFO ===>>> start processing event #18163, run #363899 on slot 1, 36 events processed so far <<<=== AthenaHiveEventLoopMgr 36 2 INFO ===>>> done processing event #18160, run #363899 on slot 2, 37 events processed so far <<<=== -AthenaHiveEventLoopMgr 39 1 INFO ===>>> start processing event #18163, run #363899 on slot 1, 37 events processed so far <<<=== AthenaHiveEventLoopMgr 40 2 INFO ===>>> start processing event #18164, run #363899 on slot 2, 37 events processed so far <<<=== -AthenaHiveEventLoopMgr 37 0 INFO ===>>> done processing event #18161, run #363899 on slot 0, 38 events processed so far <<<=== -AthenaHiveEventLoopMgr 38 3 INFO ===>>> done processing event #18162, run #363899 on slot 3, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 41 0 INFO ===>>> start processing event #18165, run #363899 on slot 0, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 42 3 INFO ===>>> start processing event #18166, run #363899 on slot 3, 39 events processed so far <<<=== +AthenaHiveEventLoopMgr 37 3 INFO ===>>> done processing event #18161, run #363899 on slot 3, 38 events processed so far <<<=== +AthenaHiveEventLoopMgr 41 3 INFO ===>>> start processing event #18165, run #363899 on slot 3, 38 events processed so far <<<=== +AthenaHiveEventLoopMgr 38 0 INFO ===>>> done processing event #18162, run #363899 on slot 0, 39 events processed so far <<<=== AthenaHiveEventLoopMgr 39 1 INFO ===>>> done processing event #18163, run #363899 on slot 1, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 42 0 INFO ===>>> start processing event #18166, run #363899 on slot 0, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 43 1 INFO ===>>> start processing event #18167, run #363899 on slot 1, 40 events processed so far <<<=== AthenaHiveEventLoopMgr 40 2 INFO ===>>> done processing event #18164, run #363899 on slot 2, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 43 1 INFO ===>>> start processing event #18167, run #363899 on slot 1, 41 events processed so far <<<=== AthenaHiveEventLoopMgr 44 2 INFO ===>>> start processing event #18168, run #363899 on slot 2, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 41 0 INFO ===>>> done processing event #18165, run #363899 on slot 0, 42 events processed so far <<<=== -AthenaHiveEventLoopMgr 42 3 INFO ===>>> done processing event #18166, run #363899 on slot 3, 43 events processed so far <<<=== -AthenaHiveEventLoopMgr 45 0 INFO ===>>> start processing event #18169, run #363899 on slot 0, 43 events processed so far <<<=== -AthenaHiveEventLoopMgr 46 3 INFO ===>>> start processing event #18170, run #363899 on slot 3, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 41 3 INFO ===>>> done processing event #18165, run #363899 on slot 3, 42 events processed so far <<<=== +AthenaHiveEventLoopMgr 45 3 INFO ===>>> start processing event #18169, run #363899 on slot 3, 42 events processed so far <<<=== +AthenaHiveEventLoopMgr 42 0 INFO ===>>> done processing event #18166, run #363899 on slot 0, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 46 0 INFO ===>>> start processing event #18170, run #363899 on slot 0, 43 events processed so far <<<=== AthenaHiveEventLoopMgr 43 1 INFO ===>>> done processing event #18167, run #363899 on slot 1, 44 events processed so far <<<=== AthenaHiveEventLoopMgr 44 2 INFO ===>>> done processing event #18168, run #363899 on slot 2, 45 events processed so far <<<=== AthenaHiveEventLoopMgr 47 1 INFO ===>>> start processing event #18171, run #363899 on slot 1, 45 events processed so far <<<=== AthenaHiveEventLoopMgr 48 2 INFO ===>>> start processing event #18172, run #363899 on slot 2, 45 events processed so far <<<=== -AthenaHiveEventLoopMgr 45 0 INFO ===>>> done processing event #18169, run #363899 on slot 0, 46 events processed so far <<<=== -AthenaHiveEventLoopMgr 46 3 INFO ===>>> done processing event #18170, run #363899 on slot 3, 47 events processed so far <<<=== -AthenaHiveEventLoopMgr 49 0 INFO ===>>> start processing event #18173, run #363899 on slot 0, 47 events processed so far <<<=== -AthenaHiveEventLoopMgr 50 3 INFO ===>>> start processing event #18174, run #363899 on slot 3, 47 events processed so far <<<=== +AthenaHiveEventLoopMgr 45 3 INFO ===>>> done processing event #18169, run #363899 on slot 3, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 49 3 INFO ===>>> start processing event #18173, run #363899 on slot 3, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 46 0 INFO ===>>> done processing event #18170, run #363899 on slot 0, 47 events processed so far <<<=== +AthenaHiveEventLoopMgr 50 0 INFO ===>>> start processing event #18174, run #363899 on slot 0, 47 events processed so far <<<=== AthenaHiveEventLoopMgr 47 1 INFO ===>>> done processing event #18171, run #363899 on slot 1, 48 events processed so far <<<=== +AthenaHiveEventLoopMgr 51 1 INFO ===>>> start processing event #18175, run #363899 on slot 1, 48 events processed so far <<<=== AthenaHiveEventLoopMgr 48 2 INFO ===>>> done processing event #18172, run #363899 on slot 2, 49 events processed so far <<<=== -AthenaHiveEventLoopMgr 51 1 INFO ===>>> start processing event #18175, run #363899 on slot 1, 49 events processed so far <<<=== -AthenaHiveEventLoopMgr 52 2 INFO ===>>> start processing event #18176, run #363899 on slot 2, 49 events processed so far <<<=== -AthenaHiveEventLoopMgr 49 0 INFO ===>>> done processing event #18173, run #363899 on slot 0, 50 events processed so far <<<=== -AthenaHiveEventLoopMgr 50 3 INFO ===>>> done processing event #18174, run #363899 on slot 3, 51 events processed so far <<<=== -AthenaHiveEventLoopMgr 53 0 INFO ===>>> start processing event #18177, run #363899 on slot 0, 51 events processed so far <<<=== -AthenaHiveEventLoopMgr 54 3 INFO ===>>> start processing event #18178, run #363899 on slot 3, 51 events processed so far <<<=== +AthenaHiveEventLoopMgr 49 3 INFO ===>>> done processing event #18173, run #363899 on slot 3, 50 events processed so far <<<=== +AthenaHiveEventLoopMgr 52 2 INFO ===>>> start processing event #18176, run #363899 on slot 2, 50 events processed so far <<<=== +AthenaHiveEventLoopMgr 53 3 INFO ===>>> start processing event #18177, run #363899 on slot 3, 50 events processed so far <<<=== +AthenaHiveEventLoopMgr 50 0 INFO ===>>> done processing event #18174, run #363899 on slot 0, 51 events processed so far <<<=== +AthenaHiveEventLoopMgr 54 0 INFO ===>>> start processing event #18178, run #363899 on slot 0, 51 events processed so far <<<=== AthenaHiveEventLoopMgr 51 1 INFO ===>>> done processing event #18175, run #363899 on slot 1, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 55 1 INFO ===>>> start processing event #18179, run #363899 on slot 1, 52 events processed so far <<<=== AthenaHiveEventLoopMgr 52 2 INFO ===>>> done processing event #18176, run #363899 on slot 2, 53 events processed so far <<<=== -AthenaHiveEventLoopMgr 55 1 INFO ===>>> start processing event #18179, run #363899 on slot 1, 53 events processed so far <<<=== AthenaHiveEventLoopMgr 56 2 INFO ===>>> start processing event #18180, run #363899 on slot 2, 53 events processed so far <<<=== -AthenaHiveEventLoopMgr 53 0 INFO ===>>> done processing event #18177, run #363899 on slot 0, 54 events processed so far <<<=== -AthenaHiveEventLoopMgr 54 3 INFO ===>>> done processing event #18178, run #363899 on slot 3, 55 events processed so far <<<=== +AthenaHiveEventLoopMgr 54 0 INFO ===>>> done processing event #18178, run #363899 on slot 0, 54 events processed so far <<<=== +AthenaHiveEventLoopMgr 53 3 INFO ===>>> done processing event #18177, run #363899 on slot 3, 55 events processed so far <<<=== AthenaHiveEventLoopMgr 57 0 INFO ===>>> start processing event #18181, run #363899 on slot 0, 55 events processed so far <<<=== AthenaHiveEventLoopMgr 58 3 INFO ===>>> start processing event #18182, run #363899 on slot 3, 55 events processed so far <<<=== AthenaHiveEventLoopMgr 55 1 INFO ===>>> done processing event #18179, run #363899 on slot 1, 56 events processed so far <<<=== +AthenaHiveEventLoopMgr 59 1 INFO ===>>> start processing event #18183, run #363899 on slot 1, 56 events processed so far <<<=== AthenaHiveEventLoopMgr 56 2 INFO ===>>> done processing event #18180, run #363899 on slot 2, 57 events processed so far <<<=== -AthenaHiveEventLoopMgr 59 1 INFO ===>>> start processing event #18183, run #363899 on slot 1, 57 events processed so far <<<=== -AthenaHiveEventLoopMgr 60 2 INFO ===>>> start processing event #18184, run #363899 on slot 2, 57 events processed so far <<<=== AthenaHiveEventLoopMgr 57 0 INFO ===>>> done processing event #18181, run #363899 on slot 0, 58 events processed so far <<<=== +AthenaHiveEventLoopMgr 60 0 INFO ===>>> start processing event #18184, run #363899 on slot 0, 58 events processed so far <<<=== +AthenaHiveEventLoopMgr 61 2 INFO ===>>> start processing event #18185, run #363899 on slot 2, 58 events processed so far <<<=== AthenaHiveEventLoopMgr 58 3 INFO ===>>> done processing event #18182, run #363899 on slot 3, 59 events processed so far <<<=== -AthenaHiveEventLoopMgr 61 0 INFO ===>>> start processing event #18185, run #363899 on slot 0, 59 events processed so far <<<=== AthenaHiveEventLoopMgr 62 3 INFO ===>>> start processing event #18186, run #363899 on slot 3, 59 events processed so far <<<=== AthenaHiveEventLoopMgr 59 1 INFO ===>>> done processing event #18183, run #363899 on slot 1, 60 events processed so far <<<=== -AthenaHiveEventLoopMgr 60 2 INFO ===>>> done processing event #18184, run #363899 on slot 2, 61 events processed so far <<<=== -AthenaHiveEventLoopMgr 63 1 INFO ===>>> start processing event #18187, run #363899 on slot 1, 61 events processed so far <<<=== -AthenaHiveEventLoopMgr 64 2 INFO ===>>> start processing event #18188, run #363899 on slot 2, 61 events processed so far <<<=== -AthenaHiveEventLoopMgr 61 0 INFO ===>>> done processing event #18185, run #363899 on slot 0, 62 events processed so far <<<=== +AthenaHiveEventLoopMgr 60 0 INFO ===>>> done processing event #18184, run #363899 on slot 0, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 63 0 INFO ===>>> start processing event #18187, run #363899 on slot 0, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 64 1 INFO ===>>> start processing event #18188, run #363899 on slot 1, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 61 2 INFO ===>>> done processing event #18185, run #363899 on slot 2, 62 events processed so far <<<=== +AthenaHiveEventLoopMgr 65 2 INFO ===>>> start processing event #18189, run #363899 on slot 2, 62 events processed so far <<<=== AthenaHiveEventLoopMgr 62 3 INFO ===>>> done processing event #18186, run #363899 on slot 3, 63 events processed so far <<<=== -AthenaHiveEventLoopMgr 65 0 INFO ===>>> start processing event #18189, run #363899 on slot 0, 63 events processed so far <<<=== AthenaHiveEventLoopMgr 66 3 INFO ===>>> start processing event #18190, run #363899 on slot 3, 63 events processed so far <<<=== -AthenaHiveEventLoopMgr 63 1 INFO ===>>> done processing event #18187, run #363899 on slot 1, 64 events processed so far <<<=== -AthenaHiveEventLoopMgr 64 2 INFO ===>>> done processing event #18188, run #363899 on slot 2, 65 events processed so far <<<=== -AthenaHiveEventLoopMgr 67 1 INFO ===>>> start processing event #18191, run #363899 on slot 1, 65 events processed so far <<<=== -AthenaHiveEventLoopMgr 68 2 INFO ===>>> start processing event #18192, run #363899 on slot 2, 65 events processed so far <<<=== -AthenaHiveEventLoopMgr 65 0 INFO ===>>> done processing event #18189, run #363899 on slot 0, 66 events processed so far <<<=== +AthenaHiveEventLoopMgr 63 0 INFO ===>>> done processing event #18187, run #363899 on slot 0, 64 events processed so far <<<=== +AthenaHiveEventLoopMgr 67 0 INFO ===>>> start processing event #18191, run #363899 on slot 0, 64 events processed so far <<<=== +AthenaHiveEventLoopMgr 64 1 INFO ===>>> done processing event #18188, run #363899 on slot 1, 65 events processed so far <<<=== +AthenaHiveEventLoopMgr 65 2 INFO ===>>> done processing event #18189, run #363899 on slot 2, 66 events processed so far <<<=== +AthenaHiveEventLoopMgr 68 1 INFO ===>>> start processing event #18192, run #363899 on slot 1, 66 events processed so far <<<=== +AthenaHiveEventLoopMgr 69 2 INFO ===>>> start processing event #18193, run #363899 on slot 2, 66 events processed so far <<<=== AthenaHiveEventLoopMgr 66 3 INFO ===>>> done processing event #18190, run #363899 on slot 3, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 69 0 INFO ===>>> start processing event #18193, run #363899 on slot 0, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 70 3 INFO ===>>> start processing event #18194, run #363899 on slot 3, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 67 1 INFO ===>>> done processing event #18191, run #363899 on slot 1, 68 events processed so far <<<=== -AthenaHiveEventLoopMgr 68 2 INFO ===>>> done processing event #18192, run #363899 on slot 2, 69 events processed so far <<<=== -AthenaHiveEventLoopMgr 71 1 INFO ===>>> start processing event #18195, run #363899 on slot 1, 69 events processed so far <<<=== -AthenaHiveEventLoopMgr 72 2 INFO ===>>> start processing event #18196, run #363899 on slot 2, 69 events processed so far <<<=== -AthenaHiveEventLoopMgr 69 0 INFO ===>>> done processing event #18193, run #363899 on slot 0, 70 events processed so far <<<=== -AthenaHiveEventLoopMgr 70 3 INFO ===>>> done processing event #18194, run #363899 on slot 3, 71 events processed so far <<<=== -AthenaHiveEventLoopMgr 73 0 INFO ===>>> start processing event #18197, run #363899 on slot 0, 71 events processed so far <<<=== -AthenaHiveEventLoopMgr 74 3 INFO ===>>> start processing event #18198, run #363899 on slot 3, 71 events processed so far <<<=== -AthenaHiveEventLoopMgr 71 1 INFO ===>>> done processing event #18195, run #363899 on slot 1, 72 events processed so far <<<=== -AthenaHiveEventLoopMgr 72 2 INFO ===>>> done processing event #18196, run #363899 on slot 2, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 75 1 INFO ===>>> start processing event #18199, run #363899 on slot 1, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 76 2 INFO ===>>> start processing event #18200, run #363899 on slot 2, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 73 0 INFO ===>>> done processing event #18197, run #363899 on slot 0, 74 events processed so far <<<=== -AthenaHiveEventLoopMgr 74 3 INFO ===>>> done processing event #18198, run #363899 on slot 3, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 77 0 INFO ===>>> start processing event #18201, run #363899 on slot 0, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 78 3 INFO ===>>> start processing event #18202, run #363899 on slot 3, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 75 1 INFO ===>>> done processing event #18199, run #363899 on slot 1, 76 events processed so far <<<=== -AthenaHiveEventLoopMgr 76 2 INFO ===>>> done processing event #18200, run #363899 on slot 2, 77 events processed so far <<<=== -AthenaHiveEventLoopMgr 79 1 INFO ===>>> start processing event #18203, run #363899 on slot 1, 77 events processed so far <<<=== -AthenaHiveEventLoopMgr 80 2 INFO ===>>> start processing event #18204, run #363899 on slot 2, 77 events processed so far <<<=== -AthenaHiveEventLoopMgr 77 0 INFO ===>>> done processing event #18201, run #363899 on slot 0, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 78 3 INFO ===>>> done processing event #18202, run #363899 on slot 3, 79 events processed so far <<<=== -AthenaHiveEventLoopMgr 81 0 INFO ===>>> start processing event #18205, run #363899 on slot 0, 79 events processed so far <<<=== -AthenaHiveEventLoopMgr 82 3 INFO ===>>> start processing event #18206, run #363899 on slot 3, 79 events processed so far <<<=== -AthenaHiveEventLoopMgr 79 1 INFO ===>>> done processing event #18203, run #363899 on slot 1, 80 events processed so far <<<=== -AthenaHiveEventLoopMgr 80 2 INFO ===>>> done processing event #18204, run #363899 on slot 2, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 83 1 INFO ===>>> start processing event #18207, run #363899 on slot 1, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 84 2 INFO ===>>> start processing event #18208, run #363899 on slot 2, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 81 0 INFO ===>>> done processing event #18205, run #363899 on slot 0, 82 events processed so far <<<=== -AthenaHiveEventLoopMgr 82 3 INFO ===>>> done processing event #18206, run #363899 on slot 3, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 85 0 INFO ===>>> start processing event #18209, run #363899 on slot 0, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 86 3 INFO ===>>> start processing event #18210, run #363899 on slot 3, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 83 1 INFO ===>>> done processing event #18207, run #363899 on slot 1, 84 events processed so far <<<=== -AthenaHiveEventLoopMgr 84 2 INFO ===>>> done processing event #18208, run #363899 on slot 2, 85 events processed so far <<<=== +AthenaHiveEventLoopMgr 67 0 INFO ===>>> done processing event #18191, run #363899 on slot 0, 68 events processed so far <<<=== +AthenaHiveEventLoopMgr 70 0 INFO ===>>> start processing event #18194, run #363899 on slot 0, 68 events processed so far <<<=== +AthenaHiveEventLoopMgr 71 3 INFO ===>>> start processing event #18195, run #363899 on slot 3, 68 events processed so far <<<=== +AthenaHiveEventLoopMgr 68 1 INFO ===>>> done processing event #18192, run #363899 on slot 1, 69 events processed so far <<<=== +AthenaHiveEventLoopMgr 69 2 INFO ===>>> done processing event #18193, run #363899 on slot 2, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 72 1 INFO ===>>> start processing event #18196, run #363899 on slot 1, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 73 2 INFO ===>>> start processing event #18197, run #363899 on slot 2, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 70 0 INFO ===>>> done processing event #18194, run #363899 on slot 0, 71 events processed so far <<<=== +AthenaHiveEventLoopMgr 74 0 INFO ===>>> start processing event #18198, run #363899 on slot 0, 71 events processed so far <<<=== +AthenaHiveEventLoopMgr 71 3 INFO ===>>> done processing event #18195, run #363899 on slot 3, 72 events processed so far <<<=== +AthenaHiveEventLoopMgr 75 3 INFO ===>>> start processing event #18199, run #363899 on slot 3, 72 events processed so far <<<=== +AthenaHiveEventLoopMgr 72 1 INFO ===>>> done processing event #18196, run #363899 on slot 1, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 76 1 INFO ===>>> start processing event #18200, run #363899 on slot 1, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 73 2 INFO ===>>> done processing event #18197, run #363899 on slot 2, 74 events processed so far <<<=== +AthenaHiveEventLoopMgr 77 2 INFO ===>>> start processing event #18201, run #363899 on slot 2, 74 events processed so far <<<=== +AthenaHiveEventLoopMgr 74 0 INFO ===>>> done processing event #18198, run #363899 on slot 0, 75 events processed so far <<<=== +AthenaHiveEventLoopMgr 75 3 INFO ===>>> done processing event #18199, run #363899 on slot 3, 76 events processed so far <<<=== +AthenaHiveEventLoopMgr 78 0 INFO ===>>> start processing event #18202, run #363899 on slot 0, 76 events processed so far <<<=== +AthenaHiveEventLoopMgr 79 3 INFO ===>>> start processing event #18203, run #363899 on slot 3, 76 events processed so far <<<=== +AthenaHiveEventLoopMgr 76 1 INFO ===>>> done processing event #18200, run #363899 on slot 1, 77 events processed so far <<<=== +AthenaHiveEventLoopMgr 80 1 INFO ===>>> start processing event #18204, run #363899 on slot 1, 77 events processed so far <<<=== +AthenaHiveEventLoopMgr 77 2 INFO ===>>> done processing event #18201, run #363899 on slot 2, 78 events processed so far <<<=== +AthenaHiveEventLoopMgr 81 2 INFO ===>>> start processing event #18205, run #363899 on slot 2, 78 events processed so far <<<=== +AthenaHiveEventLoopMgr 78 0 INFO ===>>> done processing event #18202, run #363899 on slot 0, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 82 0 INFO ===>>> start processing event #18206, run #363899 on slot 0, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 79 3 INFO ===>>> done processing event #18203, run #363899 on slot 3, 80 events processed so far <<<=== +AthenaHiveEventLoopMgr 83 3 INFO ===>>> start processing event #18207, run #363899 on slot 3, 80 events processed so far <<<=== +AthenaHiveEventLoopMgr 80 1 INFO ===>>> done processing event #18204, run #363899 on slot 1, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 84 1 INFO ===>>> start processing event #18208, run #363899 on slot 1, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 81 2 INFO ===>>> done processing event #18205, run #363899 on slot 2, 82 events processed so far <<<=== +AthenaHiveEventLoopMgr 85 2 INFO ===>>> start processing event #18209, run #363899 on slot 2, 82 events processed so far <<<=== +AthenaHiveEventLoopMgr 82 0 INFO ===>>> done processing event #18206, run #363899 on slot 0, 83 events processed so far <<<=== +AthenaHiveEventLoopMgr 86 0 INFO ===>>> start processing event #18210, run #363899 on slot 0, 83 events processed so far <<<=== +AthenaHiveEventLoopMgr 84 1 INFO ===>>> done processing event #18208, run #363899 on slot 1, 84 events processed so far <<<=== +AthenaHiveEventLoopMgr 83 3 INFO ===>>> done processing event #18207, run #363899 on slot 3, 85 events processed so far <<<=== AthenaHiveEventLoopMgr 87 1 INFO ===>>> start processing event #18211, run #363899 on slot 1, 85 events processed so far <<<=== -AthenaHiveEventLoopMgr 88 2 INFO ===>>> start processing event #18212, run #363899 on slot 2, 85 events processed so far <<<=== -AthenaHiveEventLoopMgr 85 0 INFO ===>>> done processing event #18209, run #363899 on slot 0, 86 events processed so far <<<=== -AthenaHiveEventLoopMgr 86 3 INFO ===>>> done processing event #18210, run #363899 on slot 3, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 89 0 INFO ===>>> start processing event #18213, run #363899 on slot 0, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 90 3 INFO ===>>> start processing event #18214, run #363899 on slot 3, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 88 3 INFO ===>>> start processing event #18212, run #363899 on slot 3, 85 events processed so far <<<=== +AthenaHiveEventLoopMgr 85 2 INFO ===>>> done processing event #18209, run #363899 on slot 2, 86 events processed so far <<<=== +AthenaHiveEventLoopMgr 89 2 INFO ===>>> start processing event #18213, run #363899 on slot 2, 86 events processed so far <<<=== +AthenaHiveEventLoopMgr 86 0 INFO ===>>> done processing event #18210, run #363899 on slot 0, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 90 0 INFO ===>>> start processing event #18214, run #363899 on slot 0, 87 events processed so far <<<=== AthenaHiveEventLoopMgr 87 1 INFO ===>>> done processing event #18211, run #363899 on slot 1, 88 events processed so far <<<=== -AthenaHiveEventLoopMgr 88 2 INFO ===>>> done processing event #18212, run #363899 on slot 2, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 91 1 INFO ===>>> start processing event #18215, run #363899 on slot 1, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 92 2 INFO ===>>> start processing event #18216, run #363899 on slot 2, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 89 0 INFO ===>>> done processing event #18213, run #363899 on slot 0, 90 events processed so far <<<=== -AthenaHiveEventLoopMgr 90 3 INFO ===>>> done processing event #18214, run #363899 on slot 3, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 93 0 INFO ===>>> start processing event #18217, run #363899 on slot 0, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 94 3 INFO ===>>> start processing event #18218, run #363899 on slot 3, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 91 1 INFO ===>>> start processing event #18215, run #363899 on slot 1, 88 events processed so far <<<=== +AthenaHiveEventLoopMgr 88 3 INFO ===>>> done processing event #18212, run #363899 on slot 3, 89 events processed so far <<<=== +AthenaHiveEventLoopMgr 89 2 INFO ===>>> done processing event #18213, run #363899 on slot 2, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 92 2 INFO ===>>> start processing event #18216, run #363899 on slot 2, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 93 3 INFO ===>>> start processing event #18217, run #363899 on slot 3, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 90 0 INFO ===>>> done processing event #18214, run #363899 on slot 0, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 94 0 INFO ===>>> start processing event #18218, run #363899 on slot 0, 91 events processed so far <<<=== AthenaHiveEventLoopMgr 91 1 INFO ===>>> done processing event #18215, run #363899 on slot 1, 92 events processed so far <<<=== +AthenaHiveEventLoopMgr 95 1 INFO ===>>> start processing event #18219, run #363899 on slot 1, 92 events processed so far <<<=== AthenaHiveEventLoopMgr 92 2 INFO ===>>> done processing event #18216, run #363899 on slot 2, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 95 1 INFO ===>>> start processing event #18219, run #363899 on slot 1, 93 events processed so far <<<=== AthenaHiveEventLoopMgr 96 2 INFO ===>>> start processing event #18220, run #363899 on slot 2, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 93 0 INFO ===>>> done processing event #18217, run #363899 on slot 0, 94 events processed so far <<<=== -AthenaHiveEventLoopMgr 94 3 INFO ===>>> done processing event #18218, run #363899 on slot 3, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 97 0 INFO ===>>> start processing event #18221, run #363899 on slot 0, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 98 3 INFO ===>>> start processing event #18222, run #363899 on slot 3, 95 events processed so far <<<=== +AthenaHiveEventLoopMgr 93 3 INFO ===>>> done processing event #18217, run #363899 on slot 3, 94 events processed so far <<<=== +AthenaHiveEventLoopMgr 97 3 INFO ===>>> start processing event #18221, run #363899 on slot 3, 94 events processed so far <<<=== +AthenaHiveEventLoopMgr 94 0 INFO ===>>> done processing event #18218, run #363899 on slot 0, 95 events processed so far <<<=== +AthenaHiveEventLoopMgr 98 0 INFO ===>>> start processing event #18222, run #363899 on slot 0, 95 events processed so far <<<=== AthenaHiveEventLoopMgr 95 1 INFO ===>>> done processing event #18219, run #363899 on slot 1, 96 events processed so far <<<=== +AthenaHiveEventLoopMgr 99 1 INFO ===>>> start processing event #18223, run #363899 on slot 1, 96 events processed so far <<<=== AthenaHiveEventLoopMgr 96 2 INFO ===>>> done processing event #18220, run #363899 on slot 2, 97 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 1 INFO ===>>> start processing event #18223, run #363899 on slot 1, 97 events processed so far <<<=== -AthenaHiveEventLoopMgr 97 0 INFO ===>>> done processing event #18221, run #363899 on slot 0, 98 events processed so far <<<=== -AthenaHiveEventLoopMgr 98 3 INFO ===>>> done processing event #18222, run #363899 on slot 3, 99 events processed so far <<<=== +AthenaHiveEventLoopMgr 97 3 INFO ===>>> done processing event #18221, run #363899 on slot 3, 98 events processed so far <<<=== +AthenaHiveEventLoopMgr 98 0 INFO ===>>> done processing event #18222, run #363899 on slot 0, 99 events processed so far <<<=== AthenaHiveEventLoopMgr 99 1 INFO ===>>> done processing event #18223, run #363899 on slot 1, 100 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 1 INFO ---> Loop Finished (seconds): 0.914641 +AthenaHiveEventLoopMgr 99 1 INFO ---> Loop Finished (seconds): 0.449268 Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] ApplicationMgr INFO Application Manager Stopped successfully SGInputLoader INFO Finalizing SGInputLoader... @@ -1277,7 +1281,7 @@ AvalancheSchedulerSvc INFO Joining S PyComponentMgr INFO Finalizing PyComponentMgr... EventDataSvc INFO Finalizing EventDataSvc IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.03 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s @@ -1290,9 +1294,9 @@ IOVDbFolder INFO Folder /T IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 0.01 ))s -IOVDbSvc INFO bytes in (( 0.04 ))s +IOVDbSvc INFO bytes in (( 0.03 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.04 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.03 ))s IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 1 nFolders: 11 ReadTime: (( 0.00 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc @@ -1302,9 +1306,9 @@ ToolSvc.ByteStreamMetadataTool INFO in finali *****Chrono***** INFO WARNING: MT job; statistics are unreliable *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 170 [ms] Ave/Min/Max= 85(+- 75)/ 10/ 160 [ms] #= 2 -cObj_ALL INFO Time User : Tot= 240 [ms] Ave/Min/Max= 120(+- 60)/ 60/ 180 [ms] #= 2 -ChronoStatSvc INFO Time User : Tot= 4.36 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 90 [ms] Ave/Min/Max= 45(+- 45)/ 0/ 90 [ms] #= 2 +cObj_ALL INFO Time User : Tot= 110 [ms] Ave/Min/Max= 55(+- 45)/ 10/ 100 [ms] #= 2 +ChronoStatSvc INFO Time User : Tot= 2.18 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.finalize() INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileMuRcvContByteStreamCnv_test.ref b/TileCalorimeter/TileSvc/TileByteStream/share/TileMuRcvContByteStreamCnv_test.ref index 663669d0f30a7e49a431548c2d91ffd4495a761e..ef97d9259483abc4da7b26aa867603a131d86bd8 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/share/TileMuRcvContByteStreamCnv_test.ref +++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileMuRcvContByteStreamCnv_test.ref @@ -1,16 +1,16 @@ -Sun Aug 22 06:50:53 CEST 2021 +Mon Sep 6 17:25:02 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/b78ddd66878] -- built on [2021-08-22T0649] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileMuRcvContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 4 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sun Aug 22 06:51:08 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:25:07 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -189,7 +189,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.6S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.36S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -200,7 +200,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -212,16 +212,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -249,7 +251,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.16S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.13S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -356,7 +358,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -370,12 +372,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -624,23 +626,23 @@ Finalizer INFO Finalizing Finalizer... Finalize: compared 10 dumps PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/104912 (( 0.26 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/104912 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641536 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/43176 (( 0.04 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641536 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/43176 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.03 ))s -IOVDbSvc INFO bytes in (( 0.60 ))s +IOVDbSvc INFO bytes in (( 0.33 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.07 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.52 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.05 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.28 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.TileMuR... INFO Finalizing TileMuRcvContByteStreamTool successfuly @@ -649,18 +651,18 @@ ToolSvc.ByteStr... INFO in finalize() *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 140 [ms] Ave/Min/Max= 35(+- 60.6)/ 0/ 140 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 190 [ms] Ave/Min/Max= 12.7(+- 40.1)/ 0/ 160 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 4.2 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 70 [ms] Ave/Min/Max= 17.5(+- 30.3)/ 0/ 70 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 90 [ms] Ave/Min/Max= 6(+- 19.9)/ 0/ 80 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 2.27 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully ApplicationMgr INFO Application Manager Terminated successfully Py:Athena INFO leaving with code 0: "successful run" -Sun Aug 22 06:51:18 CEST 2021 +Mon Sep 6 17:25:12 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/b78ddd66878] -- built on [2021-08-22T0649] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO configuring AthenaHive with [4] concurrent threads and [4] concurrent events @@ -669,9 +671,9 @@ Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileMuRcvContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 4 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -690,7 +692,7 @@ MessageSvc INFO Activating in a separate thread ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sun Aug 22 06:51:31 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:25:17 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -702,8 +704,8 @@ PoolSvc INFO io_regist PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -851,7 +853,7 @@ EMECConstruction INFO multi-lay EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstruction INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.53S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.36S GeoModelSvc.TileDetectorTool INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -862,7 +864,7 @@ TileDddbManager INFO n_tilb = TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDescrCnv INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -874,16 +876,18 @@ CaloIDHelper_IDDetDescrCnv INFO in create AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.TileDetectorTool INFO U-shape parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Cs Tube parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Ushape parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO PVT parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Steel parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO CsTube parameter from database is: 0 GeoModelSvc.TileDetectorTool INFO Entering TileAtlasFactory::create() GeoModelSvc.TileDetectorTool INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.TileDetectorTool INFO => New BFingerLengthPos 430.5 @@ -911,7 +915,7 @@ GeoModelSvc.TileDetectorTool INFO Global p GeoModelSvc.TileDetectorTool INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.TileDetectorTool INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrManager INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.15S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.11S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -1035,7 +1039,7 @@ Domain[ROOT_All] 0 0 INFO RootDatabase.open 0 0 INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv 0 0 INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDescrCnv 0 0 INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc 0 0 INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc 0 0 INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID 0 0 INFO initialize_from_dictionary AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK @@ -1049,12 +1053,12 @@ CaloIDHelper_IDDetDescrCnv 0 0 INFO in create AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIdMgrDetDescrCnv 0 0 INFO Finished CaloIdMgrDetDescrCnv 0 0 INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -1077,201 +1081,201 @@ AthenaHiveEventLoopMgr 1 0 INFO ===>>> AthenaHiveEventLoopMgr 2 1 INFO ===>>> start processing event #18126, run #363899 on slot 1, 1 events processed so far <<<=== AthenaHiveEventLoopMgr 3 2 INFO ===>>> start processing event #18127, run #363899 on slot 2, 1 events processed so far <<<=== AthenaHiveEventLoopMgr 4 3 INFO ===>>> start processing event #18128, run #363899 on slot 3, 1 events processed so far <<<=== -AthenaHiveEventLoopMgr 1 0 INFO ===>>> done processing event #18125, run #363899 on slot 0, 2 events processed so far <<<=== -AthenaHiveEventLoopMgr 2 1 INFO ===>>> done processing event #18126, run #363899 on slot 1, 3 events processed so far <<<=== +AthenaHiveEventLoopMgr 4 3 INFO ===>>> done processing event #18128, run #363899 on slot 3, 2 events processed so far <<<=== +AthenaHiveEventLoopMgr 1 0 INFO ===>>> done processing event #18125, run #363899 on slot 0, 3 events processed so far <<<=== AthenaHiveEventLoopMgr 5 0 INFO ===>>> start processing event #18129, run #363899 on slot 0, 3 events processed so far <<<=== -AthenaHiveEventLoopMgr 6 1 INFO ===>>> start processing event #18130, run #363899 on slot 1, 3 events processed so far <<<=== +AthenaHiveEventLoopMgr 6 3 INFO ===>>> start processing event #18130, run #363899 on slot 3, 3 events processed so far <<<=== AthenaHiveEventLoopMgr 3 2 INFO ===>>> done processing event #18127, run #363899 on slot 2, 4 events processed so far <<<=== -AthenaHiveEventLoopMgr 4 3 INFO ===>>> done processing event #18128, run #363899 on slot 3, 5 events processed so far <<<=== -AthenaHiveEventLoopMgr 7 2 INFO ===>>> start processing event #18131, run #363899 on slot 2, 5 events processed so far <<<=== -AthenaHiveEventLoopMgr 8 3 INFO ===>>> start processing event #18132, run #363899 on slot 3, 5 events processed so far <<<=== -AthenaHiveEventLoopMgr 6 1 INFO ===>>> done processing event #18130, run #363899 on slot 1, 6 events processed so far <<<=== -AthenaHiveEventLoopMgr 9 1 INFO ===>>> start processing event #18133, run #363899 on slot 1, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr 7 2 INFO ===>>> start processing event #18131, run #363899 on slot 2, 4 events processed so far <<<=== +AthenaHiveEventLoopMgr 2 1 INFO ===>>> done processing event #18126, run #363899 on slot 1, 5 events processed so far <<<=== +AthenaHiveEventLoopMgr 8 1 INFO ===>>> start processing event #18132, run #363899 on slot 1, 5 events processed so far <<<=== +AthenaHiveEventLoopMgr 5 0 INFO ===>>> done processing event #18129, run #363899 on slot 0, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr 9 0 INFO ===>>> start processing event #18133, run #363899 on slot 0, 6 events processed so far <<<=== AthenaHiveEventLoopMgr 7 2 INFO ===>>> done processing event #18131, run #363899 on slot 2, 7 events processed so far <<<=== -AthenaHiveEventLoopMgr 5 0 INFO ===>>> done processing event #18129, run #363899 on slot 0, 8 events processed so far <<<=== -AthenaHiveEventLoopMgr 8 3 INFO ===>>> done processing event #18132, run #363899 on slot 3, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 10 0 INFO ===>>> start processing event #18134, run #363899 on slot 0, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 11 2 INFO ===>>> start processing event #18135, run #363899 on slot 2, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 12 3 INFO ===>>> start processing event #18136, run #363899 on slot 3, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 9 1 INFO ===>>> done processing event #18133, run #363899 on slot 1, 10 events processed so far <<<=== +AthenaHiveEventLoopMgr 6 3 INFO ===>>> done processing event #18130, run #363899 on slot 3, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 10 2 INFO ===>>> start processing event #18134, run #363899 on slot 2, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 11 3 INFO ===>>> start processing event #18135, run #363899 on slot 3, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 8 1 INFO ===>>> done processing event #18132, run #363899 on slot 1, 9 events processed so far <<<=== +AthenaHiveEventLoopMgr 9 0 INFO ===>>> done processing event #18133, run #363899 on slot 0, 10 events processed so far <<<=== +AthenaHiveEventLoopMgr 12 0 INFO ===>>> start processing event #18136, run #363899 on slot 0, 10 events processed so far <<<=== AthenaHiveEventLoopMgr 13 1 INFO ===>>> start processing event #18137, run #363899 on slot 1, 10 events processed so far <<<=== -AthenaHiveEventLoopMgr 10 0 INFO ===>>> done processing event #18134, run #363899 on slot 0, 11 events processed so far <<<=== -AthenaHiveEventLoopMgr 11 2 INFO ===>>> done processing event #18135, run #363899 on slot 2, 12 events processed so far <<<=== -AthenaHiveEventLoopMgr 12 3 INFO ===>>> done processing event #18136, run #363899 on slot 3, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 14 0 INFO ===>>> start processing event #18138, run #363899 on slot 0, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 15 2 INFO ===>>> start processing event #18139, run #363899 on slot 2, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 16 3 INFO ===>>> start processing event #18140, run #363899 on slot 3, 13 events processed so far <<<=== +AthenaHiveEventLoopMgr 10 2 INFO ===>>> done processing event #18134, run #363899 on slot 2, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr 14 2 INFO ===>>> start processing event #18138, run #363899 on slot 2, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr 11 3 INFO ===>>> done processing event #18135, run #363899 on slot 3, 12 events processed so far <<<=== +AthenaHiveEventLoopMgr 15 3 INFO ===>>> start processing event #18139, run #363899 on slot 3, 12 events processed so far <<<=== +AthenaHiveEventLoopMgr 12 0 INFO ===>>> done processing event #18136, run #363899 on slot 0, 13 events processed so far <<<=== +AthenaHiveEventLoopMgr 16 0 INFO ===>>> start processing event #18140, run #363899 on slot 0, 13 events processed so far <<<=== AthenaHiveEventLoopMgr 13 1 INFO ===>>> done processing event #18137, run #363899 on slot 1, 14 events processed so far <<<=== AthenaHiveEventLoopMgr 17 1 INFO ===>>> start processing event #18141, run #363899 on slot 1, 14 events processed so far <<<=== -AthenaHiveEventLoopMgr 15 2 INFO ===>>> done processing event #18139, run #363899 on slot 2, 15 events processed so far <<<=== -AthenaHiveEventLoopMgr 14 0 INFO ===>>> done processing event #18138, run #363899 on slot 0, 16 events processed so far <<<=== -AthenaHiveEventLoopMgr 16 3 INFO ===>>> done processing event #18140, run #363899 on slot 3, 17 events processed so far <<<=== -AthenaHiveEventLoopMgr 18 0 INFO ===>>> start processing event #18142, run #363899 on slot 0, 17 events processed so far <<<=== -AthenaHiveEventLoopMgr 19 2 INFO ===>>> start processing event #18143, run #363899 on slot 2, 17 events processed so far <<<=== +AthenaHiveEventLoopMgr 14 2 INFO ===>>> done processing event #18138, run #363899 on slot 2, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr 18 2 INFO ===>>> start processing event #18142, run #363899 on slot 2, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr 16 0 INFO ===>>> done processing event #18140, run #363899 on slot 0, 16 events processed so far <<<=== +AthenaHiveEventLoopMgr 15 3 INFO ===>>> done processing event #18139, run #363899 on slot 3, 17 events processed so far <<<=== +AthenaHiveEventLoopMgr 19 0 INFO ===>>> start processing event #18143, run #363899 on slot 0, 17 events processed so far <<<=== AthenaHiveEventLoopMgr 20 3 INFO ===>>> start processing event #18144, run #363899 on slot 3, 17 events processed so far <<<=== AthenaHiveEventLoopMgr 17 1 INFO ===>>> done processing event #18141, run #363899 on slot 1, 18 events processed so far <<<=== AthenaHiveEventLoopMgr 21 1 INFO ===>>> start processing event #18145, run #363899 on slot 1, 18 events processed so far <<<=== -AthenaHiveEventLoopMgr 18 0 INFO ===>>> done processing event #18142, run #363899 on slot 0, 19 events processed so far <<<=== -AthenaHiveEventLoopMgr 19 2 INFO ===>>> done processing event #18143, run #363899 on slot 2, 20 events processed so far <<<=== -AthenaHiveEventLoopMgr 22 0 INFO ===>>> start processing event #18146, run #363899 on slot 0, 20 events processed so far <<<=== -AthenaHiveEventLoopMgr 23 2 INFO ===>>> start processing event #18147, run #363899 on slot 2, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr 18 2 INFO ===>>> done processing event #18142, run #363899 on slot 2, 19 events processed so far <<<=== +AthenaHiveEventLoopMgr 22 2 INFO ===>>> start processing event #18146, run #363899 on slot 2, 19 events processed so far <<<=== +AthenaHiveEventLoopMgr 19 0 INFO ===>>> done processing event #18143, run #363899 on slot 0, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr 23 0 INFO ===>>> start processing event #18147, run #363899 on slot 0, 20 events processed so far <<<=== AthenaHiveEventLoopMgr 20 3 INFO ===>>> done processing event #18144, run #363899 on slot 3, 21 events processed so far <<<=== +AthenaHiveEventLoopMgr 24 3 INFO ===>>> start processing event #18148, run #363899 on slot 3, 21 events processed so far <<<=== AthenaHiveEventLoopMgr 21 1 INFO ===>>> done processing event #18145, run #363899 on slot 1, 22 events processed so far <<<=== -AthenaHiveEventLoopMgr 24 1 INFO ===>>> start processing event #18148, run #363899 on slot 1, 22 events processed so far <<<=== -AthenaHiveEventLoopMgr 25 3 INFO ===>>> start processing event #18149, run #363899 on slot 3, 22 events processed so far <<<=== -AthenaHiveEventLoopMgr 22 0 INFO ===>>> done processing event #18146, run #363899 on slot 0, 23 events processed so far <<<=== -AthenaHiveEventLoopMgr 26 0 INFO ===>>> start processing event #18150, run #363899 on slot 0, 23 events processed so far <<<=== -AthenaHiveEventLoopMgr 23 2 INFO ===>>> done processing event #18147, run #363899 on slot 2, 24 events processed so far <<<=== -AthenaHiveEventLoopMgr 24 1 INFO ===>>> done processing event #18148, run #363899 on slot 1, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 27 1 INFO ===>>> start processing event #18151, run #363899 on slot 1, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 28 2 INFO ===>>> start processing event #18152, run #363899 on slot 2, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 25 3 INFO ===>>> done processing event #18149, run #363899 on slot 3, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 25 1 INFO ===>>> start processing event #18149, run #363899 on slot 1, 22 events processed so far <<<=== +AthenaHiveEventLoopMgr 22 2 INFO ===>>> done processing event #18146, run #363899 on slot 2, 23 events processed so far <<<=== +AthenaHiveEventLoopMgr 23 0 INFO ===>>> done processing event #18147, run #363899 on slot 0, 24 events processed so far <<<=== +AthenaHiveEventLoopMgr 26 0 INFO ===>>> start processing event #18150, run #363899 on slot 0, 24 events processed so far <<<=== +AthenaHiveEventLoopMgr 27 2 INFO ===>>> start processing event #18151, run #363899 on slot 2, 24 events processed so far <<<=== +AthenaHiveEventLoopMgr 24 3 INFO ===>>> done processing event #18148, run #363899 on slot 3, 25 events processed so far <<<=== +AthenaHiveEventLoopMgr 28 3 INFO ===>>> start processing event #18152, run #363899 on slot 3, 25 events processed so far <<<=== +AthenaHiveEventLoopMgr 25 1 INFO ===>>> done processing event #18149, run #363899 on slot 1, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 29 1 INFO ===>>> start processing event #18153, run #363899 on slot 1, 26 events processed so far <<<=== AthenaHiveEventLoopMgr 26 0 INFO ===>>> done processing event #18150, run #363899 on slot 0, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 29 0 INFO ===>>> start processing event #18153, run #363899 on slot 0, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 30 3 INFO ===>>> start processing event #18154, run #363899 on slot 3, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 27 1 INFO ===>>> done processing event #18151, run #363899 on slot 1, 28 events processed so far <<<=== -AthenaHiveEventLoopMgr 28 2 INFO ===>>> done processing event #18152, run #363899 on slot 2, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 31 1 INFO ===>>> start processing event #18155, run #363899 on slot 1, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 32 2 INFO ===>>> start processing event #18156, run #363899 on slot 2, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 29 0 INFO ===>>> done processing event #18153, run #363899 on slot 0, 30 events processed so far <<<=== -AthenaHiveEventLoopMgr 30 3 INFO ===>>> done processing event #18154, run #363899 on slot 3, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 33 0 INFO ===>>> start processing event #18157, run #363899 on slot 0, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 34 3 INFO ===>>> start processing event #18158, run #363899 on slot 3, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 31 1 INFO ===>>> done processing event #18155, run #363899 on slot 1, 32 events processed so far <<<=== -AthenaHiveEventLoopMgr 32 2 INFO ===>>> done processing event #18156, run #363899 on slot 2, 33 events processed so far <<<=== -AthenaHiveEventLoopMgr 35 1 INFO ===>>> start processing event #18159, run #363899 on slot 1, 33 events processed so far <<<=== -AthenaHiveEventLoopMgr 36 2 INFO ===>>> start processing event #18160, run #363899 on slot 2, 33 events processed so far <<<=== -AthenaHiveEventLoopMgr 33 0 INFO ===>>> done processing event #18157, run #363899 on slot 0, 34 events processed so far <<<=== -AthenaHiveEventLoopMgr 34 3 INFO ===>>> done processing event #18158, run #363899 on slot 3, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 37 0 INFO ===>>> start processing event #18161, run #363899 on slot 0, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 38 3 INFO ===>>> start processing event #18162, run #363899 on slot 3, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 35 1 INFO ===>>> done processing event #18159, run #363899 on slot 1, 36 events processed so far <<<=== -AthenaHiveEventLoopMgr 36 2 INFO ===>>> done processing event #18160, run #363899 on slot 2, 37 events processed so far <<<=== -AthenaHiveEventLoopMgr 39 1 INFO ===>>> start processing event #18163, run #363899 on slot 1, 37 events processed so far <<<=== -AthenaHiveEventLoopMgr 40 2 INFO ===>>> start processing event #18164, run #363899 on slot 2, 37 events processed so far <<<=== -AthenaHiveEventLoopMgr 37 0 INFO ===>>> done processing event #18161, run #363899 on slot 0, 38 events processed so far <<<=== -AthenaHiveEventLoopMgr 38 3 INFO ===>>> done processing event #18162, run #363899 on slot 3, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 41 0 INFO ===>>> start processing event #18165, run #363899 on slot 0, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 42 3 INFO ===>>> start processing event #18166, run #363899 on slot 3, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 39 1 INFO ===>>> done processing event #18163, run #363899 on slot 1, 40 events processed so far <<<=== -AthenaHiveEventLoopMgr 40 2 INFO ===>>> done processing event #18164, run #363899 on slot 2, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 43 1 INFO ===>>> start processing event #18167, run #363899 on slot 1, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 44 2 INFO ===>>> start processing event #18168, run #363899 on slot 2, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 41 0 INFO ===>>> done processing event #18165, run #363899 on slot 0, 42 events processed so far <<<=== -AthenaHiveEventLoopMgr 42 3 INFO ===>>> done processing event #18166, run #363899 on slot 3, 43 events processed so far <<<=== -AthenaHiveEventLoopMgr 45 0 INFO ===>>> start processing event #18169, run #363899 on slot 0, 43 events processed so far <<<=== -AthenaHiveEventLoopMgr 46 3 INFO ===>>> start processing event #18170, run #363899 on slot 3, 43 events processed so far <<<=== -AthenaHiveEventLoopMgr 43 1 INFO ===>>> done processing event #18167, run #363899 on slot 1, 44 events processed so far <<<=== -AthenaHiveEventLoopMgr 47 1 INFO ===>>> start processing event #18171, run #363899 on slot 1, 44 events processed so far <<<=== -AthenaHiveEventLoopMgr 44 2 INFO ===>>> done processing event #18168, run #363899 on slot 2, 45 events processed so far <<<=== -AthenaHiveEventLoopMgr 45 0 INFO ===>>> done processing event #18169, run #363899 on slot 0, 46 events processed so far <<<=== -AthenaHiveEventLoopMgr 48 0 INFO ===>>> start processing event #18172, run #363899 on slot 0, 46 events processed so far <<<=== -AthenaHiveEventLoopMgr 49 2 INFO ===>>> start processing event #18173, run #363899 on slot 2, 46 events processed so far <<<=== -AthenaHiveEventLoopMgr 46 3 INFO ===>>> done processing event #18170, run #363899 on slot 3, 47 events processed so far <<<=== -AthenaHiveEventLoopMgr 47 1 INFO ===>>> done processing event #18171, run #363899 on slot 1, 48 events processed so far <<<=== -AthenaHiveEventLoopMgr 50 1 INFO ===>>> start processing event #18174, run #363899 on slot 1, 48 events processed so far <<<=== -AthenaHiveEventLoopMgr 51 3 INFO ===>>> start processing event #18175, run #363899 on slot 3, 48 events processed so far <<<=== -AthenaHiveEventLoopMgr 48 0 INFO ===>>> done processing event #18172, run #363899 on slot 0, 49 events processed so far <<<=== -AthenaHiveEventLoopMgr 49 2 INFO ===>>> done processing event #18173, run #363899 on slot 2, 50 events processed so far <<<=== -AthenaHiveEventLoopMgr 52 0 INFO ===>>> start processing event #18176, run #363899 on slot 0, 50 events processed so far <<<=== -AthenaHiveEventLoopMgr 53 2 INFO ===>>> start processing event #18177, run #363899 on slot 2, 50 events processed so far <<<=== -AthenaHiveEventLoopMgr 50 1 INFO ===>>> done processing event #18174, run #363899 on slot 1, 51 events processed so far <<<=== -AthenaHiveEventLoopMgr 51 3 INFO ===>>> done processing event #18175, run #363899 on slot 3, 52 events processed so far <<<=== -AthenaHiveEventLoopMgr 54 1 INFO ===>>> start processing event #18178, run #363899 on slot 1, 52 events processed so far <<<=== -AthenaHiveEventLoopMgr 55 3 INFO ===>>> start processing event #18179, run #363899 on slot 3, 52 events processed so far <<<=== -AthenaHiveEventLoopMgr 52 0 INFO ===>>> done processing event #18176, run #363899 on slot 0, 53 events processed so far <<<=== -AthenaHiveEventLoopMgr 53 2 INFO ===>>> done processing event #18177, run #363899 on slot 2, 54 events processed so far <<<=== -AthenaHiveEventLoopMgr 56 0 INFO ===>>> start processing event #18180, run #363899 on slot 0, 54 events processed so far <<<=== -AthenaHiveEventLoopMgr 57 2 INFO ===>>> start processing event #18181, run #363899 on slot 2, 54 events processed so far <<<=== -AthenaHiveEventLoopMgr 54 1 INFO ===>>> done processing event #18178, run #363899 on slot 1, 55 events processed so far <<<=== -AthenaHiveEventLoopMgr 55 3 INFO ===>>> done processing event #18179, run #363899 on slot 3, 56 events processed so far <<<=== -AthenaHiveEventLoopMgr 58 1 INFO ===>>> start processing event #18182, run #363899 on slot 1, 56 events processed so far <<<=== -AthenaHiveEventLoopMgr 59 3 INFO ===>>> start processing event #18183, run #363899 on slot 3, 56 events processed so far <<<=== -AthenaHiveEventLoopMgr 56 0 INFO ===>>> done processing event #18180, run #363899 on slot 0, 57 events processed so far <<<=== -AthenaHiveEventLoopMgr 57 2 INFO ===>>> done processing event #18181, run #363899 on slot 2, 58 events processed so far <<<=== -AthenaHiveEventLoopMgr 60 0 INFO ===>>> start processing event #18184, run #363899 on slot 0, 58 events processed so far <<<=== -AthenaHiveEventLoopMgr 61 2 INFO ===>>> start processing event #18185, run #363899 on slot 2, 58 events processed so far <<<=== -AthenaHiveEventLoopMgr 58 1 INFO ===>>> done processing event #18182, run #363899 on slot 1, 59 events processed so far <<<=== -AthenaHiveEventLoopMgr 62 1 INFO ===>>> start processing event #18186, run #363899 on slot 1, 59 events processed so far <<<=== -AthenaHiveEventLoopMgr 59 3 INFO ===>>> done processing event #18183, run #363899 on slot 3, 60 events processed so far <<<=== -AthenaHiveEventLoopMgr 63 3 INFO ===>>> start processing event #18187, run #363899 on slot 3, 60 events processed so far <<<=== -AthenaHiveEventLoopMgr 60 0 INFO ===>>> done processing event #18184, run #363899 on slot 0, 61 events processed so far <<<=== -AthenaHiveEventLoopMgr 61 2 INFO ===>>> done processing event #18185, run #363899 on slot 2, 62 events processed so far <<<=== -AthenaHiveEventLoopMgr 64 0 INFO ===>>> start processing event #18188, run #363899 on slot 0, 62 events processed so far <<<=== -AthenaHiveEventLoopMgr 65 2 INFO ===>>> start processing event #18189, run #363899 on slot 2, 62 events processed so far <<<=== -AthenaHiveEventLoopMgr 62 1 INFO ===>>> done processing event #18186, run #363899 on slot 1, 63 events processed so far <<<=== -AthenaHiveEventLoopMgr 66 1 INFO ===>>> start processing event #18190, run #363899 on slot 1, 63 events processed so far <<<=== -AthenaHiveEventLoopMgr 63 3 INFO ===>>> done processing event #18187, run #363899 on slot 3, 64 events processed so far <<<=== -AthenaHiveEventLoopMgr 67 3 INFO ===>>> start processing event #18191, run #363899 on slot 3, 64 events processed so far <<<=== -AthenaHiveEventLoopMgr 64 0 INFO ===>>> done processing event #18188, run #363899 on slot 0, 65 events processed so far <<<=== -AthenaHiveEventLoopMgr 65 2 INFO ===>>> done processing event #18189, run #363899 on slot 2, 66 events processed so far <<<=== -AthenaHiveEventLoopMgr 68 0 INFO ===>>> start processing event #18192, run #363899 on slot 0, 66 events processed so far <<<=== -AthenaHiveEventLoopMgr 69 2 INFO ===>>> start processing event #18193, run #363899 on slot 2, 66 events processed so far <<<=== -AthenaHiveEventLoopMgr 66 1 INFO ===>>> done processing event #18190, run #363899 on slot 1, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 67 3 INFO ===>>> done processing event #18191, run #363899 on slot 3, 68 events processed so far <<<=== -AthenaHiveEventLoopMgr 70 1 INFO ===>>> start processing event #18194, run #363899 on slot 1, 68 events processed so far <<<=== -AthenaHiveEventLoopMgr 71 3 INFO ===>>> start processing event #18195, run #363899 on slot 3, 68 events processed so far <<<=== -AthenaHiveEventLoopMgr 68 0 INFO ===>>> done processing event #18192, run #363899 on slot 0, 69 events processed so far <<<=== -AthenaHiveEventLoopMgr 72 0 INFO ===>>> start processing event #18196, run #363899 on slot 0, 69 events processed so far <<<=== -AthenaHiveEventLoopMgr 69 2 INFO ===>>> done processing event #18193, run #363899 on slot 2, 70 events processed so far <<<=== -AthenaHiveEventLoopMgr 73 2 INFO ===>>> start processing event #18197, run #363899 on slot 2, 70 events processed so far <<<=== -AthenaHiveEventLoopMgr 70 1 INFO ===>>> done processing event #18194, run #363899 on slot 1, 71 events processed so far <<<=== -AthenaHiveEventLoopMgr 71 3 INFO ===>>> done processing event #18195, run #363899 on slot 3, 72 events processed so far <<<=== -AthenaHiveEventLoopMgr 74 1 INFO ===>>> start processing event #18198, run #363899 on slot 1, 72 events processed so far <<<=== -AthenaHiveEventLoopMgr 75 3 INFO ===>>> start processing event #18199, run #363899 on slot 3, 72 events processed so far <<<=== -AthenaHiveEventLoopMgr 72 0 INFO ===>>> done processing event #18196, run #363899 on slot 0, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 73 2 INFO ===>>> done processing event #18197, run #363899 on slot 2, 74 events processed so far <<<=== -AthenaHiveEventLoopMgr 76 0 INFO ===>>> start processing event #18200, run #363899 on slot 0, 74 events processed so far <<<=== -AthenaHiveEventLoopMgr 77 2 INFO ===>>> start processing event #18201, run #363899 on slot 2, 74 events processed so far <<<=== -AthenaHiveEventLoopMgr 74 1 INFO ===>>> done processing event #18198, run #363899 on slot 1, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 78 1 INFO ===>>> start processing event #18202, run #363899 on slot 1, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 75 3 INFO ===>>> done processing event #18199, run #363899 on slot 3, 76 events processed so far <<<=== -AthenaHiveEventLoopMgr 79 3 INFO ===>>> start processing event #18203, run #363899 on slot 3, 76 events processed so far <<<=== -AthenaHiveEventLoopMgr 76 0 INFO ===>>> done processing event #18200, run #363899 on slot 0, 77 events processed so far <<<=== -AthenaHiveEventLoopMgr 77 2 INFO ===>>> done processing event #18201, run #363899 on slot 2, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 80 0 INFO ===>>> start processing event #18204, run #363899 on slot 0, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 81 2 INFO ===>>> start processing event #18205, run #363899 on slot 2, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 78 1 INFO ===>>> done processing event #18202, run #363899 on slot 1, 79 events processed so far <<<=== -AthenaHiveEventLoopMgr 79 3 INFO ===>>> done processing event #18203, run #363899 on slot 3, 80 events processed so far <<<=== -AthenaHiveEventLoopMgr 82 1 INFO ===>>> start processing event #18206, run #363899 on slot 1, 80 events processed so far <<<=== -AthenaHiveEventLoopMgr 83 3 INFO ===>>> start processing event #18207, run #363899 on slot 3, 80 events processed so far <<<=== -AthenaHiveEventLoopMgr 80 0 INFO ===>>> done processing event #18204, run #363899 on slot 0, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 84 0 INFO ===>>> start processing event #18208, run #363899 on slot 0, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 81 2 INFO ===>>> done processing event #18205, run #363899 on slot 2, 82 events processed so far <<<=== -AthenaHiveEventLoopMgr 85 2 INFO ===>>> start processing event #18209, run #363899 on slot 2, 82 events processed so far <<<=== -AthenaHiveEventLoopMgr 82 1 INFO ===>>> done processing event #18206, run #363899 on slot 1, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 86 1 INFO ===>>> start processing event #18210, run #363899 on slot 1, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 83 3 INFO ===>>> done processing event #18207, run #363899 on slot 3, 84 events processed so far <<<=== -AthenaHiveEventLoopMgr 84 0 INFO ===>>> done processing event #18208, run #363899 on slot 0, 85 events processed so far <<<=== -AthenaHiveEventLoopMgr 87 0 INFO ===>>> start processing event #18211, run #363899 on slot 0, 85 events processed so far <<<=== -AthenaHiveEventLoopMgr 88 3 INFO ===>>> start processing event #18212, run #363899 on slot 3, 85 events processed so far <<<=== -AthenaHiveEventLoopMgr 85 2 INFO ===>>> done processing event #18209, run #363899 on slot 2, 86 events processed so far <<<=== -AthenaHiveEventLoopMgr 86 1 INFO ===>>> done processing event #18210, run #363899 on slot 1, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 89 1 INFO ===>>> start processing event #18213, run #363899 on slot 1, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 90 2 INFO ===>>> start processing event #18214, run #363899 on slot 2, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 87 0 INFO ===>>> done processing event #18211, run #363899 on slot 0, 88 events processed so far <<<=== -AthenaHiveEventLoopMgr 88 3 INFO ===>>> done processing event #18212, run #363899 on slot 3, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 91 0 INFO ===>>> start processing event #18215, run #363899 on slot 0, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 92 3 INFO ===>>> start processing event #18216, run #363899 on slot 3, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 89 1 INFO ===>>> done processing event #18213, run #363899 on slot 1, 90 events processed so far <<<=== -AthenaHiveEventLoopMgr 90 2 INFO ===>>> done processing event #18214, run #363899 on slot 2, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 93 1 INFO ===>>> start processing event #18217, run #363899 on slot 1, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 94 2 INFO ===>>> start processing event #18218, run #363899 on slot 2, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 91 0 INFO ===>>> done processing event #18215, run #363899 on slot 0, 92 events processed so far <<<=== -AthenaHiveEventLoopMgr 92 3 INFO ===>>> done processing event #18216, run #363899 on slot 3, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 95 0 INFO ===>>> start processing event #18219, run #363899 on slot 0, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 96 3 INFO ===>>> start processing event #18220, run #363899 on slot 3, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 93 1 INFO ===>>> done processing event #18217, run #363899 on slot 1, 94 events processed so far <<<=== -AthenaHiveEventLoopMgr 94 2 INFO ===>>> done processing event #18218, run #363899 on slot 2, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 97 1 INFO ===>>> start processing event #18221, run #363899 on slot 1, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 98 2 INFO ===>>> start processing event #18222, run #363899 on slot 2, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 95 0 INFO ===>>> done processing event #18219, run #363899 on slot 0, 96 events processed so far <<<=== -AthenaHiveEventLoopMgr 96 3 INFO ===>>> done processing event #18220, run #363899 on slot 3, 97 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 0 INFO ===>>> start processing event #18223, run #363899 on slot 0, 97 events processed so far <<<=== -AthenaHiveEventLoopMgr 97 1 INFO ===>>> done processing event #18221, run #363899 on slot 1, 98 events processed so far <<<=== -AthenaHiveEventLoopMgr 98 2 INFO ===>>> done processing event #18222, run #363899 on slot 2, 99 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 0 INFO ===>>> done processing event #18223, run #363899 on slot 0, 100 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 0 INFO ---> Loop Finished (seconds): 0.897523 +AthenaHiveEventLoopMgr 30 0 INFO ===>>> start processing event #18154, run #363899 on slot 0, 27 events processed so far <<<=== +AthenaHiveEventLoopMgr 27 2 INFO ===>>> done processing event #18151, run #363899 on slot 2, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 31 2 INFO ===>>> start processing event #18155, run #363899 on slot 2, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 28 3 INFO ===>>> done processing event #18152, run #363899 on slot 3, 29 events processed so far <<<=== +AthenaHiveEventLoopMgr 32 3 INFO ===>>> start processing event #18156, run #363899 on slot 3, 29 events processed so far <<<=== +AthenaHiveEventLoopMgr 29 1 INFO ===>>> done processing event #18153, run #363899 on slot 1, 30 events processed so far <<<=== +AthenaHiveEventLoopMgr 33 1 INFO ===>>> start processing event #18157, run #363899 on slot 1, 30 events processed so far <<<=== +AthenaHiveEventLoopMgr 30 0 INFO ===>>> done processing event #18154, run #363899 on slot 0, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 34 0 INFO ===>>> start processing event #18158, run #363899 on slot 0, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 31 2 INFO ===>>> done processing event #18155, run #363899 on slot 2, 32 events processed so far <<<=== +AthenaHiveEventLoopMgr 35 2 INFO ===>>> start processing event #18159, run #363899 on slot 2, 32 events processed so far <<<=== +AthenaHiveEventLoopMgr 32 3 INFO ===>>> done processing event #18156, run #363899 on slot 3, 33 events processed so far <<<=== +AthenaHiveEventLoopMgr 36 3 INFO ===>>> start processing event #18160, run #363899 on slot 3, 33 events processed so far <<<=== +AthenaHiveEventLoopMgr 33 1 INFO ===>>> done processing event #18157, run #363899 on slot 1, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 37 1 INFO ===>>> start processing event #18161, run #363899 on slot 1, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 34 0 INFO ===>>> done processing event #18158, run #363899 on slot 0, 35 events processed so far <<<=== +AthenaHiveEventLoopMgr 35 2 INFO ===>>> done processing event #18159, run #363899 on slot 2, 36 events processed so far <<<=== +AthenaHiveEventLoopMgr 38 0 INFO ===>>> start processing event #18162, run #363899 on slot 0, 36 events processed so far <<<=== +AthenaHiveEventLoopMgr 39 2 INFO ===>>> start processing event #18163, run #363899 on slot 2, 36 events processed so far <<<=== +AthenaHiveEventLoopMgr 37 1 INFO ===>>> done processing event #18161, run #363899 on slot 1, 37 events processed so far <<<=== +AthenaHiveEventLoopMgr 36 3 INFO ===>>> done processing event #18160, run #363899 on slot 3, 38 events processed so far <<<=== +AthenaHiveEventLoopMgr 40 1 INFO ===>>> start processing event #18164, run #363899 on slot 1, 38 events processed so far <<<=== +AthenaHiveEventLoopMgr 41 3 INFO ===>>> start processing event #18165, run #363899 on slot 3, 38 events processed so far <<<=== +AthenaHiveEventLoopMgr 38 0 INFO ===>>> done processing event #18162, run #363899 on slot 0, 39 events processed so far <<<=== +AthenaHiveEventLoopMgr 39 2 INFO ===>>> done processing event #18163, run #363899 on slot 2, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 42 0 INFO ===>>> start processing event #18166, run #363899 on slot 0, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 43 2 INFO ===>>> start processing event #18167, run #363899 on slot 2, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 40 1 INFO ===>>> done processing event #18164, run #363899 on slot 1, 41 events processed so far <<<=== +AthenaHiveEventLoopMgr 44 1 INFO ===>>> start processing event #18168, run #363899 on slot 1, 41 events processed so far <<<=== +AthenaHiveEventLoopMgr 41 3 INFO ===>>> done processing event #18165, run #363899 on slot 3, 42 events processed so far <<<=== +AthenaHiveEventLoopMgr 45 3 INFO ===>>> start processing event #18169, run #363899 on slot 3, 42 events processed so far <<<=== +AthenaHiveEventLoopMgr 42 0 INFO ===>>> done processing event #18166, run #363899 on slot 0, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 46 0 INFO ===>>> start processing event #18170, run #363899 on slot 0, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 43 2 INFO ===>>> done processing event #18167, run #363899 on slot 2, 44 events processed so far <<<=== +AthenaHiveEventLoopMgr 47 2 INFO ===>>> start processing event #18171, run #363899 on slot 2, 44 events processed so far <<<=== +AthenaHiveEventLoopMgr 44 1 INFO ===>>> done processing event #18168, run #363899 on slot 1, 45 events processed so far <<<=== +AthenaHiveEventLoopMgr 45 3 INFO ===>>> done processing event #18169, run #363899 on slot 3, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 48 1 INFO ===>>> start processing event #18172, run #363899 on slot 1, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 49 3 INFO ===>>> start processing event #18173, run #363899 on slot 3, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 46 0 INFO ===>>> done processing event #18170, run #363899 on slot 0, 47 events processed so far <<<=== +AthenaHiveEventLoopMgr 50 0 INFO ===>>> start processing event #18174, run #363899 on slot 0, 47 events processed so far <<<=== +AthenaHiveEventLoopMgr 47 2 INFO ===>>> done processing event #18171, run #363899 on slot 2, 48 events processed so far <<<=== +AthenaHiveEventLoopMgr 51 2 INFO ===>>> start processing event #18175, run #363899 on slot 2, 48 events processed so far <<<=== +AthenaHiveEventLoopMgr 48 1 INFO ===>>> done processing event #18172, run #363899 on slot 1, 49 events processed so far <<<=== +AthenaHiveEventLoopMgr 49 3 INFO ===>>> done processing event #18173, run #363899 on slot 3, 50 events processed so far <<<=== +AthenaHiveEventLoopMgr 52 1 INFO ===>>> start processing event #18176, run #363899 on slot 1, 50 events processed so far <<<=== +AthenaHiveEventLoopMgr 53 3 INFO ===>>> start processing event #18177, run #363899 on slot 3, 50 events processed so far <<<=== +AthenaHiveEventLoopMgr 50 0 INFO ===>>> done processing event #18174, run #363899 on slot 0, 51 events processed so far <<<=== +AthenaHiveEventLoopMgr 51 2 INFO ===>>> done processing event #18175, run #363899 on slot 2, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 54 0 INFO ===>>> start processing event #18178, run #363899 on slot 0, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 55 2 INFO ===>>> start processing event #18179, run #363899 on slot 2, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 52 1 INFO ===>>> done processing event #18176, run #363899 on slot 1, 53 events processed so far <<<=== +AthenaHiveEventLoopMgr 56 1 INFO ===>>> start processing event #18180, run #363899 on slot 1, 53 events processed so far <<<=== +AthenaHiveEventLoopMgr 53 3 INFO ===>>> done processing event #18177, run #363899 on slot 3, 54 events processed so far <<<=== +AthenaHiveEventLoopMgr 57 3 INFO ===>>> start processing event #18181, run #363899 on slot 3, 54 events processed so far <<<=== +AthenaHiveEventLoopMgr 54 0 INFO ===>>> done processing event #18178, run #363899 on slot 0, 55 events processed so far <<<=== +AthenaHiveEventLoopMgr 55 2 INFO ===>>> done processing event #18179, run #363899 on slot 2, 56 events processed so far <<<=== +AthenaHiveEventLoopMgr 58 0 INFO ===>>> start processing event #18182, run #363899 on slot 0, 56 events processed so far <<<=== +AthenaHiveEventLoopMgr 59 2 INFO ===>>> start processing event #18183, run #363899 on slot 2, 56 events processed so far <<<=== +AthenaHiveEventLoopMgr 56 1 INFO ===>>> done processing event #18180, run #363899 on slot 1, 57 events processed so far <<<=== +AthenaHiveEventLoopMgr 60 1 INFO ===>>> start processing event #18184, run #363899 on slot 1, 57 events processed so far <<<=== +AthenaHiveEventLoopMgr 57 3 INFO ===>>> done processing event #18181, run #363899 on slot 3, 58 events processed so far <<<=== +AthenaHiveEventLoopMgr 61 3 INFO ===>>> start processing event #18185, run #363899 on slot 3, 58 events processed so far <<<=== +AthenaHiveEventLoopMgr 59 2 INFO ===>>> done processing event #18183, run #363899 on slot 2, 59 events processed so far <<<=== +AthenaHiveEventLoopMgr 58 0 INFO ===>>> done processing event #18182, run #363899 on slot 0, 60 events processed so far <<<=== +AthenaHiveEventLoopMgr 62 0 INFO ===>>> start processing event #18186, run #363899 on slot 0, 60 events processed so far <<<=== +AthenaHiveEventLoopMgr 63 2 INFO ===>>> start processing event #18187, run #363899 on slot 2, 60 events processed so far <<<=== +AthenaHiveEventLoopMgr 60 1 INFO ===>>> done processing event #18184, run #363899 on slot 1, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 64 1 INFO ===>>> start processing event #18188, run #363899 on slot 1, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 61 3 INFO ===>>> done processing event #18185, run #363899 on slot 3, 62 events processed so far <<<=== +AthenaHiveEventLoopMgr 62 0 INFO ===>>> done processing event #18186, run #363899 on slot 0, 63 events processed so far <<<=== +AthenaHiveEventLoopMgr 65 0 INFO ===>>> start processing event #18189, run #363899 on slot 0, 63 events processed so far <<<=== +AthenaHiveEventLoopMgr 66 3 INFO ===>>> start processing event #18190, run #363899 on slot 3, 63 events processed so far <<<=== +AthenaHiveEventLoopMgr 63 2 INFO ===>>> done processing event #18187, run #363899 on slot 2, 64 events processed so far <<<=== +AthenaHiveEventLoopMgr 64 1 INFO ===>>> done processing event #18188, run #363899 on slot 1, 65 events processed so far <<<=== +AthenaHiveEventLoopMgr 67 1 INFO ===>>> start processing event #18191, run #363899 on slot 1, 65 events processed so far <<<=== +AthenaHiveEventLoopMgr 68 2 INFO ===>>> start processing event #18192, run #363899 on slot 2, 65 events processed so far <<<=== +AthenaHiveEventLoopMgr 65 0 INFO ===>>> done processing event #18189, run #363899 on slot 0, 66 events processed so far <<<=== +AthenaHiveEventLoopMgr 69 0 INFO ===>>> start processing event #18193, run #363899 on slot 0, 66 events processed so far <<<=== +AthenaHiveEventLoopMgr 66 3 INFO ===>>> done processing event #18190, run #363899 on slot 3, 67 events processed so far <<<=== +AthenaHiveEventLoopMgr 70 3 INFO ===>>> start processing event #18194, run #363899 on slot 3, 67 events processed so far <<<=== +AthenaHiveEventLoopMgr 67 1 INFO ===>>> done processing event #18191, run #363899 on slot 1, 68 events processed so far <<<=== +AthenaHiveEventLoopMgr 68 2 INFO ===>>> done processing event #18192, run #363899 on slot 2, 69 events processed so far <<<=== +AthenaHiveEventLoopMgr 71 1 INFO ===>>> start processing event #18195, run #363899 on slot 1, 69 events processed so far <<<=== +AthenaHiveEventLoopMgr 72 2 INFO ===>>> start processing event #18196, run #363899 on slot 2, 69 events processed so far <<<=== +AthenaHiveEventLoopMgr 69 0 INFO ===>>> done processing event #18193, run #363899 on slot 0, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 70 3 INFO ===>>> done processing event #18194, run #363899 on slot 3, 71 events processed so far <<<=== +AthenaHiveEventLoopMgr 73 0 INFO ===>>> start processing event #18197, run #363899 on slot 0, 71 events processed so far <<<=== +AthenaHiveEventLoopMgr 74 3 INFO ===>>> start processing event #18198, run #363899 on slot 3, 71 events processed so far <<<=== +AthenaHiveEventLoopMgr 71 1 INFO ===>>> done processing event #18195, run #363899 on slot 1, 72 events processed so far <<<=== +AthenaHiveEventLoopMgr 72 2 INFO ===>>> done processing event #18196, run #363899 on slot 2, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 75 1 INFO ===>>> start processing event #18199, run #363899 on slot 1, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 76 2 INFO ===>>> start processing event #18200, run #363899 on slot 2, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 73 0 INFO ===>>> done processing event #18197, run #363899 on slot 0, 74 events processed so far <<<=== +AthenaHiveEventLoopMgr 74 3 INFO ===>>> done processing event #18198, run #363899 on slot 3, 75 events processed so far <<<=== +AthenaHiveEventLoopMgr 77 0 INFO ===>>> start processing event #18201, run #363899 on slot 0, 75 events processed so far <<<=== +AthenaHiveEventLoopMgr 78 3 INFO ===>>> start processing event #18202, run #363899 on slot 3, 75 events processed so far <<<=== +AthenaHiveEventLoopMgr 75 1 INFO ===>>> done processing event #18199, run #363899 on slot 1, 76 events processed so far <<<=== +AthenaHiveEventLoopMgr 76 2 INFO ===>>> done processing event #18200, run #363899 on slot 2, 77 events processed so far <<<=== +AthenaHiveEventLoopMgr 79 1 INFO ===>>> start processing event #18203, run #363899 on slot 1, 77 events processed so far <<<=== +AthenaHiveEventLoopMgr 80 2 INFO ===>>> start processing event #18204, run #363899 on slot 2, 77 events processed so far <<<=== +AthenaHiveEventLoopMgr 77 0 INFO ===>>> done processing event #18201, run #363899 on slot 0, 78 events processed so far <<<=== +AthenaHiveEventLoopMgr 78 3 INFO ===>>> done processing event #18202, run #363899 on slot 3, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 81 0 INFO ===>>> start processing event #18205, run #363899 on slot 0, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 82 3 INFO ===>>> start processing event #18206, run #363899 on slot 3, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 79 1 INFO ===>>> done processing event #18203, run #363899 on slot 1, 80 events processed so far <<<=== +AthenaHiveEventLoopMgr 80 2 INFO ===>>> done processing event #18204, run #363899 on slot 2, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 83 1 INFO ===>>> start processing event #18207, run #363899 on slot 1, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 84 2 INFO ===>>> start processing event #18208, run #363899 on slot 2, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 81 0 INFO ===>>> done processing event #18205, run #363899 on slot 0, 82 events processed so far <<<=== +AthenaHiveEventLoopMgr 82 3 INFO ===>>> done processing event #18206, run #363899 on slot 3, 83 events processed so far <<<=== +AthenaHiveEventLoopMgr 85 0 INFO ===>>> start processing event #18209, run #363899 on slot 0, 83 events processed so far <<<=== +AthenaHiveEventLoopMgr 86 3 INFO ===>>> start processing event #18210, run #363899 on slot 3, 83 events processed so far <<<=== +AthenaHiveEventLoopMgr 83 1 INFO ===>>> done processing event #18207, run #363899 on slot 1, 84 events processed so far <<<=== +AthenaHiveEventLoopMgr 87 1 INFO ===>>> start processing event #18211, run #363899 on slot 1, 84 events processed so far <<<=== +AthenaHiveEventLoopMgr 84 2 INFO ===>>> done processing event #18208, run #363899 on slot 2, 85 events processed so far <<<=== +AthenaHiveEventLoopMgr 88 2 INFO ===>>> start processing event #18212, run #363899 on slot 2, 85 events processed so far <<<=== +AthenaHiveEventLoopMgr 85 0 INFO ===>>> done processing event #18209, run #363899 on slot 0, 86 events processed so far <<<=== +AthenaHiveEventLoopMgr 86 3 INFO ===>>> done processing event #18210, run #363899 on slot 3, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 89 0 INFO ===>>> start processing event #18213, run #363899 on slot 0, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 90 3 INFO ===>>> start processing event #18214, run #363899 on slot 3, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 87 1 INFO ===>>> done processing event #18211, run #363899 on slot 1, 88 events processed so far <<<=== +AthenaHiveEventLoopMgr 88 2 INFO ===>>> done processing event #18212, run #363899 on slot 2, 89 events processed so far <<<=== +AthenaHiveEventLoopMgr 91 1 INFO ===>>> start processing event #18215, run #363899 on slot 1, 89 events processed so far <<<=== +AthenaHiveEventLoopMgr 92 2 INFO ===>>> start processing event #18216, run #363899 on slot 2, 89 events processed so far <<<=== +AthenaHiveEventLoopMgr 89 0 INFO ===>>> done processing event #18213, run #363899 on slot 0, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 90 3 INFO ===>>> done processing event #18214, run #363899 on slot 3, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 93 0 INFO ===>>> start processing event #18217, run #363899 on slot 0, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 94 3 INFO ===>>> start processing event #18218, run #363899 on slot 3, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 91 1 INFO ===>>> done processing event #18215, run #363899 on slot 1, 92 events processed so far <<<=== +AthenaHiveEventLoopMgr 92 2 INFO ===>>> done processing event #18216, run #363899 on slot 2, 93 events processed so far <<<=== +AthenaHiveEventLoopMgr 95 1 INFO ===>>> start processing event #18219, run #363899 on slot 1, 93 events processed so far <<<=== +AthenaHiveEventLoopMgr 96 2 INFO ===>>> start processing event #18220, run #363899 on slot 2, 93 events processed so far <<<=== +AthenaHiveEventLoopMgr 93 0 INFO ===>>> done processing event #18217, run #363899 on slot 0, 94 events processed so far <<<=== +AthenaHiveEventLoopMgr 94 3 INFO ===>>> done processing event #18218, run #363899 on slot 3, 95 events processed so far <<<=== +AthenaHiveEventLoopMgr 97 0 INFO ===>>> start processing event #18221, run #363899 on slot 0, 95 events processed so far <<<=== +AthenaHiveEventLoopMgr 98 3 INFO ===>>> start processing event #18222, run #363899 on slot 3, 95 events processed so far <<<=== +AthenaHiveEventLoopMgr 95 1 INFO ===>>> done processing event #18219, run #363899 on slot 1, 96 events processed so far <<<=== +AthenaHiveEventLoopMgr 96 2 INFO ===>>> done processing event #18220, run #363899 on slot 2, 97 events processed so far <<<=== +AthenaHiveEventLoopMgr 99 1 INFO ===>>> start processing event #18223, run #363899 on slot 1, 97 events processed so far <<<=== +AthenaHiveEventLoopMgr 97 0 INFO ===>>> done processing event #18221, run #363899 on slot 0, 98 events processed so far <<<=== +AthenaHiveEventLoopMgr 98 3 INFO ===>>> done processing event #18222, run #363899 on slot 3, 99 events processed so far <<<=== +AthenaHiveEventLoopMgr 99 1 INFO ===>>> done processing event #18223, run #363899 on slot 1, 100 events processed so far <<<=== +AthenaHiveEventLoopMgr 99 1 INFO ---> Loop Finished (seconds): 0.44851 Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] ApplicationMgr INFO Application Manager Stopped successfully SGInputLoader INFO Finalizing SGInputLoader... @@ -1282,7 +1286,7 @@ AvalancheSchedulerSvc INFO Joining S PyComponentMgr INFO Finalizing PyComponentMgr... EventDataSvc INFO Finalizing EventDataSvc IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.03 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s @@ -1295,9 +1299,9 @@ IOVDbFolder INFO Folder /T IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 0.01 ))s -IOVDbSvc INFO bytes in (( 0.05 ))s +IOVDbSvc INFO bytes in (( 0.04 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.05 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.04 ))s IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 1 nFolders: 11 ReadTime: (( 0.00 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc @@ -1308,9 +1312,9 @@ ToolSvc.ByteStreamMetadataTool INFO in finali *****Chrono***** INFO WARNING: MT job; statistics are unreliable *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 150 [ms] Ave/Min/Max= 75(+- 65)/ 10/ 140 [ms] #= 2 -cObj_ALL INFO Time User : Tot= 180 [ms] Ave/Min/Max= 90(+- 60)/ 30/ 150 [ms] #= 2 -ChronoStatSvc INFO Time User : Tot= 4.27 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 90 [ms] Ave/Min/Max= 45(+- 35)/ 10/ 80 [ms] #= 2 +cObj_ALL INFO Time User : Tot= 110 [ms] Ave/Min/Max= 55(+- 35)/ 20/ 90 [ms] #= 2 +ChronoStatSvc INFO Time User : Tot= 2.2 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.finalize() INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.ref b/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.ref index f8ba5fb694a44eeb8977f4cc860f3c22ebd8b51b..fe01a1c8d0c00974145525ec9b662a87d77a907b 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.ref +++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.ref @@ -1,26 +1,27 @@ TileROD_Decoder_test -Initializing Gaudi ApplicationMgr using job opts /tmp/damazio/Tile/athena/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt -JobOptionsSvc INFO # =======> /tmp/damazio/Tile/athena/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt +Initializing Gaudi ApplicationMgr using job opts /home/solodkov/git/r22.0.tile/athena/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt +JobOptionsSvc INFO # =======> /home/solodkov/git/r22.0.tile/athena/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt JobOptionsSvc INFO # (2,1): ApplicationMgr.ExtSvc = ["StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore"] JobOptionsSvc INFO # (3,1): ToolSvc.TileROD_Decoder.TileL2Builder = "" JobOptionsSvc INFO # (4,1): ToolSvc.TileROD_Decoder.TileBadChanTool = "" -JobOptionsSvc INFO Job options successfully read in from /tmp/damazio/Tile/athena/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt +JobOptionsSvc INFO Job options successfully read in from /home/solodkov/git/r22.0.tile/athena/TileCalorimeter/TileSvc/TileByteStream/share/TileROD_Decoder_test.txt ApplicationMgr SUCCESS ==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v35r0) - running on lxplus732.cern.ch on Mon Jan 4 09:01:18 2021 + Welcome to ApplicationMgr (GaudiCoreSvc v36r0) + running on pcatl03.cern.ch on Mon Sep 6 17:25:23 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully -ClassIDSvc INFO getRegistryEntries: read 12042 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 12208 CLIDRegistry entries for module ALL EventLoopMgr WARNING Unable to locate service "EventSelector" EventLoopMgr WARNING No events will be processed from external input. ApplicationMgr INFO Application Manager Initialized successfully ApplicationMgr Ready +Warning : label hadronic not found TileHWID INFO initialize_from_dictionary TileTBID INFO initialize_from_dictionary -ClassIDSvc INFO getRegistryEntries: read 553 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 553 CLIDRegistry entries for module ALL test1 (fillCollection) TileDigitsCollection: 16 TileRawDataCollection of TileDigits Id = 0x100 size = 16 diff --git a/TileCalorimeter/TileSvc/TileByteStream/share/TileRawChannelContByteStreamCnv_test.ref b/TileCalorimeter/TileSvc/TileByteStream/share/TileRawChannelContByteStreamCnv_test.ref index ce18f580090229c12990082f031856fdf2bd5433..53741f3fd6229f1743d1bc72c8a37dfedaae4866 100644 --- a/TileCalorimeter/TileSvc/TileByteStream/share/TileRawChannelContByteStreamCnv_test.ref +++ b/TileCalorimeter/TileSvc/TileByteStream/share/TileRawChannelContByteStreamCnv_test.ref @@ -1,16 +1,16 @@ -Sat Aug 21 21:53:47 CEST 2021 +Mon Sep 6 17:23:09 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileRawChannelContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -28,7 +28,7 @@ Py:Athena INFO including file "AthenaCommon/runbatch.py" ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:54:01 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:23:15 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -40,8 +40,8 @@ PoolSvc INFO io_register[PoolSvc](xmlcatalog_file:PoolFileCatalog.x PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -189,7 +189,7 @@ EMECConstruction INFO multi-layered version of absorbers activated, paramete EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstru... INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.71S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.36S GeoModelSvc.Til... INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -200,7 +200,7 @@ TileDddbManager INFO n_tilb = 21 TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_ID... INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDesc... INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -212,16 +212,18 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_ID helper object in th AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_ID... INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.Til... INFO U-shape parameter from database is: 1 -GeoModelSvc.Til... INFO Glue parameter from database is: 1 -GeoModelSvc.Til... INFO Cs Tube parameter from database is: 0 +GeoModelSvc.Til... INFO Ushape parameter from database is: 1 +GeoModelSvc.Til... INFO Glue parameter from database is: 1 +GeoModelSvc.Til... INFO PVT parameter from database is: 0 +GeoModelSvc.Til... INFO Steel parameter from database is: 0 +GeoModelSvc.Til... INFO CsTube parameter from database is: 0 GeoModelSvc.Til... INFO Entering TileAtlasFactory::create() GeoModelSvc.Til... INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.Til... INFO => New BFingerLengthPos 430.5 @@ -249,7 +251,7 @@ GeoModelSvc.Til... INFO Global positioning of barrel with rotation (0,0,0)) a GeoModelSvc.Til... INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.Til... INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrMan... INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.16S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 4552Kb Time = 0.09S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -356,7 +358,7 @@ Domain[ROOT_All] INFO /cvmfs/atlas-condb.cern.ch/r RootDatabase.open INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDes... INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_ID... INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -370,12 +372,12 @@ CaloIDHelper_ID... INFO in createObj: creating a LArHEC_SuperCell_ID helper ob AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_ID... INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_ID... INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID INFO initialize_from_dictionary - OK CaloIdMgrDetDes... INFO Finished CaloIdMgrDetDes... INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -624,23 +626,23 @@ Finalizer INFO Finalizing Finalizer... Finalize: compared 20 dumps PyComponentMgr INFO Finalizing PyComponentMgr... IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.26 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.24 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/2 objs/chan/bytes 1/1/170 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/103344 (( 0.04 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/80 (( 0.03 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/EMS (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/92 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.02 ))s -IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641504 (( 0.04 ))s -IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/93060 (( 0.27 ))s -IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.03 ))s -IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.01 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/FIBER (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/940 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/LIN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/72 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/CALIB/LAS/NLN (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.03 ))s +IOVDbFolder INFO Folder /TILE/OFL02/NOISE/SAMPLE (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/641504 (( 0.05 ))s +IOVDbFolder INFO Folder /TILE/OFL02/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/93060 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/96 (( 0.02 ))s +IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 1/1 objs/chan/bytes 277/277/76 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 2/2 objs/chan/bytes 2/1/390 (( 0.03 ))s -IOVDbSvc INFO bytes in (( 1.04 ))s +IOVDbSvc INFO bytes in (( 0.36 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.29 ))s -IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.74 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 3 nFolders: 2 ReadTime: (( 0.06 ))s +IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 2 nFolders: 11 ReadTime: (( 0.29 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc ToolSvc.TileRaw... INFO Finalizing TileRawChannelContByteStreamTool successfuly @@ -649,18 +651,18 @@ ToolSvc.ByteStr... INFO in finalize() *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 140 [ms] Ave/Min/Max= 35(+- 60.6)/ 0/ 140 [ms] #= 4 -cObj_ALL INFO Time User : Tot= 190 [ms] Ave/Min/Max= 12.7(+- 42.3)/ 0/ 170 [ms] #= 15 -ChronoStatSvc INFO Time User : Tot= 14.2 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 90 [ms] Ave/Min/Max= 22.5(+- 33.4)/ 0/ 80 [ms] #= 4 +cObj_ALL INFO Time User : Tot= 130 [ms] Ave/Min/Max= 8.67(+- 27.5)/ 0/ 110 [ms] #= 15 +ChronoStatSvc INFO Time User : Tot= 8.81 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully ApplicationMgr INFO Application Manager Terminated successfully Py:Athena INFO leaving with code 0: "successful run" -Sat Aug 21 21:54:22 CEST 2021 +Mon Sep 6 17:23:28 CEST 2021 Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [WorkDir-22.0.42] [x86_64-centos7-gcc8-opt] [master-calo-ctests/ec2fa09c9e3] -- built on [2021-08-21T2138] +Py:Athena INFO using release [WorkDir-22.0.43] [x86_64-centos7-gcc8-opt] [tilecal-for-22.0/e2f7b1f] -- built on [2021-09-06T1700] Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup Py:Athena INFO configuring AthenaHive with [4] concurrent threads and [4] concurrent events @@ -669,9 +671,9 @@ Py:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "TileByteStream/TileRawChannelContByteStreamCnv_test.py" Py:Athena INFO SetGeometryVersion.py obtained major release version 22 Py:Athena INFO including file "IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py" -Py:ConfigurableDb INFO Read module info for 5069 configurables from 8 genConfDb files +Py:ConfigurableDb INFO Read module info for 5076 configurables from 16 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! -EventInfoMgtInit: Got release version Athena-22.0.42 +EventInfoMgtInit: Got release version Athena-22.0.43 Py:IOVDbSvc.CondDB INFO Setting up conditions DB access to instance OFLP200 Py:Athena INFO including file "TileConditions/TileConditions_jobOptions.py" Py:TileInfoConf. INFO Adding TileCablingSvc to ServiceMgr @@ -690,7 +692,7 @@ MessageSvc INFO Activating in a separate thread ApplicationMgr SUCCESS ==================================================================================================================================== Welcome to ApplicationMgr (GaudiCoreSvc v36r0) - running on aibuild028.cern.ch on Sat Aug 21 21:54:35 2021 + running on pcatl03.cern.ch on Mon Sep 6 17:23:34 2021 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... @@ -702,8 +704,8 @@ PoolSvc INFO io_regist PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled PoolSvc INFO Frontier compression level set to 5 DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-local.cern.ch:8000/atlr)(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://ca-proxy-atlas.cern.ch:3128)(proxyurl=http://ca-proxy-meyrin.cern.ch:3128)(proxyurl=http://ca-proxy.cern.ch:3128)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data -DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config -DBReplicaSvc INFO Total of 10 servers found for host aibuild028.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] +DBReplicaSvc INFO Read replica configuration from /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 10 servers found for host pcatl03.cern.ch [ATLF ATLAS_COOLPROD atlas_dd ATLAS_CONFIG INT8R INTR ATONR_COOL ATONR_CONF DEVDB11 ATLF ] PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc INFO Unable find catalog apcfile:poolcond/PoolCat_oflcond.xml in $ATLAS_POOLCOND_PATH and $DATAPATH @@ -851,7 +853,7 @@ EMECConstruction INFO multi-lay EMECConstruction INFO activating LAr::EMEC::Neg::InnerWheel EMECConstruction INFO activating LAr::EMEC::Neg::OuterWheel EndcapDMConstruction INFO Start building EC electronics geometry -GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 24124Kb Time = 0.7S +GeoModelSvc INFO GeoModelSvc.LArDetectorToolNV SZ= 25148Kb Time = 0.33S GeoModelSvc.TileDetectorTool INFO Entering TileDetectorTool::create() TileDddbManager INFO m_tag = ATLAS-R2-2016-01-00-01 TileDddbManager INFO n_tiglob = 5 @@ -862,7 +864,7 @@ TileDddbManager INFO n_tilb = TileDddbManager INFO n_tileSwitches = 1 CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a TileID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt +TileNeighbour INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileNeighbour_reduced.txt TileHWIDDetDescrCnv INFO in createObj: creating a TileHWID helper object in the detector store TileHWID INFO initialize_from_dictionary AtlasDetectorID INFO initialize_from_dictionary - OK @@ -874,16 +876,18 @@ CaloIDHelper_IDDetDescrCnv INFO in create AtlasDetectorID INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt -LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal2DNeighbors-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsNext-April2011.txt +LArFCAL_Base_ID INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCal3DNeighborsPrev-April2011.txt CaloIDHelper_IDDetDescrCnv INFO in createObj: creating a LArMiniFCAL_ID helper object in the detector store AtlasDetectorID INFO initialize_from_dictionary - OK LArMiniFCAL_ID INFO initialize_from_dict - LArCalorimeter dictionary does NOT contain miniFCAL description. Unable to initialize LArMiniFCAL_ID. AtlasDetectorID INFO initialize_from_dictionary - OK -GeoModelSvc.TileDetectorTool INFO U-shape parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 -GeoModelSvc.TileDetectorTool INFO Cs Tube parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Ushape parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO Glue parameter from database is: 1 +GeoModelSvc.TileDetectorTool INFO PVT parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO Steel parameter from database is: 0 +GeoModelSvc.TileDetectorTool INFO CsTube parameter from database is: 0 GeoModelSvc.TileDetectorTool INFO Entering TileAtlasFactory::create() GeoModelSvc.TileDetectorTool INFO Tile Geometry with Saddle supports, starting from TileCal-CSC-02 xxx GeoModelSvc.TileDetectorTool INFO => New BFingerLengthPos 430.5 @@ -911,7 +915,7 @@ GeoModelSvc.TileDetectorTool INFO Global p GeoModelSvc.TileDetectorTool INFO Global positioning of positive ext.barrel with rotation (0,0,0)) and translation (0,0,0) Gaudi::Units::cm GeoModelSvc.TileDetectorTool INFO Global positioning of negative ext.barrel with rotation (0,0,0)) and translation (0,0,1) Gaudi::Units::cm TileDetDescrManager INFO Entering create_elements() -GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.19S +GeoModelSvc INFO GeoModelSvc.TileDetectorTool SZ= 3528Kb Time = 0.1S ClassIDSvc INFO getRegistryEntries: read 71 CLIDRegistry entries for module ALL GeoModelSvc INFO AlgTool: GeoModelSvc.LArDetectorToolNV GeoModelSvc INFO AlgTool: GeoModelSvc.TileDetectorTool @@ -1037,7 +1041,7 @@ Domain[ROOT_All] 0 0 INFO RootDatabase.open 0 0 INFO /cvmfs/atlas-condb.cern.ch/repo/conditions/cond09/cond09_mc.000029.gen.COND/cond09_mc.000029.gen.COND._0002.pool.root File version:52200 CaloMgrDetDescrCnv 0 0 INFO in createObj: creating a Calo Detector Manager object in the detector store CaloIdMgrDetDescrCnv 0 0 INFO in createObj: creating a CaloDescrManager object in the detector store -ClassIDSvc 0 0 INFO getRegistryEntries: read 207 CLIDRegistry entries for module ALL +ClassIDSvc 0 0 INFO getRegistryEntries: read 272 CLIDRegistry entries for module ALL CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a CaloDM_ID helper object in the detector store CaloDM_ID 0 0 INFO initialize_from_dictionary AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK @@ -1051,12 +1055,12 @@ CaloIDHelper_IDDetDescrCnv 0 0 INFO in create AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a LArFCAL_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt -LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells2DNeighborsNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsNextNew-April2014.txt +LArFCAL_Base_ID 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/FCalSuperCells3DNeighborsPrevNew-April2014.txt CaloIDHelper_IDDetDescrCnv 0 0 INFO in createObj: creating a Tile_SuperCell_ID helper object in the detector store AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK -TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-08-20T2101/Athena/22.0.42/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt +TileNeighbour 0 0 INFO Reading file /cvmfs/atlas-nightlies.cern.ch/repo/sw/master_Athena_x86_64-centos7-gcc8-opt/2021-09-05T2101/Athena/22.0.43/InstallArea/x86_64-centos7-gcc8-opt/share/TileSuperCellNeighbour.txt AtlasDetectorID 0 0 INFO initialize_from_dictionary - OK CaloIdMgrDetDescrCnv 0 0 INFO Finished CaloIdMgrDetDescrCnv 0 0 INFO Initializing CaloIdMgr from values in CaloIdMgrDetDescrCnv @@ -1085,195 +1089,195 @@ AthenaHiveEventLoopMgr 5 0 INFO ===>>> AthenaHiveEventLoopMgr 6 1 INFO ===>>> start processing event #1130716, run #204073 on slot 1, 3 events processed so far <<<=== AthenaHiveEventLoopMgr 3 2 INFO ===>>> done processing event #1131086, run #204073 on slot 2, 4 events processed so far <<<=== AthenaHiveEventLoopMgr 4 3 INFO ===>>> done processing event #1130272, run #204073 on slot 3, 5 events processed so far <<<=== -AthenaHiveEventLoopMgr 7 2 INFO ===>>> start processing event #1132019, run #204073 on slot 2, 5 events processed so far <<<=== -AthenaHiveEventLoopMgr 8 3 INFO ===>>> start processing event #1132092, run #204073 on slot 3, 5 events processed so far <<<=== AthenaHiveEventLoopMgr 5 0 INFO ===>>> done processing event #1131269, run #204073 on slot 0, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr 7 0 INFO ===>>> start processing event #1132019, run #204073 on slot 0, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr 8 2 INFO ===>>> start processing event #1132092, run #204073 on slot 2, 6 events processed so far <<<=== +AthenaHiveEventLoopMgr 9 3 INFO ===>>> start processing event #1130238, run #204073 on slot 3, 6 events processed so far <<<=== AthenaHiveEventLoopMgr 6 1 INFO ===>>> done processing event #1130716, run #204073 on slot 1, 7 events processed so far <<<=== -AthenaHiveEventLoopMgr 9 0 INFO ===>>> start processing event #1130238, run #204073 on slot 0, 7 events processed so far <<<=== -AthenaHiveEventLoopMgr 10 1 INFO ===>>> start processing event #1134553, run #204073 on slot 1, 7 events processed so far <<<=== -AthenaHiveEventLoopMgr 7 2 INFO ===>>> done processing event #1132019, run #204073 on slot 2, 8 events processed so far <<<=== -AthenaHiveEventLoopMgr 8 3 INFO ===>>> done processing event #1132092, run #204073 on slot 3, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 11 2 INFO ===>>> start processing event #1130999, run #204073 on slot 2, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 12 3 INFO ===>>> start processing event #1133461, run #204073 on slot 3, 9 events processed so far <<<=== -AthenaHiveEventLoopMgr 9 0 INFO ===>>> done processing event #1130238, run #204073 on slot 0, 10 events processed so far <<<=== -AthenaHiveEventLoopMgr 10 1 INFO ===>>> done processing event #1134553, run #204073 on slot 1, 11 events processed so far <<<=== -AthenaHiveEventLoopMgr 13 0 INFO ===>>> start processing event #1131152, run #204073 on slot 0, 11 events processed so far <<<=== -AthenaHiveEventLoopMgr 14 1 INFO ===>>> start processing event #1130142, run #204073 on slot 1, 11 events processed so far <<<=== -AthenaHiveEventLoopMgr 11 2 INFO ===>>> done processing event #1130999, run #204073 on slot 2, 12 events processed so far <<<=== -AthenaHiveEventLoopMgr 12 3 INFO ===>>> done processing event #1133461, run #204073 on slot 3, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 15 2 INFO ===>>> start processing event #1132770, run #204073 on slot 2, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 16 3 INFO ===>>> start processing event #1132365, run #204073 on slot 3, 13 events processed so far <<<=== -AthenaHiveEventLoopMgr 13 0 INFO ===>>> done processing event #1131152, run #204073 on slot 0, 14 events processed so far <<<=== -AthenaHiveEventLoopMgr 14 1 INFO ===>>> done processing event #1130142, run #204073 on slot 1, 15 events processed so far <<<=== -AthenaHiveEventLoopMgr 17 0 INFO ===>>> start processing event #1136791, run #204073 on slot 0, 15 events processed so far <<<=== -AthenaHiveEventLoopMgr 18 1 INFO ===>>> start processing event #1133781, run #204073 on slot 1, 15 events processed so far <<<=== -AthenaHiveEventLoopMgr 15 2 INFO ===>>> done processing event #1132770, run #204073 on slot 2, 16 events processed so far <<<=== -AthenaHiveEventLoopMgr 16 3 INFO ===>>> done processing event #1132365, run #204073 on slot 3, 17 events processed so far <<<=== -AthenaHiveEventLoopMgr 19 2 INFO ===>>> start processing event #1132067, run #204073 on slot 2, 17 events processed so far <<<=== -AthenaHiveEventLoopMgr 20 3 INFO ===>>> start processing event #1138637, run #204073 on slot 3, 17 events processed so far <<<=== -AthenaHiveEventLoopMgr 17 0 INFO ===>>> done processing event #1136791, run #204073 on slot 0, 18 events processed so far <<<=== -AthenaHiveEventLoopMgr 18 1 INFO ===>>> done processing event #1133781, run #204073 on slot 1, 19 events processed so far <<<=== -AthenaHiveEventLoopMgr 21 0 INFO ===>>> start processing event #1139495, run #204073 on slot 0, 19 events processed so far <<<=== -AthenaHiveEventLoopMgr 22 1 INFO ===>>> start processing event #1140193, run #204073 on slot 1, 19 events processed so far <<<=== -AthenaHiveEventLoopMgr 19 2 INFO ===>>> done processing event #1132067, run #204073 on slot 2, 20 events processed so far <<<=== -AthenaHiveEventLoopMgr 20 3 INFO ===>>> done processing event #1138637, run #204073 on slot 3, 21 events processed so far <<<=== -AthenaHiveEventLoopMgr 23 2 INFO ===>>> start processing event #1142953, run #204073 on slot 2, 21 events processed so far <<<=== -AthenaHiveEventLoopMgr 24 3 INFO ===>>> start processing event #1139127, run #204073 on slot 3, 21 events processed so far <<<=== -AthenaHiveEventLoopMgr 21 0 INFO ===>>> done processing event #1139495, run #204073 on slot 0, 22 events processed so far <<<=== -AthenaHiveEventLoopMgr 22 1 INFO ===>>> done processing event #1140193, run #204073 on slot 1, 23 events processed so far <<<=== -AthenaHiveEventLoopMgr 25 0 INFO ===>>> start processing event #1141272, run #204073 on slot 0, 23 events processed so far <<<=== -AthenaHiveEventLoopMgr 26 1 INFO ===>>> start processing event #1137117, run #204073 on slot 1, 23 events processed so far <<<=== -AthenaHiveEventLoopMgr 23 2 INFO ===>>> done processing event #1142953, run #204073 on slot 2, 24 events processed so far <<<=== -AthenaHiveEventLoopMgr 24 3 INFO ===>>> done processing event #1139127, run #204073 on slot 3, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 27 2 INFO ===>>> start processing event #1139599, run #204073 on slot 2, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 28 3 INFO ===>>> start processing event #1140314, run #204073 on slot 3, 25 events processed so far <<<=== -AthenaHiveEventLoopMgr 25 0 INFO ===>>> done processing event #1141272, run #204073 on slot 0, 26 events processed so far <<<=== -AthenaHiveEventLoopMgr 26 1 INFO ===>>> done processing event #1137117, run #204073 on slot 1, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 29 0 INFO ===>>> start processing event #1133685, run #204073 on slot 0, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 30 1 INFO ===>>> start processing event #1143279, run #204073 on slot 1, 27 events processed so far <<<=== -AthenaHiveEventLoopMgr 27 2 INFO ===>>> done processing event #1139599, run #204073 on slot 2, 28 events processed so far <<<=== -AthenaHiveEventLoopMgr 28 3 INFO ===>>> done processing event #1140314, run #204073 on slot 3, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 31 2 INFO ===>>> start processing event #1137563, run #204073 on slot 2, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 32 3 INFO ===>>> start processing event #1139927, run #204073 on slot 3, 29 events processed so far <<<=== -AthenaHiveEventLoopMgr 29 0 INFO ===>>> done processing event #1133685, run #204073 on slot 0, 30 events processed so far <<<=== -AthenaHiveEventLoopMgr 30 1 INFO ===>>> done processing event #1143279, run #204073 on slot 1, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 7 0 INFO ===>>> done processing event #1132019, run #204073 on slot 0, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 10 0 INFO ===>>> start processing event #1134553, run #204073 on slot 0, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 11 1 INFO ===>>> start processing event #1130999, run #204073 on slot 1, 8 events processed so far <<<=== +AthenaHiveEventLoopMgr 8 2 INFO ===>>> done processing event #1132092, run #204073 on slot 2, 9 events processed so far <<<=== +AthenaHiveEventLoopMgr 9 3 INFO ===>>> done processing event #1130238, run #204073 on slot 3, 10 events processed so far <<<=== +AthenaHiveEventLoopMgr 10 0 INFO ===>>> done processing event #1134553, run #204073 on slot 0, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr 12 0 INFO ===>>> start processing event #1133461, run #204073 on slot 0, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr 13 2 INFO ===>>> start processing event #1131152, run #204073 on slot 2, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr 14 3 INFO ===>>> start processing event #1130142, run #204073 on slot 3, 11 events processed so far <<<=== +AthenaHiveEventLoopMgr 11 1 INFO ===>>> done processing event #1130999, run #204073 on slot 1, 12 events processed so far <<<=== +AthenaHiveEventLoopMgr 12 0 INFO ===>>> done processing event #1133461, run #204073 on slot 0, 13 events processed so far <<<=== +AthenaHiveEventLoopMgr 15 0 INFO ===>>> start processing event #1132770, run #204073 on slot 0, 13 events processed so far <<<=== +AthenaHiveEventLoopMgr 16 1 INFO ===>>> start processing event #1132365, run #204073 on slot 1, 13 events processed so far <<<=== +AthenaHiveEventLoopMgr 13 2 INFO ===>>> done processing event #1131152, run #204073 on slot 2, 14 events processed so far <<<=== +AthenaHiveEventLoopMgr 14 3 INFO ===>>> done processing event #1130142, run #204073 on slot 3, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr 17 2 INFO ===>>> start processing event #1136791, run #204073 on slot 2, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr 18 3 INFO ===>>> start processing event #1133781, run #204073 on slot 3, 15 events processed so far <<<=== +AthenaHiveEventLoopMgr 15 0 INFO ===>>> done processing event #1132770, run #204073 on slot 0, 16 events processed so far <<<=== +AthenaHiveEventLoopMgr 16 1 INFO ===>>> done processing event #1132365, run #204073 on slot 1, 17 events processed so far <<<=== +AthenaHiveEventLoopMgr 17 2 INFO ===>>> done processing event #1136791, run #204073 on slot 2, 18 events processed so far <<<=== +AthenaHiveEventLoopMgr 19 0 INFO ===>>> start processing event #1132067, run #204073 on slot 0, 18 events processed so far <<<=== +AthenaHiveEventLoopMgr 20 1 INFO ===>>> start processing event #1138637, run #204073 on slot 1, 18 events processed so far <<<=== +AthenaHiveEventLoopMgr 21 2 INFO ===>>> start processing event #1139495, run #204073 on slot 2, 18 events processed so far <<<=== +AthenaHiveEventLoopMgr 18 3 INFO ===>>> done processing event #1133781, run #204073 on slot 3, 19 events processed so far <<<=== +AthenaHiveEventLoopMgr 19 0 INFO ===>>> done processing event #1132067, run #204073 on slot 0, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr 22 0 INFO ===>>> start processing event #1140193, run #204073 on slot 0, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr 23 3 INFO ===>>> start processing event #1142953, run #204073 on slot 3, 20 events processed so far <<<=== +AthenaHiveEventLoopMgr 20 1 INFO ===>>> done processing event #1138637, run #204073 on slot 1, 21 events processed so far <<<=== +AthenaHiveEventLoopMgr 21 2 INFO ===>>> done processing event #1139495, run #204073 on slot 2, 22 events processed so far <<<=== +AthenaHiveEventLoopMgr 22 0 INFO ===>>> done processing event #1140193, run #204073 on slot 0, 23 events processed so far <<<=== +AthenaHiveEventLoopMgr 24 0 INFO ===>>> start processing event #1139127, run #204073 on slot 0, 23 events processed so far <<<=== +AthenaHiveEventLoopMgr 25 1 INFO ===>>> start processing event #1141272, run #204073 on slot 1, 23 events processed so far <<<=== +AthenaHiveEventLoopMgr 26 2 INFO ===>>> start processing event #1137117, run #204073 on slot 2, 23 events processed so far <<<=== +AthenaHiveEventLoopMgr 23 3 INFO ===>>> done processing event #1142953, run #204073 on slot 3, 24 events processed so far <<<=== +AthenaHiveEventLoopMgr 24 0 INFO ===>>> done processing event #1139127, run #204073 on slot 0, 25 events processed so far <<<=== +AthenaHiveEventLoopMgr 25 1 INFO ===>>> done processing event #1141272, run #204073 on slot 1, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 27 0 INFO ===>>> start processing event #1139599, run #204073 on slot 0, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 28 1 INFO ===>>> start processing event #1140314, run #204073 on slot 1, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 29 3 INFO ===>>> start processing event #1133685, run #204073 on slot 3, 26 events processed so far <<<=== +AthenaHiveEventLoopMgr 26 2 INFO ===>>> done processing event #1137117, run #204073 on slot 2, 27 events processed so far <<<=== +AthenaHiveEventLoopMgr 27 0 INFO ===>>> done processing event #1139599, run #204073 on slot 0, 28 events processed so far <<<=== +AthenaHiveEventLoopMgr 28 1 INFO ===>>> done processing event #1140314, run #204073 on slot 1, 29 events processed so far <<<=== +AthenaHiveEventLoopMgr 30 0 INFO ===>>> start processing event #1143279, run #204073 on slot 0, 29 events processed so far <<<=== +AthenaHiveEventLoopMgr 31 1 INFO ===>>> start processing event #1137563, run #204073 on slot 1, 29 events processed so far <<<=== +AthenaHiveEventLoopMgr 32 2 INFO ===>>> start processing event #1139927, run #204073 on slot 2, 29 events processed so far <<<=== +AthenaHiveEventLoopMgr 29 3 INFO ===>>> done processing event #1133685, run #204073 on slot 3, 30 events processed so far <<<=== +AthenaHiveEventLoopMgr 30 0 INFO ===>>> done processing event #1143279, run #204073 on slot 0, 31 events processed so far <<<=== AthenaHiveEventLoopMgr 33 0 INFO ===>>> start processing event #1141197, run #204073 on slot 0, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 34 1 INFO ===>>> start processing event #1140039, run #204073 on slot 1, 31 events processed so far <<<=== -AthenaHiveEventLoopMgr 31 2 INFO ===>>> done processing event #1137563, run #204073 on slot 2, 32 events processed so far <<<=== -AthenaHiveEventLoopMgr 32 3 INFO ===>>> done processing event #1139927, run #204073 on slot 3, 33 events processed so far <<<=== -AthenaHiveEventLoopMgr 35 2 INFO ===>>> start processing event #1142531, run #204073 on slot 2, 33 events processed so far <<<=== -AthenaHiveEventLoopMgr 36 3 INFO ===>>> start processing event #1139475, run #204073 on slot 3, 33 events processed so far <<<=== +AthenaHiveEventLoopMgr 34 3 INFO ===>>> start processing event #1140039, run #204073 on slot 3, 31 events processed so far <<<=== +AthenaHiveEventLoopMgr 31 1 INFO ===>>> done processing event #1137563, run #204073 on slot 1, 32 events processed so far <<<=== +AthenaHiveEventLoopMgr 32 2 INFO ===>>> done processing event #1139927, run #204073 on slot 2, 33 events processed so far <<<=== AthenaHiveEventLoopMgr 33 0 INFO ===>>> done processing event #1141197, run #204073 on slot 0, 34 events processed so far <<<=== -AthenaHiveEventLoopMgr 34 1 INFO ===>>> done processing event #1140039, run #204073 on slot 1, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 37 0 INFO ===>>> start processing event #1139958, run #204073 on slot 0, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 38 1 INFO ===>>> start processing event #1143765, run #204073 on slot 1, 35 events processed so far <<<=== -AthenaHiveEventLoopMgr 35 2 INFO ===>>> done processing event #1142531, run #204073 on slot 2, 36 events processed so far <<<=== -AthenaHiveEventLoopMgr 36 3 INFO ===>>> done processing event #1139475, run #204073 on slot 3, 37 events processed so far <<<=== -AthenaHiveEventLoopMgr 39 2 INFO ===>>> start processing event #1143097, run #204073 on slot 2, 37 events processed so far <<<=== +AthenaHiveEventLoopMgr 35 0 INFO ===>>> start processing event #1142531, run #204073 on slot 0, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 36 1 INFO ===>>> start processing event #1139475, run #204073 on slot 1, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 37 2 INFO ===>>> start processing event #1139958, run #204073 on slot 2, 34 events processed so far <<<=== +AthenaHiveEventLoopMgr 34 3 INFO ===>>> done processing event #1140039, run #204073 on slot 3, 35 events processed so far <<<=== +AthenaHiveEventLoopMgr 35 0 INFO ===>>> done processing event #1142531, run #204073 on slot 0, 36 events processed so far <<<=== +AthenaHiveEventLoopMgr 36 1 INFO ===>>> done processing event #1139475, run #204073 on slot 1, 37 events processed so far <<<=== +AthenaHiveEventLoopMgr 38 0 INFO ===>>> start processing event #1143765, run #204073 on slot 0, 37 events processed so far <<<=== +AthenaHiveEventLoopMgr 39 1 INFO ===>>> start processing event #1143097, run #204073 on slot 1, 37 events processed so far <<<=== AthenaHiveEventLoopMgr 40 3 INFO ===>>> start processing event #1134147, run #204073 on slot 3, 37 events processed so far <<<=== -AthenaHiveEventLoopMgr 37 0 INFO ===>>> done processing event #1139958, run #204073 on slot 0, 38 events processed so far <<<=== -AthenaHiveEventLoopMgr 38 1 INFO ===>>> done processing event #1143765, run #204073 on slot 1, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 41 0 INFO ===>>> start processing event #1137156, run #204073 on slot 0, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 42 1 INFO ===>>> start processing event #1136377, run #204073 on slot 1, 39 events processed so far <<<=== -AthenaHiveEventLoopMgr 39 2 INFO ===>>> done processing event #1143097, run #204073 on slot 2, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 37 2 INFO ===>>> done processing event #1139958, run #204073 on slot 2, 38 events processed so far <<<=== +AthenaHiveEventLoopMgr 38 0 INFO ===>>> done processing event #1143765, run #204073 on slot 0, 39 events processed so far <<<=== +AthenaHiveEventLoopMgr 39 1 INFO ===>>> done processing event #1143097, run #204073 on slot 1, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 41 0 INFO ===>>> start processing event #1137156, run #204073 on slot 0, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 42 1 INFO ===>>> start processing event #1136377, run #204073 on slot 1, 40 events processed so far <<<=== +AthenaHiveEventLoopMgr 43 2 INFO ===>>> start processing event #1137842, run #204073 on slot 2, 40 events processed so far <<<=== AthenaHiveEventLoopMgr 40 3 INFO ===>>> done processing event #1134147, run #204073 on slot 3, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 43 2 INFO ===>>> start processing event #1137842, run #204073 on slot 2, 41 events processed so far <<<=== -AthenaHiveEventLoopMgr 44 3 INFO ===>>> start processing event #1141705, run #204073 on slot 3, 41 events processed so far <<<=== AthenaHiveEventLoopMgr 41 0 INFO ===>>> done processing event #1137156, run #204073 on slot 0, 42 events processed so far <<<=== AthenaHiveEventLoopMgr 42 1 INFO ===>>> done processing event #1136377, run #204073 on slot 1, 43 events processed so far <<<=== -AthenaHiveEventLoopMgr 45 0 INFO ===>>> start processing event #1143410, run #204073 on slot 0, 43 events processed so far <<<=== -AthenaHiveEventLoopMgr 46 1 INFO ===>>> start processing event #1144170, run #204073 on slot 1, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 44 0 INFO ===>>> start processing event #1141705, run #204073 on slot 0, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 45 1 INFO ===>>> start processing event #1143410, run #204073 on slot 1, 43 events processed so far <<<=== +AthenaHiveEventLoopMgr 46 3 INFO ===>>> start processing event #1144170, run #204073 on slot 3, 43 events processed so far <<<=== AthenaHiveEventLoopMgr 43 2 INFO ===>>> done processing event #1137842, run #204073 on slot 2, 44 events processed so far <<<=== -AthenaHiveEventLoopMgr 44 3 INFO ===>>> done processing event #1141705, run #204073 on slot 3, 45 events processed so far <<<=== -AthenaHiveEventLoopMgr 47 2 INFO ===>>> start processing event #1145987, run #204073 on slot 2, 45 events processed so far <<<=== -AthenaHiveEventLoopMgr 48 3 INFO ===>>> start processing event #1145633, run #204073 on slot 3, 45 events processed so far <<<=== -AthenaHiveEventLoopMgr 45 0 INFO ===>>> done processing event #1143410, run #204073 on slot 0, 46 events processed so far <<<=== -AthenaHiveEventLoopMgr 46 1 INFO ===>>> done processing event #1144170, run #204073 on slot 1, 47 events processed so far <<<=== -AthenaHiveEventLoopMgr 49 0 INFO ===>>> start processing event #1135005, run #204073 on slot 0, 47 events processed so far <<<=== -AthenaHiveEventLoopMgr 50 1 INFO ===>>> start processing event #1142167, run #204073 on slot 1, 47 events processed so far <<<=== -AthenaHiveEventLoopMgr 47 2 INFO ===>>> done processing event #1145987, run #204073 on slot 2, 48 events processed so far <<<=== -AthenaHiveEventLoopMgr 48 3 INFO ===>>> done processing event #1145633, run #204073 on slot 3, 49 events processed so far <<<=== -AthenaHiveEventLoopMgr 51 2 INFO ===>>> start processing event #1144646, run #204073 on slot 2, 49 events processed so far <<<=== +AthenaHiveEventLoopMgr 44 0 INFO ===>>> done processing event #1141705, run #204073 on slot 0, 45 events processed so far <<<=== +AthenaHiveEventLoopMgr 45 1 INFO ===>>> done processing event #1143410, run #204073 on slot 1, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 47 0 INFO ===>>> start processing event #1145987, run #204073 on slot 0, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 48 1 INFO ===>>> start processing event #1145633, run #204073 on slot 1, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 49 2 INFO ===>>> start processing event #1135005, run #204073 on slot 2, 46 events processed so far <<<=== +AthenaHiveEventLoopMgr 46 3 INFO ===>>> done processing event #1144170, run #204073 on slot 3, 47 events processed so far <<<=== +AthenaHiveEventLoopMgr 47 0 INFO ===>>> done processing event #1145987, run #204073 on slot 0, 48 events processed so far <<<=== +AthenaHiveEventLoopMgr 48 1 INFO ===>>> done processing event #1145633, run #204073 on slot 1, 49 events processed so far <<<=== +AthenaHiveEventLoopMgr 50 0 INFO ===>>> start processing event #1142167, run #204073 on slot 0, 49 events processed so far <<<=== +AthenaHiveEventLoopMgr 51 1 INFO ===>>> start processing event #1144646, run #204073 on slot 1, 49 events processed so far <<<=== AthenaHiveEventLoopMgr 52 3 INFO ===>>> start processing event #1145027, run #204073 on slot 3, 49 events processed so far <<<=== -AthenaHiveEventLoopMgr 49 0 INFO ===>>> done processing event #1135005, run #204073 on slot 0, 50 events processed so far <<<=== -AthenaHiveEventLoopMgr 50 1 INFO ===>>> done processing event #1142167, run #204073 on slot 1, 51 events processed so far <<<=== -AthenaHiveEventLoopMgr 53 0 INFO ===>>> start processing event #1144112, run #204073 on slot 0, 51 events processed so far <<<=== -AthenaHiveEventLoopMgr 54 1 INFO ===>>> start processing event #1138485, run #204073 on slot 1, 51 events processed so far <<<=== -AthenaHiveEventLoopMgr 51 2 INFO ===>>> done processing event #1144646, run #204073 on slot 2, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 49 2 INFO ===>>> done processing event #1135005, run #204073 on slot 2, 50 events processed so far <<<=== +AthenaHiveEventLoopMgr 50 0 INFO ===>>> done processing event #1142167, run #204073 on slot 0, 51 events processed so far <<<=== +AthenaHiveEventLoopMgr 51 1 INFO ===>>> done processing event #1144646, run #204073 on slot 1, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 53 0 INFO ===>>> start processing event #1144112, run #204073 on slot 0, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 54 1 INFO ===>>> start processing event #1138485, run #204073 on slot 1, 52 events processed so far <<<=== +AthenaHiveEventLoopMgr 55 2 INFO ===>>> start processing event #1144565, run #204073 on slot 2, 52 events processed so far <<<=== AthenaHiveEventLoopMgr 52 3 INFO ===>>> done processing event #1145027, run #204073 on slot 3, 53 events processed so far <<<=== -AthenaHiveEventLoopMgr 55 2 INFO ===>>> start processing event #1144565, run #204073 on slot 2, 53 events processed so far <<<=== -AthenaHiveEventLoopMgr 56 3 INFO ===>>> start processing event #1139498, run #204073 on slot 3, 53 events processed so far <<<=== AthenaHiveEventLoopMgr 53 0 INFO ===>>> done processing event #1144112, run #204073 on slot 0, 54 events processed so far <<<=== +AthenaHiveEventLoopMgr 56 0 INFO ===>>> start processing event #1139498, run #204073 on slot 0, 54 events processed so far <<<=== +AthenaHiveEventLoopMgr 57 3 INFO ===>>> start processing event #1136546, run #204073 on slot 3, 54 events processed so far <<<=== AthenaHiveEventLoopMgr 54 1 INFO ===>>> done processing event #1138485, run #204073 on slot 1, 55 events processed so far <<<=== -AthenaHiveEventLoopMgr 57 0 INFO ===>>> start processing event #1136546, run #204073 on slot 0, 55 events processed so far <<<=== -AthenaHiveEventLoopMgr 58 1 INFO ===>>> start processing event #1143799, run #204073 on slot 1, 55 events processed so far <<<=== AthenaHiveEventLoopMgr 55 2 INFO ===>>> done processing event #1144565, run #204073 on slot 2, 56 events processed so far <<<=== -AthenaHiveEventLoopMgr 56 3 INFO ===>>> done processing event #1139498, run #204073 on slot 3, 57 events processed so far <<<=== -AthenaHiveEventLoopMgr 59 2 INFO ===>>> start processing event #1142877, run #204073 on slot 2, 57 events processed so far <<<=== -AthenaHiveEventLoopMgr 60 3 INFO ===>>> start processing event #1149894, run #204073 on slot 3, 57 events processed so far <<<=== -AthenaHiveEventLoopMgr 57 0 INFO ===>>> done processing event #1136546, run #204073 on slot 0, 58 events processed so far <<<=== -AthenaHiveEventLoopMgr 58 1 INFO ===>>> done processing event #1143799, run #204073 on slot 1, 59 events processed so far <<<=== +AthenaHiveEventLoopMgr 56 0 INFO ===>>> done processing event #1139498, run #204073 on slot 0, 57 events processed so far <<<=== +AthenaHiveEventLoopMgr 58 0 INFO ===>>> start processing event #1143799, run #204073 on slot 0, 57 events processed so far <<<=== +AthenaHiveEventLoopMgr 59 1 INFO ===>>> start processing event #1142877, run #204073 on slot 1, 57 events processed so far <<<=== +AthenaHiveEventLoopMgr 60 2 INFO ===>>> start processing event #1149894, run #204073 on slot 2, 57 events processed so far <<<=== +AthenaHiveEventLoopMgr 57 3 INFO ===>>> done processing event #1136546, run #204073 on slot 3, 58 events processed so far <<<=== +AthenaHiveEventLoopMgr 58 0 INFO ===>>> done processing event #1143799, run #204073 on slot 0, 59 events processed so far <<<=== AthenaHiveEventLoopMgr 61 0 INFO ===>>> start processing event #1145364, run #204073 on slot 0, 59 events processed so far <<<=== -AthenaHiveEventLoopMgr 62 1 INFO ===>>> start processing event #1143770, run #204073 on slot 1, 59 events processed so far <<<=== -AthenaHiveEventLoopMgr 59 2 INFO ===>>> done processing event #1142877, run #204073 on slot 2, 60 events processed so far <<<=== -AthenaHiveEventLoopMgr 60 3 INFO ===>>> done processing event #1149894, run #204073 on slot 3, 61 events processed so far <<<=== -AthenaHiveEventLoopMgr 63 2 INFO ===>>> start processing event #1148361, run #204073 on slot 2, 61 events processed so far <<<=== -AthenaHiveEventLoopMgr 64 3 INFO ===>>> start processing event #1148167, run #204073 on slot 3, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 62 3 INFO ===>>> start processing event #1143770, run #204073 on slot 3, 59 events processed so far <<<=== +AthenaHiveEventLoopMgr 59 1 INFO ===>>> done processing event #1142877, run #204073 on slot 1, 60 events processed so far <<<=== +AthenaHiveEventLoopMgr 60 2 INFO ===>>> done processing event #1149894, run #204073 on slot 2, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 63 1 INFO ===>>> start processing event #1148361, run #204073 on slot 1, 61 events processed so far <<<=== +AthenaHiveEventLoopMgr 64 2 INFO ===>>> start processing event #1148167, run #204073 on slot 2, 61 events processed so far <<<=== AthenaHiveEventLoopMgr 61 0 INFO ===>>> done processing event #1145364, run #204073 on slot 0, 62 events processed so far <<<=== -AthenaHiveEventLoopMgr 62 1 INFO ===>>> done processing event #1143770, run #204073 on slot 1, 63 events processed so far <<<=== -AthenaHiveEventLoopMgr 65 0 INFO ===>>> start processing event #1138948, run #204073 on slot 0, 63 events processed so far <<<=== -AthenaHiveEventLoopMgr 66 1 INFO ===>>> start processing event #1144808, run #204073 on slot 1, 63 events processed so far <<<=== -AthenaHiveEventLoopMgr 63 2 INFO ===>>> done processing event #1148361, run #204073 on slot 2, 64 events processed so far <<<=== -AthenaHiveEventLoopMgr 64 3 INFO ===>>> done processing event #1148167, run #204073 on slot 3, 65 events processed so far <<<=== -AthenaHiveEventLoopMgr 67 2 INFO ===>>> start processing event #1145832, run #204073 on slot 2, 65 events processed so far <<<=== -AthenaHiveEventLoopMgr 68 3 INFO ===>>> start processing event #1153100, run #204073 on slot 3, 65 events processed so far <<<=== +AthenaHiveEventLoopMgr 62 3 INFO ===>>> done processing event #1143770, run #204073 on slot 3, 63 events processed so far <<<=== +AthenaHiveEventLoopMgr 63 1 INFO ===>>> done processing event #1148361, run #204073 on slot 1, 64 events processed so far <<<=== +AthenaHiveEventLoopMgr 65 0 INFO ===>>> start processing event #1138948, run #204073 on slot 0, 64 events processed so far <<<=== +AthenaHiveEventLoopMgr 66 1 INFO ===>>> start processing event #1144808, run #204073 on slot 1, 64 events processed so far <<<=== +AthenaHiveEventLoopMgr 67 3 INFO ===>>> start processing event #1145832, run #204073 on slot 3, 64 events processed so far <<<=== +AthenaHiveEventLoopMgr 64 2 INFO ===>>> done processing event #1148167, run #204073 on slot 2, 65 events processed so far <<<=== AthenaHiveEventLoopMgr 65 0 INFO ===>>> done processing event #1138948, run #204073 on slot 0, 66 events processed so far <<<=== AthenaHiveEventLoopMgr 66 1 INFO ===>>> done processing event #1144808, run #204073 on slot 1, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 69 0 INFO ===>>> start processing event #1142524, run #204073 on slot 0, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 70 1 INFO ===>>> start processing event #1138294, run #204073 on slot 1, 67 events processed so far <<<=== -AthenaHiveEventLoopMgr 67 2 INFO ===>>> done processing event #1145832, run #204073 on slot 2, 68 events processed so far <<<=== -AthenaHiveEventLoopMgr 68 3 INFO ===>>> done processing event #1153100, run #204073 on slot 3, 69 events processed so far <<<=== -AthenaHiveEventLoopMgr 71 2 INFO ===>>> start processing event #1138350, run #204073 on slot 2, 69 events processed so far <<<=== -AthenaHiveEventLoopMgr 72 3 INFO ===>>> start processing event #1149424, run #204073 on slot 3, 69 events processed so far <<<=== -AthenaHiveEventLoopMgr 69 0 INFO ===>>> done processing event #1142524, run #204073 on slot 0, 70 events processed so far <<<=== -AthenaHiveEventLoopMgr 70 1 INFO ===>>> done processing event #1138294, run #204073 on slot 1, 71 events processed so far <<<=== -AthenaHiveEventLoopMgr 73 0 INFO ===>>> start processing event #1151102, run #204073 on slot 0, 71 events processed so far <<<=== -AthenaHiveEventLoopMgr 74 1 INFO ===>>> start processing event #1152242, run #204073 on slot 1, 71 events processed so far <<<=== -AthenaHiveEventLoopMgr 71 2 INFO ===>>> done processing event #1138350, run #204073 on slot 2, 72 events processed so far <<<=== -AthenaHiveEventLoopMgr 72 3 INFO ===>>> done processing event #1149424, run #204073 on slot 3, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 75 2 INFO ===>>> start processing event #1148416, run #204073 on slot 2, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 76 3 INFO ===>>> start processing event #1142753, run #204073 on slot 3, 73 events processed so far <<<=== -AthenaHiveEventLoopMgr 73 0 INFO ===>>> done processing event #1151102, run #204073 on slot 0, 74 events processed so far <<<=== -AthenaHiveEventLoopMgr 74 1 INFO ===>>> done processing event #1152242, run #204073 on slot 1, 75 events processed so far <<<=== +AthenaHiveEventLoopMgr 68 0 INFO ===>>> start processing event #1153100, run #204073 on slot 0, 67 events processed so far <<<=== +AthenaHiveEventLoopMgr 69 1 INFO ===>>> start processing event #1142524, run #204073 on slot 1, 67 events processed so far <<<=== +AthenaHiveEventLoopMgr 70 2 INFO ===>>> start processing event #1138294, run #204073 on slot 2, 67 events processed so far <<<=== +AthenaHiveEventLoopMgr 67 3 INFO ===>>> done processing event #1145832, run #204073 on slot 3, 68 events processed so far <<<=== +AthenaHiveEventLoopMgr 68 0 INFO ===>>> done processing event #1153100, run #204073 on slot 0, 69 events processed so far <<<=== +AthenaHiveEventLoopMgr 69 1 INFO ===>>> done processing event #1142524, run #204073 on slot 1, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 71 0 INFO ===>>> start processing event #1138350, run #204073 on slot 0, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 72 1 INFO ===>>> start processing event #1149424, run #204073 on slot 1, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 73 3 INFO ===>>> start processing event #1151102, run #204073 on slot 3, 70 events processed so far <<<=== +AthenaHiveEventLoopMgr 70 2 INFO ===>>> done processing event #1138294, run #204073 on slot 2, 71 events processed so far <<<=== +AthenaHiveEventLoopMgr 71 0 INFO ===>>> done processing event #1138350, run #204073 on slot 0, 72 events processed so far <<<=== +AthenaHiveEventLoopMgr 72 1 INFO ===>>> done processing event #1149424, run #204073 on slot 1, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 74 0 INFO ===>>> start processing event #1152242, run #204073 on slot 0, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 75 1 INFO ===>>> start processing event #1148416, run #204073 on slot 1, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 76 2 INFO ===>>> start processing event #1142753, run #204073 on slot 2, 73 events processed so far <<<=== +AthenaHiveEventLoopMgr 73 3 INFO ===>>> done processing event #1151102, run #204073 on slot 3, 74 events processed so far <<<=== +AthenaHiveEventLoopMgr 74 0 INFO ===>>> done processing event #1152242, run #204073 on slot 0, 75 events processed so far <<<=== AthenaHiveEventLoopMgr 77 0 INFO ===>>> start processing event #1149997, run #204073 on slot 0, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 78 1 INFO ===>>> start processing event #1151617, run #204073 on slot 1, 75 events processed so far <<<=== -AthenaHiveEventLoopMgr 75 2 INFO ===>>> done processing event #1148416, run #204073 on slot 2, 76 events processed so far <<<=== -AthenaHiveEventLoopMgr 76 3 INFO ===>>> done processing event #1142753, run #204073 on slot 3, 77 events processed so far <<<=== -AthenaHiveEventLoopMgr 79 2 INFO ===>>> start processing event #1149794, run #204073 on slot 2, 77 events processed so far <<<=== -AthenaHiveEventLoopMgr 80 3 INFO ===>>> start processing event #1152504, run #204073 on slot 3, 77 events processed so far <<<=== +AthenaHiveEventLoopMgr 78 3 INFO ===>>> start processing event #1151617, run #204073 on slot 3, 75 events processed so far <<<=== +AthenaHiveEventLoopMgr 75 1 INFO ===>>> done processing event #1148416, run #204073 on slot 1, 76 events processed so far <<<=== +AthenaHiveEventLoopMgr 76 2 INFO ===>>> done processing event #1142753, run #204073 on slot 2, 77 events processed so far <<<=== AthenaHiveEventLoopMgr 77 0 INFO ===>>> done processing event #1149997, run #204073 on slot 0, 78 events processed so far <<<=== -AthenaHiveEventLoopMgr 78 1 INFO ===>>> done processing event #1151617, run #204073 on slot 1, 79 events processed so far <<<=== -AthenaHiveEventLoopMgr 81 0 INFO ===>>> start processing event #1142485, run #204073 on slot 0, 79 events processed so far <<<=== -AthenaHiveEventLoopMgr 82 1 INFO ===>>> start processing event #1151364, run #204073 on slot 1, 79 events processed so far <<<=== -AthenaHiveEventLoopMgr 79 2 INFO ===>>> done processing event #1149794, run #204073 on slot 2, 80 events processed so far <<<=== -AthenaHiveEventLoopMgr 80 3 INFO ===>>> done processing event #1152504, run #204073 on slot 3, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 83 2 INFO ===>>> start processing event #1143901, run #204073 on slot 2, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 79 0 INFO ===>>> start processing event #1149794, run #204073 on slot 0, 78 events processed so far <<<=== +AthenaHiveEventLoopMgr 80 1 INFO ===>>> start processing event #1152504, run #204073 on slot 1, 78 events processed so far <<<=== +AthenaHiveEventLoopMgr 81 2 INFO ===>>> start processing event #1142485, run #204073 on slot 2, 78 events processed so far <<<=== +AthenaHiveEventLoopMgr 78 3 INFO ===>>> done processing event #1151617, run #204073 on slot 3, 79 events processed so far <<<=== +AthenaHiveEventLoopMgr 79 0 INFO ===>>> done processing event #1149794, run #204073 on slot 0, 80 events processed so far <<<=== +AthenaHiveEventLoopMgr 80 1 INFO ===>>> done processing event #1152504, run #204073 on slot 1, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 82 0 INFO ===>>> start processing event #1151364, run #204073 on slot 0, 81 events processed so far <<<=== +AthenaHiveEventLoopMgr 83 1 INFO ===>>> start processing event #1143901, run #204073 on slot 1, 81 events processed so far <<<=== AthenaHiveEventLoopMgr 84 3 INFO ===>>> start processing event #1153979, run #204073 on slot 3, 81 events processed so far <<<=== -AthenaHiveEventLoopMgr 81 0 INFO ===>>> done processing event #1142485, run #204073 on slot 0, 82 events processed so far <<<=== -AthenaHiveEventLoopMgr 82 1 INFO ===>>> done processing event #1151364, run #204073 on slot 1, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 85 0 INFO ===>>> start processing event #1150212, run #204073 on slot 0, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 86 1 INFO ===>>> start processing event #1152633, run #204073 on slot 1, 83 events processed so far <<<=== -AthenaHiveEventLoopMgr 83 2 INFO ===>>> done processing event #1143901, run #204073 on slot 2, 84 events processed so far <<<=== +AthenaHiveEventLoopMgr 81 2 INFO ===>>> done processing event #1142485, run #204073 on slot 2, 82 events processed so far <<<=== +AthenaHiveEventLoopMgr 82 0 INFO ===>>> done processing event #1151364, run #204073 on slot 0, 83 events processed so far <<<=== +AthenaHiveEventLoopMgr 83 1 INFO ===>>> done processing event #1143901, run #204073 on slot 1, 84 events processed so far <<<=== +AthenaHiveEventLoopMgr 85 0 INFO ===>>> start processing event #1150212, run #204073 on slot 0, 84 events processed so far <<<=== +AthenaHiveEventLoopMgr 86 1 INFO ===>>> start processing event #1152633, run #204073 on slot 1, 84 events processed so far <<<=== +AthenaHiveEventLoopMgr 87 2 INFO ===>>> start processing event #1155482, run #204073 on slot 2, 84 events processed so far <<<=== AthenaHiveEventLoopMgr 84 3 INFO ===>>> done processing event #1153979, run #204073 on slot 3, 85 events processed so far <<<=== -AthenaHiveEventLoopMgr 87 2 INFO ===>>> start processing event #1155482, run #204073 on slot 2, 85 events processed so far <<<=== -AthenaHiveEventLoopMgr 88 3 INFO ===>>> start processing event #1150472, run #204073 on slot 3, 85 events processed so far <<<=== AthenaHiveEventLoopMgr 85 0 INFO ===>>> done processing event #1150212, run #204073 on slot 0, 86 events processed so far <<<=== AthenaHiveEventLoopMgr 86 1 INFO ===>>> done processing event #1152633, run #204073 on slot 1, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 89 0 INFO ===>>> start processing event #1140275, run #204073 on slot 0, 87 events processed so far <<<=== -AthenaHiveEventLoopMgr 90 1 INFO ===>>> start processing event #1145882, run #204073 on slot 1, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 88 0 INFO ===>>> start processing event #1150472, run #204073 on slot 0, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 89 1 INFO ===>>> start processing event #1140275, run #204073 on slot 1, 87 events processed so far <<<=== +AthenaHiveEventLoopMgr 90 3 INFO ===>>> start processing event #1145882, run #204073 on slot 3, 87 events processed so far <<<=== AthenaHiveEventLoopMgr 87 2 INFO ===>>> done processing event #1155482, run #204073 on slot 2, 88 events processed so far <<<=== -AthenaHiveEventLoopMgr 88 3 INFO ===>>> done processing event #1150472, run #204073 on slot 3, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 91 2 INFO ===>>> start processing event #1151732, run #204073 on slot 2, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 92 3 INFO ===>>> start processing event #1137896, run #204073 on slot 3, 89 events processed so far <<<=== -AthenaHiveEventLoopMgr 89 0 INFO ===>>> done processing event #1140275, run #204073 on slot 0, 90 events processed so far <<<=== -AthenaHiveEventLoopMgr 90 1 INFO ===>>> done processing event #1145882, run #204073 on slot 1, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 93 0 INFO ===>>> start processing event #1156381, run #204073 on slot 0, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 94 1 INFO ===>>> start processing event #1149161, run #204073 on slot 1, 91 events processed so far <<<=== -AthenaHiveEventLoopMgr 91 2 INFO ===>>> done processing event #1151732, run #204073 on slot 2, 92 events processed so far <<<=== -AthenaHiveEventLoopMgr 92 3 INFO ===>>> done processing event #1137896, run #204073 on slot 3, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 95 2 INFO ===>>> start processing event #1153794, run #204073 on slot 2, 93 events processed so far <<<=== +AthenaHiveEventLoopMgr 88 0 INFO ===>>> done processing event #1150472, run #204073 on slot 0, 89 events processed so far <<<=== +AthenaHiveEventLoopMgr 89 1 INFO ===>>> done processing event #1140275, run #204073 on slot 1, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 91 0 INFO ===>>> start processing event #1151732, run #204073 on slot 0, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 92 1 INFO ===>>> start processing event #1137896, run #204073 on slot 1, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 93 2 INFO ===>>> start processing event #1156381, run #204073 on slot 2, 90 events processed so far <<<=== +AthenaHiveEventLoopMgr 90 3 INFO ===>>> done processing event #1145882, run #204073 on slot 3, 91 events processed so far <<<=== +AthenaHiveEventLoopMgr 91 0 INFO ===>>> done processing event #1151732, run #204073 on slot 0, 92 events processed so far <<<=== +AthenaHiveEventLoopMgr 92 1 INFO ===>>> done processing event #1137896, run #204073 on slot 1, 93 events processed so far <<<=== +AthenaHiveEventLoopMgr 94 0 INFO ===>>> start processing event #1149161, run #204073 on slot 0, 93 events processed so far <<<=== +AthenaHiveEventLoopMgr 95 1 INFO ===>>> start processing event #1153794, run #204073 on slot 1, 93 events processed so far <<<=== AthenaHiveEventLoopMgr 96 3 INFO ===>>> start processing event #1151312, run #204073 on slot 3, 93 events processed so far <<<=== -AthenaHiveEventLoopMgr 93 0 INFO ===>>> done processing event #1156381, run #204073 on slot 0, 94 events processed so far <<<=== -AthenaHiveEventLoopMgr 94 1 INFO ===>>> done processing event #1149161, run #204073 on slot 1, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 97 0 INFO ===>>> start processing event #1148893, run #204073 on slot 0, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 98 1 INFO ===>>> start processing event #1156938, run #204073 on slot 1, 95 events processed so far <<<=== -AthenaHiveEventLoopMgr 95 2 INFO ===>>> done processing event #1153794, run #204073 on slot 2, 96 events processed so far <<<=== +AthenaHiveEventLoopMgr 93 2 INFO ===>>> done processing event #1156381, run #204073 on slot 2, 94 events processed so far <<<=== +AthenaHiveEventLoopMgr 94 0 INFO ===>>> done processing event #1149161, run #204073 on slot 0, 95 events processed so far <<<=== +AthenaHiveEventLoopMgr 95 1 INFO ===>>> done processing event #1153794, run #204073 on slot 1, 96 events processed so far <<<=== +AthenaHiveEventLoopMgr 97 0 INFO ===>>> start processing event #1148893, run #204073 on slot 0, 96 events processed so far <<<=== +AthenaHiveEventLoopMgr 98 1 INFO ===>>> start processing event #1156938, run #204073 on slot 1, 96 events processed so far <<<=== +AthenaHiveEventLoopMgr 99 2 INFO ===>>> start processing event #1156351, run #204073 on slot 2, 96 events processed so far <<<=== AthenaHiveEventLoopMgr 96 3 INFO ===>>> done processing event #1151312, run #204073 on slot 3, 97 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 2 INFO ===>>> start processing event #1156351, run #204073 on slot 2, 97 events processed so far <<<=== AthenaHiveEventLoopMgr 97 0 INFO ===>>> done processing event #1148893, run #204073 on slot 0, 98 events processed so far <<<=== AthenaHiveEventLoopMgr 98 1 INFO ===>>> done processing event #1156938, run #204073 on slot 1, 99 events processed so far <<<=== AthenaHiveEventLoopMgr 99 2 INFO ===>>> done processing event #1156351, run #204073 on slot 2, 100 events processed so far <<<=== -AthenaHiveEventLoopMgr 99 2 INFO ---> Loop Finished (seconds): 5.43728 +AthenaHiveEventLoopMgr 99 2 INFO ---> Loop Finished (seconds): 4.24129 Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] ApplicationMgr INFO Application Manager Stopped successfully SGInputLoader INFO Finalizing SGInputLoader... @@ -1284,7 +1288,7 @@ AvalancheSchedulerSvc INFO Joining S PyComponentMgr INFO Finalizing PyComponentMgr... EventDataSvc INFO Finalizing EventDataSvc IdDictDetDescrCnv INFO in finalize -IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.04 ))s +IOVDbFolder INFO Folder /LAR/Align (PoolRef) db-read 1/1 objs/chan/bytes 1/1/170 (( 0.02 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CES (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/LIN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/OFL02/CALIB/CIS/FIT/NLN (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s @@ -1297,9 +1301,9 @@ IOVDbFolder INFO Folder /T IOVDbFolder INFO Folder /TILE/OFL02/TIME/CHANNELOFFSET/PHY (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /TILE/ONL01/STATUS/ADC (AttrListColl) db-read 0/0 objs/chan/bytes 0/277/0 (( 0.00 ))s IOVDbFolder INFO Folder /LAR/LArCellPositionShift (PoolRef) db-read 1/1 objs/chan/bytes 1/1/195 (( 0.02 ))s -IOVDbSvc INFO bytes in (( 0.06 ))s +IOVDbSvc INFO bytes in (( 0.05 ))s IOVDbSvc INFO Connection sqlite://;schema=mycool.db;dbname=OFLP200 : nConnect: 0 nFolders: 0 ReadTime: (( 0.00 ))s -IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.06 ))s +IOVDbSvc INFO Connection COOLOFL_LAR/OFLP200 : nConnect: 2 nFolders: 2 ReadTime: (( 0.05 ))s IOVDbSvc INFO Connection COOLOFL_TILE/OFLP200 : nConnect: 1 nFolders: 11 ReadTime: (( 0.00 ))s AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc @@ -1310,9 +1314,9 @@ ToolSvc.ByteStreamMetadataTool INFO in finali *****Chrono***** INFO WARNING: MT job; statistics are unreliable *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** -cObjR_ALL INFO Time User : Tot= 150 [ms] Ave/Min/Max= 75(+- 65)/ 10/ 140 [ms] #= 2 -cObj_ALL INFO Time User : Tot= 200 [ms] Ave/Min/Max= 100(+- 70)/ 30/ 170 [ms] #= 2 -ChronoStatSvc INFO Time User : Tot= 14.6 [s] #= 1 +cObjR_ALL INFO Time User : Tot= 100 [ms] Ave/Min/Max= 50(+- 50)/ 0/ 100 [ms] #= 2 +cObj_ALL INFO Time User : Tot= 140 [ms] Ave/Min/Max= 70(+- 60)/ 10/ 130 [ms] #= 2 +ChronoStatSvc INFO Time User : Tot= 9.01 [s] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.finalize() INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/TileCalorimeter/TileTBRec/src/TileTBAANtuple.cxx b/TileCalorimeter/TileTBRec/src/TileTBAANtuple.cxx index 151245edbea96cf441a00a663f9b8935d7e07fe0..af25a4795a88dc2fb44d60f7869c2b7ee8fa9c1d 100755 --- a/TileCalorimeter/TileTBRec/src/TileTBAANtuple.cxx +++ b/TileCalorimeter/TileTBRec/src/TileTBAANtuple.cxx @@ -2352,6 +2352,11 @@ StatusCode TileTBAANtuple::initList() { if (size > 0) { + if (size < m_nDrawers) { + ATH_MSG_INFO( "decreasing m_nDrawers from " << m_nDrawers << " to " << size ); + m_nDrawers = size; + } + unsigned int rosOrder[5] = { 2, 1, 3, 4, 0 }; unsigned int dr = 0; char frg[6] = "0x000"; diff --git a/Tools/Campaigns/python/PhaseII.py b/Tools/Campaigns/python/PhaseII.py index 905287bac5cb7e10244035b5d6d73f1684825c03..3bd7575ad77dc637fb50fe2e55d768eebe529c4a 100644 --- a/Tools/Campaigns/python/PhaseII.py +++ b/Tools/Campaigns/python/PhaseII.py @@ -16,7 +16,17 @@ def PhaseIIPileUp(flags): flags.Tile.correctTime = False # pile-up - # TODO + flags.Digitization.PU.NumberOfLowPtMinBias = 209.2692 + flags.Digitization.PU.NumberOfHighPtMinBias = 0.725172 + flags.Digitization.PU.BunchStructureConfig = 'RunDependentSimData.BunchStructure_2017' + flags.Digitization.PU.CustomProfile={ + 'run': 242020, + 'startmu': 190.0, + 'endmu': 210.0, + 'stepmu': 1.0, + 'startlb': 1, + 'timestamp': 1412020000 + } def PhaseIINoPileUp(flags): diff --git a/Tools/PROCTools/data/master_q221_AOD_content.ref b/Tools/PROCTools/data/master_q221_AOD_content.ref index d2b1e5381a397b7ac780f2ae841b4f9973a494f1..1ae992370af02fd8d793e200f6bf7170f0253e64 100644 --- a/Tools/PROCTools/data/master_q221_AOD_content.ref +++ b/Tools/PROCTools/data/master_q221_AOD_content.ref @@ -11,6 +11,7 @@ CaloCalTopoClustersAuxDyn.AVG_LAR_Q CaloCalTopoClustersAuxDyn.AVG_TILE_Q CaloCalTopoClustersAuxDyn.BADLARQ_FRAC CaloCalTopoClustersAuxDyn.BadChannelList +CaloCalTopoClustersAuxDyn.CELL_SIGNIFICANCE CaloCalTopoClustersAuxDyn.CENTER_LAMBDA CaloCalTopoClustersAuxDyn.CENTER_MAG CaloCalTopoClustersAuxDyn.CellLink @@ -20,8 +21,12 @@ CaloCalTopoClustersAuxDyn.ENG_FRAC_MAX CaloCalTopoClustersAuxDyn.ENG_POS CaloCalTopoClustersAuxDyn.FIRST_ENG_DENS CaloCalTopoClustersAuxDyn.ISOLATION +CaloCalTopoClustersAuxDyn.LATERAL +CaloCalTopoClustersAuxDyn.LONGITUDINAL +CaloCalTopoClustersAuxDyn.MASS CaloCalTopoClustersAuxDyn.NCELL_SAMPLING CaloCalTopoClustersAuxDyn.N_BAD_CELLS +CaloCalTopoClustersAuxDyn.PTD CaloCalTopoClustersAuxDyn.SECOND_LAMBDA CaloCalTopoClustersAuxDyn.SECOND_R CaloCalTopoClustersAuxDyn.SECOND_TIME @@ -986,8 +991,30 @@ HLT_DimuEF HLT_DimuEFAux. HLT_DisTrkBDTSel HLT_DisTrkBDTSelAux. +HLT_DisTrkBDTSelAuxDyn.disTrk_bdtscore +HLT_DisTrkBDTSelAuxDyn.disTrk_category +HLT_DisTrkBDTSelAuxDyn.disTrk_chi2 +HLT_DisTrkBDTSelAuxDyn.disTrk_chi2ndof_pix +HLT_DisTrkBDTSelAuxDyn.disTrk_d0_wrtVtx +HLT_DisTrkBDTSelAuxDyn.disTrk_eta +HLT_DisTrkBDTSelAuxDyn.disTrk_is_fail +HLT_DisTrkBDTSelAuxDyn.disTrk_iso3_dr01 +HLT_DisTrkBDTSelAuxDyn.disTrk_iso3_dr02 +HLT_DisTrkBDTSelAuxDyn.disTrk_n_hits_innermost +HLT_DisTrkBDTSelAuxDyn.disTrk_n_hits_pix +HLT_DisTrkBDTSelAuxDyn.disTrk_n_hits_sct +HLT_DisTrkBDTSelAuxDyn.disTrk_ndof +HLT_DisTrkBDTSelAuxDyn.disTrk_phi +HLT_DisTrkBDTSelAuxDyn.disTrk_pt +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_chi2 +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_d0_wrtVtx +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_ndof +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_pt +HLT_DisTrkBDTSelAuxDyn.disTrk_refit_z0_wrtVtx +HLT_DisTrkBDTSelAuxDyn.disTrk_z0_wrtVtx HLT_DisTrkCand HLT_DisTrkCandAux. +HLT_DisTrkCandAuxDyn.disTrkCand_category HLT_DisTrkCandAuxDyn.disTrkCand_chi2 HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_ibl HLT_DisTrkCandAuxDyn.disTrkCand_chi2sum_br_pix1 @@ -1001,6 +1028,7 @@ HLT_DisTrkCandAuxDyn.disTrkCand_d0 HLT_DisTrkCandAuxDyn.disTrkCand_d0_wrtVtx HLT_DisTrkCandAuxDyn.disTrkCand_eta HLT_DisTrkCandAuxDyn.disTrkCand_eta_wrtVtx +HLT_DisTrkCandAuxDyn.disTrkCand_is_fail HLT_DisTrkCandAuxDyn.disTrkCand_iso1_dr01 HLT_DisTrkCandAuxDyn.disTrkCand_iso1_dr02 HLT_DisTrkCandAuxDyn.disTrkCand_iso1_dr04 @@ -1128,6 +1156,23 @@ HLT_HIEventShapeEG HLT_HIEventShapeEGAux. HLT_HPtdEdxTrk HLT_HPtdEdxTrkAux. +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_a0beam +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_dedx +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_eta +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p45 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p50 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p55 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p60 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p65 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p70 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p75 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hdedx_hits_1p80 +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hits_inner +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hits_innermost +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hits_pix +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_n_hits_sct +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_phi +HLT_HPtdEdxTrkAuxDyn.HPtdEdxTrk_pt HLT_HitDV HLT_HitDVAux. HLT_HitDVAuxDyn.hitDV_bdt_score diff --git a/Tools/PROCTools/data/master_q221_AOD_digest.ref b/Tools/PROCTools/data/master_q221_AOD_digest.ref index 750b1c4dd09fd86452f674abe04b8aa100fedc7a..6162f2f91ab710d711ef4cc9066a69ba7baac619 100644 --- a/Tools/PROCTools/data/master_q221_AOD_digest.ref +++ b/Tools/PROCTools/data/master_q221_AOD_digest.ref @@ -6,7 +6,7 @@ 284500 87473037 65 43 0 11 2 9 6 4 2 284500 87473040 104 93 1 16 1 15 14 7 7 284500 87473051 135 111 1 11 1 10 22 16 6 - 284500 87473063 62 76 3 6 2 4 6 4 2 + 284500 87473063 62 77 3 6 2 4 6 4 2 284500 87473068 26 33 1 0 0 0 0 0 0 284500 87473075 67 87 2 5 0 5 5 4 1 284500 87473084 84 86 2 13 1 12 10 5 5 diff --git a/Tools/PyJobTransforms/share/DisableFileSizeLimit.py b/Tools/PyJobTransforms/share/DisableFileSizeLimit.py new file mode 100644 index 0000000000000000000000000000000000000000..b5830073c93678339b2ae8f5d7c931995daf95d6 --- /dev/null +++ b/Tools/PyJobTransforms/share/DisableFileSizeLimit.py @@ -0,0 +1,7 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# +# Disable file size limit for POOL files + +from AthenaCommon.AppMgr import ServiceMgr +if hasattr(ServiceMgr, "AthenaPoolCnvSvc"): + ServiceMgr.AthenaPoolCnvSvc.MaxFileSizes = ["150000000000"] # set to 150 GB diff --git a/Tools/TrfTestsART/test/test_trf_data15_mt.sh b/Tools/TrfTestsART/test/test_trf_data15_mt.sh index 085fcff3ea20ec67ad4f933d5d4a1fc8969838a6..505860eef355e5d255b89c47fae9aaeb707fc949 100755 --- a/Tools/TrfTestsART/test/test_trf_data15_mt.sh +++ b/Tools/TrfTestsART/test/test_trf_data15_mt.sh @@ -17,7 +17,7 @@ timeout 43200 Reco_tf.py \ --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ --postExec 'FPEAuditor.NStacktracesOnFPE=10' \ --autoConfiguration='everything' \ - --conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' echo "art-result: $? Reco_tf_data15_mt" diff --git a/Tools/TrfTestsART/test/test_trf_data16_mt.sh b/Tools/TrfTestsART/test/test_trf_data16_mt.sh index b57b45b28aba7fcdf322b8134b849cede46f5fb4..281e4a7bc8c4e50592b4268f3ab2e78b325cc760 100755 --- a/Tools/TrfTestsART/test/test_trf_data16_mt.sh +++ b/Tools/TrfTestsART/test/test_trf_data16_mt.sh @@ -17,7 +17,7 @@ timeout 43200 Reco_tf.py \ --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ --postExec 'FPEAuditor.NStacktracesOnFPE=10' \ --autoConfiguration='everything' \ - --conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' echo "art-result: $? Reco_tf_data16_mt" diff --git a/Tools/TrfTestsART/test/test_trf_data17_mt.sh b/Tools/TrfTestsART/test/test_trf_data17_mt.sh index 69e19a2c560ecd4ffa0dc1279bba02d7be48fade..c40c2801a2ec5a0eddaf4b40ac28f82e35965f57 100755 --- a/Tools/TrfTestsART/test/test_trf_data17_mt.sh +++ b/Tools/TrfTestsART/test/test_trf_data17_mt.sh @@ -17,7 +17,7 @@ timeout 43200 Reco_tf.py \ --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ --postExec 'FPEAuditor.NStacktracesOnFPE=10' \ --autoConfiguration='everything' \ - --conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' echo "art-result: $? Reco_tf_data17_mt" diff --git a/Tools/TrfTestsART/test/test_trf_data18_11k_mt.sh b/Tools/TrfTestsART/test/test_trf_data18_11k_mt.sh index 32ccd351588735a7f98eb6148104cb16ebacdb9b..105525fb52eff1ed86a8ab576404daa6144bad6b 100755 --- a/Tools/TrfTestsART/test/test_trf_data18_11k_mt.sh +++ b/Tools/TrfTestsART/test/test_trf_data18_11k_mt.sh @@ -17,7 +17,7 @@ timeout 64800 Reco_tf.py \ --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ --postExec 'FPEAuditor.NStacktracesOnFPE=20' \ --autoConfiguration='everything' \ - --conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' echo "art-result: $? Reco_tf_data18_11K_mt" diff --git a/Tools/TrfTestsART/test/test_trf_data18_hybrid.sh b/Tools/TrfTestsART/test/test_trf_data18_hybrid.sh index 370b6262eec3d5187dfbfae66e6ac80e1dc0ef0a..900ee14f1389fca8e6cbac281ab20515a7353121 100755 --- a/Tools/TrfTestsART/test/test_trf_data18_hybrid.sh +++ b/Tools/TrfTestsART/test/test_trf_data18_hybrid.sh @@ -17,7 +17,7 @@ timeout 43200 Reco_tf.py \ --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ --postExec 'FPEAuditor.NStacktracesOnFPE=10' \ --autoConfiguration='everything' \ - --conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' echo "art-result: $? Reco_tf_data18_hybrid" diff --git a/Tools/TrfTestsART/test/test_trf_data18_mp.sh b/Tools/TrfTestsART/test/test_trf_data18_mp.sh index 8de3e09dc92dcff5edc2e596faae6398868f1506..64834a759671039abcc341b374eaffa179571002 100755 --- a/Tools/TrfTestsART/test/test_trf_data18_mp.sh +++ b/Tools/TrfTestsART/test/test_trf_data18_mp.sh @@ -18,7 +18,7 @@ timeout 43200 Reco_tf.py \ --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ --postExec 'FPEAuditor.NStacktracesOnFPE=10' \ --autoConfiguration='everything' \ - --conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' echo "art-result: $? Reco_tf_data18_mp" diff --git a/Tools/TrfTestsART/test/test_trf_data18_mt.sh b/Tools/TrfTestsART/test/test_trf_data18_mt.sh index 7c8268d65324d800deeb038e997dac1a7b3c4b2b..baf0340ef6ad5709617266df73c539df7062edf2 100755 --- a/Tools/TrfTestsART/test/test_trf_data18_mt.sh +++ b/Tools/TrfTestsART/test/test_trf_data18_mt.sh @@ -17,7 +17,7 @@ timeout 43200 Reco_tf.py \ --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ --postExec 'FPEAuditor.NStacktracesOnFPE=10' \ --autoConfiguration='everything' \ - --conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' echo "art-result: $? Reco_tf_data18_mt" diff --git a/Tools/TrfTestsART/test/test_trf_data18_rucio_mt.sh b/Tools/TrfTestsART/test/test_trf_data18_rucio_mt.sh index f64dbcafa04a67e851219ac22d0601d6444793da..182276f69c79d0b2b02adf6357834b83683a1f4f 100755 --- a/Tools/TrfTestsART/test/test_trf_data18_rucio_mt.sh +++ b/Tools/TrfTestsART/test/test_trf_data18_rucio_mt.sh @@ -8,6 +8,8 @@ # art-include: master/Athena # art-include: 22.0-mc20/Athena # art-athena-mt: 8 +# art-runon: weekdays +# art-runon: Sunday timeout 43200 Reco_tf.py \ --inputBSFile=${ArtInFile} \ @@ -20,7 +22,7 @@ timeout 43200 Reco_tf.py \ --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ --postExec 'FPEAuditor.NStacktracesOnFPE=10' \ --autoConfiguration='everything' \ - --conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' echo "art-result: $? Reco_tf_data18_rucio_mt" diff --git a/Tools/TrfTestsART/test/test_trf_data18_rucio_weekly_mt.sh b/Tools/TrfTestsART/test/test_trf_data18_rucio_weekly_mt.sh new file mode 100755 index 0000000000000000000000000000000000000000..44796e77729671bd93675e11b94ab3cab341d027 --- /dev/null +++ b/Tools/TrfTestsART/test/test_trf_data18_rucio_weekly_mt.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# +# art-description: Reco_tf.py data18 RAWtoALL in MT mode with RUCIO input dataset processing 50 files with 3 files/job, excuted only on x86_64-centos7-gcc8-opt and once per week on Saturday +# art-type: grid +# art-input: data18_13TeV:data18_13TeV.00357750.physics_Main.daq.RAW +# art-input-nfiles: 200 +# art-input-nfilesperjob: 3 +# art-include: master/Athena/x86_64-centos7-gcc8-opt +# art-athena-mt: 8 +# art-runon: Saturday + +timeout 43200 Reco_tf.py \ + --inputBSFile=${ArtInFile} \ + --outputAODFile=myAOD.pool.root \ + --outputHISTFile=myHIST.root \ + --outputDESDM_MCPFile=myDESDM_MCP.pool.root \ + --outputDRAW_ZMUMUFile=myDRAW_ZMUMU.data \ + --outputDAOD_IDTIDEFile=myIDTIDE.pool.root \ + --multithreaded='True' \ + --preExec 'all:from AthenaMonitoring.DQMonFlags import DQMonFlags; DQMonFlags.doHLTMon=False' \ + --postExec 'FPEAuditor.NStacktracesOnFPE=10' \ + --autoConfiguration='everything' \ + --conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' --geometryVersion='default:ATLAS-R2-2016-01-00-01' \ + --runNumber='357750' --steering='doRAWtoALL' --maxEvents='-1' + +echo "art-result: $? Reco_tf_data18_rucio_weekly_mt" diff --git a/Tools/TrfTestsART/test/test_trf_q431_r2a_mt.sh b/Tools/TrfTestsART/test/test_trf_q431_r2a_mt.sh index ff464dcfd692f6eed7bbcf6d6e4b5ef9364b3a82..44ef175962f07e05fa8fd0e2dbfecdb96f214707 100755 --- a/Tools/TrfTestsART/test/test_trf_q431_r2a_mt.sh +++ b/Tools/TrfTestsART/test/test_trf_q431_r2a_mt.sh @@ -8,7 +8,7 @@ Reco_tf.py \ --AMI q431 \ ---conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' \ +--conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' \ --multithreaded="True" \ --steering doRAWtoALL \ --maxEvents -1 diff --git a/Tools/TrfTestsART/test/test_trf_q431_r2e_mt.sh b/Tools/TrfTestsART/test/test_trf_q431_r2e_mt.sh index 397c6bb26e6d0db5bcc52d4be042f98adc9b439e..3d7cb16fcc835e3b6fbb27b83afda2fc1d684c34 100755 --- a/Tools/TrfTestsART/test/test_trf_q431_r2e_mt.sh +++ b/Tools/TrfTestsART/test/test_trf_q431_r2e_mt.sh @@ -8,7 +8,7 @@ Reco_tf.py \ --AMI q431 \ ---conditionsTag 'all:CONDBR2-BLKPA-RUN2-06' \ +--conditionsTag 'all:CONDBR2-BLKPA-RUN2-07' \ --multithreaded="True" \ --maxEvents -1 diff --git a/Tracking/Acts/ActsGeometry/ActsGeometry/ActsMaterialJsonWriterTool.h b/Tracking/Acts/ActsGeometry/ActsGeometry/ActsMaterialJsonWriterTool.h index 91aa94d50d4b09b8b32626e7500ce7fb3aabf383..08ac1911754ca0ceca76fbd59c243426c9755a67 100644 --- a/Tracking/Acts/ActsGeometry/ActsGeometry/ActsMaterialJsonWriterTool.h +++ b/Tracking/Acts/ActsGeometry/ActsGeometry/ActsMaterialJsonWriterTool.h @@ -12,6 +12,7 @@ #include "Gaudi/Property.h" /*no forward decl: typedef*/ // PACKAGE +#include "ActsGeometry/ActsGeometryContext.h" #include "ActsGeometryInterfaces/IActsMaterialJsonWriterTool.h" // ACTS @@ -35,17 +36,15 @@ public: virtual void - write(const Acts::MaterialMapJsonConverter::DetectorMaterialMaps& detMaterial) const override; + write(const ActsGeometryContext& gctx, const Acts::MaterialMapJsonConverter::DetectorMaterialMaps& detMaterial) const override; virtual void - write(const Acts::TrackingGeometry& tGeometry) const override; + write(const ActsGeometryContext& gctx, const Acts::TrackingGeometry& tGeometry) const override; private: - Acts::MaterialMapJsonConverter::Config m_cfg; - Gaudi::Property<std::string> m_filePath{this, "OutputFile", "material-maps.json", "Output json file for the Material Map"}; Gaudi::Property<bool> m_processSensitives{this, "processSensitives", true, "Write sensitive surface to the json file"}; Gaudi::Property<bool> m_processApproaches{this, "processApproaches", true, "Write approche surface to the json file"}; diff --git a/Tracking/Acts/ActsGeometry/ActsGeometry/ActsMaterialTrackWriterSvc.h b/Tracking/Acts/ActsGeometry/ActsGeometry/ActsMaterialTrackWriterSvc.h index dfc58fc6463504f840313b34b9478233deb9231f..cbbba9ef225f760bd15c0dc9f1b4d74c56cc51b1 100644 --- a/Tracking/Acts/ActsGeometry/ActsGeometry/ActsMaterialTrackWriterSvc.h +++ b/Tracking/Acts/ActsGeometry/ActsGeometry/ActsMaterialTrackWriterSvc.h @@ -6,6 +6,7 @@ #define ACTSGEOMETRY_ACTSMATERIALTRACKWRITERSVC_H #include "ActsGeometryInterfaces/IActsMaterialTrackWriterSvc.h" +#include "ActsGeometryInterfaces/IActsTrackingGeometrySvc.h" #include "AthenaBaseComps/AthService.h" #include "GaudiKernel/IInterface.h" @@ -92,6 +93,8 @@ private: void writerThread(); void doWrite(const Acts::RecordedMaterialTrack &mTrack); + ServiceHandle<IActsTrackingGeometrySvc> m_trackingGeometrySvc; + // jobOptions properties Gaudi::Property<std::string> m_filePath{this, "FilePath", "MaterialTracks.root", "Output root file for charged particle"}; Gaudi::Property<std::string> m_treeName{this, "TreeName", "material-tracks", ""}; diff --git a/Tracking/Acts/ActsGeometry/ActsGeometry/ActsSurfaceMappingTool.h b/Tracking/Acts/ActsGeometry/ActsGeometry/ActsSurfaceMappingTool.h index d9211d1e9bbff72b70b74d08cab51d2c85beca91..a0d71fdf66b76ffb68ff0e62d5c5851fe004494d 100644 --- a/Tracking/Acts/ActsGeometry/ActsGeometry/ActsSurfaceMappingTool.h +++ b/Tracking/Acts/ActsGeometry/ActsGeometry/ActsSurfaceMappingTool.h @@ -53,7 +53,7 @@ public: private: // Straight line stepper Acts::MagneticFieldContext m_magFieldContext; - Acts::GeometryContext m_geoContext; + ActsGeometryContext m_geoContext; using SlStepper = Acts::StraightLineStepper; using StraightLinePropagator = Acts::Propagator<SlStepper, Acts::Navigator>; ToolHandle<IActsTrackingGeometryTool> m_trackingGeometryTool{this, "TrackingGeometryTool", "ActsTrackingGeometryTool"}; diff --git a/Tracking/Acts/ActsGeometry/python/ActsGeometryConfig.py b/Tracking/Acts/ActsGeometry/python/ActsGeometryConfig.py index 2a72914c357a2e0d3e47775bab01919a0b625d13..447da6ed4a5679243f51b51ef54109b370b76050 100644 --- a/Tracking/Acts/ActsGeometry/python/ActsGeometryConfig.py +++ b/Tracking/Acts/ActsGeometry/python/ActsGeometryConfig.py @@ -116,11 +116,15 @@ def ActsExtrapolationToolCfg(configFlags, name="ActsExtrapolationTool", **kwargs return result -def ActsMaterialTrackWriterSvcCfg(name="ActsMaterialTrackWriterSvc", +def ActsMaterialTrackWriterSvcCfg(configFlags, + name="ActsMaterialTrackWriterSvc", FilePath="MaterialTracks_mapping.root", TreeName="material-tracks") : result = ComponentAccumulator() + acc = ActsTrackingGeometrySvcCfg(configFlags) + result.merge(acc) + Acts_ActsMaterialTrackWriterSvc = CompFactory.ActsMaterialTrackWriterSvc ActsMaterialTrackWriterSvc = Acts_ActsMaterialTrackWriterSvc(name, FilePath=FilePath, diff --git a/Tracking/Acts/ActsGeometry/share/ActsMaterialMapping_jobOptions.py b/Tracking/Acts/ActsGeometry/share/ActsMaterialMapping_jobOptions.py index 8720a98dd9852fe906518bc09c449d10dc22c2e6..2a1fee4661ce98a8edc3ea3e1df8e26755592d50 100644 --- a/Tracking/Acts/ActsGeometry/share/ActsMaterialMapping_jobOptions.py +++ b/Tracking/Acts/ActsGeometry/share/ActsMaterialMapping_jobOptions.py @@ -78,7 +78,8 @@ if "__main__" == __name__: cfg = MainServicesCfg(ConfigFlags) - cfg.merge(ActsMaterialTrackWriterSvcCfg("ActsMaterialTrackWriterSvc", + cfg.merge(ActsMaterialTrackWriterSvcCfg(ConfigFlags, + "ActsMaterialTrackWriterSvc", "MaterialTracks_mapping.root")) cfg.merge(PoolReadCfg(ConfigFlags)) diff --git a/Tracking/Acts/ActsGeometry/share/ActsMaterialValidationAlg.py b/Tracking/Acts/ActsGeometry/share/ActsMaterialValidationAlg.py index 35dd3a735539b8bd11588517d9778085e59e8d00..733c3078cf153bb111c934061c4928436feea4fc 100644 --- a/Tracking/Acts/ActsGeometry/share/ActsMaterialValidationAlg.py +++ b/Tracking/Acts/ActsGeometry/share/ActsMaterialValidationAlg.py @@ -66,8 +66,10 @@ if "__main__" == __name__: cfg.merge(alignCondAlgCfg) - cfg.merge(ActsMaterialTrackWriterSvcCfg("ActsMaterialTrackWriterSvc", + cfg.merge(ActsMaterialTrackWriterSvcCfg(ConfigFlags, + "ActsMaterialTrackWriterSvc", "MaterialTracks_mapped.root")) + print('DEF WRITER : ') extrapol = ActsExtrapolationToolCfg(ConfigFlags, InteractionMultiScatering = True, diff --git a/Tracking/Acts/ActsGeometry/src/ActsMaterialJsonWriterTool.cxx b/Tracking/Acts/ActsGeometry/src/ActsMaterialJsonWriterTool.cxx index f133dd726da94ee3688ba34aab9c3483267c4e98..a725b4c5630bb81011e8cb89a9e8421db2783b67 100644 --- a/Tracking/Acts/ActsGeometry/src/ActsMaterialJsonWriterTool.cxx +++ b/Tracking/Acts/ActsGeometry/src/ActsMaterialJsonWriterTool.cxx @@ -2,6 +2,7 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ +#include "ActsGeometry/ActsGeometryContext.h" #include "ActsGeometry/ActsMaterialJsonWriterTool.h" #include "ActsInterop/Logger.h" @@ -25,25 +26,26 @@ StatusCode ActsMaterialJsonWriterTool::initialize() { ATH_MSG_INFO("Starting Material writer"); - - m_cfg.name = "MaterialMapJsonConverter"; - m_cfg.logger = makeActsAthenaLogger(this, "MaterialMapJsonConverter"); - m_cfg.processSensitives = m_processSensitives; - m_cfg.processApproaches = m_processApproaches; - m_cfg.processRepresenting = m_processRepresenting; - m_cfg.processBoundaries = m_processBoundaries; - m_cfg.processVolumes = m_processVolumes; - m_cfg.processDenseVolumes = m_processDenseVolumes; - m_cfg.processNonMaterial = m_processNonMaterial; return StatusCode::SUCCESS; } void -ActsMaterialJsonWriterTool::write(const Acts::MaterialMapJsonConverter::DetectorMaterialMaps& detMaterial) const +ActsMaterialJsonWriterTool::write(const ActsGeometryContext& gctx, const Acts::MaterialMapJsonConverter::DetectorMaterialMaps& detMaterial) const { + // Setup the converter config + Acts::MaterialMapJsonConverter::Config cfg; + cfg.context = gctx.context(); + cfg.processSensitives = m_processSensitives; + cfg.processApproaches = m_processApproaches; + cfg.processRepresenting = m_processRepresenting; + cfg.processBoundaries = m_processBoundaries; + cfg.processVolumes = m_processVolumes; + cfg.processDenseVolumes = m_processDenseVolumes; + cfg.processNonMaterial = m_processNonMaterial; + // Evoke the converter - Acts::MaterialMapJsonConverter jmConverter(m_cfg); + Acts::MaterialMapJsonConverter jmConverter(cfg, Acts::Logging::INFO); auto jout = jmConverter.materialMapsToJson(detMaterial); // And write the file std::ofstream ofj(m_filePath); @@ -51,10 +53,21 @@ ActsMaterialJsonWriterTool::write(const Acts::MaterialMapJsonConverter::Detector } void -ActsMaterialJsonWriterTool::write(const Acts::TrackingGeometry& tGeometry) const +ActsMaterialJsonWriterTool::write(const ActsGeometryContext& gctx, const Acts::TrackingGeometry& tGeometry) const { + // Setup the converter config + Acts::MaterialMapJsonConverter::Config cfg; + cfg.context = gctx.context(); + cfg.processSensitives = m_processSensitives; + cfg.processApproaches = m_processApproaches; + cfg.processRepresenting = m_processRepresenting; + cfg.processBoundaries = m_processBoundaries; + cfg.processVolumes = m_processVolumes; + cfg.processDenseVolumes = m_processDenseVolumes; + cfg.processNonMaterial = m_processNonMaterial; + // Evoke the converter - Acts::MaterialMapJsonConverter jmConverter(m_cfg); + Acts::MaterialMapJsonConverter jmConverter(cfg, Acts::Logging::INFO); auto jout = jmConverter.trackingGeometryToJson(tGeometry); // And write the file std::ofstream ofj(m_filePath); diff --git a/Tracking/Acts/ActsGeometry/src/ActsMaterialMapping.cxx b/Tracking/Acts/ActsGeometry/src/ActsMaterialMapping.cxx index 14fb84a3a1d7d5d96f740bc37b709dc306ef609c..37bd751324f8263230e3a329ce9bd9b5d81cc5d9 100755 --- a/Tracking/Acts/ActsGeometry/src/ActsMaterialMapping.cxx +++ b/Tracking/Acts/ActsGeometry/src/ActsMaterialMapping.cxx @@ -140,7 +140,8 @@ StatusCode ActsMaterialMapping::finalize() { } } - m_materialJsonWriterTool->write(detectorMaterial); + auto context = m_surfaceMappingTool->trackingGeometryTool()->getNominalGeometryContext(); + m_materialJsonWriterTool->write(context, detectorMaterial); return StatusCode::SUCCESS; diff --git a/Tracking/Acts/ActsGeometry/src/ActsMaterialTrackWriterSvc.cxx b/Tracking/Acts/ActsGeometry/src/ActsMaterialTrackWriterSvc.cxx index 5741a20be64af161a701218bc87122611268ae60..cad59556a54e2173c2afb0930f21749d66a5c201 100644 --- a/Tracking/Acts/ActsGeometry/src/ActsMaterialTrackWriterSvc.cxx +++ b/Tracking/Acts/ActsGeometry/src/ActsMaterialTrackWriterSvc.cxx @@ -3,6 +3,7 @@ */ #include "ActsGeometry/ActsMaterialTrackWriterSvc.h" +#include "ActsGeometry/ActsGeometryContext.h" #include "GaudiKernel/IInterface.h" #include "TTree.h" @@ -22,7 +23,8 @@ using namespace Acts::VectorHelpers; #include <thread> ActsMaterialTrackWriterSvc::ActsMaterialTrackWriterSvc( const std::string& name, ISvcLocator* svc ) -: base_class(name, svc) { +: base_class(name, svc), + m_trackingGeometrySvc("ActsTrackingGeometrySvc", name) { } StatusCode @@ -276,8 +278,10 @@ ActsMaterialTrackWriterSvc::doWrite(const Acts::RecordedMaterialTrack& mTrack) const Acts::Surface* surface = mint.surface; Acts::GeometryIdentifier layerID; if (surface) { + auto gctx = std::make_unique<ActsGeometryContext>(); + gctx->alignmentStore = m_trackingGeometrySvc->getNominalAlignmentStore(); auto sfIntersection = surface->intersect( - Acts::GeometryContext(), mint.position, mint.direction, true); + gctx->context(), mint.position, mint.direction, true); layerID = surface->geometryId(); m_sur_id.push_back(layerID.value()); m_sur_type.push_back(surface->type()); diff --git a/Tracking/Acts/ActsGeometry/src/ActsSurfaceMappingTool.cxx b/Tracking/Acts/ActsGeometry/src/ActsSurfaceMappingTool.cxx index 610b9fce6f6b46d23714746e92538268e091b0f9..75d4a46f9311295df890804adbb409768bdf6abf 100644 --- a/Tracking/Acts/ActsGeometry/src/ActsSurfaceMappingTool.cxx +++ b/Tracking/Acts/ActsGeometry/src/ActsSurfaceMappingTool.cxx @@ -52,7 +52,7 @@ ActsSurfaceMappingTool::initialize() std::move(propagator), makeActsAthenaLogger(this, "SurfaceMaterialMapper")); - m_geoContext = m_trackingGeometryTool->getNominalGeometryContext().context(); + m_geoContext = m_trackingGeometryTool->getNominalGeometryContext(); ATH_MSG_INFO("ACTS Surface Mapper successfully initialized"); return StatusCode::SUCCESS; @@ -62,7 +62,7 @@ Acts::SurfaceMaterialMapper::State ActsSurfaceMappingTool::mappingState() const { auto mappingState = m_mapper->createState( - m_geoContext, m_magFieldContext, *m_trackingGeometry); + m_geoContext.context(), m_magFieldContext, *m_trackingGeometry); return mappingState; } diff --git a/Tracking/Acts/ActsGeometry/src/ActsTrackingGeometrySvc.cxx b/Tracking/Acts/ActsGeometry/src/ActsTrackingGeometrySvc.cxx index 0f4a766e8738d4b70ef973052af794c0a70747c3..3a8eb1fff9f17bb430508ca75774b3fb84b12069 100644 --- a/Tracking/Acts/ActsGeometry/src/ActsTrackingGeometrySvc.cxx +++ b/Tracking/Acts/ActsGeometry/src/ActsTrackingGeometrySvc.cxx @@ -103,11 +103,9 @@ ActsTrackingGeometrySvc::initialize() if (matFile.find(".json") != std::string::npos) { // Set up the converter first Acts::MaterialMapJsonConverter::Config jsonGeoConvConfig; - jsonGeoConvConfig.name = "MaterialMapJsonConverter"; - jsonGeoConvConfig.logger = makeActsAthenaLogger(this, "MaterialMapJsonConverter"); // Set up the json-based decorator matDeco = std::make_shared<const Acts::JsonMaterialDecorator>( - jsonGeoConvConfig, m_materialMapInputFile, true, true); + jsonGeoConvConfig, m_materialMapInputFile, Acts::Logging::INFO); } tgbConfig.materialDecorator = matDeco; } diff --git a/Tracking/Acts/ActsGeometry/src/ActsWriteTrackingGeometry.cxx b/Tracking/Acts/ActsGeometry/src/ActsWriteTrackingGeometry.cxx index 59d221239de58eb7b61ef32e9994aaaed867439e..0c49ad39ca630660860c065bec42a82423090411 100755 --- a/Tracking/Acts/ActsGeometry/src/ActsWriteTrackingGeometry.cxx +++ b/Tracking/Acts/ActsGeometry/src/ActsWriteTrackingGeometry.cxx @@ -38,12 +38,11 @@ StatusCode ActsWriteTrackingGeometry::initialize() { StatusCode ActsWriteTrackingGeometry::execute(const EventContext& ctx) const { auto trackingGeometry = m_trackingGeometryTool->trackingGeometry(); - // Use nominal context - //ActsGeometryContext defGctx; + // Use the geometry context const ActsGeometryContext& gctx = m_trackingGeometryTool->getGeometryContext(ctx); - + m_objWriterTool->write(gctx, *trackingGeometry); - m_materialJsonWriterTool->write(*trackingGeometry); + m_materialJsonWriterTool->write(gctx, *trackingGeometry); return StatusCode::SUCCESS; } diff --git a/Tracking/Acts/ActsGeometryInterfaces/ActsGeometryInterfaces/IActsMaterialJsonWriterTool.h b/Tracking/Acts/ActsGeometryInterfaces/ActsGeometryInterfaces/IActsMaterialJsonWriterTool.h index 22717a6452ba4cb81ab34c7d9451a004f7c21791..15b8fd06538654badb2ef6b6fb2230df15a0abd8 100644 --- a/Tracking/Acts/ActsGeometryInterfaces/ActsGeometryInterfaces/IActsMaterialJsonWriterTool.h +++ b/Tracking/Acts/ActsGeometryInterfaces/ActsGeometryInterfaces/IActsMaterialJsonWriterTool.h @@ -9,6 +9,8 @@ #include "GaudiKernel/IInterface.h" #include "GaudiKernel/IAlgTool.h" +#include "ActsGeometry/ActsGeometryContext.h" + #include "Acts/Plugins/Json/MaterialMapJsonConverter.hpp" namespace Acts { @@ -22,11 +24,11 @@ public: virtual void - write(const Acts::MaterialMapJsonConverter::DetectorMaterialMaps& detMaterial) const = 0; + write(const ActsGeometryContext& gctx, const Acts::MaterialMapJsonConverter::DetectorMaterialMaps& detMaterial) const = 0; virtual void - write(const Acts::TrackingGeometry& tGeometry) const = 0; + write(const ActsGeometryContext& gctx, const Acts::TrackingGeometry& tGeometry) const = 0; }; diff --git a/Tracking/TrkConditions/TrackingGeometryCondAlg/python/AtlasTrackingGeometryCondAlgConfig.py b/Tracking/TrkConditions/TrackingGeometryCondAlg/python/AtlasTrackingGeometryCondAlgConfig.py index 474ef94520792771289a6c1b7752b7262e8ea2d7..d046c58fc567d4b77b757ad5f0140207d101f4f7 100644 --- a/Tracking/TrkConditions/TrackingGeometryCondAlg/python/AtlasTrackingGeometryCondAlgConfig.py +++ b/Tracking/TrkConditions/TrackingGeometryCondAlg/python/AtlasTrackingGeometryCondAlgConfig.py @@ -359,10 +359,13 @@ def TrackingGeometryCondAlgCfg( flags , name = 'AtlasTrackingGeometryCondAlg', d prependList = list() appendList = list() for alg in condAlgs: - for name in dependencies: - if str(alg).startswith(name+"("): - prependList.append(alg) - appendList.append(alg) + prepend = False + for name in dependencies: + if str(alg).startswith(name+"("): + prependList.append(alg) + prepend = True + if not prepend: + appendList.append(alg) prependList.extend(appendList) condAlgs = prependList result._conditionsAlgs = condAlgs diff --git a/Tracking/TrkConfig/python/AtlasExtrapolationEngineConfig.py b/Tracking/TrkConfig/python/AtlasExtrapolationEngineConfig.py index 995b0a7f08d7c5370f5875b12b57923bf8e11ab6..84c33176574b4203f79fd4e1929d83f7d0de5ff7 100644 --- a/Tracking/TrkConfig/python/AtlasExtrapolationEngineConfig.py +++ b/Tracking/TrkConfig/python/AtlasExtrapolationEngineConfig.py @@ -7,9 +7,10 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg +from InDetRecExample.TrackingCommon import use_tracking_geometry_cond_alg # import the ExtrapolationEngine configurable -from TrkExEngine.TrkExEngineConf import Trk__ExtrapolationEngine as ExEngine +ExEngine=CompFactory.Trk.ExtrapolationEngine def AtlasExtrapolationEngineCfg( flags, name = 'Extrapolation', nameprefix='Atlas' ): result=ComponentAccumulator() @@ -18,20 +19,27 @@ def AtlasExtrapolationEngineCfg( flags, name = 'Extrapolation', nameprefix='Atla result.merge(acc) # get the correct TrackingGeometry setup - from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg - acc = TrackingGeometrySvcCfg(flags) - trackingGeomSvc = acc.getPrimary() - result.merge(acc) + geom_svc=None + geom_cond_key='' + if not use_tracking_geometry_cond_alg : + from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg + acc = TrackingGeometrySvcCfg(flags) + geom_svc = acc.getPrimary() + result.merge(acc) + else : + from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg + result.merge( TrackingGeometryCondAlgCfg(flags) ) + geom_cond_key = 'AtlasTrackingGeometry' + + RkPropagator=CompFactory.Trk.RungeKuttaPropagator + AtlasRungeKuttaPropagator = RkPropagator(name = 'AtlasRungeKuttaPropagator') + result.addPublicTool(AtlasRungeKuttaPropagator) #TODO remove one day - from TrkExRungeKuttaPropagator.TrkExRungeKuttaPropagatorConf import Trk__RungeKuttaPropagator as RkPropagator - rungeKuttaPropagator = RkPropagator(name = 'AtlasRungeKuttaPropagator') - result.addPublicTool(rungeKuttaPropagator) #TODO remove one day - # from the Propagator create a Propagation engine to handle path length Trk__PropagationEngine=CompFactory.Trk.PropagationEngine staticPropagator = Trk__PropagationEngine(name = nameprefix+'StaticPropagation') # give the tools it needs - staticPropagator.Propagator = rungeKuttaPropagator + staticPropagator.Propagator = AtlasRungeKuttaPropagator # configure output formatting staticPropagator.OutputPrefix = '[SP] - ' staticPropagator.OutputPostfix = ' - ' @@ -52,8 +60,9 @@ def AtlasExtrapolationEngineCfg( flags, name = 'Extrapolation', nameprefix='Atla # give the tools it needs staticNavigator.PropagationEngine = staticPropagator staticNavigator.MaterialEffectsEngine = materialEffectsEngine + staticNavigator.TrackingGeometrySvc = geom_svc + staticNavigator.TrackingGeometryReadKey = geom_cond_key # Geometry name - staticNavigator.TrackingGeometry = trackingGeomSvc.TrackingGeometryName # configure output formatting staticNavigator.OutputPrefix = '[SN] - ' staticNavigator.OutputPostfix = ' - ' @@ -78,7 +87,8 @@ def AtlasExtrapolationEngineCfg( flags, name = 'Extrapolation', nameprefix='Atla ExtrapolationEngines = [ staticExtrapolator ], PropagationEngine = staticPropagator, NavigationEngine = staticNavigator, - TrackingGeometrySvc = trackingGeomSvc, + TrackingGeometrySvc = geom_svc, + TrackingGeometryReadKey = geom_cond_key, OutputPrefix = '[ME] - ', OutputPostfix = ' - ') result.addPublicTool(extrapolator, primary=True) diff --git a/Tracking/TrkDetDescr/TrkDetDescrAlgs/src/MaterialMapping.cxx b/Tracking/TrkDetDescr/TrkDetDescrAlgs/src/MaterialMapping.cxx index 2b4f1875558a263f2a9e7f02d8d225979e992985..a8d949b23efc8866294e03fce3665dcfea17d556 100755 --- a/Tracking/TrkDetDescr/TrkDetDescrAlgs/src/MaterialMapping.cxx +++ b/Tracking/TrkDetDescr/TrkDetDescrAlgs/src/MaterialMapping.cxx @@ -390,7 +390,7 @@ void Trk::MaterialMapping::assignLayerMaterialProperties( const Trk::TrackingVol ATH_MSG_INFO("--> found : "<< layers.size() << "confined Layers"); // the iterator over the vector // loop over layers - for (const auto & layer : layers) { + for (const Trk::Layer* layer : layers) { // assign the material and output if (layer && (*layer).layerIndex().value() ) { ATH_MSG_INFO(" > LayerIndex: "<< (*layer).layerIndex() ); @@ -401,7 +401,7 @@ void Trk::MaterialMapping::assignLayerMaterialProperties( const Trk::TrackingVol if (curIt != propSet->end()) { ATH_MSG_INFO("LayerMaterial assigned for Layer with index: "<< (*layer).layerIndex() ); // set it to the layer - (*layer).assignMaterialProperties(*((*curIt).second), 1.); + (const_cast<Trk::Layer*>(layer))->assignMaterialProperties(*((*curIt).second), 1.); } } } diff --git a/Tracking/TrkDetDescr/TrkDetDescrTools/TrkDetDescrTools/TrackingVolumeHelper.h b/Tracking/TrkDetDescr/TrkDetDescrTools/TrkDetDescrTools/TrackingVolumeHelper.h index f7bfc07089bc028de001bf56426544d79b9290a0..4c6a993fea958db2cf66dbab4efcab78a7386b79 100755 --- a/Tracking/TrkDetDescr/TrkDetDescrTools/TrkDetDescrTools/TrackingVolumeHelper.h +++ b/Tracking/TrkDetDescr/TrkDetDescrTools/TrkDetDescrTools/TrackingVolumeHelper.h @@ -205,11 +205,11 @@ namespace Trk { - it checks whether there is a sub-structure (i.e. GlueVolumeDescriptor exists) and adds either the volume itself or the associated subvolume - volumes on glueVols level are all on navigation level*/ - void fillGlueVolumes ATLAS_NOT_THREAD_SAFE( + static void fillGlueVolumes ATLAS_NOT_THREAD_SAFE( const std::vector<const TrackingVolume*>& topLevelVolumes, const std::vector<const TrackingVolume*>& envelopeFaceVolumes, BoundarySurfaceFace glueFace, - std::vector<const Trk::TrackingVolume*>& glueVols) const; + std::vector<const Trk::TrackingVolume*>& glueVols) ; /** Execute the glueing - the input volumes are all on navigation level */ void glueTrackingVolumes ATLAS_NOT_THREAD_SAFE( diff --git a/Tracking/TrkDetDescr/TrkDetDescrTools/src/InputLayerMaterialProvider.cxx b/Tracking/TrkDetDescr/TrkDetDescrTools/src/InputLayerMaterialProvider.cxx index f45dbb13139c7634e48c068632b1fedbdb8cb142..517b066b202a56114acc7b43baba9c5762c56e7c 100644 --- a/Tracking/TrkDetDescr/TrkDetDescrTools/src/InputLayerMaterialProvider.cxx +++ b/Tracking/TrkDetDescr/TrkDetDescrTools/src/InputLayerMaterialProvider.cxx @@ -136,7 +136,7 @@ StatusCode Trk::InputLayerMaterialProvider::process(const Trk::Layer& lay, size_ Trk::HomogeneousLayerMaterial hLayerMaterial = Trk::HomogeneousLayerMaterial(m_constantMaterialProperties, 1.); // assign it to the layer - lay.assignMaterialProperties(hLayerMaterial); + (const_cast<Trk::Layer&>(lay)).assignMaterialProperties(hLayerMaterial); return StatusCode::SUCCESS; } diff --git a/Tracking/TrkDetDescr/TrkDetDescrTools/src/LayerMaterialProvider.cxx b/Tracking/TrkDetDescr/TrkDetDescrTools/src/LayerMaterialProvider.cxx index aaf85e47f6417fe5fb761a773f1fcf91a15da683..1886b82662b6ee618218ceaa3d1de3fdce311b75 100644 --- a/Tracking/TrkDetDescr/TrkDetDescrTools/src/LayerMaterialProvider.cxx +++ b/Tracking/TrkDetDescr/TrkDetDescrTools/src/LayerMaterialProvider.cxx @@ -213,15 +213,17 @@ ATLAS_NOT_THREAD_SAFE(const Trk::Layer& lay, // find the layer and assign the material properties auto lmIter= layerMaterialMap.find(lIndex); if ( lmIter != layerMaterialMap.end() ){ - ATH_MSG_VERBOSE(displayBuffer.str() << "---[+] found material for Layer with Index: " << lIndex.value()); - if ( lay.surfaceRepresentation().isFree() ) - ATH_MSG_VERBOSE(displayBuffer.str() << "---[!] the Layer is not owned by the TrackingGeometry, could indicate problem."); - else - ATH_MSG_VERBOSE(displayBuffer.str() << "---[+] the Layer is owned by the TrackingGeometry." ); - lay.assignMaterialProperties(*((*lmIter).second)); + ATH_MSG_VERBOSE(displayBuffer.str() << "---[+] found material for Layer with Index: " << lIndex.value()); + if ( lay.surfaceRepresentation().isFree() ) { + ATH_MSG_VERBOSE(displayBuffer.str() << "---[!] the Layer is not owned by the TrackingGeometry, could indicate problem."); + } + else{ + ATH_MSG_VERBOSE(displayBuffer.str() << "---[+] the Layer is owned by the TrackingGeometry." ); + } + (const_cast<Trk::Layer&>(lay)).assignMaterialProperties(*((*lmIter).second)); } else { - ATH_MSG_WARNING(displayBuffer.str() << "---[!] could not find material for Layer with Index: " << lIndex.value()); - return StatusCode::RECOVERABLE; + ATH_MSG_WARNING(displayBuffer.str() << "---[!] could not find material for Layer with Index: " << lIndex.value()); + return StatusCode::RECOVERABLE; } return StatusCode::SUCCESS; } diff --git a/Tracking/TrkDetDescr/TrkDetDescrTools/src/TrackingVolumeHelper.cxx b/Tracking/TrkDetDescr/TrkDetDescrTools/src/TrackingVolumeHelper.cxx index b0d428e6b499e10011fa36acfec6e578dbb7542c..f3dc46be25c1eeb05af95c0a440b3fa08792629c 100755 --- a/Tracking/TrkDetDescr/TrkDetDescrTools/src/TrackingVolumeHelper.cxx +++ b/Tracking/TrkDetDescr/TrkDetDescrTools/src/TrackingVolumeHelper.cxx @@ -585,7 +585,7 @@ Trk::TrackingVolume* Trk::TrackingVolumeHelper::glueTrackingVolumeArrays( void Trk::TrackingVolumeHelper::fillGlueVolumes(const std::vector< const TrackingVolume*>& topLevelVolumes, const std::vector< const TrackingVolume*>& envelopeFaceVolumes, BoundarySurfaceFace glueFace, - std::vector<const Trk::TrackingVolume*>& glueVols) const + std::vector<const Trk::TrackingVolume*>& glueVols) { // loop over the topLevel Volumes std::vector<const Trk::TrackingVolume*>::const_iterator refVolIter = topLevelVolumes.begin(); diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/ConeLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/ConeLayer.h index 766cf15a7eed5a20e0409561488f4aa96c05aa32..b9770f3d4f6e168476f8a9faae3fc0acb44dcb69 100644 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/ConeLayer.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/ConeLayer.h @@ -103,12 +103,6 @@ class ConeLayer final: virtual public ConeSurface, public Layer { /** move the Layer */ virtual void moveLayer(Amg::Transform3D& shift) override final; - /** move the Layer */ - virtual void moveLayer - ATLAS_NOT_THREAD_SAFE(Amg::Transform3D& shift) const override final { - const_cast<ConeLayer*>(this)->moveLayer(shift); - }; - private: /** Resize the layer to the tracking volume - not (yet) supported for * ConeLayer */ diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CylinderLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CylinderLayer.h index b6748728e1272bcb2cdf07ab3316e2b0638acd71..dd845ec78921aacddc97132d1728d05adc235778 100755 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CylinderLayer.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CylinderLayer.h @@ -138,12 +138,6 @@ class CylinderLayer : public CylinderSurface, public Layer { /** move the Layer */ virtual void moveLayer(Amg::Transform3D& shift) override final; - /** move the Layer */ - virtual void moveLayer - ATLAS_NOT_THREAD_SAFE(Amg::Transform3D& shift) const override final { - const_cast<CylinderLayer*>(this)->moveLayer(shift); - } - private: /** Resize the layer to the tracking volume - only works for * CylinderVolumeBouns */ diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/DiscLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/DiscLayer.h index 5a1cf7f57be110bdba349e460bbd53dfe6808589..6f2804e672a72079e7a3758961dcc0b82b223479 100755 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/DiscLayer.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/DiscLayer.h @@ -117,12 +117,6 @@ class DiscLayer final: virtual public DiscSurface, public Layer { /** move the Layer non-const*/ virtual void moveLayer(Amg::Transform3D& shift) override final; - /** move the Layer const , performas const_cast */ - virtual void moveLayer - ATLAS_NOT_THREAD_SAFE(Amg::Transform3D& shift) const override final { - const_cast<DiscLayer*>(this)->moveLayer(shift); - } - private: /** Resize the layer to the tracking volume - only works for * CylinderVolumeBouns */ diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/Layer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/Layer.h index 8506aaddb6652e4dfea3ffd8c46f1cf65377baf8..0800e375d3daa2d72917acd242ccd6f63a08b698 100644 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/Layer.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/Layer.h @@ -226,15 +226,9 @@ class Layer { void assignMaterialProperties(const LayerMaterialProperties&, double scale = 1.0); - void assignMaterialProperties ATLAS_NOT_THREAD_SAFE( - const LayerMaterialProperties&, double scale = 1.0) const; - /** move the Layer */ virtual void moveLayer(Amg::Transform3D&){}; - /** move the Layer */ - virtual void moveLayer ATLAS_NOT_THREAD_SAFE(Amg::Transform3D&) const {}; - /**register Volume associated to the layer */ void registerRepresentingVolume(const Volume* theVol); @@ -244,17 +238,12 @@ class Layer { /** set the reference measure */ void setRef(double); - /** set the reference measure */ - void setRef ATLAS_NOT_THREAD_SAFE(double) const; - /** get the reference measure */ double getRef() const; void encloseTrackingVolume(const TrackingVolume& tvol); //!< private method to set the enclosed detached TV void encloseDetachedTrackingVolume(const DetachedTrackingVolume& tvol); - void encloseDetachedTrackingVolume - ATLAS_NOT_THREAD_SAFE(const DetachedTrackingVolume& tvol) const; /** get compatible surfaces starting from charged parameters */ template <class T> @@ -271,7 +260,6 @@ class Layer { //!< register layer index for material map registration void registerLayerIndex(const LayerIndex& lIdx); - void registerLayerIndex ATLAS_NOT_THREAD_SAFE(const LayerIndex& lIdx) const; /** private method to set enclosing TrackingVolume, called by friend class only optionally, the layer can be resized to the dimensions of the diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/Layer.icc b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/Layer.icc index 0a2a84a9a1c8013f0358519ec4743bf492c1dd92..1c2db6e322c7b3c29ce48eafe964a9283aee7800 100644 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/Layer.icc +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/Layer.icc @@ -172,21 +172,12 @@ inline void Layer::encloseDetachedTrackingVolume(const DetachedTrackingVolume &tvol) { m_enclosingDetachedTrackingVolume = &(tvol); } -inline void Layer::encloseDetachedTrackingVolume -ATLAS_NOT_THREAD_SAFE(const DetachedTrackingVolume &tvol) const { - const_cast<Layer *>(this)->encloseDetachedTrackingVolume(tvol); -} inline const LayerIndex &Layer::layerIndex() const { return m_index; } inline int Layer::layerType() const { return m_layerType; } inline void Layer::setLayerType(int id) { m_layerType = id; } -inline void Layer::assignMaterialProperties -ATLAS_NOT_THREAD_SAFE(const LayerMaterialProperties &layerMaterialProp, - double scale) const { - const_cast<Layer *>(this)->assignMaterialProperties(layerMaterialProp, scale); -} inline const Volume *Layer::representingVolume() const { return m_representingVolume; @@ -198,15 +189,8 @@ inline void Layer::registerRepresentingVolume(const Volume *theVol) { inline void Layer::registerLayerIndex(const LayerIndex &lIdx) { m_index = lIdx; } -inline void Layer::registerLayerIndex -ATLAS_NOT_THREAD_SAFE(const LayerIndex &lIdx) const { - const_cast<Layer *>(this)->registerLayerIndex(lIdx); -} inline double Layer::getRef() const { return m_ref; } inline void Layer::setRef(double x) { m_ref = x; } -inline void Layer::setRef ATLAS_NOT_THREAD_SAFE(double x) const { - const_cast<Layer *>(this)->setRef(x); -} } // namespace Trk diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/NavigationLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/NavigationLayer.h index c94de128693b52316e37ccd8325766a3290c5cdf..b40b175e4fdfbb5af6715d04769cd32fd789c95d 100644 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/NavigationLayer.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/NavigationLayer.h @@ -87,9 +87,6 @@ class NavigationLayer final : public Layer { /** move the Layer */ virtual void moveLayer(Amg::Transform3D&) override final; - /** move the Layer */ - virtual void moveLayer - ATLAS_NOT_THREAD_SAFE(Amg::Transform3D&) const override final; protected: /** Resize the layer to the tracking volume - not implemented */ @@ -134,8 +131,6 @@ inline const Surface* NavigationLayer::overlapSurface(const TrackParameters&, inline void NavigationLayer::moveLayer(Amg::Transform3D&) {} -inline void NavigationLayer::moveLayer(Amg::Transform3D&) const {} - } // namespace Trk #endif // TRKGEOMETRY_NAVIGATIONLAYER_H diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/PlaneLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/PlaneLayer.h index 3ee60daebb27196ca0864fd8b09cddc398cc6e92..db35d55ad2cdadc7d3879cef5a0d4013dad4764c 100644 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/PlaneLayer.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/PlaneLayer.h @@ -157,11 +157,6 @@ class PlaneLayer final : virtual public PlaneSurface, public Layer { /** move the Layer */ virtual void moveLayer(Amg::Transform3D& shift) override final; - /** move the Layer */ - virtual void moveLayer - ATLAS_NOT_THREAD_SAFE(Amg::Transform3D& shift) const override final { - const_cast<PlaneLayer*>(this)->moveLayer(shift); - } private: /** Resize the layer to the tracking volume - not implemented */ diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/SubtractedCylinderLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/SubtractedCylinderLayer.h index 1b0c105b979d0d5fe72c84cef0276174d3f03b78..277a08b71a8752e0ae28878f6ac1804143d83398 100644 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/SubtractedCylinderLayer.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/SubtractedCylinderLayer.h @@ -77,12 +77,6 @@ class SubtractedCylinderLayer final : virtual public SubtractedCylinderSurface, /** move the Layer */ virtual void moveLayer(Amg::Transform3D& shift) override final; - /** move the Layer */ - virtual void moveLayer - ATLAS_NOT_THREAD_SAFE(Amg::Transform3D& shift) const override final { - const_cast<SubtractedCylinderLayer*>(this)->moveLayer(shift); - } - private: /** Resize the layer to the tracking volume - not implemented*/ virtual void resizeLayer(const VolumeBounds&, double) override final {} diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/SubtractedPlaneLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/SubtractedPlaneLayer.h index f9e365d7762ed8ef2e128d6c9b3f711c9c6bc793..731c1e12e410c47976f35e92b201a473d91a2e4f 100644 --- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/SubtractedPlaneLayer.h +++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/SubtractedPlaneLayer.h @@ -67,12 +67,6 @@ class SubtractedPlaneLayer final : virtual public SubtractedPlaneSurface, /** move the Layer */ virtual void moveLayer(Amg::Transform3D& shift) override final; - /** move the Layer */ - virtual void moveLayer - ATLAS_NOT_THREAD_SAFE(Amg::Transform3D& shift) const override final { - const_cast<SubtractedPlaneLayer*>(this)->moveLayer(shift); - } - private: /** Resize the layer to the tracking volume - not implemented*/ virtual void resizeLayer(const VolumeBounds&, double) override final {} diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/DetachedTrackingVolume.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/DetachedTrackingVolume.cxx index 9aef26d5439b35000391d21e61e7a2c6d7ecfcde..7487c40678756888a87e10d22582eabe168c6824 100755 --- a/Tracking/TrkDetDescr/TrkGeometry/src/DetachedTrackingVolume.cxx +++ b/Tracking/TrkDetDescr/TrkGeometry/src/DetachedTrackingVolume.cxx @@ -55,10 +55,15 @@ Trk::DetachedTrackingVolume::~DetachedTrackingVolume() { void Trk::DetachedTrackingVolume::move ATLAS_NOT_THREAD_SAFE( Amg::Transform3D& shift) const { m_trkVolume->moveTV(shift); - if (m_layerRepresentation) m_layerRepresentation->moveLayer(shift); - if (m_multilayerRepresentation) - for (unsigned int i = 0; i < m_multilayerRepresentation->size(); i++) - (*m_multilayerRepresentation)[i]->moveLayer(shift); + if (m_layerRepresentation){ + (const_cast<Trk::Layer*>(m_layerRepresentation))->moveLayer(shift); + } + if (m_multilayerRepresentation) { + for (unsigned int i = 0; i < m_multilayerRepresentation->size(); i++) { + (const_cast<Trk::Layer*>((*m_multilayerRepresentation)[i]))->moveLayer( + shift); + } + } } const Trk::DetachedTrackingVolume* Trk::DetachedTrackingVolume::clone @@ -67,7 +72,7 @@ ATLAS_NOT_THREAD_SAFE(const std::string& name, Amg::Transform3D& shift) const { new TrackingVolume(*(this->trackingVolume()), shift); Trk::DetachedTrackingVolume* newStat = nullptr; // layer representation ? - const Trk::PlaneLayer* newLay = nullptr; + Trk::PlaneLayer* newLay = nullptr; if (this->layerRepresentation()) { std::vector<const Trk::Layer*>* newMulti = nullptr; const Trk::PlaneLayer* pl = @@ -82,7 +87,7 @@ ATLAS_NOT_THREAD_SAFE(const std::string& name, Amg::Transform3D& shift) const { const Trk::PlaneLayer* mpl = dynamic_cast<const Trk::PlaneLayer*>( (*(this->multilayerRepresentation()))[i]); if (mpl) { - const Trk::PlaneLayer* newPl = new Trk::PlaneLayer(*mpl); + Trk::PlaneLayer* newPl = new Trk::PlaneLayer(*mpl); newPl->moveLayer(shift); newMulti->push_back(newPl); } else @@ -112,26 +117,34 @@ ATLAS_NOT_THREAD_SAFE(const std::string& name, Amg::Transform3D& shift) const { vols[ivol]->confinedArbitraryLayers(); if (layAr) { const std::vector<const Trk::Layer*>& lays = layAr->arrayObjects(); - for (unsigned int il = 0; il < lays.size(); il++) - lays[il]->encloseDetachedTrackingVolume(*newStat); + for (unsigned int il = 0; il < lays.size(); il++) { + (const_cast<Trk::Layer*>(lays[il])) + ->encloseDetachedTrackingVolume(*newStat); + } } if (alays) { - for (unsigned int il = 0; il < alays->size(); il++) - (*alays)[il]->encloseDetachedTrackingVolume(*newStat); + for (unsigned int il = 0; il < alays->size(); il++) { + (const_cast<Trk::Layer*>((*alays)[il])) + ->encloseDetachedTrackingVolume(*newStat); + } } } } if (newTV->confinedLayers()) { const std::vector<const Trk::Layer*> lays = newTV->confinedLayers()->arrayObjects(); - for (unsigned int il = 0; il < lays.size(); il++) - lays[il]->encloseDetachedTrackingVolume(*newStat); + for (unsigned int il = 0; il < lays.size(); il++){ + (const_cast<Trk::Layer*>(lays[il])) + ->encloseDetachedTrackingVolume(*newStat); + } } if (newTV->confinedArbitraryLayers()) { const std::vector<const Trk::Layer*>* alays = newTV->confinedArbitraryLayers(); - for (unsigned int il = 0; il < alays->size(); il++) - (*alays)[il]->encloseDetachedTrackingVolume(*newStat); + for (unsigned int il = 0; il < alays->size(); il++){ + (const_cast<Trk::Layer*>((*alays)[il])) + ->encloseDetachedTrackingVolume(*newStat); + } } // newStat->saveConstituents(this->constituents()); diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolume.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolume.cxx index bcce66ec18d2d319d5817bfcbf5777d32c9ca366..c8d838222386a2ba0425acf227e20d135cccad47 100755 --- a/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolume.cxx +++ b/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolume.cxx @@ -742,19 +742,19 @@ void Trk::TrackingVolume::indexContainedStaticLayers ATLAS_NOT_THREAD_SAFE( if (m_confinedLayers) { const std::vector<const Trk::Layer*>& layers = m_confinedLayers->arrayObjects(); - for (const auto& layerIter : layers) { + for (const Trk::Layer* layerptr : layers) { // only index the material layers & only those that have not yet been // singed - if (layerIter && layerIter->layerIndex().value() < 0) { + if (layerptr && layerptr->layerIndex().value() < 0) { // sign only those with material properties - rest goes to 0 Trk::LayerIndex layIndex = - layerIter->layerMaterialProperties() + layerptr->layerMaterialProperties() ? Trk::LayerIndex(int(geoSig) * TRKDETDESCR_GEOMETRYSIGNATUREWEIGHT + (++offset)) : Trk::LayerIndex(0); // now register the index - layerIter->registerLayerIndex(layIndex); + (const_cast<Trk::Layer*>(layerptr))->registerLayerIndex(layIndex); } } } @@ -766,7 +766,7 @@ void Trk::TrackingVolume::indexContainedStaticLayers ATLAS_NOT_THREAD_SAFE( if (mLayer && mLayer->layerIndex().value() < 0.) { Trk::LayerIndex layIndex = Trk::LayerIndex( int(geoSig) * TRKDETDESCR_GEOMETRYSIGNATUREWEIGHT + (++offset)); - mLayer->registerLayerIndex(layIndex); + (const_cast<Trk::Layer*>(mLayer))->registerLayerIndex(layIndex); } } @@ -798,9 +798,9 @@ void Trk::TrackingVolume::indexContainedMaterialLayers ATLAS_NOT_THREAD_SAFE( const std::vector<const Trk::Surface*>& layerSurfaces = surfArray->arrayObjects(); // loop over the surfaces - there can be 0 entries - for (const auto& laySurfIter : layerSurfaces) { + for (const Trk::Surface* laySurf : layerSurfaces) { const Trk::Layer* materialLayer = - laySurfIter ? laySurfIter->materialLayer() : nullptr; + laySurf ? laySurf->materialLayer() : nullptr; if (materialLayer && materialLayer->layerIndex().value() < 0) { // sign only those with material properties - rest goes to 0 Trk::LayerIndex layIndex = @@ -810,7 +810,7 @@ void Trk::TrackingVolume::indexContainedMaterialLayers ATLAS_NOT_THREAD_SAFE( (++offset)) : Trk::LayerIndex(0); // now register the index - materialLayer->registerLayerIndex(layIndex); + (const_cast<Trk::Layer*>(materialLayer))->registerLayerIndex(layIndex); } } } @@ -1209,21 +1209,21 @@ const Trk::TrackingVolume* Trk::TrackingVolume::cloneTV ATLAS_NOT_THREAD_SAFE( dynamic_cast<const Trk::CylinderLayer*>((*confArbLayers)[i]); if (slayer) { - const Trk::SubtractedPlaneLayer* lay = + Trk::SubtractedPlaneLayer* lay = new Trk::SubtractedPlaneLayer(*slayer); lay->moveLayer(transform); uLayers.push_back(lay); } else if (layer) { - const Trk::PlaneLayer* lay = new Trk::PlaneLayer(*layer); + Trk::PlaneLayer* lay = new Trk::PlaneLayer(*layer); lay->moveLayer(transform); uLayers.push_back(lay); } else if (sclayer) { - const Trk::SubtractedCylinderLayer* lay = + Trk::SubtractedCylinderLayer* lay = new Trk::SubtractedCylinderLayer(*sclayer); lay->moveLayer(transform); uLayers.push_back(lay); } else if (clayer) { - const Trk::CylinderLayer* lay = new Trk::CylinderLayer(*clayer); + Trk::CylinderLayer* lay = new Trk::CylinderLayer(*clayer); lay->moveLayer(transform); uLayers.push_back(lay); } @@ -1320,15 +1320,15 @@ void Trk::TrackingVolume::moveTV ATLAS_NOT_THREAD_SAFE( // confined 'ordered' layers const Trk::BinnedArray<Trk::Layer>* confLayers = confinedLayers(); if (confLayers) - for (const auto& clayIter : confLayers->arrayObjects()) - clayIter->moveLayer(transform); + for (const Trk::Layer* clayIter : confLayers->arrayObjects()) + (const_cast<Trk::Layer*>(clayIter))->moveLayer(transform); // confined 'unordered' layers const std::vector<const Trk::Layer*>* confArbLayers = confinedArbitraryLayers(); if (confArbLayers) - for (const auto& calayIter : (*confArbLayers)) - calayIter->moveLayer(transform); + for (const Trk::Layer* calayIter : (*confArbLayers)) + (const_cast<Trk::Layer*>(calayIter))->moveLayer(transform); // confined volumes const Trk::BinnedArray<Trk::TrackingVolume>* confVolumes = confinedVolumes(); diff --git a/Tracking/TrkEvent/TrkParametersBase/test/ParametersBase_test.cxx b/Tracking/TrkEvent/TrkParametersBase/test/ParametersBase_test.cxx index 68ce9e2f644a5b2ef1b420530c1df4511fb2653c..775e12bcf86fa0cbd2711b85198b10cf320715d0 100644 --- a/Tracking/TrkEvent/TrkParametersBase/test/ParametersBase_test.cxx +++ b/Tracking/TrkEvent/TrkParametersBase/test/ParametersBase_test.cxx @@ -78,13 +78,11 @@ public: return m_chargeDef.charge(); } Amg::Vector3D position() const override{ - Amg::Vector3D p; - p<<1,1,1; + Amg::Vector3D p (1, 1, 1); return p; } Amg::Vector3D momentum() const override{ - Amg::Vector3D p; - p<<3,4,5;//45 degree, eta ~0.881374 + Amg::Vector3D p (3, 4, 5); //45 degree, eta ~0.881374 return p; } bool hasSurface() const override{ @@ -146,8 +144,8 @@ BOOST_AUTO_TEST_SUITE(ParametersBaseTest) } BOOST_AUTO_TEST_CASE(Getters){ //preconstruct required parameters - AmgVector(DIM) parameters; - parameters << 0.5,1,1.5,2.,2.5; + static const double pars[] = {0.5,1,1.5,2.,2.5}; + AmgVector(DIM) parameters (pars); AmgSymMatrix(DIM) m; m.setIdentity(); std::optional<AmgSymMatrix(DIM)> covariance{m}; @@ -164,10 +162,8 @@ BOOST_AUTO_TEST_SUITE(ParametersBaseTest) const auto expectedLocalPosition=Amg::Vector2D(parameters[Trk::loc1], parameters[Trk::loc2]); BOOST_TEST(y.localPosition() == expectedLocalPosition); BOOST_TEST(y.charge() == chargeDef.charge()); - Amg::Vector3D expectedPosition; - expectedPosition<<1,1,1; - Amg::Vector3D expectedMomentum; - expectedMomentum<<3,4,5; + Amg::Vector3D expectedPosition (1, 1, 1); + Amg::Vector3D expectedMomentum (3, 4, 5); BOOST_TEST(y.position() == expectedPosition); BOOST_TEST(y.momentum() == expectedMomentum); BOOST_TEST(y.hasSurface() == false); @@ -189,8 +185,8 @@ BOOST_AUTO_TEST_SUITE(ParametersBaseTest) BOOST_AUTO_TEST_CASE(Setters){ ChargedParametersStub x; - AmgVector(DIM) parameters; - parameters << 0.5,1,1.5,2.,2.5; + static const double pars[] = {0.5,1,1.5,2.,2.5}; + AmgVector(DIM) parameters (pars); BOOST_CHECK_NO_THROW(x.setParameters(parameters)); BOOST_TEST(x.parameters() == parameters,"Parameters have been set"); /** set covariance */ @@ -211,8 +207,8 @@ BOOST_AUTO_TEST_SUITE(ParametersBaseTest) BOOST_AUTO_TEST_CASE(CopyEqualityAssignment){ //preconstruct required parameters - AmgVector(DIM) parameters; - parameters << 0.5,1,1.5,2.,2.5; + static const double pars[] = {0.5,1,1.5,2.,2.5}; + AmgVector(DIM) parameters (pars); AmgSymMatrix(DIM) m; m.setIdentity(); std::optional<AmgSymMatrix(DIM)> covariance{m}; diff --git a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/ExtrapolationEngine.h b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/ExtrapolationEngine.h index 8d9857282bb4739240dc0fa3e47effc63691835f..12ef0163ceba2d692f9dde9254d234e518c21a59 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/ExtrapolationEngine.h +++ b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/ExtrapolationEngine.h @@ -119,11 +119,11 @@ namespace Trk { {this, "TrackingGeometryReadKey", "", "Key of the TrackingGeometry conditions data."}; //!< the tool handle array for static / dense / detached - ToolHandleArray<IExtrapolationEngine> m_extrapolationEngines; //!< the extrapolation engines for retrieval - ToolHandle<IPropagationEngine> m_propagationEngine; //!< the used propagation engine for navigation initialization + ToolHandleArray<IExtrapolationEngine> m_extrapolationEngines{ this, "ExtrapolationEngines", {} }; + ToolHandle<IPropagationEngine> m_propagationEngine{this, "PropagationEngine", "Trk::PropagationEngine/AtlasStaticPropagation"}; //!< the used propagation engine for navigation initialization + ToolHandle<INavigationEngine> m_navigationEngine{this, "NavigationEngine", "Trk::StaticNavigationEngine/AtlasStaticNavigation"}; //!< access to tracking geometry (unique?) std::vector<const IExtrapolationEngine*> m_eeAccessor; //!< the extrapolation engines for - ToolHandle<INavigationEngine> m_navigationEngine; //!< access to tracking geometry (unique?) //!< forces a global search for the initialization, allows to switch TrackingGeometries in one job bool m_forceSearchInit; diff --git a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/ExtrapolationEngine.icc b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/ExtrapolationEngine.icc index cd114b5915421e24b25107845682433862ae585b..4ab2808fdb9f2252e9ae7e6e3bbedca7c4dff9d3 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/ExtrapolationEngine.icc +++ b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/ExtrapolationEngine.icc @@ -29,9 +29,9 @@ template <class T> Trk::ExtrapolationCode Trk::ExtrapolationEngine::extrapolateT // main loop over volumes while (eCell.leadVolume && eCode == Trk::ExtrapolationCode::InProgress ){ // give output that you are in the master volume loop - EX_MSG_VERBOSE(eCell.navigationStep, "extrapolate", "loop", "processing volume : " << eCell.leadVolume->volumeName() ); + EX_MSG_VERBOSE(eCell.navigationStep, "extrapolate", "loop", "processing volume (signature) : " << eCell.leadVolume->volumeName() << " (" << eCell.leadVolume->geometrySignature() << ")"); // get the appropriate IExtrapolationEngine - Trk::GeometryType geoType = eCell.leadVolume->geometrySignature()>2 ? Trk::Dense : Trk::Static; + Trk::GeometryType geoType = (eCell.leadVolume->geometrySignature()>2 /*and eCell.leadVolume->geometrySignature()!=Trk::HGTD*/) ? Trk::Dense : Trk::Static; const Trk::IExtrapolationEngine* iee = m_eeAccessor[geoType]; eCode = iee ? iee->extrapolate(eCell, sf, bcheck) : Trk::ExtrapolationCode::FailureConfiguration; // give a message about what you have diff --git a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/PropagationEngine.h b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/PropagationEngine.h index 793c5104a23195aacc9915b3b98788df348c4f00..fad752c359a65834c340d1c17d3b821fb223adcc 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/PropagationEngine.h +++ b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/PropagationEngine.h @@ -66,8 +66,7 @@ namespace Trk { bool returnCurvilinear = true) const; protected: - - ToolHandle<IPropagator> m_propagator; + ToolHandle<IPropagator> m_propagator{this, "Propagator", "Trk::RungeKuttaPropagator/AtlasRungeKuttaPropagator"}; double m_pathLimitTolerance; diff --git a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticEngine.h b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticEngine.h index 325b6f9645911e75370ada954c513cd4673e332c..5947302612aabf8773ce719548574a3b3a914ace 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticEngine.h +++ b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticEngine.h @@ -122,10 +122,10 @@ namespace Trk { const Surface* sf = 0, PropDirection dir=alongMomentum, BoundaryCheck bcheck = true) const; - - ToolHandle<IPropagationEngine> m_propagationEngine; //!< the used propagation engine - ToolHandle<INavigationEngine> m_navigationEngine; //!< the navigation engine to resolve the boundary - ToolHandle<IMaterialEffectsEngine> m_materialEffectsEngine; //!< the material effects updated + + ToolHandle<IPropagationEngine> m_propagationEngine{this, "PropagationEngine", "Trk::PropagationEngine/AtlasStaticPropagation"}; //!< the used propagation engine + ToolHandle<INavigationEngine> m_navigationEngine{this, "NavigationEngine", "Trk::StaticNavigationEngine/AtlasStaticNavigation"}; //!< the navigation engine to resolve the boundary + ToolHandle<IMaterialEffectsEngine> m_materialEffectsEngine{this, "MaterialEffectsEngine", "Trk::MaterialEffectsEngine/AtlasStaticNavigationMaterialEffects"}; //!< the material effects updated }; diff --git a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticEngine.icc b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticEngine.icc index ac07bbc396b164a3b6bbe055b9336dccae4f1c73..8f3a0949e15db3d15cf0e6cd49982a7765a9c6fd 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticEngine.icc +++ b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticEngine.icc @@ -209,6 +209,8 @@ template <class T> Trk::ExtrapolationCode Trk::StaticEngine::handleLayerT(Trk::E // - Recovered : layer was not hit, so can be ignored in the layer to layer loop eCode = m_propagationEngine->propagate(eCell,*eCell.leadLayerSurface,pDir,true,eCell.navigationCurvilinear); CHECK_ECODE_SUCCESS_NODEST(eCell, eCode); + // record the passive parameters + if (eCode!=Trk::ExtrapolationCode::Recovered) eCell.stepParameters(eCell.leadParameters, Trk::ExtrapolationMode::CollectPassive); // check if the layer was actually hit if (eCode.inProgress()){ // successful layer hit @@ -219,8 +221,6 @@ template <class T> Trk::ExtrapolationCode Trk::StaticEngine::handleLayerT(Trk::E // - SuccessMaterialLimit : material limit reached & configured to stop there eCode = m_materialEffectsEngine->handleMaterial(eCell,pDir,Trk::fullUpdate); CHECK_ECODE_CONTINUE(eCell, eCode); - // record the passive parameters - eCell.stepParameters(eCell.leadParameters, Trk::ExtrapolationMode::CollectPassive); // return the progress eCode back to the extrapolateT return eCode; } @@ -344,7 +344,9 @@ template <class T> Trk::ExtrapolationCode Trk::StaticEngine::resolveLayerT(Trk:: eCode = m_materialEffectsEngine->handleMaterial(eCell,pDir,Trk::fullUpdate); CHECK_ECODE_CONTINUE(eCell, eCode); } - } + } else if (eCode== Trk::ExtrapolationCode::SuccessPathLimit) { + eCell.stepParameters(eCell.leadParameters, Trk::ExtrapolationMode::CollectPassive); + } } // loop over test surfaces done } // there are compatible surfaces diff --git a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticNavigationEngine.h b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticNavigationEngine.h index 3c38793e9d5df2b2cd1bce612cb61aa13c3a171a..0ee74633da9898d480532475514572934f2c0975 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticNavigationEngine.h +++ b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticNavigationEngine.h @@ -116,8 +116,8 @@ namespace Trk { //!< retrieve TrackingGeometry StatusCode updateTrackingGeometry() const; - ToolHandle<IPropagationEngine> m_propagationEngine; //!< the used propagation engine - ToolHandle<IMaterialEffectsEngine> m_materialEffectsEngine; //!< the material effects updated + ToolHandle<IPropagationEngine> m_propagationEngine{this, "PropagationEngine", "Trk::PropagationEngine/AtlasStaticPropagation"}; //!< the used propagation engine + ToolHandle<IMaterialEffectsEngine> m_materialEffectsEngine{this, "MaterialEffectsEngine", "Trk::MaterialEffectsEngine/AtlasStaticNavigationMaterialEffects"}; //!< the material effects updated mutable const TrackingGeometry* m_trackingGeometry; //!< the tracking geometry owned by the navigator std::string m_trackingGeometryName; //!< Name of the TrackingGeometry as given in Detector Store diff --git a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticNavigationEngine.icc b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticNavigationEngine.icc index 29434b8fd3db0a69be64a7015f4e4c86c95d81f6..e1c0ad7789132fd7917277f90b9782c2d8523c22 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticNavigationEngine.icc +++ b/Tracking/TrkExtrapolation/TrkExEngine/TrkExEngine/StaticNavigationEngine.icc @@ -148,11 +148,14 @@ template <class T> Trk::ExtrapolationCode Trk::StaticNavigationEngine::handleBou trackingGeometry().lowestTrackingVolume(Amg::Vector3D(eCell.leadParameters->position()+pDir*eCell.leadParameters->momentum().unit())) : bSurfaceTV.attachedVolume(eCell.leadParameters->position(), eCell.leadParameters->momentum(), pDir); // check if we have no nextVolume : boundary rechaed @TODO it's not really a success - if (!nextVolume) return Trk::ExtrapolationCode::SuccessBoundaryReached; + if (!nextVolume) { + eCell.stepParameters(eCell.leadParameters, Trk::ExtrapolationMode::CollectBoundary); // ST fixing memory leak + return Trk::ExtrapolationCode::SuccessBoundaryReached; + } // check if it is a boundary reached case // - geometrySignature change and configuration to stop then triggers a Success bool stopAtThisBoundary = eCell.checkConfigurationMode(Trk::ExtrapolationMode::StopAtBoundary) - && (nextVolume->geometrySignature() != eCell.leadVolume->geometrySignature()); + && (nextVolume->geometrySignature() != eCell.leadVolume->geometrySignature() /*&& nextVolume->geometrySignature()!=Trk::HGTD*/); // fill the boundary into the cache if successfully hit boundary surface // - only cache if those are not the final parameters caused by a StopAtBoundary if (!stopAtThisBoundary) diff --git a/Tracking/TrkExtrapolation/TrkExEngine/src/ExtrapolationEngine.cxx b/Tracking/TrkExtrapolation/TrkExEngine/src/ExtrapolationEngine.cxx index c2c1d3b3d31e52ea12c873c40afde94f184d5e61..90d766f90a8d03da2845d10b231d1dc3b5dedef3 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/src/ExtrapolationEngine.cxx +++ b/Tracking/TrkExtrapolation/TrkExEngine/src/ExtrapolationEngine.cxx @@ -14,17 +14,10 @@ // constructor Trk::ExtrapolationEngine::ExtrapolationEngine(const std::string& t, const std::string& n, const IInterface* p) -: AthAlgTool(t,n,p), - m_propagationEngine(""), - m_navigationEngine(""), +: AthAlgTool(t,n,p), m_forceSearchInit(false) { declareInterface<Trk::IExtrapolationEngine>(this); - // Extrapolation Engine retrieval - declareProperty("ExtrapolationEngines" , m_extrapolationEngines); - // The Tools needed - declareProperty("PropagationEngine" , m_propagationEngine); - declareProperty("NavigationEngine" , m_navigationEngine); // steering of the screen outoput (SOP) declareProperty("OutputPrefix" , m_sopPrefix); declareProperty("OutputPostfix" , m_sopPostfix); diff --git a/Tracking/TrkExtrapolation/TrkExEngine/src/MaterialEffectsEngine.cxx b/Tracking/TrkExtrapolation/TrkExEngine/src/MaterialEffectsEngine.cxx index 9c4bf6acfead939e97dc6c97cceb23bc8d349eab..9e52114b45983489423464f49650f0023666a3c2 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/src/MaterialEffectsEngine.cxx +++ b/Tracking/TrkExtrapolation/TrkExEngine/src/MaterialEffectsEngine.cxx @@ -62,7 +62,7 @@ Trk::ExtrapolationCode Trk::MaterialEffectsEngine::handleMaterial(Trk::ExCellNeu // path correction double pathCorrection = layer->surfaceRepresentation().pathCorrection(eCell.leadParameters->position(),dir*(eCell.leadParameters->momentum())); // the relative direction wrt with the layer - Trk::PropDirection rlDir = (pathCorrection > 0. ? Trk::alongMomentum : Trk::oppositeMomentum); + Trk::PropDirection rlDir = (pathCorrection >= 0. ? Trk::alongMomentum : Trk::oppositeMomentum); // multiply by the pre-and post-update factor double mFactor = layer->layerMaterialProperties()->factor(rlDir, matupstage); if (mFactor == 0.){ @@ -76,8 +76,8 @@ Trk::ExtrapolationCode Trk::MaterialEffectsEngine::handleMaterial(Trk::ExCellNeu // get the actual material bin const Trk::MaterialProperties* materialProperties = layer->layerMaterialProperties()->fullMaterial(eCell.leadParameters->position()); // and let's check if there's acutally something to do - if (materialProperties){ - // thickness in X0 + if (materialProperties && std::abs(pathCorrection)>0.){ + // thickness in X0 double thicknessInX0 = materialProperties->thicknessInX0(); // check if material filling was requested if (eCell.checkConfigurationMode(Trk::ExtrapolationMode::CollectMaterial)){ @@ -121,7 +121,7 @@ const Trk::TrackParameters* Trk::MaterialEffectsEngine::updateTrackParameters(co // path correction double pathCorrection = layer->surfaceRepresentation().pathCorrection(parameters.position(),dir*(parameters.momentum())); // the relative direction wrt with the layer - Trk::PropDirection rlDir = (pathCorrection > 0. ? Trk::alongMomentum : Trk::oppositeMomentum); + Trk::PropDirection rlDir = (pathCorrection >= 0. ? Trk::alongMomentum : Trk::oppositeMomentum); // multiply by the pre-and post-update factor double mFactor = layer->layerMaterialProperties()->factor(rlDir, matupstage); if (mFactor == 0.){ @@ -135,12 +135,12 @@ const Trk::TrackParameters* Trk::MaterialEffectsEngine::updateTrackParameters(co // get the actual material bin const Trk::MaterialProperties* materialProperties = layer->layerMaterialProperties()->fullMaterial(parameters.position()); // and let's check if there's acutally something to do - if (materialProperties && ( m_eLossCorrection || m_mscCorrection || eCell.checkConfigurationMode(Trk::ExtrapolationMode::CollectMaterial)) ){ - // and add them + if (materialProperties && std::abs(pathCorrection)>0. && + ( m_eLossCorrection || m_mscCorrection || eCell.checkConfigurationMode(Trk::ExtrapolationMode::CollectMaterial)) ){ + // and add them int sign = int(eCell.materialUpdateMode); // a simple cross-check if the parameters are the initial ones AmgVector(5) uParameters = parameters.parameters(); - std::unique_ptr<AmgSymMatrix(5)> uCovariance = parameters.covariance() ? std::make_unique<AmgSymMatrix(5)>(*parameters.covariance()) @@ -193,7 +193,10 @@ const Trk::TrackParameters* Trk::MaterialEffectsEngine::updateTrackParameters(co // now either create new ones or update - only start parameters can not be updated if (eCell.leadParameters != eCell.startParameters ){ EX_MSG_VERBOSE(eCell.navigationStep, "layer", layer->layerIndex().value(), "material update on non-initial parameters."); - const_cast<Trk::TrackParameters*>(¶meters)->updateParameters(uParameters,*uCovariance); + if (uCovariance) + const_cast<Trk::TrackParameters*>(¶meters)->updateParameters(uParameters,*uCovariance); + else + const_cast<Trk::TrackParameters*>(¶meters)->updateParameters(uParameters); } else { EX_MSG_VERBOSE(eCell.navigationStep, "layer", layer->layerIndex().value(), "material update on initial parameters, creating new ones."); // create new parameters diff --git a/Tracking/TrkExtrapolation/TrkExEngine/src/PropagationEngine.cxx b/Tracking/TrkExtrapolation/TrkExEngine/src/PropagationEngine.cxx index cf8b298dc13c6a4ad8168af27964f1409c020c17..6cbf564f678e373deb031e05448cd2eb57ff7d50 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/src/PropagationEngine.cxx +++ b/Tracking/TrkExtrapolation/TrkExEngine/src/PropagationEngine.cxx @@ -18,12 +18,9 @@ // constructor Trk::PropagationEngine::PropagationEngine(const std::string& t, const std::string& n, const IInterface* p) : AthAlgTool(t,n,p), - m_propagator(""), m_pathLimitTolerance(0.01) { declareInterface<Trk::IPropagationEngine>(this); - // configure the Propagator - declareProperty("Propagator" , m_propagator); // steering of the screen outoput (SOP) declareProperty("OutputPrefix" , m_sopPrefix); declareProperty("OutputPostfix" , m_sopPostfix); diff --git a/Tracking/TrkExtrapolation/TrkExEngine/src/StaticEngine.cxx b/Tracking/TrkExtrapolation/TrkExEngine/src/StaticEngine.cxx index 416e39a4198d456f07ab593bd23e1e7077c2fbb8..51dd8c2bc1b1f27a82ab38157213e2eaca751846 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/src/StaticEngine.cxx +++ b/Tracking/TrkExtrapolation/TrkExEngine/src/StaticEngine.cxx @@ -13,16 +13,9 @@ // constructor Trk::StaticEngine::StaticEngine(const std::string& t, const std::string& n, const IInterface* p) -: AthAlgTool(t,n,p), - m_propagationEngine(""), - m_navigationEngine(""), - m_materialEffectsEngine("") +: AthAlgTool(t,n,p) { declareInterface<Trk::IExtrapolationEngine>(this); - // The Tools needed - declareProperty("PropagationEngine" , m_propagationEngine); - declareProperty("NavigationEngine" , m_navigationEngine); - declareProperty("MaterialEffectsEngine" , m_materialEffectsEngine); // steering of the screen outoput (SOP) declareProperty("OutputPrefix" , m_sopPrefix); declareProperty("OutputPostfix" , m_sopPostfix); diff --git a/Tracking/TrkExtrapolation/TrkExEngine/src/StaticNavigationEngine.cxx b/Tracking/TrkExtrapolation/TrkExEngine/src/StaticNavigationEngine.cxx index b6624b01d5ce81a7257c7aa04316c77a0689d6d9..efabbb673b3b12afabfb2240886f1a7a1e79fde5 100644 --- a/Tracking/TrkExtrapolation/TrkExEngine/src/StaticNavigationEngine.cxx +++ b/Tracking/TrkExtrapolation/TrkExEngine/src/StaticNavigationEngine.cxx @@ -13,14 +13,9 @@ // constructor Trk::StaticNavigationEngine::StaticNavigationEngine(const std::string& t, const std::string& n, const IInterface* p) -: AthAlgTool(t,n,p), - m_propagationEngine(""), - m_materialEffectsEngine("") +: AthAlgTool(t,n,p) { declareInterface<Trk::INavigationEngine>(this); - // Tools needed - declareProperty("PropagationEngine" , m_propagationEngine); - declareProperty("MaterialEffectsEngine" , m_materialEffectsEngine); // steering of the screen outoput (SOP) declareProperty("OutputPrefix" , m_sopPrefix); declareProperty("OutputPostfix" , m_sopPostfix); diff --git a/Tracking/TrkExtrapolation/TrkExUnitTests/CMakeLists.txt b/Tracking/TrkExtrapolation/TrkExUnitTests/CMakeLists.txt index f1e3a38ed73cd03c0f20bdca0a2a00e384aae0a3..7e77ac6331dd26c8da1cbb483487c77ea39a2282 100644 --- a/Tracking/TrkExtrapolation/TrkExUnitTests/CMakeLists.txt +++ b/Tracking/TrkExtrapolation/TrkExUnitTests/CMakeLists.txt @@ -11,4 +11,4 @@ atlas_add_component( TrkExUnitTests src/*.cxx src/components/*.cxx INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} - LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps GaudiKernel GeoPrimitives TrkEventPrimitives TrkExInterfaces TrkExUtils TrkGeometry TrkNeutralParameters TrkParameters TrkValInterfaces ) + LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaBaseComps AtlasDetDescr GeoPrimitives Identifier HGTD_Identifier InDetReadoutGeometry GaudiKernel InDetIdentifier TrkGeometry TrkEventPrimitives TrkNeutralParameters TrkParameters TrkExInterfaces TrkExUtils TrkValInterfaces ) diff --git a/Tracking/TrkExtrapolation/TrkExUnitTests/TrkExUnitTests/ExtrapolationEngineTest.h b/Tracking/TrkExtrapolation/TrkExUnitTests/TrkExUnitTests/ExtrapolationEngineTest.h index 2e41dd745b84fc2dfb1dc840f087e5a83b08aec0..23024766f5fb1ea5d81b0595f5808c6b1c62597a 100644 --- a/Tracking/TrkExtrapolation/TrkExUnitTests/TrkExUnitTests/ExtrapolationEngineTest.h +++ b/Tracking/TrkExtrapolation/TrkExUnitTests/TrkExUnitTests/ExtrapolationEngineTest.h @@ -20,6 +20,11 @@ class TTree; +class PixelID; +class SCT_ID; +class HGTD_ID; +class AtlasDetectorID; + namespace Trk { class IExtrapolationEngine; class IPositionMomentumWriter; @@ -51,157 +56,183 @@ namespace Trk { /* book the TTree branches */ StatusCode bookTree(); private: - template <class T, class P> StatusCode runTestT(); - - template <class T, class P> StatusCode fillStepInformationT(ExtrapolationCell<T>& eCell, int fwbw, - std::vector<const Trk::Surface*>& stepSurfaces); - - /** retrieve it */ - ToolHandle<IExtrapolationEngine> m_extrapolationEngine; - - bool m_parametersMode; // 0 - neutral, 1 - charged, 2 - multi - int m_particleHypothesis; - - bool m_smearProductionVertex; - bool m_smearFlatOriginT; - bool m_smearFlatOriginZ; - double m_sigmaOriginT; - double m_sigmaOriginZ; - double m_d0Min; - double m_d0Max; - double m_z0Min; - double m_z0Max; - - double m_etaMin; - double m_etaMax; - double m_phiMin; - double m_phiMax; - - double m_ptMin; - double m_ptMax; - - double m_pathLimit; - - bool m_collectSensitive; - bool m_collectPassive; - bool m_collectBoundary; - bool m_collectMaterial; - - bool m_backExtrapolation; - bool m_stepwiseExtrapolation; - - - /** scanning parameters */ - int m_stepsPhi; - int m_currentPhiStep; - std::vector< float > m_etaScans; - double m_currentEta; - std::vector< float > m_phiScans; - double m_currentPhi; - bool m_splitCharge; - - // !< the tree - - bool m_writeTTree; - ToolHandle<IPositionMomentumWriter> m_posmomWriter; - - std::string m_treeName; - std::string m_treeFolder; - std::string m_treeDescription; - TTree* m_tree{}; - TRandom m_tRandom; - - - float m_startPositionX{}; - float m_startPositionY{}; - float m_startPositionZ{}; - float m_startPositionR{}; - float m_startPhi{}; - float m_startTheta{}; - float m_startEta{}; - float m_startP{}; - float m_startPt{}; - float m_charge; - - int m_endSuccessful{}; - float m_endPositionX{}; - float m_endPositionY{}; - float m_endPositionZ{}; - float m_endPositionR{}; - float m_endPhi{}; - float m_endTheta{}; - float m_endEta{}; - float m_endP{}; - float m_endPt{}; - float m_endPathLength{}; - - int m_backSuccessful{}; - float m_backPositionX{}; - float m_backPositionY{}; - float m_backPositionZ{}; - float m_backPositionR{}; - float m_backPhi; - float m_backTheta; - float m_backEta; - float m_backP; - float m_backPt; - - std::vector<TString> m_parameterNames; - std::vector< std::vector< float >* > m_pPositionX; - std::vector< std::vector< float >* > m_pPositionY; - std::vector< std::vector< float >* > m_pPositionZ; - std::vector< std::vector< float >* > m_pPositionR; - std::vector< std::vector< float >* > m_pPhi; - std::vector< std::vector< float >* > m_pTheta; - std::vector< std::vector< float >* > m_pEta; - std::vector< std::vector< float >* > m_pP; - std::vector< std::vector< float >* > m_pPt; - - std::vector< int >* m_sensitiveLayerIndex; - std::vector< float >* m_sensitiveLocalPosX; - std::vector< float >* m_sensitiveLocalPosY; - - float m_materialThicknessInX0; - float m_materialThicknessInL0; - float m_materialThicknessZARho; - float m_materialEmulatedIonizationLoss; - - float m_materialThicknessInX0Bwd; - float m_materialThicknessInL0Bwd; - - float m_materialThicknessInX0Sensitive; - float m_materialThicknessInX0Passive; - float m_materialThicknessInX0Boundary; - - float m_materialThicknessInX0Cylinder; - float m_materialThicknessInX0Disc; - float m_materialThicknessInX0Plane; - - std::vector< float >* m_materialThicknessInX0Accumulated; - std::vector< float >* m_materialThicknessInX0Steps; - std::vector< float >* m_materialThicknessInL0Steps; - std::vector< float >* m_materialPositionX; - std::vector< float >* m_materialPositionY; - std::vector< float >* m_materialPositionZ; - std::vector< float >* m_materialPositionR; - std::vector< float >* m_materialPositionP; - std::vector< float >* m_materialPositionPt; - std::vector< float >* m_materialScaling; - std::vector< int >* m_stepDirection; - - int m_endStepSuccessful; - float m_endStepPositionX; - float m_endStepPositionY; - float m_endStepPositionZ; - float m_endStepPositionR; - float m_endStepPhi; - float m_endStepTheta; - float m_endStepEta; - float m_endStepP; - float m_endStepPt; - float m_endStepPathLength; - float m_endStepThicknessInX0; - }; + template <class T, class P> StatusCode runTestT(); + + template <class T, class P> StatusCode fillStepInformationT(ExtrapolationCell<T>& eCell, int fwbw, std::vector<const Trk::Surface*>& stepSurfaces); + + /** retrieve it */ + ToolHandle<IExtrapolationEngine> m_extrapolationEngine; + + const AtlasDetectorID* m_idHelper; + const PixelID* m_pixel_ID; //!< Handle to the ID helper + const SCT_ID* m_sct_ID; //!< Handle to the ID helper + const HGTD_ID* m_hgtd_ID; //!< Handle to the ID helper + bool m_useHGTD; + + bool m_parametersMode; // 0 - neutral, 1 - charged, 2 - multi + int m_particleHypothesis; + + bool m_smearProductionVertex; + bool m_smearFlatOriginT; + bool m_smearFlatOriginZ; + double m_sigmaOriginT; + double m_sigmaOriginZ; + double m_d0Min; + double m_d0Max; + double m_z0Min; + double m_z0Max; + std::vector<float> m_z0Values; + + double m_etaMin; + double m_etaMax; + double m_phiMin; + double m_phiMax; + + double m_ptMin; + double m_ptMax; + + double m_pathLimit; + + bool m_collectSensitive; + bool m_collectPassive; + bool m_collectBoundary; + bool m_collectMaterial; + + bool m_backExtrapolation; + bool m_stepwiseExtrapolation; + + + /** scanning parameters */ + int m_stepsPhi; + int m_currentPhiStep; + std::vector< float > m_etaScans; + double m_currentEta; + std::vector< float > m_phiScans; + double m_currentPhi; + bool m_splitCharge; + + //!< the tree + + bool m_writeTTree; + ToolHandle<IPositionMomentumWriter> m_posmomWriter; + + std::string m_treeName; + std::string m_treeFolder; + std::string m_treeDescription; + TTree* m_tree; + TRandom m_tRandom; + + + float m_startPositionX; + float m_startPositionY; + float m_startPositionZ; + float m_startPositionR; + float m_startPhi; + float m_startTheta; + float m_startEta; + float m_startP; + float m_startPt; + float m_charge; + + int m_endSuccessful; + float m_endPositionX; + float m_endPositionY; + float m_endPositionZ; + float m_endPositionR; + float m_endPhi; + float m_endTheta; + float m_endEta; + float m_endP; + float m_endPt; + float m_endPathLength; + + int m_backSuccessful; + float m_backPositionX; + float m_backPositionY; + float m_backPositionZ; + float m_backPositionR; + float m_backPhi; + float m_backTheta; + float m_backEta; + float m_backP; + float m_backPt; + + std::vector<TString> m_parameterNames; + std::vector< std::vector< float >* > m_pPositionX; + std::vector< std::vector< float >* > m_pPositionY; + std::vector< std::vector< float >* > m_pPositionZ; + std::vector< std::vector< float >* > m_pPositionR; + std::vector< std::vector< float >* > m_pPhi; + std::vector< std::vector< float >* > m_pTheta; + std::vector< std::vector< float >* > m_pEta; + std::vector< std::vector< float >* > m_pP; + std::vector< std::vector< float >* > m_pPt; + + std::vector< int >* m_sensitiveSurfaceType; + std::vector< int >* m_sensitiveLayerIndex; + std::vector< float >* m_sensitiveLocalPosX; + std::vector< float >* m_sensitiveLocalPosY; + std::vector< float >* m_sensitiveCenterPosX; + std::vector< float >* m_sensitiveCenterPosY; + std::vector< float >* m_sensitiveCenterPosZ; + std::vector< float >* m_sensitiveCenterPosR; + std::vector< float >* m_sensitiveLocalPosR; + std::vector< float >* m_sensitiveLocalPosPhi; + std::vector< int >* m_sensitiveDetector; + std::vector< int >* m_sensitiveIsInnermost; + std::vector< int >* m_sensitiveIsNextToInnermost; + std::vector< int >* m_sensitiveBarrelEndcap; + std::vector< int >* m_sensitiveLayerDisc; + std::vector< int >* m_sensitiveEtaModule; + std::vector< int >* m_sensitivePhiModule; + std::vector< int >* m_sensitiveSide; + std::vector< int >* m_sensitiveNearBondGap; + std::vector< int >* m_sensitiveisInside; + std::vector< int >* m_sensitiveisInsideBound; + std::vector< float >* m_materialtInX0AccumulatedUpTo; + + float m_materialThicknessInX0; + float m_materialThicknessInL0; + float m_materialThicknessZARho; + float m_materialEmulatedIonizationLoss; + + float m_materialThicknessInX0Bwd; + float m_materialThicknessInL0Bwd; + + float m_materialThicknessInX0Sensitive; + float m_materialThicknessInX0Passive; + float m_materialThicknessInX0Boundary; + + float m_materialThicknessInX0Cylinder; + float m_materialThicknessInX0Disc; + float m_materialThicknessInX0Plane; + + std::vector< float >* m_materialThicknessInX0Accumulated; + std::vector< float >* m_materialThicknessInX0Steps; + std::vector< float >* m_materialThicknessInL0Steps; + std::vector< float >* m_materialPositionX; + std::vector< float >* m_materialPositionY; + std::vector< float >* m_materialPositionZ; + std::vector< float >* m_materialPositionR; + std::vector< float >* m_materialPositionP; + std::vector< float >* m_materialPositionPt; + std::vector< float >* m_materialScaling; + std::vector< int >* m_stepDirection; + + int m_endStepSuccessful; + float m_endStepPositionX; + float m_endStepPositionY; + float m_endStepPositionZ; + float m_endStepPositionR; + float m_endStepPhi; + float m_endStepTheta; + float m_endStepEta; + float m_endStepP; + float m_endStepPt; + float m_endStepPathLength; + float m_endStepThicknessInX0; + + }; } // include the templated function diff --git a/Tracking/TrkExtrapolation/TrkExUnitTests/TrkExUnitTests/ExtrapolationEngineTest.icc b/Tracking/TrkExtrapolation/TrkExUnitTests/TrkExUnitTests/ExtrapolationEngineTest.icc index 3cd578c8b1fb34492a4d65ae32214bf09f6ef7be..8a59503b724d71904c4df07c365a8035fabd93de 100644 --- a/Tracking/TrkExtrapolation/TrkExUnitTests/TrkExUnitTests/ExtrapolationEngineTest.icc +++ b/Tracking/TrkExtrapolation/TrkExUnitTests/TrkExUnitTests/ExtrapolationEngineTest.icc @@ -15,6 +15,13 @@ #include "TrkEventPrimitives/PdgToParticleHypothesis.h" #include "TrkExUtils/MaterialInteraction.h" #include "TrkGeometry/Layer.h" +#include "InDetIdentifier/PixelID.h" +#include "InDetIdentifier/SCT_ID.h" +#include "HGTD_Identifier/HGTD_ID.h" +#include "AtlasDetDescr/AtlasDetectorID.h" +#include "Identifier/Identifier.h" +#include "Identifier/IdentifierHash.h" +#include "InDetReadoutGeometry/SiDetectorElement.h" template < class T, class P > StatusCode Trk::ExtrapolationEngineTest::runTestT() { // ----------------- creation of the surfaces & track parameters ------------- @@ -78,8 +85,27 @@ template < class T, class P > StatusCode Trk::ExtrapolationEngineTest::runTestT( if (m_collectSensitive) { m_sensitiveLayerIndex->clear(); + m_sensitiveSurfaceType->clear(); + m_sensitiveCenterPosX->clear(); + m_sensitiveCenterPosY->clear(); + m_sensitiveCenterPosZ->clear(); + m_sensitiveCenterPosR->clear(); m_sensitiveLocalPosX->clear(); m_sensitiveLocalPosY->clear(); + m_sensitiveLocalPosR->clear(); + m_sensitiveLocalPosPhi->clear(); + m_sensitiveDetector->clear(); + m_sensitiveIsInnermost->clear(); + m_sensitiveIsNextToInnermost->clear(); + m_sensitiveBarrelEndcap->clear(); + m_sensitiveLayerDisc->clear(); + m_sensitiveEtaModule->clear(); + m_sensitivePhiModule->clear(); + m_sensitiveSide->clear(); + m_sensitiveNearBondGap->clear(); + m_sensitiveisInside->clear(); + m_sensitiveisInsideBound->clear(); + m_materialtInX0AccumulatedUpTo->clear(); } for (size_t ip = 0; ip < m_parameterNames.size(); ++ip) { @@ -336,12 +362,74 @@ template < class T, class P > StatusCode Trk::ExtrapolationEngineTest::fillStepI // check this if (ip == 0 && m_collectSensitive) { // fill the layer index and the local variables - int idx = parameters->associatedSurface().associatedLayer() ? - parameters->associatedSurface().associatedLayer()->layerIndex().value() : 0; + int idx = parameters->associatedSurface().associatedLayer() ? + parameters->associatedSurface().associatedLayer()->layerIndex().value() : -1; m_sensitiveLayerIndex->push_back(idx); - // loc X and loc Y - m_sensitiveLocalPosX->push_back(parameters->localPosition().x()); - m_sensitiveLocalPosY->push_back(parameters->localPosition().y()); + int type = int(parameters->associatedSurface().type()); + m_sensitiveSurfaceType->push_back(type); + m_sensitiveLocalPosX->push_back(parameters->localPosition()[Trk::loc1]); + m_sensitiveLocalPosY->push_back(parameters->localPosition()[Trk::loc2]); + + if (parameters->associatedSurface().associatedDetectorElement()) { + Identifier id = parameters->associatedSurface().associatedDetectorElement()->identify(); + + m_sensitiveCenterPosX->push_back(parameters->associatedSurface().associatedDetectorElement()->center().x()); + m_sensitiveCenterPosY->push_back(parameters->associatedSurface().associatedDetectorElement()->center().y()); + m_sensitiveCenterPosZ->push_back(parameters->associatedSurface().associatedDetectorElement()->center().z()); + m_sensitiveCenterPosR->push_back(parameters->associatedSurface().associatedDetectorElement()->center().perp()); + + bool isHGTD = false; + if (m_idHelper->is_pixel(id)) { + // save pixel info + m_sensitiveDetector->push_back(0); + m_sensitiveIsInnermost->push_back(m_pixel_ID->layer_disk(id)==0); + m_sensitiveIsNextToInnermost->push_back(m_pixel_ID->layer_disk(id)==1); + m_sensitiveBarrelEndcap->push_back(m_pixel_ID->barrel_ec(id)); + m_sensitiveLayerDisc->push_back(m_pixel_ID->layer_disk(id)); + m_sensitiveEtaModule->push_back(m_pixel_ID->eta_module(id)); + m_sensitivePhiModule->push_back(m_pixel_ID->phi_module(id)); + m_sensitiveSide->push_back(0); + } else if (m_idHelper->is_sct(id)) { + // save sct info + m_sensitiveDetector->push_back(1); + m_sensitiveIsInnermost->push_back(0); + m_sensitiveIsNextToInnermost->push_back(0); + m_sensitiveBarrelEndcap->push_back(m_sct_ID->barrel_ec(id)); + m_sensitiveLayerDisc->push_back(m_sct_ID->layer_disk(id)); + m_sensitiveEtaModule->push_back(m_sct_ID->eta_module(id)); + m_sensitivePhiModule->push_back(m_sct_ID->phi_module(id)); + m_sensitiveSide->push_back(m_sct_ID->side(id)); + } else if (m_useHGTD and m_idHelper->is_hgtd(id)) { + // save hgtd info + m_sensitiveDetector->push_back(2); + m_sensitiveIsInnermost->push_back(0); + m_sensitiveIsNextToInnermost->push_back(0); + m_sensitiveBarrelEndcap->push_back(m_hgtd_ID->endcap(id)); + m_sensitiveLayerDisc->push_back(m_hgtd_ID->layer(id)); + m_sensitiveEtaModule->push_back(m_hgtd_ID->eta_module(id)); + m_sensitivePhiModule->push_back(m_hgtd_ID->phi_module(id)); + m_sensitiveSide->push_back(0); + isHGTD = true; + } + + if (not isHGTD) { + const InDetDD::SiDetectorElement* siElement = dynamic_cast<const InDetDD::SiDetectorElement*> (parameters->associatedSurface().associatedDetectorElement()); + double phitol = 2.5; double etatol = 5.0; + bool nearGap = siElement->nearBondGap(parameters->localPosition(), etatol); + InDetDD::SiIntersect siIn = siElement->inDetector(parameters->localPosition(), phitol, etatol); + bool isInside = siIn.in(); + m_sensitiveNearBondGap->push_back(nearGap ? 1 : 0); + m_sensitiveisInside->push_back(isInside ? 1 : 0); + auto& pBounds = parameters->associatedSurface().bounds(); + bool isInsideBounds = pBounds.inside(parameters->localPosition(),phitol,etatol); + m_sensitiveisInsideBound->push_back(isInsideBounds ? 1 : 0); + } else { + m_sensitiveNearBondGap->push_back(-1); + m_sensitiveisInside->push_back(-1); + m_sensitiveisInsideBound->push_back(-1); + } + } + m_materialtInX0AccumulatedUpTo->push_back(m_materialThicknessInX0Accumulated->empty() ? 0. : m_materialThicknessInX0Accumulated->back()); } // collect the material if configured to do so @@ -405,9 +493,9 @@ template < class T, class P > StatusCode Trk::ExtrapolationEngineTest::fillStepI } else if (es.surface && es.surface->type() == Trk::SurfaceType::Plane) { m_materialThicknessInX0Plane += tInX0; } - // delete the parameters if there are any there - delete parameters; } + // delete the parameters if there are any there + delete parameters; } } diff --git a/Tracking/TrkExtrapolation/TrkExUnitTests/share/ExtrapolationEngineTest_jobOptions.py b/Tracking/TrkExtrapolation/TrkExUnitTests/share/ExtrapolationEngineTest_jobOptions.py index ea0e7fa4efe7df4f5a6045ae22af79ffc4e09e0a..bb87a1346e425401d11898e4ecea9bcc909187a1 100644 --- a/Tracking/TrkExtrapolation/TrkExUnitTests/share/ExtrapolationEngineTest_jobOptions.py +++ b/Tracking/TrkExtrapolation/TrkExUnitTests/share/ExtrapolationEngineTest_jobOptions.py @@ -57,8 +57,8 @@ TrkDetFlags.TRT_BuildStrawLayers = False from TrkDetDescrSvc.TrkDetDescrJobProperties import TrkDetFlags TrkDetFlags.MaterialSource = 'COOL' #TrkDetFlags.MaterialSource = 'Input' -TrkDetFlags.MaterialVersion = 20 -TrkDetFlags.MaterialSubVersion = '' +TrkDetFlags.MaterialVersion = 21 +#TrkDetFlags.MaterialSubVersion = '' #TrkDetFlags.MaterialSubVersion = 'f' TrkDetFlags.ConfigurationOutputLevel = VERBOSE @@ -104,8 +104,8 @@ from IOVDbSvc.CondDB import conddb conddb.addOverride('/GLOBAL/BField/Map','BFieldMap-FullAsym-09-solTil3') from TrkExEngine.AtlasExtrapolationEngine import AtlasExtrapolationEngine -ExtrapolationEninge = AtlasExtrapolationEngine(name='Extrapolation', nameprefix='Atlas', ToolOutputLevel=ExToolOutputLevel) -ToolSvc += ExtrapolationEninge +ExtrapolationEngine = AtlasExtrapolationEngine(name='Extrapolation', nameprefix='Atlas', ToolOutputLevel=ExToolOutputLevel) +ToolSvc += ExtrapolationEngine from TrkValTools.TrkValToolsConf import Trk__PositionMomentumWriter as PmWriter PmWriter = PmWriter() @@ -124,28 +124,40 @@ ExtrapolationEngineTest.NumberOfTestsPerEvent = 100 # parameters mode: 0 - neutral tracks, 1 - charged particles ExtrapolationEngineTest.ParametersMode = 1 # do the full test backwards as well -ExtrapolationEngineTest.BackExtrapolation = True +ExtrapolationEngineTest.BackExtrapolation = False # Smear the production vertex - standard primary vertex paramters -ExtrapolationEngineTest.SmearOrigin = False -ExtrapolationEngineTest.SimgaOriginD0 = 0.015 -ExtrapolationEngineTest.SimgaOriginZ0 = 55.6 +ExtrapolationEngineTest.SmearOrigin = False +ExtrapolationEngineTest.SimgaOriginD0 = 2./3. +ExtrapolationEngineTest.SimgaOriginZ0 = 50. +ExtrapolationEngineTest.SmearFlatOriginZ0 = False +ExtrapolationEngineTest.Z0Min = -150. +ExtrapolationEngineTest.Z0Max = 150. +ExtrapolationEngineTest.Z0Values = [-150., 0., 150.] +ExtrapolationEngineTest.SmearFlatOriginD0 = False +ExtrapolationEngineTest.D0Min = -2.0 +ExtrapolationEngineTest.D0Max = 2.0 # pT range for testing ExtrapolationEngineTest.PtMin = 1000 ExtrapolationEngineTest.PtMax = 1000 # The test range in Eta -ExtrapolationEngineTest.EtaMin = -3.5 -ExtrapolationEngineTest.EtaMax = 3.5 +ExtrapolationEngineTest.EtaMin = -3. +ExtrapolationEngineTest.EtaMax = 3. +#ExtrapolationEngineTest.EtaMin = -2.0 +#ExtrapolationEngineTest.EtaMax = 2.0 +#ExtrapolationEngineTest.PhiMin = -0.5 +#ExtrapolationEngineTest.PhiMax = 0.5 # Configure how you wanna run ExtrapolationEngineTest.CollectSensitive = True ExtrapolationEngineTest.CollectPassive = True ExtrapolationEngineTest.CollectBoundary = True ExtrapolationEngineTest.CollectMaterial = True +ExtrapolationEngineTest.UseHGTD = False # the path limit to test ExtrapolationEngineTest.PathLimit = -1. # give it the engine -ExtrapolationEngineTest.ExtrapolationEngine = ExtrapolationEninge +ExtrapolationEngineTest.ExtrapolationEngine = ExtrapolationEngine # validation tool -ExtrapolationEngineTest.PositionMomentumWriter = PmWriter +ExtrapolationEngineTest.PositionMomentumWriter = PmWriter # output formatting ExtrapolationEngineTest.OutputLevel = ExAlgorithmOutputLevel job += ExtrapolationEngineTest # 1 alg, named 'ExtrapolationEngineTest' diff --git a/Tracking/TrkExtrapolation/TrkExUnitTests/share/TrkExUnitTestConfig.py b/Tracking/TrkExtrapolation/TrkExUnitTests/share/TrkExUnitTestConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..ff92c7beb2027159d6477e830499c00eb2c6afb2 --- /dev/null +++ b/Tracking/TrkExtrapolation/TrkExUnitTests/share/TrkExUnitTestConfig.py @@ -0,0 +1,132 @@ +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory + + +def PositionMomentumWriterCfg(configFlags, name="PositionMomentumWriter", **kwargs) : + result = ComponentAccumulator() + + Trk__PositionMomentumWriter = CompFactory.Trk.PositionMomentumWriter + posMomWriter = Trk__PositionMomentumWriter(name, **kwargs) + result.addPublicTool(posMomWriter) + #result.setPrivateTools(posMomWriter) + return result, posMomWriter + +def ExtrapolationEngineTestCfg(configFlags, name = "ExtrapolationEngineTest", **kwargs ) : + result=ComponentAccumulator() + + from AtlasGeoModel.GeoModelConfig import GeoModelCfg + gmsAcc = GeoModelCfg(configFlags) + result.merge(gmsAcc) + + #from TrkConfig.AtlasExtrapolationEngineConfig import AtlasExtrapolationEngineCfg + #kwargs["ExtrapolationEngine"] = result.popToolsAndMerge(AtlasExtrapolationEngineCfg(configFlags, nameprefix='')) + + from TrkConfig.AtlasExtrapolationEngineConfig import AtlasExtrapolationEngineCfg + extrapAcc = AtlasExtrapolationEngineCfg(configFlags) + extrapolationEngine = extrapAcc.getPrimary() + result.merge(extrapAcc) + kwargs["ExtrapolationEngine"] = extrapolationEngine + + posMomAcc, posMomWriter = PositionMomentumWriterCfg(configFlags) + result.merge(posMomAcc) + kwargs.setdefault('PositionMomentumWriter', posMomWriter) + + Trk__ExtrapolationEngineTest = CompFactory.Trk.ExtrapolationEngineTest + extrapolationTest = Trk__ExtrapolationEngineTest(name, **kwargs) + result.addEventAlgo(extrapolationTest) + + return result + +if __name__=="__main__": + from AthenaCommon.Configurable import Configurable + from AthenaCommon.Logging import log + from AthenaCommon.Constants import VERBOSE + from AthenaConfiguration.AllConfigFlags import ConfigFlags + from AthenaConfiguration.MainServicesConfig import MainServicesCfg + + Configurable.configurableRun3Behavior = True + + ## Just enable ID for the moment. + ConfigFlags.Input.isMC = True + ConfigFlags.Beam.Type = '' + + ConfigFlags.IOVDb.GlobalTag = "OFLCOND-SIM-00-00-00" + ConfigFlags.GeoModel.AtlasVersion = "ATLAS-R2-2016-01-00-01" + ConfigFlags.Detector.GeometryBpipe = True + ConfigFlags.Detector.GeometryID = True + ConfigFlags.Detector.GeometryPixel = True + ConfigFlags.Detector.GeometrySCT = True + + ConfigFlags.Detector.GeometryTRT = False + ConfigFlags.Detector.GeometryCalo = False + ConfigFlags.Detector.GeometryMuon = False + #ConfigFlags.TrackingGeometry.MaterialSource = "Input" + + # This should run serially for the moment. + ConfigFlags.Concurrency.NumThreads = 1 + ConfigFlags.Concurrency.NumConcurrentEvents = 1 + + log.debug('Lock config flags now.') + ConfigFlags.lock() + + log.debug('dumping config flags now.') + ConfigFlags.dump() + + cfg=MainServicesCfg(ConfigFlags) + from AtlasGeoModel.InDetGMConfig import InDetGeometryCfg + cfg.merge(InDetGeometryCfg(ConfigFlags)) + + from BeamPipeGeoModel.BeamPipeGMConfig import BeamPipeGeometryCfg + cfg.merge(BeamPipeGeometryCfg(ConfigFlags)) + + from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg + cfg.merge(TrackingGeometrySvcCfg(ConfigFlags)) + + histSvc = CompFactory.THistSvc(Output = ["val DATAFILE='ExtrapolationEngineTest.root' TYPE='ROOT' OPT='RECREATE'"]) + histSvc.OutputLevel=VERBOSE + cfg.addService( histSvc ) + + topoAcc=ExtrapolationEngineTestCfg(ConfigFlags, + NumberOfTestsPerEvent = 100, + # parameters mode: 0 - neutral tracks, 1 - charged particles + ParametersMode = 1, + # do the full test backwards as well + BackExtrapolation = False, + # Smear the production vertex - standard primary vertex paramters + SmearOrigin = False, + SimgaOriginD0 = 2./3., + SimgaOriginZ0 = 50., + SmearFlatOriginZ0 = False, + Z0Min = -150., + Z0Max = 150., + Z0Values = [-150., 0., 150.], + SmearFlatOriginD0 = False, + D0Min = -2.0, + D0Max = 2.0, + # pT range for testing + PtMin = 1000, + PtMax = 1000, + # The test range in Eta + EtaMin = -3., + EtaMax = 3., + #EtaMin = -2.0 + #EtaMax = 2.0 + #PhiMin = -0.5 + #PhiMax = 0.5 + # Configure how you wanna run + CollectSensitive = True, + CollectPassive = True, + CollectBoundary = True, + CollectMaterial = True, + UseHGTD = False, + # the path limit to test + PathLimit = -1., + ) + cfg.merge(topoAcc) + + cfg.printConfig() + + cfg.run(10) + f=open("ExtrapolationEngineTestConfig.pkl","wb") + cfg.store(f) + f.close() diff --git a/Tracking/TrkExtrapolation/TrkExUnitTests/src/ExtrapolationEngineTest.cxx b/Tracking/TrkExtrapolation/TrkExUnitTests/src/ExtrapolationEngineTest.cxx index 51b10ef0b7effe9421525966b74f376fa4a8699d..4db02d5b13dbf3811ac09f6cf36a4780294bf8d8 100644 --- a/Tracking/TrkExtrapolation/TrkExUnitTests/src/ExtrapolationEngineTest.cxx +++ b/Tracking/TrkExtrapolation/TrkExUnitTests/src/ExtrapolationEngineTest.cxx @@ -15,6 +15,11 @@ Trk::ExtrapolationEngineTest::ExtrapolationEngineTest(const std::string& name, ISvcLocator* pSvcLocator) : Trk::TrkExUnitTestBase(name, pSvcLocator), m_extrapolationEngine(""), + m_idHelper(0), + m_pixel_ID(0), + m_sct_ID(0), + m_hgtd_ID(0), + m_useHGTD(false), m_parametersMode(1), m_particleHypothesis(2), m_smearProductionVertex(false), @@ -57,6 +62,10 @@ Trk::ExtrapolationEngineTest::ExtrapolationEngineTest(const std::string& name, I m_sensitiveLayerIndex(nullptr), m_sensitiveLocalPosX(nullptr), m_sensitiveLocalPosY(nullptr), + m_sensitiveCenterPosX(nullptr), + m_sensitiveCenterPosY(nullptr), + m_sensitiveCenterPosZ(nullptr), + m_sensitiveCenterPosR(nullptr), m_materialThicknessInX0(0.), m_materialThicknessInL0(0.), m_materialThicknessZARho(0.), @@ -107,6 +116,7 @@ Trk::ExtrapolationEngineTest::ExtrapolationEngineTest(const std::string& name, I declareProperty("CollectPassive", m_collectPassive); declareProperty("CollectBoundary", m_collectBoundary); declareProperty("CollectMaterial", m_collectMaterial); + declareProperty("UseHGTD", m_useHGTD); // Mode for scanning in steps declareProperty("ScanMode", m_scanMode); declareProperty("EtaScans", m_etaScans); @@ -125,6 +135,7 @@ Trk::ExtrapolationEngineTest::ExtrapolationEngineTest(const std::string& name, I // z0 min / max values for flat smearing declareProperty("Z0Min", m_z0Min); declareProperty("Z0Max", m_z0Max); + declareProperty("Z0Values", m_z0Values); // eta min / max values declareProperty("EtaMin", m_etaMin); declareProperty("EtaMax", m_etaMax); @@ -157,8 +168,27 @@ StatusCode Trk::ExtrapolationEngineTest::finalize() { delete m_pPt[ip]; } delete m_sensitiveLayerIndex; + delete m_sensitiveSurfaceType; + delete m_sensitiveCenterPosX; + delete m_sensitiveCenterPosY; + delete m_sensitiveCenterPosZ; + delete m_sensitiveCenterPosR; delete m_sensitiveLocalPosX; delete m_sensitiveLocalPosY; + delete m_sensitiveLocalPosR; + delete m_sensitiveLocalPosPhi; + delete m_sensitiveDetector; + delete m_sensitiveIsInnermost; + delete m_sensitiveIsNextToInnermost; + delete m_sensitiveBarrelEndcap; + delete m_sensitiveLayerDisc; + delete m_sensitiveEtaModule; + delete m_sensitivePhiModule; + delete m_sensitiveSide; + delete m_sensitiveNearBondGap; + delete m_sensitiveisInside; + delete m_sensitiveisInsideBound; + delete m_materialtInX0AccumulatedUpTo; delete m_materialThicknessInX0Accumulated; delete m_materialThicknessInX0Steps; delete m_materialThicknessInL0Steps; @@ -185,6 +215,32 @@ StatusCode Trk::ExtrapolationEngineTest::initializeTest() { return StatusCode::FAILURE; } else ATH_MSG_INFO("Successfully retrieved ExtrapolationEngine."); + //ID Helper + if (detStore()->retrieve(m_idHelper, "AtlasID" ).isFailure()) { + ATH_MSG_ERROR ( "Could not get ATLAS ID helper" ); + return StatusCode::FAILURE; + } else + ATH_MSG_INFO("Successfully retrieved ATLAS ID Helper."); + + if (detStore()->retrieve(m_pixel_ID, "PixelID").isFailure()) { + ATH_MSG_ERROR ( "Could not get Pixel ID helper" ); + return StatusCode::FAILURE; + } else + ATH_MSG_INFO("Successfully retrieved Pixel ID Helper."); + + if (detStore()->retrieve(m_sct_ID, "SCT_ID").isFailure()) { + ATH_MSG_ERROR ( "Could not get SCT ID helper" ); + return StatusCode::FAILURE; + } else + ATH_MSG_INFO("Successfully retrieved SCT ID Helper."); + + if (m_useHGTD) { + if (detStore()->retrieve(m_hgtd_ID, "HGTD_ID").isFailure()) { + ATH_MSG_ERROR ( "Could not get HGTD ID helper" ); + return StatusCode::FAILURE; + } else + ATH_MSG_INFO("Successfully retrieved HGTD ID Helper."); + } // success return return StatusCode::SUCCESS; } @@ -261,12 +317,51 @@ StatusCode Trk::ExtrapolationEngineTest::bookTree() { } if (m_collectSensitive) { - m_sensitiveLayerIndex = new std::vector< int >; - m_sensitiveLocalPosX = new std::vector< float >; - m_sensitiveLocalPosY = new std::vector< float >; - m_tree->Branch("SensitiveLayerIndex", m_sensitiveLayerIndex); - m_tree->Branch("SensitiveLocalPosX", m_sensitiveLocalPosX); - m_tree->Branch("SensitiveLocalPosY", m_sensitiveLocalPosY); + m_sensitiveLayerIndex = new std::vector< int >; + m_sensitiveSurfaceType = new std::vector< int >; + m_sensitiveCenterPosX = new std::vector< float >; + m_sensitiveCenterPosY = new std::vector< float >; + m_sensitiveCenterPosZ = new std::vector< float >; + m_sensitiveCenterPosR = new std::vector< float >; + m_sensitiveLocalPosX = new std::vector< float >; + m_sensitiveLocalPosY = new std::vector< float >; + m_sensitiveLocalPosR = new std::vector< float >; + m_sensitiveLocalPosPhi = new std::vector< float >; + m_sensitiveDetector = new std::vector< int >; + m_sensitiveIsInnermost = new std::vector< int >; + m_sensitiveIsNextToInnermost = new std::vector< int >; + m_sensitiveBarrelEndcap = new std::vector< int >; + m_sensitiveLayerDisc = new std::vector< int >; + m_sensitiveEtaModule = new std::vector< int >; + m_sensitivePhiModule = new std::vector< int >; + m_sensitiveSide = new std::vector< int >; + m_sensitiveNearBondGap = new std::vector< int >; + m_sensitiveisInside = new std::vector< int >; + m_sensitiveisInsideBound = new std::vector< int >; + m_materialtInX0AccumulatedUpTo = new std::vector< float >; + + m_tree->Branch("SensitiveLayerIndex" , m_sensitiveLayerIndex); + m_tree->Branch("SensitiveSurfaceType" , m_sensitiveSurfaceType); + m_tree->Branch("SensitiveCenterPosX" , m_sensitiveCenterPosX); + m_tree->Branch("SensitiveCenterPosY" , m_sensitiveCenterPosY); + m_tree->Branch("SensitiveCenterPosZ" , m_sensitiveCenterPosZ); + m_tree->Branch("SensitiveCenterPosR" , m_sensitiveCenterPosR); + m_tree->Branch("SensitiveLocalPosX" , m_sensitiveLocalPosX); + m_tree->Branch("SensitiveLocalPosY" , m_sensitiveLocalPosY); + m_tree->Branch("SensitiveLocalPosR" , m_sensitiveLocalPosR); + m_tree->Branch("SensitiveLocalPosPhi" , m_sensitiveLocalPosPhi); + m_tree->Branch("SensitiveDetector" , m_sensitiveDetector); + m_tree->Branch("SensitiveIsInnermost" , m_sensitiveIsInnermost); + m_tree->Branch("SensitiveIsNextToInnermost" , m_sensitiveIsNextToInnermost); + m_tree->Branch("SensitiveBarrelEndcap", m_sensitiveBarrelEndcap); + m_tree->Branch("SensitiveLayerDisc" , m_sensitiveLayerDisc); + m_tree->Branch("SensitiveEtaModule" , m_sensitiveEtaModule); + m_tree->Branch("SensitivePhiModule" , m_sensitivePhiModule); + m_tree->Branch("SensitiveSide" , m_sensitiveSide); + m_tree->Branch("SensitiveNearBondGap" , m_sensitiveNearBondGap); + m_tree->Branch("SensitiveisInside" , m_sensitiveisInside); + m_tree->Branch("SensitiveisInsideBound", m_sensitiveisInsideBound); + m_tree->Branch("MaterialtInX0AccumulatedUpTo" , m_materialtInX0AccumulatedUpTo); } diff --git a/Tracking/TrkFitter/TrkiPatFitter/src/iPatFitter.cxx b/Tracking/TrkFitter/TrkiPatFitter/src/iPatFitter.cxx index 44cb2974e9304765bbf7f4866457cbe0ababc9f3..4a4979786b75df67cdc06401b4fc88a277841673 100755 --- a/Tracking/TrkFitter/TrkiPatFitter/src/iPatFitter.cxx +++ b/Tracking/TrkFitter/TrkiPatFitter/src/iPatFitter.cxx @@ -614,7 +614,7 @@ namespace Trk std::vector<FitMeasurement*>& measurements, const FitParameters& parameters, ParticleHypothesis particleHypothesis, - const DataVector<const TrackStateOnSurface>& trackStateOnSurfaces) const + const Trk::TrackStates& trackStateOnSurfaces) const { // create vector of any TSOS'es which require fitted alignment corrections std::vector<Identifier> misAlignedTSOS; @@ -622,7 +622,7 @@ namespace Trk int misAlignmentNumber = 0; int tsos = 0; // BUG that shifts ... misAlignmentNumbers.push_back(misAlignmentNumber); - for (DataVector<const TrackStateOnSurface>::const_iterator + for (Trk::TrackStates::const_iterator i = trackStateOnSurfaces.begin(); i != trackStateOnSurfaces.end(); ++i, ++tsos) { @@ -660,7 +660,7 @@ namespace Trk double qOverP = parameters.qOverP(); const ExtrapolationType type = FittedTrajectory; tsos = 0; - for (DataVector<const TrackStateOnSurface>::const_iterator + for (Trk::TrackStates::const_iterator i = trackStateOnSurfaces.begin(); i != trackStateOnSurfaces.end(); ++i, ++hit, ++tsos) { @@ -900,7 +900,7 @@ namespace Trk FitState& fitState, const ParticleHypothesis particleHypothesis, const TrackInfo& trackInfo, - const DataVector<const TrackStateOnSurface>* leadingTSOS, + const Trk::TrackStates* leadingTSOS, const FitQuality* perigeeQuality, Garbage_t& garbage) const { @@ -946,23 +946,19 @@ namespace Trk if (!parameters->fitMomentum()) { fittedTrack->info().setTrackProperties(TrackInfo::StraightTrack); } // special check for CaloDeposit - parameters must be inside calorimeter - for (DataVector<const TrackStateOnSurface>::const_iterator - s = fittedTrack->trackStateOnSurfaces()->begin(); - s != fittedTrack->trackStateOnSurfaces()->end(); - ++s) { - if (!(**s).type(TrackStateOnSurface::CaloDeposit)) { + for (const Trk::TrackStateOnSurface* tsos : *fittedTrack->trackStateOnSurfaces()) { + if (!tsos->type(TrackStateOnSurface::CaloDeposit)) { continue; } - if ((**s).trackParameters()) { - Amg::Vector3D position = (**s).trackParameters()->position(); + if (tsos->trackParameters()) { + const Amg::Vector3D position = tsos->trackParameters()->position(); if (!m_indetVolume->inside(position) && m_calorimeterVolume->inside(position)) { - break; + break; } } - // something badly wrong: WARN and kill track // fail fit as CaloDeposit outside calo volume - m_messageHelper->printWarning(20); + ATH_MSG_DEBUG("fail fit as CaloDeposit outside calo volume: "<<(*fittedTrack)); fittedTrack.reset(); break; } @@ -1084,7 +1080,7 @@ namespace Trk msg(MSG::INFO) << " track with " << track.trackStateOnSurfaces()->size() << " TSOS " << endmsg; int tsos = 0; - for (DataVector<const TrackStateOnSurface>::const_iterator t = track.trackStateOnSurfaces()->begin(); + for (Trk::TrackStates::const_iterator t = track.trackStateOnSurfaces()->begin(); t != track.trackStateOnSurfaces()->end(); ++t, ++tsos) { msg() << std::setiosflags(std::ios::fixed | std::ios::right) diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/CMakeLists.txt b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/CMakeLists.txt index 2aea27b82252258979899683e98fa033c92771e5..bcf60a9b8d136741334dda386bede773d4477463 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/CMakeLists.txt +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/CMakeLists.txt @@ -7,4 +7,4 @@ atlas_subdir( TrkDriftCircleMath ) atlas_add_library( TrkDriftCircleMath src/*.cxx PUBLIC_HEADERS TrkDriftCircleMath - LINK_LIBRARIES CxxUtils GaudiKernel ) + LINK_LIBRARIES CxxUtils GaudiKernel FourMomUtils MuonIdHelpersLib) diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ChamberGeometry.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ChamberGeometry.h index fcf893e16f4a2454e31cb24d2731652883dcb388..62c20ed3877ba33901189c57cd4dae64922334dd 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ChamberGeometry.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ChamberGeometry.h @@ -1,40 +1,40 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef DCMATH_CHAMBERGEOMETRY_H #define DCMATH_CHAMBERGEOMETRY_H +#include <vector> + #include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/Line.h" #include "TrkDriftCircleMath/MdtStationId.h" -#include <vector> namespace TrkDriftCircleMath { - class ChamberGeometry { - public: - - virtual const std::vector<LocPos>& allTubes() const = 0; - - virtual const DCVec& tubesPassedByLine( const Line& line ) const = 0; + class ChamberGeometry { + public: + /// Retrieves a vector of all tubes in the geometry object + virtual const std::vector<LocVec2D>& allTubes() const = 0; + /// Retrieves the vector of drift circles traveresed by the line + virtual DCVec tubesPassedByLine(const Line& line) const = 0; + + virtual bool validGeometry() const = 0; - virtual bool validGeometry() const = 0; + virtual void print() const = 0; - virtual void print() const = 0; + virtual double stationTheta() const = 0; - virtual double stationTheta() const = 0; + virtual unsigned int nlay() const = 0; - virtual unsigned int nlay() const = 0; - - virtual const MdtStationId& stationId() const = 0; + virtual const MdtStationId& stationId() const = 0; - virtual const LocPos& tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const = 0; - - virtual double tubeRadius() const = 0; - }; + virtual LocVec2D tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const = 0; -} + virtual double tubeRadius() const = 0; + }; +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Cluster.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Cluster.h index 12d9570b1c97a7003aa5108a0ec1ea68997b2baf..2a43288bb6ee3351123d2f004b430f1a54f205f5 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Cluster.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Cluster.h @@ -5,66 +5,64 @@ #ifndef DCMATH_CLUSTER_H #define DCMATH_CLUSTER_H -#include "TrkDriftCircleMath/LocPos.h" -#include "TrkDriftCircleMath/ClusterId.h" -#include "GaudiKernel/MsgStream.h" #include <ostream> #include <vector> +#include "GaudiKernel/MsgStream.h" +#include "TrkDriftCircleMath/ClusterId.h" +#include "TrkDriftCircleMath/LocVec2D.h" + namespace TrkDriftCircleMath { - /** class representing a cluster meaurement */ - class Cluster - { - public: - /** minimal constructor: - @param pos local position of cluster - @param err error on cluster position */ - Cluster (const LocPos& pos, double err) - : m_pos (pos), m_err (err),m_id{},m_index{} {} - - /** full constructor: - @param pos local position of cluster - @param err error on cluster position - @param id cluster identifier - @param index index of cluster use to link it back to the original RIO_OnTrack */ - Cluster (const LocPos& pos, double err, ClusterId id, int index) - : m_pos (pos), m_err (err), m_id (id), m_index (index) {} - - ~Cluster() {} - - /** local position of the cluster */ - const LocPos& position() const { return m_pos; } - - /** cluster identifier */ - const ClusterId& id() const { return m_id; } - - /** direct access to local x coordinate of cluster */ - double x() const { return m_pos.x(); } - - /** direct access to y coordinate of cluster */ - double y() const { return m_pos.y(); } - - /** error on cluster position */ - double err() const { return m_err; } - - /** index of cluster in input vector, use to link back the cluster to the MuonClusterOnTrack */ - int index() const { return m_index; } - - private: - LocPos m_pos; - double m_err; - ClusterId m_id; - int m_index; - }; - - typedef std::vector<Cluster> CLVec; - typedef CLVec::iterator CLIt; - typedef CLVec::const_iterator CLCit; -} - -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::Cluster& dc ); - -MsgStream & operator << (MsgStream & os, const TrkDriftCircleMath::Cluster& dc); + /** class representing a cluster meaurement */ + class Cluster { + public: + /** minimal constructor: + @param pos local position of cluster + @param err error on cluster position */ + Cluster(const LocVec2D& pos, double err) : m_pos(pos), m_err(err) {} + + /** full constructor: + @param pos local position of cluster + @param err error on cluster position + @param id cluster identifier + @param index index of cluster use to link it back to the original RIO_OnTrack */ + Cluster(const LocVec2D& pos, double err, ClusterId id, int index) : m_pos(pos), m_err(err), m_id(id), m_index(index) {} + + ~Cluster() = default; + + /** local position of the cluster */ + const LocVec2D& position() const { return m_pos; } + + /** cluster identifier */ + const ClusterId& id() const { return m_id; } + + /** direct access to local x coordinate of cluster */ + double x() const { return m_pos.x(); } + + /** direct access to y coordinate of cluster */ + double y() const { return m_pos.y(); } + + /** error on cluster position */ + double err() const { return m_err; } + + /** index of cluster in input vector, use to link back the cluster to the MuonClusterOnTrack */ + int index() const { return m_index; } + + private: + LocVec2D m_pos{0., 0.}; + double m_err{0.}; + ClusterId m_id{}; + int m_index{0}; + }; + + typedef std::vector<Cluster> CLVec; + typedef CLVec::iterator CLIt; + typedef CLVec::const_iterator CLCit; +} // namespace TrkDriftCircleMath + +std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::Cluster& dc); + +MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::Cluster& dc); #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ClusterId.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ClusterId.h index d51a0e342a9d926385c55c3e71763c8bcf92e902..ef7b41de36e852320308bc1e8a18d763d579128e 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ClusterId.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ClusterId.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef DCMATH_CLUSTERID_H @@ -9,25 +9,29 @@ namespace TrkDriftCircleMath { - class ClusterId { - public: - ClusterId() : m_id(0) {} - ClusterId( int stName, int eta, int phi, int barrel, int measuresPhi ) { - m_id = 1000000*stName+ 10000*eta + 100*phi + 10*barrel + measuresPhi; - } - - int id() const { return m_id; } - int stName() const { return m_id/1000000; } - int eta() const { return (m_id%1000000)/10000; } - int phi() const { return (m_id%10000)/100; } - int isTgc() const { return (m_id%100)/10; } - int measuresPhi() const { return m_id%10; } - private: - int m_id; - }; - - std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::ClusterId& id ); - -} + class ClusterId { + public: + static constexpr int stationOffSet = 1000000; + static constexpr int etaOffSet = 10000; + static constexpr int phiOffSet = 100; + ClusterId() = default; + ClusterId(int stName, int eta, int phi, int barrel, int measuresPhi) { + m_id = stationOffSet * stName + etaOffSet * eta + phiOffSet * phi + 10 * barrel + measuresPhi; + } + + int id() const { return m_id; } + int stName() const { return m_id / stationOffSet; } + int eta() const { return (m_id % stationOffSet) / etaOffSet; } + int phi() const { return (m_id % etaOffSet) / phiOffSet; } + int isTgc() const { return (m_id % phiOffSet) / 10; } + int measuresPhi() const { return m_id % 10; } + + private: + int m_id{0}; + }; + + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::ClusterId& id); + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/CurvedSegmentFinder.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/CurvedSegmentFinder.h index a6cabdb1a545c0ae7df88ca580f0b63d1a6e650e..e0240a8cb8b05e12310b38512cfc114a950a36f6 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/CurvedSegmentFinder.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/CurvedSegmentFinder.h @@ -1,43 +1,40 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef DCMATH_CURVEDSEGMENTFINDER_H #define DCMATH_CURVEDSEGMENTFINDER_H #include <vector> -#include "TrkDriftCircleMath/Segment.h" + +#include "TrkDriftCircleMath/ChamberGeometry.h" #include "TrkDriftCircleMath/Cluster.h" +#include "TrkDriftCircleMath/IsSubsetSegment.h" #include "TrkDriftCircleMath/ResolvedCollection.h" +#include "TrkDriftCircleMath/Segment.h" #include "TrkDriftCircleMath/SortDcsByY.h" -#include "TrkDriftCircleMath/IsSubsetSegment.h" -#include "TrkDriftCircleMath/ChamberGeometry.h" //#include "TrkDriftCircleMath/MdtChamberGeometry.h" namespace TrkDriftCircleMath { - class CurvedSegmentFinder { - public: - CurvedSegmentFinder(int debugLevel) - : m_debugLevel(debugLevel),m_maxDeltaAlpha(0.1),m_maxDeltab(3) {} - - ~CurvedSegmentFinder() {} - - void setMaxCurvatureParameters(double maxDeltaAlpha, double maxDeltab) { - m_maxDeltaAlpha = maxDeltaAlpha; - m_maxDeltab = maxDeltab; - } - void curvedSegments(const ChamberGeometry& mdtGeo, SegVec& Segs); - + class CurvedSegmentFinder { + public: + CurvedSegmentFinder(int debugLevel) : m_debugLevel(debugLevel) {} - private: - int m_debugLevel; - double m_maxDeltaAlpha; - double m_maxDeltab; + ~CurvedSegmentFinder() = default; - };//end CurvedSegmentFinder class + void setMaxCurvatureParameters(double maxDeltaAlpha, double maxDeltab) { + m_maxDeltaAlpha = maxDeltaAlpha; + m_maxDeltab = maxDeltab; + } + void curvedSegments(const ChamberGeometry& mdtGeo, SegVec& Segs); + private: + int m_debugLevel{0}; + double m_maxDeltaAlpha{0.1}; + double m_maxDeltab{3.}; + }; // end CurvedSegmentFinder class -}//end namespace -#endif //DCMATH_CURVEDSEGMENTFINDER_H +} // namespace TrkDriftCircleMath +#endif // DCMATH_CURVEDSEGMENTFINDER_H diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCOnTrack.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCOnTrack.h index 67faa50d5a9a044ef70a6de90a52bc0b4fce5c31..e8bd6dd58b5ab9e49bcbf2f7b9fc50580291c919 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCOnTrack.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCOnTrack.h @@ -5,66 +5,64 @@ #ifndef DCMATH_DCONTRACK_H #define DCMATH_DCONTRACK_H -#include "TrkDriftCircleMath/DriftCircle.h" -#include "GaudiKernel/MsgStream.h" #include <ostream> -namespace TrkDriftCircleMath -{ +#include "GaudiKernel/MsgStream.h" +#include "TrkDriftCircleMath/DriftCircle.h" + +namespace TrkDriftCircleMath { + + /** class representing a drift circle meaurement on segment */ + class DCOnTrack : public DriftCircle { + public: + /** enum to identify different DC states */ + enum DCOnTrackState { + OnTrack, /** used in fit */ + Delta, /** delta electron */ + OutOfTime, /** too large drift time */ + CloseDC, /** inside road but too far to be on track */ + OutsideRoad /** outside road */ + }; + + /** minimal constructor + @param dc DriftCircle + @param res residual + @param err error of track prediction + */ + DCOnTrack(const DriftCircle& dc, double res = 0., double err = 1e9) : DriftCircle{dc}, m_residual{res}, m_errorTrack{err} {} + + /** set residual */ + void residual(double res) { m_residual = res; } - /** class representing a drift circle meaurement on segment */ - class DCOnTrack : public DriftCircle { + /** access residual */ + double residual() const { return m_residual; } - public: - /** enum to identify different DC states */ - enum DCOnTrackState { OnTrack, /** used in fit */ - Delta, /** delta electron */ - OutOfTime, /** too large drift time */ - CloseDC, /** inside road but too far to be on track */ - OutsideRoad /** outside road */ + /** set track error */ + void errorTrack(double error) { m_errorTrack = error; } + + /** access track error */ + double errorTrack() const { return m_errorTrack; } + + /** set DCOnTrack state */ + void state(DCOnTrackState st) { m_state = st; } + + /** access DCOnTrack state */ + DCOnTrackState state() const { return m_state; } + + private: + double m_residual{0.}; + double m_errorTrack{1.e9}; + DCOnTrackState m_state{OnTrack}; // Masks DriftCircle::m_state which is a DriftState }; - - /** minimal constructor - @param dc DriftCircle - @param res residual - @param err error of track prediction - */ - DCOnTrack (const DriftCircle& dc, double res = 0., double err = 1e9) - : DriftCircle (dc), m_residual (res), m_errorTrack (err), m_state (OnTrack) {} - - /** set residual */ - void residual (double res) { m_residual = res; } - - /** access residual */ - double residual() const { return m_residual; } - - /** set track error */ - void errorTrack (double error) { m_errorTrack = error; } - - /** access track error */ - double errorTrack() const { return m_errorTrack; } - - /** set DCOnTrack state */ - void state (DCOnTrackState st) { m_state = st; } - - /** access DCOnTrack state */ - DCOnTrackState state() const { return m_state; } - - private: - - double m_residual; - double m_errorTrack; - DCOnTrackState m_state; // Masks DriftCircle::m_state which is a DriftState - }; - - typedef std::vector<DCOnTrack> DCOnTrackVec; - typedef DCOnTrackVec::iterator DCOnTrackIt; - typedef DCOnTrackVec::const_iterator DCOnTrackCit; - - std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::DCOnTrack& dc ); - - MsgStream & operator<< (MsgStream & os, const TrkDriftCircleMath::DCOnTrack& dc); - -} + + typedef std::vector<DCOnTrack> DCOnTrackVec; + typedef DCOnTrackVec::iterator DCOnTrackIt; + typedef DCOnTrackVec::const_iterator DCOnTrackCit; + + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::DCOnTrack& dc); + + MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::DCOnTrack& dc); + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCSLFitter.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCSLFitter.h index 6b1bc0706a882e576e328e1ee287ffc2af10d55f..8cabce0d5b4ac2cf03328e0027c4218eaceb4d9c 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCSLFitter.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCSLFitter.h @@ -5,46 +5,45 @@ #ifndef DCMATH_DCSLFITTER_H #define DCMATH_DCSLFITTER_H -#include "TrkDriftCircleMath/Segment.h" +#include <vector> + #include "TrkDriftCircleMath/DCOnTrack.h" +#include "TrkDriftCircleMath/HitSelection.h" #include "TrkDriftCircleMath/Line.h" - -#include <vector> +#include "TrkDriftCircleMath/Segment.h" namespace TrkDriftCircleMath { - class DCSLFitter { - public: - typedef std::vector<int> HitSelection; - struct FitData { - double y; // local y position - double z; // local z position - double r; // drift radius - double w; // weight - double rw; // weighted radius - double ryw; // weighted y position - double rzw; // weighted z position + class DCSLFitter { + public: + struct FitData { + double y{0}; // local y position + double z{0}; // local z position + double r{0}; // drift radius + double w{0}; // weight + double rw{0}; // weighted radius + double ryw{0}; // weighted y position + double rzw{0}; // weighted z position + }; + + public: + DCSLFitter() = default; + + virtual ~DCSLFitter() = default; + virtual bool fit(Segment& result, const Line& line, const DCOnTrackVec& dcs, double t0Seed = -99999.) const; + virtual bool fit(Segment& result, const Line& line, const DCOnTrackVec& dcs, const HitSelection& selection, + double t0Seed = -99999.) const; + + void debug(bool debug) { m_debug = debug; } + + protected: + bool m_debug{false}; }; - public: - DCSLFitter(); - - virtual ~DCSLFitter() {} - virtual bool fit( Segment& result, const Line& line, const DCOnTrackVec& dcs, double t0Seed = -99999. ) const; - virtual bool fit( Segment& result, const Line& line, const DCOnTrackVec& dcs, const HitSelection& selection, double t0Seed = -99999. ) const; - - void debug(bool debug) { m_debug = debug; } - - protected: - bool m_debug; - }; - - inline - bool DCSLFitter::fit( Segment& result, const Line& line, const DCOnTrackVec& dcs, double ) const - { - HitSelection selection(dcs.size(),0); - return fit( result, line, dcs, selection ); - } -} + inline bool DCSLFitter::fit(Segment& result, const Line& line, const DCOnTrackVec& dcs, double) const { + HitSelection selection(dcs.size(), 0); + return fit(result, line, dcs, selection); + } +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCSLHitSelector.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCSLHitSelector.h index 1b77e706fdd83dcfe816281fc33749b3a7d574a1..925da0ec669149129a85b9aaa1fac300839405c7 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCSLHitSelector.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCSLHitSelector.h @@ -5,35 +5,27 @@ #ifndef DCMATH_DCSLHITSELECTOR_H #define DCMATH_DCSLHITSELECTOR_H -#include "TrkDriftCircleMath/DCSLFitter.h" #include "TrkDriftCircleMath/DCOnTrack.h" - +#include "TrkDriftCircleMath/DCSLFitter.h" namespace TrkDriftCircleMath { - class DCSLHitSelector { - public: - typedef DCSLFitter::HitSelection HitSelection; + class DCSLHitSelector { + public: + DCSLHitSelector() = default; - public: - DCSLHitSelector() {} + const HitSelection selectHitsOnTrack(const DCOnTrackVec& dcs) const; + }; - const HitSelection selectHitsOnTrack( const DCOnTrackVec& dcs ) const; - - }; - - inline const DCSLHitSelector::HitSelection DCSLHitSelector::selectHitsOnTrack( const DCOnTrackVec& dcs ) const - { - HitSelection selection; - selection.resize(dcs.size(),1); - for( unsigned int i=0;i<dcs.size();++i) { - if( dcs[i].state() == DCOnTrack::OnTrack ) selection[i] = 0; + inline const HitSelection DCSLHitSelector::selectHitsOnTrack(const DCOnTrackVec& dcs) const { + HitSelection selection; + selection.resize(dcs.size(), 1); + for (unsigned int i = 0; i < dcs.size(); ++i) { + if (dcs[i].state() == DCOnTrack::OnTrack) selection[i] = 0; + } + return selection; } - return selection; - } - - -} +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCStatistics.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCStatistics.h index 44146f22c34982a95d324ae618504781d69af8a9..9a22bcd3d11fb2637aa7eb214dc5cc73f62cb31d 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCStatistics.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DCStatistics.h @@ -8,19 +8,17 @@ #include <map> namespace MuonGM { - class MdtReadoutElement; + class MdtReadoutElement; } - namespace TrkDriftCircleMath { - - /** This class offers no functionality, but to define a standard device for the maker to transfer to the finder - objects which are neither road, hits or - geometry, i.e. preprocessed variables that it would be inefficient to regenerate anew. */ - class DCStatistics : public std::map <const MuonGM::MdtReadoutElement*, int> { - }; - typedef DCStatistics::iterator DCStatIt; - typedef DCStatistics::const_iterator DCStatCit; -} -#endif //__DC_STATISTICS_H__ + /** This class offers no functionality, but to define a standard device for the maker to transfer to the finder + objects which are neither road, hits or + geometry, i.e. preprocessed variables that it would be inefficient to regenerate anew. */ + class DCStatistics : public std::map<const MuonGM::MdtReadoutElement*, int> {}; + typedef DCStatistics::iterator DCStatIt; + typedef DCStatistics::const_iterator DCStatCit; +} // namespace TrkDriftCircleMath + +#endif //__DC_STATISTICS_H__ diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DeleteObject.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DeleteObject.h deleted file mode 100644 index e9e23df2ceba2974ff6f2d9ccf75f5cf2e1d98b8..0000000000000000000000000000000000000000 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DeleteObject.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef DCMATH_DELETEOBJECT_H -#define DCMATH_DELETEOBJECT_H - -/** -@class DeleteObject -An operator to delete the object pointed by a pointer to a template class. -*/ - -namespace TrkDriftCircleMath { - struct DeleteObject { - template<class T> - void operator()(const T* p){ - delete p; - } - }; -} -#endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DriftCircle.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DriftCircle.h index c3b743785ed1c090f448ed4dec09f8260131dfe9..917ff24f797a95d20e8bcbd9342b899d3af7871c 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DriftCircle.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/DriftCircle.h @@ -1,123 +1,124 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef DCMATH_DRIFTCIRCLE_H #define DCMATH_DRIFTCIRCLE_H -#include "TrkDriftCircleMath/LocPos.h" -#include "TrkDriftCircleMath/MdtId.h" -#include "GaudiKernel/MsgStream.h" #include <ostream> #include <vector> +#include "GaudiKernel/MsgStream.h" +#include "TrkDriftCircleMath/LocVec2D.h" +#include "TrkDriftCircleMath/MdtId.h" + namespace Muon { - class MdtDriftCircleOnTrack; + class MdtDriftCircleOnTrack; } -namespace TrkDriftCircleMath -{ - - /** This class represents a drift time measurement */ - class DriftCircle - { - - public: - /** state of the drift circle */ - enum DriftState { EarlyHit = -1 , /** drift time too small to be compatible with drift spectrum */ - InTime = 0, /** drift time compatible with drift spectrum */ - LateHit = 1, /** drift time too large to be compatible with drift spectrum */ - EmptyTube = 2, /** channel without drift measurement */ - NotCrossed = 3 /** channel not crossed */ +namespace TrkDriftCircleMath { + + /** This class represents a drift time measurement */ + class DriftCircle { + public: + /** state of the drift circle */ + enum DriftState { + EarlyHit = -1, /** drift time too small to be compatible with drift spectrum */ + InTime = 0, /** drift time compatible with drift spectrum */ + LateHit = 1, /** drift time too large to be compatible with drift spectrum */ + EmptyTube = 2, /** channel without drift measurement */ + NotCrossed = 3 /** channel not crossed */ + }; + + public: + /** minimal constructor + @param pos local position of the hit + @param r drift radius + @param dr error on drift radius + @param state state of the DC */ + DriftCircle(const LocVec2D& pos, double r, double dr, DriftState state = InTime) : + m_pos(pos), m_r(r), m_dr(dr), m_drPrecise(dr), m_state(state) {} + + /** full constructor + @param pos local position of the hit + @param r drift radius + @param dr error on drift radius + @param state state of the DC + @param identifier of hit + @param index of drift circle use to link it back to the original RIO_OnTrack */ + DriftCircle(const LocVec2D& pos, double r, double dr, DriftState state, MdtId id, int index, + const Muon::MdtDriftCircleOnTrack* rot = nullptr) : + m_pos(pos), m_r(r), m_dr(dr), m_drPrecise(dr), m_state(state), m_id(id), m_index(index), m_rot(rot) {} + + /** full constructor + @param pos local position of the hit + @param r drift radius + @param dr error on drift radius + @param drPrecise error on drift radius (precise) + @param state state of the DC + @param identifier of hit + @param index of drift circle use to link it back to the original RIO_OnTrack */ + DriftCircle(const LocVec2D& pos, double r, double dr, double drPrecise, DriftState state, MdtId id, int index, + const Muon::MdtDriftCircleOnTrack* rot = nullptr) : + m_pos(pos), m_r(r), m_dr(dr), m_drPrecise(drPrecise), m_state(state), m_id(id), m_index(index), m_rot(rot) {} + + /** destructor */ + virtual ~DriftCircle() = default; + + /** access to local position */ + const LocVec2D& position() const { return m_pos; } + + /** access to identifier */ + const MdtId& id() const { return m_id; } + + /** direct access to local x position */ + double x() const { return m_pos.x(); } + + /** direct access to local y position */ + double y() const { return m_pos.y(); } + + /** access to drift radius */ + double r() const { return m_r; } + + /** access to error drift radius */ + double dr() const { return m_dr; } + + /** access to precise error drift radius */ + double drPrecise() const { return m_drPrecise; } + + /** access to drift state */ + const DriftState& state() const { return m_state; } + + /** access to index */ + int index() const { return m_index; } + + /** access to index */ + const Muon::MdtDriftCircleOnTrack* rot() const { return m_rot; } + + /** set method to allow update from t0 refit */ + void updateRadius(double r, double dr) { + m_r = r; + m_dr = dr; + } + + protected: + LocVec2D m_pos{0., 0.}; + double m_r{0.}; + double m_dr{0.}; + double m_drPrecise{0.}; + DriftState m_state; // Masked by DCOnTrack::m_state which is a DCOnTrackState + MdtId m_id{}; + int m_index{-1}; + const Muon::MdtDriftCircleOnTrack* m_rot{nullptr}; }; - public: - /** minimal constructor - @param pos local position of the hit - @param r drift radius - @param dr error on drift radius - @param state state of the DC */ - DriftCircle (const LocPos& pos, double r, double dr, - DriftState state = InTime) - : m_pos (pos), m_r (r), m_dr (dr), m_drPrecise(dr), m_state (state),m_index(-1),m_rot(0) {} - - /** full constructor - @param pos local position of the hit - @param r drift radius - @param dr error on drift radius - @param state state of the DC - @param identifier of hit - @param index of drift circle use to link it back to the original RIO_OnTrack */ - DriftCircle (const LocPos& pos, double r, double dr, - DriftState state, MdtId id, int index, const Muon::MdtDriftCircleOnTrack* rot = 0) - : m_pos (pos), m_r (r), m_dr (dr), m_drPrecise(dr), m_state (state), m_id (id), m_index (index), m_rot(rot) {} - - /** full constructor - @param pos local position of the hit - @param r drift radius - @param dr error on drift radius - @param drPrecise error on drift radius (precise) - @param state state of the DC - @param identifier of hit - @param index of drift circle use to link it back to the original RIO_OnTrack */ - DriftCircle (const LocPos& pos, double r, double dr, double drPrecise, - DriftState state, MdtId id, int index, const Muon::MdtDriftCircleOnTrack* rot = 0) - : m_pos (pos), m_r (r), m_dr (dr), m_drPrecise(drPrecise), m_state (state), m_id (id), m_index (index), m_rot(rot) {} - - - /** destructor */ - virtual ~DriftCircle() {} - - /** access to local position */ - const LocPos& position() const { return m_pos; } - - /** access to identifier */ - const MdtId& id() const { return m_id; } - - /** direct access to local x position */ - double x() const { return m_pos.x(); } - - /** direct access to local y position */ - double y() const { return m_pos.y(); } - - /** access to drift radius */ - double r() const { return m_r; } - - /** access to error drift radius */ - double dr() const { return m_dr; } - - /** access to precise error drift radius */ - double drPrecise() const { return m_drPrecise; } - - /** access to drift state */ - const DriftState& state() const { return m_state; } - - /** access to index */ - int index() const { return m_index; } - - /** access to index */ - const Muon::MdtDriftCircleOnTrack* rot() const { return m_rot; } - - /** set method to allow update from t0 refit */ - void updateRadius( double r, double dr ) { m_r = r; m_dr = dr; } - - protected: - LocPos m_pos; - double m_r; - double m_dr; - double m_drPrecise; - DriftState m_state; // Masked by DCOnTrack::m_state which is a DCOnTrackState - MdtId m_id; - int m_index; - const Muon::MdtDriftCircleOnTrack* m_rot; - }; - - typedef std::vector<DriftCircle> DCVec; - typedef DCVec::iterator DCIt; - typedef DCVec::const_iterator DCCit; -} -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::DriftCircle& dc ); + typedef std::vector<DriftCircle> DCVec; + typedef DCVec::iterator DCIt; + typedef DCVec::const_iterator DCCit; +} // namespace TrkDriftCircleMath + +std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::DriftCircle& dc); -MsgStream & operator<< (MsgStream & os, const TrkDriftCircleMath::DriftCircle& dc); +MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::DriftCircle& dc); #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/HitSelection.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/HitSelection.h index 32ca2486d0a4495ae794b0e69270ebf949b2fea5..c5b7350326e135e5cca1253b95976b54790a8b40 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/HitSelection.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/HitSelection.h @@ -1,15 +1,12 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef __HIT_SELECTION__H__ #define __HIT_SELECTION__H__ -namespace TrkDriftCircleMath -{ - -typedef std::vector<int> HitSelection; - +namespace TrkDriftCircleMath { + using HitSelection = std::vector<bool>; } -#endif // __HIT_SELECTION__H__ +#endif // __HIT_SELECTION__H__ diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/IsSubsetSegment.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/IsSubsetSegment.h index 06cda97149ac04c61c6ce3fe607ae354721a5ec2..c389d9e28d1ccc7787a3ec9c55a3c225095ecbbe 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/IsSubsetSegment.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/IsSubsetSegment.h @@ -5,69 +5,58 @@ #ifndef DCMATH_ISSUBSETSEGMENT_H #define DCMATH_ISSUBSETSEGMENT_H -#include "TrkDriftCircleMath/Segment.h" +#include "FourMomUtils/xAODP4Helpers.h" #include "TrkDriftCircleMath/ResolvedCollection.h" +#include "TrkDriftCircleMath/Segment.h" #include "TrkDriftCircleMath/SharedHitsSegments.h" -/** Function object to check whether two Segments are sub/super sets - or different. +/** Function object to check whether two Segments are sub/super sets + or different. */ - namespace TrkDriftCircleMath { - template<class CDC> - struct IsSubsetSegment { - IsSubsetSegment() : m_phiCut(0.05), m_y0Cut(0.5) {} - IsSubsetSegment(double phiCut, double y0Cut) : m_phiCut(phiCut), m_y0Cut(y0Cut) {} - - //SubsetState - int operator()( const Segment& seg1, const Segment& seg2 ) const { - - // check angular distance between segments and distance from origine - // only segments that have similar angles and offsets are considered subsets - if( std::abs( seg1.line().phi() - seg2.line().phi() ) < m_phiCut && - std::abs( seg1.line().y0() - seg2.line().y0() ) < m_y0Cut ) { - - - SharedHitsSegments sharedHitsSegments(true); - sharedHitsSegments(seg1,seg2); - - unsigned int onlyInSeg1 = sharedHitsSegments.onlyInSeg1(); - unsigned int onlyInSeg2 = sharedHitsSegments.onlyInSeg2(); -/* std::cout << " seg1 " << seg1 << " ---- seg1 " << onlyInSeg1 << std::endl << std::endl; */ -/* std::cout << " seg2 " << seg2 << " ---- seg2 " << onlyInSeg2 << std::endl << std::endl; */ - // segment 1 contains no hits that are not in segment 2 - if( onlyInSeg1 == 0 ){ - //check is segment 1 is a single ml segment that should be kept for the curved segment finder - if(seg1.hitsMl1() == 0 || seg1.hitsMl2() == 0) { - if(seg2.hitsMl2() < 3 || seg2.hitsMl1() < 3) { - return ResolvedCollection<SegVec,IsSubsetSegment>::Different; - } - if(seg2.hitsOutOfTime() > 0) { - return ResolvedCollection<SegVec,IsSubsetSegment>::Different; - } - } - // segment 1 contains the same hits as segment 2 - if( onlyInSeg2 == 0 ){ - // chose segment with best chi2 - if( seg1.chi2() < seg2.chi2() ) return ResolvedCollection<SegVec,IsSubsetSegment>::SuperSet; - else return ResolvedCollection<SegVec,IsSubsetSegment>::SubSet; - } - return ResolvedCollection<SegVec,IsSubsetSegment>::SubSet; - }else{ - if( onlyInSeg2 == 0 ){ - return ResolvedCollection<SegVec,IsSubsetSegment>::SuperSet; - } - } - - } - return ResolvedCollection<SegVec,IsSubsetSegment>::Different; - } - - private: - double m_phiCut; - double m_y0Cut; + template <class CDC> struct IsSubsetSegment { + IsSubsetSegment() = default; + IsSubsetSegment(double phiCut, double y0Cut) : m_phiCut(phiCut), m_y0Cut(y0Cut) {} + + // SubsetState + int operator()(const Segment& seg1, const Segment& seg2) const { + // check angular distance between segments and distance from origine + // only segments that have similar angles and offsets are considered subsets + if (std::abs(xAOD::P4Helpers::deltaPhi(seg1.line().phi(), seg2.line().phi())) < m_phiCut && + std::abs(seg1.line().y0() - seg2.line().y0()) < m_y0Cut) { + SharedHitsSegments sharedHitsSegments(true); + sharedHitsSegments(seg1, seg2); + + unsigned int onlyInSeg1 = sharedHitsSegments.onlyInSeg1(); + unsigned int onlyInSeg2 = sharedHitsSegments.onlyInSeg2(); + // segment 1 contains no hits that are not in segment 2 + if (onlyInSeg1 == 0) { + // check is segment 1 is a single ml segment that should be kept for the curved segment finder + if (seg1.hitsMl1() == 0 || seg1.hitsMl2() == 0) { + if (seg2.hitsMl2() < 3 || seg2.hitsMl1() < 3) { return ResolvedCollection<SegVec, IsSubsetSegment>::Different; } + if (seg2.hitsOutOfTime() > 0) { return ResolvedCollection<SegVec, IsSubsetSegment>::Different; } + } + // segment 1 contains the same hits as segment 2 + if (onlyInSeg2 == 0) { + // chose segment with best chi2 + if (seg1.chi2() < seg2.chi2()) + return ResolvedCollection<SegVec, IsSubsetSegment>::SuperSet; + else + return ResolvedCollection<SegVec, IsSubsetSegment>::SubSet; + } + return ResolvedCollection<SegVec, IsSubsetSegment>::SubSet; + } else { + if (onlyInSeg2 == 0) { return ResolvedCollection<SegVec, IsSubsetSegment>::SuperSet; } + } + } + return ResolvedCollection<SegVec, IsSubsetSegment>::Different; + } + + private: + double m_phiCut{0.05}; + double m_y0Cut{0.5}; }; -} +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Line.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Line.h index 1a5bc356eeae601cfccf254c82749958500f6ca1..5c59c38815d8c185d1a0816c68ae30c87ba283c2 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Line.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Line.h @@ -1,91 +1,79 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef DCMATH_LINE_H #define DCMATH_LINE_H #include <cmath> -#include <ostream> #include <iostream> +#include <ostream> -#include "TrkDriftCircleMath/LocPos.h" -#include "TrkDriftCircleMath/LocDir.h" +#include "TrkDriftCircleMath/LocVec2D.h" #include "TrkDriftCircleMath/RotPhi.h" namespace TrkDriftCircleMath { - class Line{ - public: - Line( LocPos pos, LocDir dir ) - : m_phi( atan2(dir.y(),dir.x()) ), m_pos(pos) - { - RotPhi rot( m_phi ); - LocPos p = (rot*pos); - m_x0 = p.x(); - m_y0 = p.y(); - } - - Line( LocPos pos, double phi) : m_phi(phi),m_pos(pos) { - RotPhi rot( m_phi ); - LocPos p = (rot*pos); - m_x0 = p.x(); - m_y0 = p.y(); - } - - Line( double x0, double y0, double phi) : m_phi(phi), m_pos(RotPhi( -phi )*LocPos(x0,y0)), m_x0(x0),m_y0(y0) - { - } - - ~Line() {} - - /** set methods to reduce copying of data */ - void set( const LocPos& pos, const LocDir& dir ){ - m_phi = atan2(dir.y(),dir.x()); - m_pos.set(pos); - updateLocalParameters(); - } - - void set( const LocPos& pos, double phi ){ - m_phi = phi; - m_pos.set(pos); - updateLocalParameters(); - } - - void set( double x0, double y0, double phi ){ - m_phi = phi; - m_x0 = x0; - m_y0 = y0; - updateGlobalParameters(); - } - - void updateLocalParameters() { - RotPhi rot( m_phi ); - LocPos p = (rot*m_pos); - m_x0 = p.x(); - m_y0 = p.y(); - } - - void updateGlobalParameters() { - m_pos.set(RotPhi( -m_phi )*LocPos(m_x0,m_y0)); - } - - double phi() const { return m_phi; } - double x0() const { return m_x0; } - double y0() const { return m_y0; } - LocPos position() const { return m_pos; } - LocDir direction() const { return LocDir( cos( phi() ), sin( phi() ) ); } - - private: - double m_phi; - LocPos m_pos; - double m_x0; - double m_y0; - }; - - std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::Line& l ); - -} - + class Line { + public: + /** + @brief Constructors starting from the global parameters + */ + Line(const LocVec2D& pos, const LocVec2D& dir) : Line{pos, std::atan2(dir.y(), dir.x())} {} + + Line(const LocVec2D& pos, double phi) : m_phi{phi}, m_pos{pos} { updateLocalParameters(); } + + Line(LocVec2D&& pos, const LocVec2D& dir) : Line{pos, std::atan2(dir.y(), dir.x())} {} + + Line(LocVec2D&& pos, double phi) : m_phi{phi}, m_pos{pos} { updateLocalParameters(); } + + Line(double x0, double y0, double phi) : m_phi{phi}, m_loc_pos{x0, y0} { updateGlobalParameters(); } + + ~Line() = default; + + /** set methods to reduce copying of data */ + void set(const LocVec2D& pos, const LocVec2D& dir) { set(pos, std::atan2(dir.y(), dir.x())); } + + void set(const LocVec2D& pos, double phi) { + m_phi = phi; + m_pos = pos; + updateLocalParameters(); + } + + void set(double x0, double y0, double phi) { + m_phi = phi; + m_loc_pos.set(x0, y0); + updateGlobalParameters(); + } + + void updateLocalParameters() { + RotPhi rot(m_phi); + m_dir.set(rot.cosphi(), rot.sinphi()); + m_loc_pos = (rot * m_pos); + } + + void updateGlobalParameters() { + RotPhi rot{-m_phi}; + m_pos = rot * m_loc_pos; + /// Use symmetry cos(x) = cos(-x) & sin(x) = -sin(-x) + m_dir.set(rot.cosphi(), -rot.sinphi()); + } + + double phi() const { return m_phi; } + double x0() const { return m_loc_pos.x(); } + double y0() const { return m_loc_pos.y(); } + const LocVec2D& position() const { return m_pos; } + const LocVec2D& direction() const { return m_dir; } + + private: + double m_phi{0}; + LocVec2D m_pos{0., 0.}; + LocVec2D m_dir{0., 0.}; + LocVec2D m_loc_pos{0., 0.}; + }; + + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::Line& l); + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocDir.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocDir.h deleted file mode 100644 index 60d2907254b79be2192e4cda0814b4e37ad989e5..0000000000000000000000000000000000000000 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocDir.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef DCMATH_LOCDIR_H -#define DCMATH_LOCDIR_H - -#include "TrkDriftCircleMath/LocVec2D.h" - -namespace TrkDriftCircleMath { - - typedef LocVec2D LocDir; -} - -#endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocPos.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocPos.h deleted file mode 100644 index c5552adfba5f4841c771997aae481c58430de09e..0000000000000000000000000000000000000000 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocPos.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef DCMATH_LOCPOS_H -#define DCMATH_LOCPOS_H - -#include "TrkDriftCircleMath/LocVec2D.h" - -namespace TrkDriftCircleMath { - - typedef LocVec2D LocPos; -} - -#endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocVec2D.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocVec2D.h index e909aec9aed084829cf67475db0c95285b61720b..bf150cfbcc03f3aac4af2da1bb1594b6e2541834 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocVec2D.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/LocVec2D.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef DCMATH_LOCVEC2D_H @@ -7,63 +7,92 @@ /** local 2D vector */ -#include <ostream> #include <cmath> +#include <ostream> namespace TrkDriftCircleMath { - - class LocVec2D{ - public: - LocVec2D( double x, double y ) - : m_x(x),m_y(y) {} - - ~LocVec2D() {} - - double x() const { return m_x; } - double y() const { return m_y; } - - void set( const LocVec2D& vec ) { m_x = vec.x(); m_y = vec.y(); } - void setX( double x) { m_x = x; } - void setY( double y) { m_y = y; } - - LocVec2D operator+( const LocVec2D& lv ) const { - return LocVec2D( x()+lv.x(), y()+lv.y() ); } - - LocVec2D operator-( const LocVec2D& lv ) const { - return LocVec2D( x()-lv.x(), y()-lv.y() ); } - - LocVec2D& operator+=( const LocVec2D& lv ) { - m_x+=lv.x(); m_y+=lv.y(); - return *this; } - - LocVec2D& operator-=( const LocVec2D& lv ) { - m_x-=lv.x(); m_y-=lv.y(); - return *this; } - - double operator*( const LocVec2D& lv ) const { - return x()*lv.x() + y()*lv.y(); } - - LocVec2D operator*( double v ) const { - LocVec2D n(*this); return n*=v; } - - LocVec2D& operator*=( double v ) { - m_x*=v; m_y*=v; return *this; } - - LocVec2D& operator/=( double v ) { - m_x/=v; m_y/=v; return *this; } - - double cross( const LocVec2D& lv ) const { - return y()*lv.x() - x()*lv.y(); } - - double mag() const { return sqrt( (*this)*(*this) ); } - private: - double m_x; - double m_y; - }; - - - std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::LocVec2D& lv ); -} - + /// Implementation of 2 dimensional vector class + /// + class LocVec2D { + public: + /// Constructor parsing the coordinates + LocVec2D(double x, double y) : m_x{x}, m_y{y} {} + /// Default copy & move constructors + LocVec2D(const LocVec2D&) = default; + LocVec2D(LocVec2D&&) = default; + + ~LocVec2D() = default; + /// Returns the x coordinate of the vector + double x() const { return m_x; } + /// Returns the y coordinate of the vector + double y() const { return m_y; } + + /// Setter function using another vector + void set(const LocVec2D& vec) { + m_x = vec.x(); + m_y = vec.y(); + } + /// Set x & y simultaenously + void set(double x, double y) { + m_x = x; + m_y = y; + } + /// Set only x + void setX(double x) { m_x = x; } + /// Set only y + void setY(double y) { m_y = y; } + + /// Plus and minus operators + LocVec2D operator+(const LocVec2D& lv) const { return LocVec2D(x() + lv.x(), y() + lv.y()); } + + LocVec2D operator-(const LocVec2D& lv) const { return LocVec2D(x() - lv.x(), y() - lv.y()); } + + /// Default assignment operators (Equivalent to the setter x) + LocVec2D& operator=(const LocVec2D&) = default; + LocVec2D& operator=(LocVec2D&&) = default; + + /// Incrementation operator + LocVec2D& operator+=(const LocVec2D& lv) { + m_x += lv.x(); + m_y += lv.y(); + return *this; + } + + LocVec2D& operator-=(const LocVec2D& lv) { + m_x -= lv.x(); + m_y -= lv.y(); + return *this; + } + + double operator*(const LocVec2D& lv) const { return x() * lv.x() + y() * lv.y(); } + + LocVec2D operator*(double v) const { + LocVec2D n(*this); + return n *= v; + } + + LocVec2D& operator*=(double v) { + m_x *= v; + m_y *= v; + return *this; + } + + LocVec2D& operator/=(double v) { + m_x /= v; + m_y /= v; + return *this; + } + + double cross(const LocVec2D& lv) const { return y() * lv.x() - x() * lv.y(); } + + double mag() const { return std::hypot(m_x, m_y); } + + private: + double m_x{0}; + double m_y{0}; + }; + + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::LocVec2D& lv); +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MatchCrossedTubes.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MatchCrossedTubes.h index a4603a1d94b56f4580858705dc8fc4c413fe5e83..0be429ddde420b1166f386c4811e219b835e2233 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MatchCrossedTubes.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MatchCrossedTubes.h @@ -9,100 +9,83 @@ #include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/SortDcsByY.h" - namespace TrkDriftCircleMath { - /** counts the number of hits shared by the two segments */ - - typedef std::pair< DCOnTrackVec, DCVec > MatchResult; - - struct MatchCrossedTubes { - - - MatchCrossedTubes( bool onlyOnTrack=false ) : m_mode(onlyOnTrack) { - } - - const MatchResult operator()( const DCOnTrackVec& hits, const DCVec& crossedTubes ) const { - MatchResult result; - result.first.reserve(50); - result.second.reserve(50); - - DCOnTrackCit sit1 = hits.begin(); - DCOnTrackCit sit1_end = hits.end(); - DCCit sit2 = crossedTubes.begin(); - DCCit sit2_end = crossedTubes.end(); - - SortDcsByY compDC; - SameTube sameTube; - - result.first.clear(); - result.second.clear(); - - while( sit1 != sit1_end && sit2 != sit2_end ){ - -/* std::cout << " comp " << sit1->position() << " " << sit2->position() << std::endl; */ - - if( sit1->state() == DCOnTrack::CloseDC ){ - ++sit1; - continue; - } - - if( m_mode ){ - // only use hits on track - if( sit1->state() != DCOnTrack::OnTrack ){ - ++sit1; - continue; - } - } - - if( sameTube( *sit1, *sit2 ) ){ -/* std::cout << " same tube " << std::endl; */ - ++sit1;++sit2; - continue; - } - - // dc1 < dc2 - if( compDC( *sit1, *sit2 ) ){ -/* std::cout << " dc1 < dc2 " << std::endl; */ - result.first.push_back( *sit1 ); - ++sit1; - // dc1 >= dc2 - }else{ - - // dc2 < dc1 - if( compDC( *sit2, *sit1 ) ){ -/* std::cout << " dc1 > dc2 " << std::endl; */ - result.second.push_back( *sit2 ); - ++sit2; - // dc1 == dc2 - }else{ - //std::cout << " shouldn't come here, I think .... " << std::endl; - ++sit1;++sit2; - } - } - } - - // add remaining hits to counters - for( ; sit1!= sit1_end; ++sit1 ){ - if( sit1->state() == DCOnTrack::CloseDC ){ - continue; - } - if( m_mode && sit1->state() != DCOnTrack::OnTrack ) continue; -/* std::cout << " dc1 < dc2" << std::endl; */ - result.first.push_back( *sit1 ); - } - for( ; sit2!= sit2_end; ++sit2 ){ -/* std::cout << " dc1 > dc2" << std::endl; */ - result.second.push_back( *sit2 ); - } - - return result; - } - + /** counts the number of hits shared by the two segments */ + + typedef std::pair<DCOnTrackVec, DCVec> MatchResult; + + struct MatchCrossedTubes { + MatchCrossedTubes(bool onlyOnTrack = false) : m_mode(onlyOnTrack) {} + + const MatchResult operator()(const DCOnTrackVec& hits, const DCVec& crossedTubes) const { + MatchResult result; + result.first.reserve(50); + result.second.reserve(50); + + DCOnTrackCit sit1 = hits.begin(); + DCOnTrackCit sit1_end = hits.end(); + DCCit sit2 = crossedTubes.begin(); + DCCit sit2_end = crossedTubes.end(); + + SortDcsByY compDC; + SameTube sameTube; + + result.first.clear(); + result.second.clear(); + + while (sit1 != sit1_end && sit2 != sit2_end) { + if (sit1->state() == DCOnTrack::CloseDC) { + ++sit1; + continue; + } + + if (m_mode) { + // only use hits on track + if (sit1->state() != DCOnTrack::OnTrack) { + ++sit1; + continue; + } + } + + if (sameTube(*sit1, *sit2)) { + ++sit1; + ++sit2; + continue; + } + + // dc1 < dc2 + if (compDC(*sit1, *sit2)) { + result.first.push_back(*sit1); + ++sit1; + // dc1 >= dc2 + } else { + // dc2 < dc1 + if (compDC(*sit2, *sit1)) { + result.second.push_back(*sit2); + ++sit2; + // dc1 == dc2 + } else { + ++sit1; + ++sit2; + } + } + } + + // add remaining hits to counters + for (; sit1 != sit1_end; ++sit1) { + if (sit1->state() == DCOnTrack::CloseDC) { continue; } + if (m_mode && sit1->state() != DCOnTrack::OnTrack) continue; + result.first.push_back(*sit1); + } + for (; sit2 != sit2_end; ++sit2) { result.second.push_back(*sit2); } + + return result; + } private: - bool m_mode; - }; + bool m_mode; + }; -} +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MatchDCWithLine.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MatchDCWithLine.h index 7404d166f378be63681ace4d73ac65c4200b930e..e8568af2d4d90c33d9ed7c2e357251c72e436577 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MatchDCWithLine.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MatchDCWithLine.h @@ -5,135 +5,81 @@ #ifndef DCMATH_MATCHDCWITHLINE_H #define DCMATH_MATCHDCWITHLINE_H -#include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/DCOnTrack.h" +#include "TrkDriftCircleMath/DriftCircle.h" +#include "TrkDriftCircleMath/HitSelection.h" #include "TrkDriftCircleMath/Line.h" #include "TrkDriftCircleMath/ResidualWithLine.h" -#include "TrkDriftCircleMath/HitSelection.h" namespace TrkDriftCircleMath { - - class MatchDCWithLine { - public: - enum MatchStrategy { Road, Pull }; - public: - MatchDCWithLine():m_resWithLine{}, - m_tubeRadius{}, - m_closeByCut{}, - m_showerCut{}, - m_deltaCut{}, - m_strategy{}, - m_deltas{}, - m_outOfTimes{}, - m_onTracks{}, - m_passedTubes{}, - m_ml1{}, - m_ml2{}, - m_closeHits{}, - m_showerHits{}, - m_matchDifference{}, - m_dcOnTrackVec{} - {/**nop **/} - MatchDCWithLine( const Line& l, double deltaCut, MatchStrategy strategy, double tubeRadius ) - : m_resWithLine(l), m_deltaCut(deltaCut), m_strategy(strategy), - m_deltas{}, - m_outOfTimes{}, - m_onTracks{}, - m_passedTubes{}, - m_ml1{}, - m_ml2{}, - m_closeHits{}, - m_showerHits{}, - m_matchDifference{}, - m_dcOnTrackVec{} - { - m_dcOnTrackVec.reserve(50); - setTubeRadius(tubeRadius); - } + class MatchDCWithLine { + public: + enum MatchStrategy { Road, Pull }; + + public: + MatchDCWithLine() = default; + MatchDCWithLine(const Line& l, double deltaCut, MatchStrategy strategy, double tubeRadius) : + m_resWithLine{l}, m_deltaCut{deltaCut}, m_strategy{strategy} { + m_dcOnTrackVec.reserve(50); + setTubeRadius(tubeRadius); + } + + void set(const Line& l, double deltaCut, MatchStrategy strategy, double tubeRadius) { + m_resWithLine.set(l); + m_deltaCut = deltaCut; + m_strategy = strategy; + setTubeRadius(tubeRadius); + } - - void set( const Line& l, double deltaCut, MatchStrategy strategy, double tubeRadius ) { - m_resWithLine.set(l); - m_deltaCut = deltaCut; - m_strategy = strategy; - setTubeRadius(tubeRadius); - } - - void setTubeRadius( double radius ){ - m_tubeRadius = radius; - m_closeByCut = 2*radius; - m_showerCut = 4* radius; - } + void setTubeRadius(double radius) { + m_tubeRadius = radius; + m_closeByCut = 2 * radius; + m_showerCut = 4 * radius; + } - const DCOnTrackVec& match( const DCVec& dcs ); - const DCOnTrackVec& match( const DCOnTrackVec& dcs, const HitSelection* selection = 0, bool recoverMdtHits = true, bool usePreciseErrors = false ); - - unsigned int deltas() const { return m_deltas; } - unsigned int hitsOutOfTime() const { return m_outOfTimes; } - unsigned int hitsOnTrack() const { return m_onTracks; } - unsigned int closeHits() const { return m_closeHits; } - unsigned int showerHits() const { return m_showerHits; } - unsigned int passedTubes() const { return m_passedTubes; } - unsigned int hitsMl1() const { return m_ml1; } - unsigned int hitsMl2() const { return m_ml2; } + const DCOnTrackVec& match(const DCVec& dcs); + const DCOnTrackVec& match(const DCOnTrackVec& dcs, const HitSelection* selection = nullptr, bool recoverMdtHits = true, + bool usePreciseErrors = false); - /** returns the number of DCOnTrack that have a different status after the match, returns 0 if used with DCVec */ - unsigned int matchDifference() const { return m_matchDifference; } - private: - - void reset(); - void matchDC( DCOnTrack& dc, double& res, double& dline, bool forceOnTrack = false, bool forceOffTrack = false, bool usePreciseErrors = false ); - bool select( double residual, double error ) const; + unsigned int deltas() const { return m_deltas; } + unsigned int hitsOutOfTime() const { return m_outOfTimes; } + unsigned int hitsOnTrack() const { return m_onTracks; } + unsigned int closeHits() const { return m_closeHits; } + unsigned int showerHits() const { return m_showerHits; } + unsigned int passedTubes() const { return m_passedTubes; } + unsigned int hitsMl1() const { return m_ml1; } + unsigned int hitsMl2() const { return m_ml2; } - ResidualWithLine m_resWithLine; - double m_tubeRadius; - double m_closeByCut; - double m_showerCut; - double m_deltaCut; - MatchStrategy m_strategy; - unsigned int m_deltas; - unsigned int m_outOfTimes; - unsigned int m_onTracks; - unsigned int m_passedTubes; - unsigned int m_ml1; - unsigned int m_ml2; - unsigned int m_closeHits; - unsigned int m_showerHits; + /** returns the number of DCOnTrack that have a different status after the match, returns 0 if used with DCVec */ + unsigned int matchDifference() const { return m_matchDifference; } - unsigned int m_matchDifference; + private: + void reset(); + void matchDC(DCOnTrack& dc, double& res, double& dline, bool forceOnTrack = false, bool forceOffTrack = false, + bool usePreciseErrors = false); + bool select(double residual, double error) const; - // cache results to reduce CPU usage - mutable DCOnTrackVec m_dcOnTrackVec; - }; - - inline bool MatchDCWithLine::select( double residual, double error ) const - { - if( residual < 0. ) residual *= -1.; - switch( m_strategy ){ - case Road : - return residual < m_deltaCut; - case Pull: - return residual < m_deltaCut*error; - default: - return false; - } - } + ResidualWithLine m_resWithLine{}; + double m_tubeRadius{0.}; + double m_closeByCut{0.}; + double m_showerCut{0.}; + double m_deltaCut{0.}; + MatchStrategy m_strategy{}; + unsigned int m_deltas{0}; + unsigned int m_outOfTimes{0}; + unsigned int m_onTracks{0}; + unsigned int m_passedTubes{0}; + unsigned int m_ml1{0}; + unsigned int m_ml2{0}; + unsigned int m_closeHits{0}; + unsigned int m_showerHits{0}; + unsigned int m_matchDifference{0}; - inline void MatchDCWithLine::reset() { - //clear cache - m_dcOnTrackVec.clear(); + // cache results to reduce CPU usage + DCOnTrackVec m_dcOnTrackVec; + }; - m_outOfTimes = 0; - m_deltas = 0; - m_onTracks = 0; - m_passedTubes = 0; - m_ml1 = 0; - m_ml2 = 0; - m_closeHits = 0; - m_showerHits = 0; - m_matchDifference = 0; - } -} +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtChamberGeometry.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtChamberGeometry.h index 6fc9025ca01720ed40dbfd544e0308569a8d6e2c..53519344a5928eee30f3e7cfd288de60b04af342 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtChamberGeometry.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtChamberGeometry.h @@ -5,126 +5,91 @@ #ifndef DCMATH_MDTCHAMBERGEOMETRY_H #define DCMATH_MDTCHAMBERGEOMETRY_H +#include <cassert> +#include <vector> + +#include "TrkDriftCircleMath/ChamberGeometry.h" #include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/Line.h" #include "TrkDriftCircleMath/MdtStationId.h" -#include "TrkDriftCircleMath/ChamberGeometry.h" #include "TrkDriftCircleMath/ResidualWithLine.h" -#include <cassert> -#include <vector> namespace TrkDriftCircleMath { - class MdtChamberGeometry : public ChamberGeometry { - public: - - MdtChamberGeometry(); - - MdtChamberGeometry( MdtStationId id, unsigned int nml, unsigned int nlay, - unsigned int ntubesml0, unsigned int ntubesml1, - const LocPos& tube0ml0, const LocPos& tube0ml1, - double tubeDist, double tubeStage, double layDist, double stationTheta ); - - virtual ~MdtChamberGeometry()=default; - - void init(); - void setGeometry(unsigned int nml, unsigned int nlay, - unsigned int ntubesml0, unsigned int ntubesml1, - const LocPos& tube0ml0, const LocPos& tube0ml1, - double tubeDist, double tubeStage, double layDist, double stationTheta ); - - unsigned int nml() const { return m_nml; } - unsigned int nlay() const { return m_nlay; } - unsigned int ntubesml0() const { return m_ntubesml[0]; } - unsigned int ntubesml1() const { return m_ntubesml[1]; } - - const MdtStationId& stationId() const { return m_id; } - - const LocPos& firstTubeMl0() const { return m_firstTube[0]; } - const LocPos& firstTubeMl1() const { return m_firstTube[1]; } - - double tubeDist() const { return m_tubeDist; } - double tubeStage() const { return m_tubeStage; } - double layerDist() const { return m_layDist; } - - double stationTheta() const { return m_stationTheta; } - - double tubeRadius() const { return m_tubeRad; } - - const std::vector<LocPos>& allTubes() const; - - const LocPos& tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const; - - const DCVec& tubesPassedByLine( const Line& line, int ml ) const; - const DCVec& tubesPassedByLine( const Line& line ) const { return tubesPassedByLine( line, -1 ); } - - /** methods taking reference to output vector to reduce memory usage */ - void tubesPassedByLine( const Line& line, int ml, DCVec& crossedTubes ) const; - void tubesPassedByLine( const Line& line, DCVec& crossedTubes ) const { return tubesPassedByLine( line, -1, crossedTubes ); } - - /** set that this is the second multi layer instead of the first, - used in case the first ML is dead */ - void isSecondMultiLayer( bool isSecond ) { m_isSecondMultiLayer = isSecond; } - - bool validGeometry() const { return m_validGeometry; } - - void print() const; - - bool validId( unsigned int ml, unsigned int lay,unsigned int tube) const; - private: - double xPosTube(unsigned int ml, unsigned int lay, unsigned int tube) const; - double yPosTube(unsigned int ml,unsigned int lay) const; - - MdtStationId m_id; - unsigned int m_nml; - unsigned int m_nlay; - std::vector<unsigned int> m_ntubesml; - double m_tubeDist; - double m_tubeRad; - double m_tubeStage; - double m_layDist; - double m_stationTheta; - - mutable std::vector<int> m_wasInit; - mutable std::vector<LocPos> m_firstTube; - mutable std::vector<LocPos> m_allTubes; - mutable DCVec m_crossedTubes; - mutable LocPos m_cachedPos; - bool m_validGeometry; - bool m_isSecondMultiLayer; - - mutable ResidualWithLine m_resLine; - - }; - - inline const LocPos& MdtChamberGeometry::tubePosition(unsigned int ml, - unsigned int lay, - unsigned int tube) const { - assert( validId(ml,lay,tube) ); - m_cachedPos.setX(xPosTube(ml,lay,tube)); - m_cachedPos.setY(yPosTube(ml,lay)); - return m_cachedPos; - } - - - inline double MdtChamberGeometry::xPosTube(unsigned int ml, unsigned int lay, unsigned int tube) const - { - double xpos = tube*m_tubeDist + m_firstTube[ml].x(); - - if( lay%2 == 1 ){ - if( m_nlay == 4 && ml == 1 ) xpos -= m_tubeStage; - else xpos += m_tubeStage; - } - - return xpos; - } - - inline double MdtChamberGeometry::yPosTube(unsigned int ml, unsigned int lay) const - { - return lay*m_layDist + m_firstTube[ml].y(); - } - -} + class MdtChamberGeometry : public ChamberGeometry { + public: + MdtChamberGeometry(); + + MdtChamberGeometry(MdtStationId id, unsigned int nml, unsigned int nlay, unsigned int ntubesml0, unsigned int ntubesml1, + const LocVec2D& tube0ml0, const LocVec2D& tube0ml1, double tubeDist, double tubeStage, double layDist, + double stationTheta); + + virtual ~MdtChamberGeometry() = default; + + void init(); + void setGeometry(unsigned int nml, unsigned int nlay, unsigned int ntubesml0, unsigned int ntubesml1, const LocVec2D& tube0ml0, + const LocVec2D& tube0ml1, double tubeDist, double tubeStage, double layDist, double stationTheta); + + unsigned int nml() const { return m_nml; } + unsigned int nlay() const override { return m_nlay; } + unsigned int ntubesml0() const { return m_ntubesml[0]; } + unsigned int ntubesml1() const { return m_ntubesml[1]; } + + const MdtStationId& stationId() const override { return m_id; } + + const LocVec2D& firstTubeMl0() const { return m_firstTube[0]; } + const LocVec2D& firstTubeMl1() const { return m_firstTube[1]; } + + double tubeDist() const { return m_tubeDist; } + double tubeStage() const { return m_tubeStage; } + double layerDist() const { return m_layDist; } + + double stationTheta() const override { return m_stationTheta; } + + double tubeRadius() const override { return m_tubeRad; } + + const std::vector<LocVec2D>& allTubes() const override; + + LocVec2D tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const override; + + DCVec tubesPassedByLine(const Line& line, int ml) const; + DCVec tubesPassedByLine(const Line& line) const override { return tubesPassedByLine(line, -1); } + + /** methods taking reference to output vector to reduce memory usage */ + void tubesPassedByLine(const Line& line, int ml, DCVec& crossedTubes) const; + void tubesPassedByLine(const Line& line, DCVec& crossedTubes) const { return tubesPassedByLine(line, -1, crossedTubes); } + + /** set that this is the second multi layer instead of the first, + used in case the first ML is dead */ + void isSecondMultiLayer(bool isSecond) { m_isSecondMultiLayer = isSecond; } + + bool validGeometry() const override { return m_validGeometry; } + + void print() const override; + + bool validId(unsigned int ml, unsigned int lay, unsigned int tube) const; + + private: + double xPosTube(unsigned int ml, unsigned int lay, unsigned int tube) const; + double yPosTube(unsigned int ml, unsigned int lay) const; + + MdtStationId m_id{}; + unsigned int m_nml{0}; + unsigned int m_nlay{0}; + std::vector<unsigned int> m_ntubesml{}; + double m_tubeDist{0}; + double m_tubeRad{0}; + double m_tubeStage{0}; + double m_layDist{0}; + double m_stationTheta{0}; + + std::vector<bool> m_wasInit{}; + std::vector<LocVec2D> m_firstTube{}; + std::vector<LocVec2D> m_allTubes{}; + bool m_validGeometry{false}; + bool m_isSecondMultiLayer{false}; + }; +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtId.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtId.h index 8f39f9550f2eaef40ae5d3db6dbb6cabf1200f77..dbde2afd10c041700d23f0f61ab1bd823fb87624 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtId.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtId.h @@ -1,45 +1,48 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef DCMATH_MDTID_H #define DCMATH_MDTID_H -#include <ostream> +#include <MuonIdHelpers/MdtIdHelper.h> -namespace { - // the tube number of a tube in a tubeLayer in encoded in the GeoSerialIdentifier (modulo maxNTubesPerLayer) - static constexpr unsigned int const maxNTubesPerLayer = 120; -} +#include <ostream> namespace TrkDriftCircleMath { - class MdtId { - public: - MdtId() : m_id(0) {} - MdtId( int isBarrel, int ml, int lay, int tube ) { - m_id = 100000*isBarrel + 10000*ml+maxNTubesPerLayer*lay+tube; - } - int isBarrel() const { return m_id/100000; } - int ml() const { return (m_id%100000)/10000; } - int lay() const { return (m_id%10000)/maxNTubesPerLayer; } - int tube() const { return (m_id%10000)%maxNTubesPerLayer; } - int value() const { return m_id; } - - bool operator==(const MdtId &other) const { - return m_id == other.m_id; - } - bool operator!=(const MdtId &other) const { - return !(*this==other); - } - - private: - int m_id; - }; - -//DR (clang32) operator<< to be defined inside the namespace -std::ostream& operator<<( std::ostream& os, const MdtId& id ); - -} + class MdtId { + public: + /// the tube number of a tube in a tubeLayer in encoded in the GeoSerialIdentifier (modulo maxNTubesPerLayer) + static constexpr int maxNTubesPerLayer = MdtIdHelper::maxNTubesPerLayer; + static constexpr int multiLayerShift = 10000; + static constexpr int stationShift = 100000; + + MdtId() = default; + /// Parameters: + /// - isBarrel: Boolean flag whether the chamber is built into the barrel or endcap + /// - ml: Number of the multi layer in the chamber + /// -lay: Layer number inside the multilayer + /// -tube: Tube number in the layer + MdtId(bool isBarrel, int ml, int lay, int tube) { + m_id = stationShift * isBarrel + multiLayerShift * ml + maxNTubesPerLayer * lay + tube; + } + bool isBarrel() const { return m_id / stationShift; } + int ml() const { return (m_id % stationShift) / multiLayerShift; } + int lay() const { return (m_id % multiLayerShift) / maxNTubesPerLayer; } + int tube() const { return (m_id % multiLayerShift) % maxNTubesPerLayer; } + int value() const { return m_id; } + + bool operator==(const MdtId& other) const { return m_id == other.m_id; } + bool operator!=(const MdtId& other) const { return !(*this == other); } + + private: + int m_id{0}; + }; + + // DR (clang32) operator<< to be defined inside the namespace + std::ostream& operator<<(std::ostream& os, const MdtId& id); + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtMultiChamberGeometry.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtMultiChamberGeometry.h index 6bfacff34784becd75d296b43a1bf34968346a34..b26b303ae8d533ad5382730240c06b64ad7bd307 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtMultiChamberGeometry.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtMultiChamberGeometry.h @@ -5,70 +5,64 @@ #ifndef DCMATH_MDTMULTICHAMBERGEOMETRY_H #define DCMATH_MDTMULTICHAMBERGEOMETRY_H -#include "TrkDriftCircleMath/DriftCircle.h" -#include "TrkDriftCircleMath/ChamberGeometry.h" -#include "TrkDriftCircleMath/MdtChamberGeometry.h" -#include "TrkDriftCircleMath/Line.h" - #include <ostream> #include <vector> +#include "TrkDriftCircleMath/ChamberGeometry.h" +#include "TrkDriftCircleMath/DriftCircle.h" +#include "TrkDriftCircleMath/Line.h" +#include "TrkDriftCircleMath/MdtChamberGeometry.h" + namespace TrkDriftCircleMath { - class MdtMultiChamberGeometry : public ChamberGeometry { - public: - - MdtMultiChamberGeometry(); + class MdtMultiChamberGeometry : public ChamberGeometry { + public: + MdtMultiChamberGeometry(); + + MdtMultiChamberGeometry(const std::vector<MdtChamberGeometry>& chambers); + + virtual ~MdtMultiChamberGeometry(); - MdtMultiChamberGeometry( const std::vector<MdtChamberGeometry>& chambers ); - - virtual ~MdtMultiChamberGeometry(); + const std::vector<LocVec2D>& allTubes() const override; - virtual const std::vector<LocPos>& allTubes() const; + DCVec tubesPassedByLine(const Line& line, int ml) const; + DCVec tubesPassedByLine(const Line& line) const override { return tubesPassedByLine(line, -1); } - virtual const DCVec& tubesPassedByLine( const Line& line, int ml ) const; - virtual const DCVec& tubesPassedByLine( const Line& line ) const { return tubesPassedByLine( line, -1 ); } + unsigned int nlay() const override; - virtual unsigned int nlay() const; - - virtual const LocPos& tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const; + LocVec2D tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const override; - virtual bool validGeometry() const { return m_validGeometry; } + bool validGeometry() const override { return m_validGeometry; } - virtual void print() const; + virtual void print() const override; - virtual double tubeRadius() const; + virtual double tubeRadius() const override; - double stationTheta() const; - - const MdtStationId& stationId() const { return m_chambers.at(0).stationId(); } - - unsigned int nChambers() const { return m_chambers.size(); } + double stationTheta() const override; - private: + const MdtStationId& stationId() const override { return m_chambers[0].stationId(); } - std::vector<MdtChamberGeometry> m_chambers; - mutable std::vector<LocPos> m_allTubes; - mutable DCVec m_crossedTubes; - bool m_validGeometry; - }; + unsigned int nChambers() const { return m_chambers.size(); } - inline double MdtMultiChamberGeometry::stationTheta() const { - double theta = 0.; - if( m_chambers.empty() || !m_validGeometry ) return 0.; + private: + std::vector<MdtChamberGeometry> m_chambers; + std::vector<LocVec2D> m_allTubes; + bool m_validGeometry{false}; + }; - std::vector<MdtChamberGeometry>::const_iterator chit = m_chambers.begin(); - std::vector<MdtChamberGeometry>::const_iterator chit_end = m_chambers.end(); - for( ;chit!=chit_end;++chit ) theta += chit->stationTheta(); - return theta/m_chambers.size(); - } + inline double MdtMultiChamberGeometry::stationTheta() const { + double theta = 0.; + if (m_chambers.empty() || !m_validGeometry) return 0.; - inline double MdtMultiChamberGeometry::tubeRadius() const { - if( m_chambers.empty() ) return 14.6; - return m_chambers.front().tubeRadius(); - } + for (const MdtChamberGeometry& chit : m_chambers) theta += chit.stationTheta(); + return theta / m_chambers.size(); + } -} + inline double MdtMultiChamberGeometry::tubeRadius() const { + if (m_chambers.empty()) return 14.6; + return m_chambers.front().tubeRadius(); + } +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtStationId.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtStationId.h index 4850c7fc3b8bda03212e403508011710eaaf53cd..08b218c75d1e6820053b634fa155891814ba1c9c 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtStationId.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/MdtStationId.h @@ -5,27 +5,28 @@ #ifndef DCMATH_MDTSTATIONID_H #define DCMATH_MDTSTATIONID_H -#include <ostream> #include <iostream> +#include <ostream> namespace TrkDriftCircleMath { - class MdtStationId { - public: - MdtStationId() : m_id(0) {} - MdtStationId( int isSmallMdt, int isBarrel, int stName, int eta, int phi) { - eta += 50; - m_id = 10000000*isSmallMdt + 1000000*isBarrel + 10000*stName + 100*eta + phi; - } - int isSmallMdt() const { return m_id/10000000; } - int isBarrel() const { return (m_id%10000000)/1000000; } - int stName() const { return (m_id%1000000)/10000; } - int eta() const { return (m_id%10000)/100-50; } - int phi() const { return m_id%100; } - private: - int m_id; - }; - std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::MdtStationId& id ); -} + class MdtStationId { + public: + MdtStationId() = default; + MdtStationId(int isSmallMdt, int isBarrel, int stName, int eta, int phi) { + eta += 50; + m_id = 10000000 * isSmallMdt + 1000000 * isBarrel + 10000 * stName + 100 * eta + phi; + } + int isSmallMdt() const { return m_id / 10000000; } + int isBarrel() const { return (m_id % 10000000) / 1000000; } + int stName() const { return (m_id % 1000000) / 10000; } + int eta() const { return (m_id % 10000) / 100 - 50; } + int phi() const { return m_id % 100; } + + private: + int m_id{0}; + }; + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::MdtStationId& id); +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResidualWithLine.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResidualWithLine.h index 09a9b226ddd26f7f13eb59947ecdf6994f12d020..dfc4e0e2b4f4f94f5a842140805f2eca2db5a340 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResidualWithLine.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResidualWithLine.h @@ -5,47 +5,38 @@ #ifndef DCMATH_RESIDUALWITHLINE_H #define DCMATH_RESIDUALWITHLINE_H -#include "TrkDriftCircleMath/Line.h" -#include "TrkDriftCircleMath/LocPos.h" -#include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/Cluster.h" +#include "TrkDriftCircleMath/DriftCircle.h" +#include "TrkDriftCircleMath/Line.h" +#include "TrkDriftCircleMath/LocVec2D.h" #include "TrkDriftCircleMath/TransformToLine.h" namespace TrkDriftCircleMath { - class ResidualWithLine{ - public: - ResidualWithLine() {} - ResidualWithLine(const Line& line) : m_transToLine(line) {} - - - double residual( const LocPos& pos ) const - { - return m_transToLine.toLineY( pos ); - } - - double residual( const DriftCircle& dc ) const - { - return std::abs( residual( dc.position()) ) - std::abs( dc.r() ); - } - - double residual( const Cluster& cl ) const - { - // the residual of a cluster is calculated from the point of closest approach and - // the angle of the line with the plane - double driftRes = residual( cl.position() ); - double sinPhi = m_transToLine.toLineRotation().sinphi(); - if( sinPhi < 1e-13 ) sinPhi = 1e-13; - return driftRes/sinPhi; - } - - void set( const Line& line ){ - m_transToLine.set(line); - } - protected: - TransformToLine m_transToLine; - }; - -} + class ResidualWithLine { + public: + ResidualWithLine() = default; + ResidualWithLine(const Line& line) : m_transToLine(line) {} + + double residual(const LocVec2D& pos) const { return m_transToLine.toLineY(pos); } + + double residual(const DriftCircle& dc) const { return std::abs(residual(dc.position())) - std::abs(dc.r()); } + + double residual(const Cluster& cl) const { + // the residual of a cluster is calculated from the point of closest approach and + // the angle of the line with the plane + double driftRes = residual(cl.position()); + double sinPhi = m_transToLine.toLineRotation().sinphi(); + if (sinPhi < 1e-13) sinPhi = 1e-13; + return driftRes / sinPhi; + } + + void set(const Line& line) { m_transToLine.set(line); } + + protected: + TransformToLine m_transToLine; + }; + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResidualWithSegment.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResidualWithSegment.h index 7e422879e233f4e6b7351785ca5ccbfbace82dc3..0325c2a7f0dde998e03b8217cbc896bd2a13abba 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResidualWithSegment.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResidualWithSegment.h @@ -5,47 +5,50 @@ #ifndef DCMATH_RESIDUALWITHSEGMENT_H #define DCMATH_RESIDUALWITHSEGMENT_H -#include "TrkDriftCircleMath/Segment.h" -#include "TrkDriftCircleMath/LocPos.h" -#include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/Cluster.h" +#include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/Line.h" +#include "TrkDriftCircleMath/LocVec2D.h" #include "TrkDriftCircleMath/ResidualWithLine.h" +#include "TrkDriftCircleMath/Segment.h" namespace TrkDriftCircleMath { - - /** class to calculate residual of a hit with a segment and calculate the local - track errors - */ - class ResidualWithSegment : public ResidualWithLine { - public: - ResidualWithSegment(const Segment& segment) : ResidualWithLine(segment.line()), m_line(segment.line()), - m_errorY02(segment.dy0()*segment.dy0()), m_errorPhi2(segment.dtheta()*segment.dtheta()) {} - - /** calculate the track error at the position of a drift circle */ - double trackError2( const DriftCircle& dc ) const { - LocPos posInLineFrame = m_transToLine.toLine(dc.position()); - return m_errorY02 + posInLineFrame.x()*m_errorPhi2; - } - - /** calculate the track error at the position of a cluster */ - double trackError2( const Cluster& cl ) const { - double yDistToSegment = cl.position().y() - m_line.position().y(); - - double sinPhi = m_transToLine.toLineRotation().sinphi(); - if( sinPhi < 1e-13 ) sinPhi = 1e-13; - double invSinPhi2 = sinPhi*sinPhi; - invSinPhi2 = 1./invSinPhi2; - - return m_errorY02*invSinPhi2 + yDistToSegment*yDistToSegment*invSinPhi2*m_errorPhi2; - } - - private: - Line m_line; - double m_errorY02; - double m_errorPhi2; - }; - -} + + /** class to calculate residual of a hit with a segment and calculate the local + track errors + */ + class ResidualWithSegment : public ResidualWithLine { + public: + ResidualWithSegment(const Segment& segment) : + ResidualWithLine(segment.line()), + m_line(segment.line()), + m_errorY02(segment.dy0() * segment.dy0()), + m_errorPhi2(segment.dtheta() * segment.dtheta()) {} + + /** calculate the track error at the position of a drift circle */ + double trackError2(const DriftCircle& dc) const { + LocVec2D posInLineFrame = m_transToLine.toLine(dc.position()); + return m_errorY02 + posInLineFrame.x() * m_errorPhi2; + } + + /** calculate the track error at the position of a cluster */ + double trackError2(const Cluster& cl) const { + double yDistToSegment = cl.position().y() - m_line.position().y(); + + double sinPhi = m_transToLine.toLineRotation().sinphi(); + if (sinPhi < 1e-13) sinPhi = 1e-13; + double invSinPhi2 = sinPhi * sinPhi; + invSinPhi2 = 1. / invSinPhi2; + + return m_errorY02 * invSinPhi2 + yDistToSegment * yDistToSegment * invSinPhi2 * m_errorPhi2; + } + + private: + Line m_line; + double m_errorY02; + double m_errorPhi2; + }; + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResolvedCollection.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResolvedCollection.h index 34f34aad98620f95cc18ec2fbd8f6c264a6ca4f7..5737d2208d9dd420e2c908f8330777db7286dbc8 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResolvedCollection.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/ResolvedCollection.h @@ -5,93 +5,77 @@ #ifndef DCMATH_RESOLVEDCOLLECTION_H #define DCMATH_RESOLVEDCOLLECTION_H -#include <vector> #include <iostream> +#include <vector> namespace TrkDriftCircleMath { - template<class Data, class IsSubset> - class ResolvedCollection { - public: - typedef std::vector<Data> DataVec; - enum SubsetState { SubSet=0, SuperSet=1, Different=2 }; - public: - - const DataVec& data() const { return m_data; } - DataVec& data() { return m_data; } - - void clear() { m_data.clear(); } - - void set( DataVec& data ) { m_data.swap(data); } - - bool insert( const Data& data ){ - -/* std::cout << " ******** insert " << data << " current size " << m_data.size() << std::endl; */ - // add data if collection is empty - if( m_data.empty() ) { - m_data.push_back(data); - return true; - } - - IsSubset isSubset; - - bool inserted(false); - - - // loop over data vector compare new element with existing ones - for( unsigned int i=0;i<m_data.size();++i ){ - - // get subset state - int state = isSubset( data, m_data[i] ); - -/* std::cout << " compare with " << i << " -> " << state << std::endl; */ - - // do nothing in case the new element is a subset of an already inserted element - if( state == SubSet ){ -/* std::cout << " SubSet: exit with size " << m_data.size() << std::endl; */ - return false; - - // if the new element is a super set of an existing on replace it - // check all existing elements and keep track of number of replaces - }else if( state == SuperSet ){ - -/* std::cout << " SuperSet " << std::endl; */ - // if not inserted yet replace the subset - if( !inserted ){ - inserted = true; - m_data[i] = data; -/* std::cout << " replaced " << i << std::endl; */ - }else{ - // replace current element with last and restart loop - if( i == m_data.size()-1 ) { - m_data.pop_back(); -/* std::cout << " removed back " << std::endl; */ - }else{ -/* std::cout << " moved back to " << i << std::endl; */ - m_data[i] = m_data.back(); - m_data.pop_back(); - --i; // here we go back to also check the copied element - } - } - } - - } - - // check if new element was SuperSet of existing one - if( !inserted ) { - // insert new element - m_data.push_back(data); - } -/* std::cout << " new size " << m_data.size() << std::endl; */ - return true; - } - - - private: - std::vector<Data> m_data; - }; - - -} + template <class Data, class IsSubset> class ResolvedCollection { + public: + typedef std::vector<Data> DataVec; + enum SubsetState { SubSet = 0, SuperSet = 1, Different = 2 }; + + public: + const DataVec& data() const { return m_data; } + DataVec& data() { return m_data; } + + void clear() { m_data.clear(); } + + void set(DataVec& data) { m_data.swap(data); } + + bool insert(const Data& data) { + // add data if collection is empty + if (m_data.empty()) { + m_data.push_back(data); + return true; + } + + IsSubset isSubset; + + bool inserted(false); + + // loop over data vector compare new element with existing ones + for (unsigned int i = 0; i < m_data.size(); ++i) { + // get subset state + int state = isSubset(data, m_data[i]); + + + // do nothing in case the new element is a subset of an already inserted element + if (state == SubSet) { + return false; + + // if the new element is a super set of an existing on replace it + // check all existing elements and keep track of number of replaces + } else if (state == SuperSet) { + // if not inserted yet replace the subset + if (!inserted) { + inserted = true; + m_data[i] = data; + } else { + // replace current element with last and restart loop + if (i == m_data.size() - 1) { + m_data.pop_back(); + } else { + m_data[i] = m_data.back(); + m_data.pop_back(); + --i; // here we go back to also check the copied element + } + } + } + } + + // check if new element was SuperSet of existing one + if (!inserted) { + // insert new element + m_data.push_back(data); + } + return true; + } + + private: + std::vector<Data> m_data{}; + }; + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Road.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Road.h index 0036fa99075de9fc6cf0b3088031042a5e50b139..fb698604bd1aaa1e3e5ededf28db9794b23b85c0 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Road.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Road.h @@ -5,47 +5,45 @@ #ifndef __TRK_DRIFT_CICLE_MATH__ROAD_H__ #define __TRK_DRIFT_CICLE_MATH__ROAD_H__ -#include "TrkDriftCircleMath/LocPos.h" - -namespace TrkDriftCircleMath -{ - - /** - @brief TrkDriftCircleMath::Road - encodes the road given to the segment finder in station coordinates. - */ - class Road { - public: - - /** constructor - @param roadPos position of the road in local AMDB chamber coordinates - @param roadAngle angle of the road in local AMDB chamber coordinates - @param chamberAngle angle of the line from the chamber center to the IP in local AMDB chamber coordinates - @param roadAngularWidth opening angle of the road in the precision coordinate of the chamber +#include "TrkDriftCircleMath/LocVec2D.h" + +namespace TrkDriftCircleMath { + + /** + @brief TrkDriftCircleMath::Road - encodes the road given to the segment finder in station coordinates. */ - Road (const TrkDriftCircleMath::LocPos& roadPos, double roadAngle, double chamberAngle, double roadAngularWidth); - - /** destructor */ - ~Road(); - - /** returns the position of the road in local coordinates */ - const TrkDriftCircleMath::LocPos& pos() const { return m_pos; } - - /** returns the angle of the road in local coordinates */ - double angle() const { return m_angle; } - - /** returns the angle of the line from the chamber center to the IP in local AMDB chamber coordinates */ - double chamberAngle() const { return m_chamberAngle; } - - /** returns the width angle of the road */ - double width() const { return m_width; } - - private: - TrkDriftCircleMath::LocPos m_pos; - double m_angle; - double m_chamberAngle; - double m_width; - }; - -} - -#endif // __TRK_DRIFT_CICLE_MATH__ROAD_H__ + class Road { + public: + /** constructor + @param roadPos position of the road in local AMDB chamber coordinates + @param roadAngle angle of the road in local AMDB chamber coordinates + @param chamberAngle angle of the line from the chamber center to the IP in local AMDB chamber coordinates + @param roadAngularWidth opening angle of the road in the precision coordinate of the chamber + */ + Road(const LocVec2D& roadPos, double roadAngle, double chamberAngle, double roadAngularWidth); + + /** destructor */ + ~Road(); + + /** returns the position of the road in local coordinates */ + const LocVec2D& pos() const { return m_pos; } + + /** returns the angle of the road in local coordinates */ + double angle() const { return m_angle; } + + /** returns the angle of the line from the chamber center to the IP in local AMDB chamber coordinates */ + double chamberAngle() const { return m_chamberAngle; } + + /** returns the width angle of the road */ + double width() const { return m_width; } + + private: + LocVec2D m_pos; + double m_angle; + double m_chamberAngle; + double m_width; + }; + +} // namespace TrkDriftCircleMath + +#endif // __TRK_DRIFT_CICLE_MATH__ROAD_H__ diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Rot2D.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Rot2D.h deleted file mode 100644 index 04c4b8f4ba140f5ddd949d5dbed6dc29147016f4..0000000000000000000000000000000000000000 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Rot2D.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef DCMATH_ROT2D_H -#define DCMATH_ROT2D_H - -namespace TrkDriftCircleMath { - - class Rot2D { - public: - Rot2D( double xx, double xy, double yx, double yy ) - : m_xx(xx),m_xy(xy),m_yx(yx),m_yy(yy) {} - - double xx() const { return m_xx; } - double xy() const { return m_xy; } - double yx() const { return m_yx; } - double yy() const { return m_yy; } - - private: - double m_xx; - double m_xy; - double m_yx; - double m_yy; - }; - -} - -#endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/RotPhi.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/RotPhi.h index f8e3f985c36b499b6bdc40324e73494d90a479c5..6b7e9a5c9047f006047ace439035e97d5f953ed1 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/RotPhi.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/RotPhi.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef DCMATH_ROTPHI_H @@ -7,40 +7,43 @@ #include <cmath> -#include "TrkDriftCircleMath/Rot2D.h" #include "TrkDriftCircleMath/LocVec2D.h" namespace TrkDriftCircleMath { - - class RotPhi { - public: - RotPhi( double phi ) - : m_phi(phi),m_cosphi( cos(phi) ),m_sinphi( sin(phi) ) {} - - double phi() const { return m_phi; } - double cosphi() const { return m_cosphi; } - double sinphi() const { return m_sinphi; } - - double xval( const LocVec2D& lv ) const { return cosphi()*lv.x() + sinphi()*lv.y(); } - double yval( const LocVec2D& lv ) const { return -sinphi()*lv.x() + cosphi()*lv.y(); } - - RotPhi invers() const { return RotPhi( -phi() ); } - - void set( double phi ){ - m_phi = phi; - m_cosphi = cos(phi); - m_sinphi = sin(phi); - } - private: - double m_phi; - double m_cosphi; - double m_sinphi; - }; - -} - -TrkDriftCircleMath::LocVec2D operator*( const TrkDriftCircleMath::RotPhi& rot, - const TrkDriftCircleMath::LocVec2D& lv ); + class RotPhi { + public: + RotPhi(double phi) : m_phi{phi}, m_cosphi{std::cos(phi)}, m_sinphi{std::sin(phi)} {} + + RotPhi(const RotPhi&) = default; + RotPhi(RotPhi&&) = default; + + RotPhi& operator=(RotPhi&&) = default; + RotPhi& operator=(const RotPhi&) = default; + + double phi() const { return m_phi; } + double cosphi() const { return m_cosphi; } + double sinphi() const { return m_sinphi; } + + double xval(const LocVec2D& lv) const { return cosphi() * lv.x() + sinphi() * lv.y(); } + double yval(const LocVec2D& lv) const { return -sinphi() * lv.x() + cosphi() * lv.y(); } + + RotPhi inverse() const { return RotPhi(-phi()); } + + void set(double phi) { + m_phi = phi; + m_cosphi = std::cos(phi); + m_sinphi = std::sin(phi); + } + + private: + double m_phi{0}; + double m_cosphi{0}; + double m_sinphi{0}; + }; + +} // namespace TrkDriftCircleMath + +TrkDriftCircleMath::LocVec2D operator*(const TrkDriftCircleMath::RotPhi& rot, const TrkDriftCircleMath::LocVec2D& lv); #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Segment.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Segment.h index a1b35aced0a05cf842cb4335e4c400072dc8fe77..5ddc206c9f1544a40e91cca7a8dbc3019c9fb978 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Segment.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/Segment.h @@ -9,175 +9,124 @@ #include <vector> #include "GaudiKernel/MsgStream.h" - -#include "TrkDriftCircleMath/Line.h" -#include "TrkDriftCircleMath/DCOnTrack.h" #include "TrkDriftCircleMath/Cluster.h" +#include "TrkDriftCircleMath/DCOnTrack.h" +#include "TrkDriftCircleMath/Line.h" -namespace TrkDriftCircleMath -{ - - class Segment { - public: - Segment (const Line& l, const DCOnTrackVec& dcs, double chi2, unsigned int ndof, double dtheta, double dy0) - : m_line (l), m_dcs (dcs), m_chi2 (chi2), m_ndof (ndof), m_dtheta (dtheta), m_dy0 (dy0), m_t0Shift(-99999.), m_t0Error(-99999.), - m_deltaAlpha(-99999.),m_deltab(-99999.),m_deltas (0), m_hitsOutOfTime (0), m_hitsOnTrack (0), m_closeHits (0), m_showerHits (0), - m_crossedTubesMl1 (0), m_crossedTubesMl2 (0), m_hitsMl1 (0), m_hitsMl2 (0), m_ambigue (0), m_clusterLayers (0) {} - - Segment (const Line& l, const DCOnTrackVec& dcs) - : m_line (l), m_dcs (dcs), m_chi2 (1e9), m_ndof (0), m_dtheta (1e9), m_dy0 (1e9), m_t0Shift(-99999.), m_t0Error(-99999.), - m_deltaAlpha(-99999.),m_deltab(-99999.),m_deltas (0), m_hitsOutOfTime (0), m_hitsOnTrack (0), m_closeHits (0), m_showerHits (0), - m_crossedTubesMl1 (0), m_crossedTubesMl2 (0), m_hitsMl1 (0), m_hitsMl2 (0), m_ambigue (0), m_clusterLayers (0) {} - - ~Segment() {} - - const Line& line() const { return m_line; } - const DCOnTrackVec& dcs() const { return m_dcs; } - const CLVec& clusters() const { return m_clusters; } - const DCVec& emptyTubes() const { return m_emptyTubes; } - - /** non-const access to reduce memory usage when re-using segments */ - Line& line() { return m_line; } - DCOnTrackVec& dcs() { return m_dcs; } - CLVec& clusters() { return m_clusters; } - DCVec& emptyTubes() { return m_emptyTubes; } - - /** set methods to replace calling constructors */ - void set(double chi2, unsigned int ndof, double dtheta, double dy0); - void setAndReset(double chi2, unsigned int ndof, double dtheta, double dy0); - - double chi2() const { return m_chi2; } - unsigned int ndof() const { return m_ndof; } - double dtheta() const { return m_dtheta; } - double dy0() const { return m_dy0; } - - void dcs (const DCOnTrackVec& dcs) { m_dcs = dcs; } - void clusters (const CLVec& cls) { m_clusters = cls; } - void emptyTubes (const DCVec& emptyTubes) { m_emptyTubes = emptyTubes; } - void deltas (unsigned int dts) { m_deltas = dts; } - void hitsOutOfTime (unsigned int hitsOutOfTime) { m_hitsOutOfTime = hitsOutOfTime; } - void hitsOnTrack (unsigned int hitsOnTrack) { m_hitsOnTrack = hitsOnTrack; } - void closeHits (unsigned int closeHits) { m_closeHits = closeHits; } - void showerHits (unsigned int showerHits) { m_showerHits = showerHits; } - void crossedTubes (unsigned int crossedTubesMl1, unsigned int crossedTubesMl2) { - m_crossedTubesMl1 = crossedTubesMl1; - m_crossedTubesMl2 = crossedTubesMl2; - } - void hitsPerMl (unsigned int hml1, unsigned int hml2) { m_hitsMl1 = hml1; m_hitsMl2 = hml2; } - void ambigue (unsigned int amb) { m_ambigue = amb; } - void clusterLayers (unsigned int ncl) { m_clusterLayers = ncl; } - - void setT0Shift( double t0Shift, double error ) { - m_t0Shift = t0Shift; - m_t0Error = error; - } - bool hasT0Shift() const { return m_t0Shift != -99999.; } - - void setCurvatureParameters(double deltaAlpha, double deltab) { m_deltaAlpha=deltaAlpha; m_deltab=deltab; } - bool hasCurvatureParameters() const { return m_deltaAlpha != -99999.; } - - double t0Shift() const { return m_t0Shift; } - double t0Error() const { return m_t0Error; } - double deltaAlpha() const { return m_deltaAlpha; } - double deltab() const { return m_deltab; } - unsigned int deltas() const { return m_deltas; } - unsigned int hitsOutOfTime() const { return m_hitsOutOfTime; } - unsigned int hitsOnTrack() const { return m_hitsOnTrack; } - unsigned int closeHits() const { return m_closeHits; } - unsigned int showerHits() const { return m_showerHits; } - unsigned int crossedTubes() const { return crossedTubesMl1() + crossedTubesMl2(); } - unsigned int crossedTubesMl1() const { return m_crossedTubesMl1; } - unsigned int crossedTubesMl2() const { return m_crossedTubesMl2; } - unsigned int hitsMl1() const { return m_hitsMl1; } - unsigned int hitsMl2() const { return m_hitsMl2; } - unsigned int ambigue() const { return m_ambigue; } - unsigned int clusterLayers() const { return m_clusterLayers; } - - - private: - Line m_line; - DCOnTrackVec m_dcs; - CLVec m_clusters; - DCVec m_emptyTubes; - double m_chi2; - unsigned int m_ndof; - double m_dtheta; // needed in find5. Error in tube coordinate (pos? dir?) - double m_dy0; // needed in find5. Error in strip coordinate (pos? dir?) - double m_t0Shift; - double m_t0Error; - double m_deltaAlpha; - double m_deltab; - unsigned int m_deltas; - unsigned int m_hitsOutOfTime; - unsigned int m_hitsOnTrack; - unsigned int m_closeHits; - unsigned int m_showerHits; - unsigned int m_crossedTubesMl1; - unsigned int m_crossedTubesMl2; - unsigned int m_hitsMl1; - unsigned int m_hitsMl2; - unsigned int m_ambigue; - unsigned int m_clusterLayers; - - }; - - typedef std::vector<Segment> SegVec; - typedef SegVec::iterator SegIt; - typedef SegVec::const_iterator SegCit; - - inline void Segment::set(double chi2, unsigned int ndof, double dtheta, double dy0) { - m_chi2 = chi2; - m_ndof = ndof; - m_dtheta = dtheta; - m_dy0 = dy0; - m_t0Shift = -99999.; - m_deltaAlpha = -99999.; - m_deltab = -99999.; - m_deltas = 0; - m_hitsOutOfTime = 0; - m_hitsOnTrack = 0; - m_closeHits = 0; - m_showerHits = 0; - m_crossedTubesMl1 = 0; - m_crossedTubesMl2 = 0; - m_hitsMl1 = 0; - m_hitsMl2 = 0; - m_ambigue = 0; - m_clusterLayers = 0; - } - - inline void Segment::setAndReset(double chi2, unsigned int ndof, double dtheta, double dy0) { - m_chi2 = chi2; - m_ndof = ndof; - m_dtheta = dtheta; - m_dy0 = dy0; - m_t0Shift = -99999.; - m_deltaAlpha = -99999.; - m_deltab = -99999.; - m_deltas = 0; - m_hitsOutOfTime = 0; - m_hitsOnTrack = 0; - m_closeHits = 0; - m_showerHits = 0; - m_crossedTubesMl1 = 0; - m_crossedTubesMl2 = 0; - m_hitsMl1 = 0; - m_hitsMl2 = 0; - m_ambigue = 0; - m_clusterLayers = 0; - m_dcs.clear(); - m_clusters.clear(); - m_emptyTubes.clear(); - - } - - std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::Segment& dc ); - - MsgStream & operator<< (MsgStream & os, const TrkDriftCircleMath::Segment& dc); - - -} - - - -#endif // DCMATH_SEGMENT_H +namespace TrkDriftCircleMath { + + class Segment { + public: + Segment(const Line& l, const DCOnTrackVec& dcs, double chi2, unsigned int ndof, double dtheta, double dy0) : + m_line(l), m_dcs(dcs), m_chi2(chi2), m_ndof(ndof), m_dtheta(dtheta), m_dy0(dy0) {} + + Segment(const Line& l, const DCOnTrackVec& dcs) : m_line(l), m_dcs(dcs) {} + + ~Segment() = default; + + const Line& line() const { return m_line; } + const DCOnTrackVec& dcs() const { return m_dcs; } + const CLVec& clusters() const { return m_clusters; } + const DCVec& emptyTubes() const { return m_emptyTubes; } + + /** non-const access to reduce memory usage when re-using segments */ + Line& line() { return m_line; } + DCOnTrackVec& dcs() { return m_dcs; } + CLVec& clusters() { return m_clusters; } + DCVec& emptyTubes() { return m_emptyTubes; } + + /** set methods to replace calling constructors */ + void set(double chi2, unsigned int ndof, double dtheta, double dy0); + void setAndReset(double chi2, unsigned int ndof, double dtheta, double dy0); + + double chi2() const { return m_chi2; } + unsigned int ndof() const { return m_ndof; } + double dtheta() const { return m_dtheta; } + double dy0() const { return m_dy0; } + + void dcs(const DCOnTrackVec& dcs) { m_dcs = dcs; } + void clusters(const CLVec& cls) { m_clusters = cls; } + void emptyTubes(const DCVec& emptyTubes) { m_emptyTubes = emptyTubes; } + void deltas(unsigned int dts) { m_deltas = dts; } + void hitsOutOfTime(unsigned int hitsOutOfTime) { m_hitsOutOfTime = hitsOutOfTime; } + void hitsOnTrack(unsigned int hitsOnTrack) { m_hitsOnTrack = hitsOnTrack; } + void closeHits(unsigned int closeHits) { m_closeHits = closeHits; } + void showerHits(unsigned int showerHits) { m_showerHits = showerHits; } + void crossedTubes(unsigned int crossedTubesMl1, unsigned int crossedTubesMl2) { + m_crossedTubesMl1 = crossedTubesMl1; + m_crossedTubesMl2 = crossedTubesMl2; + } + void hitsPerMl(unsigned int hml1, unsigned int hml2) { + m_hitsMl1 = hml1; + m_hitsMl2 = hml2; + } + void ambigue(unsigned int amb) { m_ambigue = amb; } + void clusterLayers(unsigned int ncl) { m_clusterLayers = ncl; } + + void setT0Shift(double t0Shift, double error) { + m_t0Shift = t0Shift; + m_t0Error = error; + } + bool hasT0Shift() const { return m_t0Shift != -99999.; } + + void setCurvatureParameters(double deltaAlpha, double deltab) { + m_deltaAlpha = deltaAlpha; + m_deltab = deltab; + } + bool hasCurvatureParameters() const { return m_deltaAlpha != -99999.; } + + double t0Shift() const { return m_t0Shift; } + double t0Error() const { return m_t0Error; } + double deltaAlpha() const { return m_deltaAlpha; } + double deltab() const { return m_deltab; } + unsigned int deltas() const { return m_deltas; } + unsigned int hitsOutOfTime() const { return m_hitsOutOfTime; } + unsigned int hitsOnTrack() const { return m_hitsOnTrack; } + unsigned int closeHits() const { return m_closeHits; } + unsigned int showerHits() const { return m_showerHits; } + unsigned int crossedTubes() const { return crossedTubesMl1() + crossedTubesMl2(); } + unsigned int crossedTubesMl1() const { return m_crossedTubesMl1; } + unsigned int crossedTubesMl2() const { return m_crossedTubesMl2; } + unsigned int hitsMl1() const { return m_hitsMl1; } + unsigned int hitsMl2() const { return m_hitsMl2; } + unsigned int ambigue() const { return m_ambigue; } + unsigned int clusterLayers() const { return m_clusterLayers; } + + private: + Line m_line; + DCOnTrackVec m_dcs; + CLVec m_clusters; + DCVec m_emptyTubes; + + double m_chi2{1.e9}; + unsigned int m_ndof{0}; + double m_dtheta{1.e9}; // needed in find5. Error in tube coordinate (pos? dir?) + double m_dy0{1.e9}; // needed in find5. Error in strip coordinate (pos? dir?) + double m_t0Shift{-99999.}; + double m_t0Error{-99999.}; + double m_deltaAlpha{-99999.}; + double m_deltab{-99999.}; + unsigned int m_deltas{0}; + unsigned int m_hitsOutOfTime{0}; + unsigned int m_hitsOnTrack{0}; + unsigned int m_closeHits{0}; + unsigned int m_showerHits{0}; + unsigned int m_crossedTubesMl1{0}; + unsigned int m_crossedTubesMl2{0}; + unsigned int m_hitsMl1{0}; + unsigned int m_hitsMl2{0}; + unsigned int m_ambigue{0}; + unsigned int m_clusterLayers{0}; + }; + + typedef std::vector<Segment> SegVec; + typedef SegVec::iterator SegIt; + typedef SegVec::const_iterator SegCit; + + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::Segment& dc); + + MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::Segment& dc); + +} // namespace TrkDriftCircleMath + +#endif // DCMATH_SEGMENT_H diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SegmentCandidate.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SegmentCandidate.h index 402f8be6370f71856015122fde318f603ce0edb7..00cff5fa4eeba414243c2893f375c18c0e9f7939 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SegmentCandidate.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SegmentCandidate.h @@ -9,56 +9,49 @@ #include <vector> #include "GaudiKernel/MsgStream.h" - -#include "TrkDriftCircleMath/Line.h" -#include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/Cluster.h" +#include "TrkDriftCircleMath/DriftCircle.h" +#include "TrkDriftCircleMath/Line.h" #include "TrkDriftCircleMath/Segment.h" -namespace TrkDriftCircleMath -{ +namespace TrkDriftCircleMath { + + class Segment; + + class SegmentCandidate { + public: + SegmentCandidate(const Line& l, const DCVec& dcs, const CLVec& clusters) : m_line(l), m_dcs(dcs), m_clusters(clusters) {} -class Segment; + SegmentCandidate(const Segment& segment); + virtual ~SegmentCandidate() {} -class SegmentCandidate -{ + const Line& line() const { return m_line; } + const DCVec& dcs() const { return m_dcs; } + const CLVec& clusters() const { return m_clusters; } -public: - SegmentCandidate (const Line& l, const DCVec& dcs, const CLVec& clusters) - : m_line (l), m_dcs (dcs), m_clusters(clusters) {} - - SegmentCandidate (const Segment& segment); + void dcs(const DCVec& dcs) { m_dcs = dcs; } + void clusters(const CLVec& cls) { m_clusters = cls; } - virtual ~SegmentCandidate() {} - - const Line& line() const { return m_line; } - const DCVec& dcs() const { return m_dcs; } - const CLVec& clusters() const { return m_clusters; } - - void dcs (const DCVec& dcs) { m_dcs = dcs; } - void clusters (const CLVec& cls) { m_clusters = cls; } - -private: - Line m_line; - DCVec m_dcs; - CLVec m_clusters; -}; + private: + Line m_line; + DCVec m_dcs; + CLVec m_clusters; + }; -class SegCandVec : public std::vector <SegmentCandidate> -{ -public: - SegCandVec () {}; - SegCandVec (const SegVec& segVec); -}; + class SegCandVec : public std::vector<SegmentCandidate> { + public: + SegCandVec(){}; + SegCandVec(const SegVec& segVec); + }; -typedef SegCandVec::iterator SegCandIt; -typedef SegCandVec::const_iterator SegCandCit; + typedef SegCandVec::iterator SegCandIt; + typedef SegCandVec::const_iterator SegCandCit; -} // namespace TrkDriftCircleMath +} // namespace TrkDriftCircleMath -std::ostream& operator<< (std::ostream& os, const TrkDriftCircleMath::SegmentCandidate& dc); +std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::SegmentCandidate& dc); -MsgStream & operator<< (MsgStream & os, const TrkDriftCircleMath::SegmentCandidate& dc); +MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::SegmentCandidate& dc); -#endif //__DCMATH__SEGMENT_CANDIDATE__H__ +#endif //__DCMATH__SEGMENT_CANDIDATE__H__ diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SegmentFinder.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SegmentFinder.h index 4469c6a05e6ebdbc92c24acf7f8c5989bfb179cb..3c5ee2f94025776c60454ec69800fc4343ff2c14 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SegmentFinder.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SegmentFinder.h @@ -5,173 +5,160 @@ #ifndef DCMATH_SEGMENTFINDER_H #define DCMATH_SEGMENTFINDER_H +#include <cmath> +#include <memory> +#include <mutex> +#include <vector> + #include "CxxUtils/checker_macros.h" -#include "TrkDriftCircleMath/Line.h" -#include "TrkDriftCircleMath/LocDir.h" -#include "TrkDriftCircleMath/DriftCircle.h" +#include "TrkDriftCircleMath/ChamberGeometry.h" #include "TrkDriftCircleMath/Cluster.h" -#include "TrkDriftCircleMath/ResidualWithLine.h" -#include "TrkDriftCircleMath/Segment.h" +#include "TrkDriftCircleMath/CurvedSegmentFinder.h" +#include "TrkDriftCircleMath/DCSLFitter.h" +#include "TrkDriftCircleMath/DCSLHitSelector.h" +#include "TrkDriftCircleMath/DriftCircle.h" #include "TrkDriftCircleMath/IsSubsetSegment.h" +#include "TrkDriftCircleMath/Line.h" +#include "TrkDriftCircleMath/LocVec2D.h" +#include "TrkDriftCircleMath/MatchCrossedTubes.h" +#include "TrkDriftCircleMath/MatchDCWithLine.h" +#include "TrkDriftCircleMath/ResidualWithLine.h" #include "TrkDriftCircleMath/ResolvedCollection.h" +#include "TrkDriftCircleMath/Segment.h" #include "TrkDriftCircleMath/SortDcsByY.h" -#include "TrkDriftCircleMath/ChamberGeometry.h" #include "TrkDriftCircleMath/TangentToCircles.h" -#include "TrkDriftCircleMath/DCSLFitter.h" -#include "TrkDriftCircleMath/DCSLHitSelector.h" -#include "TrkDriftCircleMath/MatchDCWithLine.h" -#include "TrkDriftCircleMath/MatchCrossedTubes.h" -#include "TrkDriftCircleMath/CurvedSegmentFinder.h" - -#include <cmath> -#include <mutex> -#include <vector> namespace TrkDriftCircleMath { - class SegmentFinder{ - public: - SegmentFinder(); - /// copy c'tor deleted to prevent ownership/leak issues - SegmentFinder(const SegmentFinder &) = delete; - /// assignment deleted to prevent ownership/leak issues - SegmentFinder & operator=(const SegmentFinder &) = delete; - // - SegmentFinder(double roadWidth, double deltaCut, bool fullScan); - ~SegmentFinder(); - void handleHits( const DCVec& dcs, const CLVec& clusters, - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments ) const; - - SegVec findSegments( const DCVec& dcs ) const; - SegVec findSegments( const DCVec& dcs, const CLVec& clusters ) const; - SegVec cleanSegments( const SegVec& segments ) const; - SegVec refitSegments( const SegVec& segs ) const; - bool dropHits( Segment& segment, bool& hasDroppedHit, unsigned int& dropDepth ) const; - - void setTGCPullCut(double cut); - void setRPCPullCut(double cut); - void setRecoverMDT(bool doRecover); - void setDropHits(bool doDrop); - void setSeedCleaning(bool doCleanup); - void setSingleMultiLayerScan( bool doScan ); - void setChi2DropCut(double chi2); - void setDeltaCut(double cut); - void setRatioEmptyTubesCut(double ratioEmptyTubesCut); - void setMdtGeometry( const ChamberGeometry* mdtGeo ) { m_mdtGeometry = mdtGeo; } - void setPhiRoad(double phiRoad, double phiChamber, double sinPhiCut = 0.2, bool useRoadPhi = true, bool useChamberPhi = true ); - void setSortSegmentsUsingAllHits( bool doAllHitsSort ); - void setUseChamberPhi( bool useChamberPhi ); - void setRemoveSingleOutliers( bool removeSingleOutliers ); - void setCurvedSegmentFinder( bool doCurvedSegmentFinder ); - void setFitter( const DCSLFitter* fitter ) { - if( m_ownsFitter ) delete m_fitter; - m_ownsFitter = false; - m_fitter = fitter; - } - void setMaxDropDepth( int max ); - void setResidualCutT0( double resCut ); - void setDeltaCutT0( double deltaCut ); - void setUseSegmentQuality( bool useQ ); - - void debug(bool debug) { m_debugLevel = debug ? 1 : 0; } - void debugLevel(int debugLevel) { m_debugLevel = debugLevel; } - - protected: - //SegVec fullMatch( const Segment& seg ) const; - - DCVec selectSeeds( const DCVec& dcs, int maxSerie ) const; - std::pair<DCVec,DCVec> splitInMulitlayers( const DCVec& dcs ) const; - DCVec removeDCOnSegments( const DCVec& dcs, const SegVec& segs ) const; - - unsigned int emptyCrossedTubes( const Line& line, const DCVec& closeEmptyTubes ) const; - DCVec emptyNeighbours( const DCVec& dcs ) const; - - void handleSeedPair( const DriftCircle& seed1, const DriftCircle& seeds2, const DCVec& dcs, const CLVec& cls, MatchDCWithLine& matchWithLine, - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments ) const; - void fullScan( const DCVec& seeds, const DCVec& dcs, const CLVec& cls, - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments ) const; - void twoMultiLayerScan( const DCVec& seeds_ml1, const DCVec& seeds_ml2, const DCVec& dcs, const CLVec& cls, - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments ) const; - - bool directionCheck( const LocDir& locDir ) const; - - void associateClusters( SegVec& segs, const CLVec& cls ) const; - void associateClusters( Segment& seg, const CLVec& cls ) const; - - - void crossedTubes( Segment& seg ) const; - void updateMatch( Segment& seg, MatchDCWithLine& matchWithLine ) const; - - bool goodHitRatio( Segment& seg ) const; - - /** update the cached values for the phi road and chamber road */ - void updateDirections(); - - /** print settings */ - void printSettings() const; - - double tubeRadius() const { - return m_mdtGeometry ? m_mdtGeometry->tubeRadius() : 14.6; - } - - double m_deltaCut; - double m_roadWidth; - double m_phiRoad; - LocDir m_roadDir; - double m_phiChamber; - LocDir m_chamberDir; - - double m_phiDifCut; - double m_ratioEmptyTubesCut; - double m_chi2Cut; - double m_tgcPullCut; - double m_rpcPullCut; - double m_resCutT0; - double m_deltaCutT0; - bool m_useSegmentQuality; - bool m_recoverMdtHits; - - TangentToCircles m_tanCreator; - bool m_ownsFitter; - const DCSLFitter* m_fitter; - DCSLHitSelector m_hitSelector; - MatchCrossedTubes m_matchCrossed; - - bool m_removeSingleOutliers; - bool m_fullScan; - bool m_singleMultiLayerScan; - bool m_seedCleaning; - bool m_doDrop; - unsigned int m_dropDepthMax; - bool m_doAllHitSort; - bool m_doCurvedSegmentFinder; - bool m_useChamberPhi; - bool m_useRoadPhi; - const ChamberGeometry* m_mdtGeometry; - int m_debugLevel; - - mutable std::vector<int> m_dropDepthAcceptCounts ATLAS_THREAD_SAFE; // Guarded by m_mutex - mutable std::vector<int> m_dropDepthRejectCounts ATLAS_THREAD_SAFE; // Guarded by m_mutex - mutable std::mutex m_mutex; - - }; - - inline bool SegmentFinder::directionCheck( const LocDir& lineDir ) const { - - // check whether the - if( m_useRoadPhi ){ - double prodRoad = lineDir*m_roadDir; - if( prodRoad < 0. ) prodRoad *= -1.; - if( prodRoad > m_phiDifCut ) return true; - } - if( m_useChamberPhi ) { - double prodChamber = lineDir*m_chamberDir; - if( prodChamber < 0. ) prodChamber *= -1.; - if( prodChamber > m_phiDifCut ) return true; + class SegmentFinder { + public: + SegmentFinder(); + /// copy c'tor deleted to prevent ownership/leak issues + SegmentFinder(const SegmentFinder&) = delete; + /// assignment deleted to prevent ownership/leak issues + SegmentFinder& operator=(const SegmentFinder&) = delete; + // + SegmentFinder(double roadWidth, double deltaCut, bool fullScan); + ~SegmentFinder(); + void handleHits(const DCVec& dcs, const CLVec& clusters, ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments) const; + + SegVec findSegments(const DCVec& dcs) const; + SegVec findSegments(const DCVec& dcs, const CLVec& clusters) const; + SegVec cleanSegments(const SegVec& segments) const; + SegVec refitSegments(const SegVec& segs) const; + bool dropHits(Segment& segment, bool& hasDroppedHit, unsigned int& dropDepth) const; + + void setTGCPullCut(double cut); + void setRPCPullCut(double cut); + void setRecoverMDT(bool doRecover); + void setDropHits(bool doDrop); + void setSeedCleaning(bool doCleanup); + void setSingleMultiLayerScan(bool doScan); + void setChi2DropCut(double chi2); + void setDeltaCut(double cut); + void setRatioEmptyTubesCut(double ratioEmptyTubesCut); + void setMdtGeometry(const ChamberGeometry* mdtGeo) { m_mdtGeometry = mdtGeo; } + void setPhiRoad(double phiRoad, double phiChamber, double sinPhiCut = 0.2, bool useRoadPhi = true, bool useChamberPhi = true); + void setSortSegmentsUsingAllHits(bool doAllHitsSort); + void setUseChamberPhi(bool useChamberPhi); + void setRemoveSingleOutliers(bool removeSingleOutliers); + void setCurvedSegmentFinder(bool doCurvedSegmentFinder); + void setFitter(std::shared_ptr<const DCSLFitter> fitter) { m_fitter = fitter; } + void setMaxDropDepth(int max); + void setResidualCutT0(double resCut); + void setDeltaCutT0(double deltaCut); + void setUseSegmentQuality(bool useQ); + + void debugLevel(int debugLevel) { m_debugLevel = debugLevel; } + + protected: + DCVec selectSeeds(const DCVec& dcs, int maxSerie) const; + std::pair<DCVec, DCVec> splitInMulitlayers(const DCVec& dcs) const; + DCVec removeDCOnSegments(const DCVec& dcs, const SegVec& segs) const; + + unsigned int emptyCrossedTubes(const Line& line, const DCVec& closeEmptyTubes) const; + DCVec emptyNeighbours(const DCVec& dcs) const; + + void handleSeedPair(const DriftCircle& seed1, const DriftCircle& seeds2, const DCVec& dcs, const CLVec& cls, + MatchDCWithLine& matchWithLine, ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments) const; + void fullScan(const DCVec& seeds, const DCVec& dcs, const CLVec& cls, + ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments) const; + void twoMultiLayerScan(const DCVec& seeds_ml1, const DCVec& seeds_ml2, const DCVec& dcs, const CLVec& cls, + ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments) const; + + bool directionCheck(const LocVec2D& LocVec2D) const; + + void associateClusters(SegVec& segs, const CLVec& cls) const; + void associateClusters(Segment& seg, const CLVec& cls) const; + + void crossedTubes(Segment& seg) const; + void updateMatch(Segment& seg, MatchDCWithLine& matchWithLine) const; + + bool goodHitRatio(Segment& seg) const; + + /** update the cached values for the phi road and chamber road */ + void updateDirections(); + + /** print settings */ + void printSettings() const; + + double tubeRadius() const { return m_mdtGeometry ? m_mdtGeometry->tubeRadius() : 14.6; } + + double m_deltaCut{5.}; + double m_roadWidth{1.5}; + double m_phiRoad{M_PI_2}; + LocVec2D m_roadDir{0., 0.}; + double m_phiChamber{M_PI_2}; + LocVec2D m_chamberDir{0., 0.}; + + double m_phiDifCut{0.5}; + double m_ratioEmptyTubesCut{1.}; + double m_chi2Cut{10}; + double m_tgcPullCut{5}; + double m_rpcPullCut{5}; + double m_resCutT0{1.}; + double m_deltaCutT0{5.}; + bool m_useSegmentQuality{false}; + bool m_recoverMdtHits{true}; + + TangentToCircles m_tanCreator; + std::shared_ptr<const DCSLFitter> m_fitter; + DCSLHitSelector m_hitSelector; + MatchCrossedTubes m_matchCrossed; + + bool m_removeSingleOutliers{true}; + bool m_fullScan{false}; + bool m_singleMultiLayerScan{true}; + bool m_seedCleaning{false}; + bool m_doDrop{true}; + unsigned int m_dropDepthMax{4}; + bool m_doAllHitSort{false}; + bool m_doCurvedSegmentFinder{false}; + bool m_useChamberPhi{true}; + bool m_useRoadPhi{true}; + const ChamberGeometry* m_mdtGeometry{nullptr}; + int m_debugLevel{0}; + + mutable std::vector<int> m_dropDepthAcceptCounts ATLAS_THREAD_SAFE{(int)m_dropDepthMax + 2, 0}; // Guarded by m_mutex + mutable std::vector<int> m_dropDepthRejectCounts ATLAS_THREAD_SAFE{(int)m_dropDepthMax + 1, 0}; // Guarded by m_mutex + mutable std::mutex m_mutex; + }; + + inline bool SegmentFinder::directionCheck(const LocVec2D& lineDir) const { + // check whether the + if (m_useRoadPhi) { + double prodRoad = lineDir * m_roadDir; + if (prodRoad < 0.) prodRoad *= -1.; + if (prodRoad > m_phiDifCut) return true; + } + if (m_useChamberPhi) { + double prodChamber = lineDir * m_chamberDir; + if (prodChamber < 0.) prodChamber *= -1.; + if (prodChamber > m_phiDifCut) return true; + } + return false; } - return false; - } -} +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SharedHitsSegments.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SharedHitsSegments.h index a76f5599eade92fc665b15ac613902e23f1e8f15..36d015261216ec7fa598e398393c72c686720e6c 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SharedHitsSegments.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SharedHitsSegments.h @@ -9,107 +9,95 @@ #include "TrkDriftCircleMath/SortDcsByY.h" namespace TrkDriftCircleMath { - /** counts the number of hits shared by the two segments */ - - struct SharedHitsSegments { - - SharedHitsSegments( bool onlyOnTrack=false ) : m_mode(onlyOnTrack),m_shared{}, - m_onlySeg1{}, - m_onlySeg2{} - {/*nop **/} - - unsigned int operator()( const Segment& seg1, const Segment& seg2 ){ - - DCOnTrackCit sit1 = seg1.dcs().begin(); - DCOnTrackCit sit1_end = seg1.dcs().end(); - DCOnTrackCit sit2 = seg2.dcs().begin(); - DCOnTrackCit sit2_end = seg2.dcs().end(); - - SortDcsByY compDC; - - m_shared = 0; - m_onlySeg1 = 0; - m_onlySeg2 = 0; - - while( sit1 != sit1_end && sit2 != sit2_end ){ -/* std::cout << " dc1 " << *sit1 << std::endl; */ -/* std::cout << " dc2 " << *sit1 << std::endl; */ - - // skip all close hits - if( sit1->state() == DCOnTrack::CloseDC ){ - ++sit1; - continue; - } - if( sit2->state() == DCOnTrack::CloseDC ){ - ++sit2; - continue; - } - - if( m_mode ){ - // only use hits on track - if( sit1->state() != DCOnTrack::OnTrack ){ - ++sit1; - continue; - } - if( sit2->state() != DCOnTrack::OnTrack ){ - ++sit2; - continue; - } - } - - // dc1 < dc2 - if( compDC( *sit1, *sit2 ) ){ - ++sit1; - ++m_onlySeg1; -/* std::cout << " ++seg1 " << m_onlySeg1 << std::endl; */ - // dc1 >= dc2 - }else{ - - // dc2 < dc1 - if( compDC( *sit2, *sit1 ) ){ - ++sit2; - ++m_onlySeg2; -/* std::cout << " ++seg2 " << m_onlySeg2 << std::endl; */ - // dc1 == dc2 - }else{ - ++m_shared; -/* std::cout << " ++shared " << m_shared << std::endl; */ - ++sit1;++sit2; - } - } - } - - // add remaining hits to counters - for( ; sit1!= sit1_end; ++sit1 ){ - if( m_mode && sit1->state() != DCOnTrack::OnTrack ) continue; - - if( sit1->state() == DCOnTrack::CloseDC ) continue; - - ++m_onlySeg1; -/* std::cout << " ++seg1 " << m_onlySeg1 << std::endl; */ - } - for( ; sit2!= sit2_end; ++sit2 ){ - if( m_mode && sit2->state() != DCOnTrack::OnTrack ) continue; - - if( sit2->state() == DCOnTrack::CloseDC ) continue; - ++m_onlySeg2; -/* std::cout << " ++seg2 " << m_onlySeg2 << std::endl; */ - } - - return m_shared; - } - - unsigned int sharedHits() const { return m_shared; } - unsigned int onlyInSeg1() const { return m_onlySeg1; } - unsigned int onlyInSeg2() const { return m_onlySeg2; } + /** counts the number of hits shared by the two segments */ + + struct SharedHitsSegments { + SharedHitsSegments(bool onlyOnTrack = false) : m_mode(onlyOnTrack), m_shared{}, m_onlySeg1{}, m_onlySeg2{} { /*nop **/ + } + + unsigned int operator()(const Segment& seg1, const Segment& seg2) { + DCOnTrackCit sit1 = seg1.dcs().begin(); + DCOnTrackCit sit1_end = seg1.dcs().end(); + DCOnTrackCit sit2 = seg2.dcs().begin(); + DCOnTrackCit sit2_end = seg2.dcs().end(); + + SortDcsByY compDC; + + m_shared = 0; + m_onlySeg1 = 0; + m_onlySeg2 = 0; + + while (sit1 != sit1_end && sit2 != sit2_end) { + // skip all close hits + if (sit1->state() == DCOnTrack::CloseDC) { + ++sit1; + continue; + } + if (sit2->state() == DCOnTrack::CloseDC) { + ++sit2; + continue; + } + + if (m_mode) { + // only use hits on track + if (sit1->state() != DCOnTrack::OnTrack) { + ++sit1; + continue; + } + if (sit2->state() != DCOnTrack::OnTrack) { + ++sit2; + continue; + } + } + + // dc1 < dc2 + if (compDC(*sit1, *sit2)) { + ++sit1; + ++m_onlySeg1; + // dc1 >= dc2 + } else { + // dc2 < dc1 + if (compDC(*sit2, *sit1)) { + ++sit2; + ++m_onlySeg2; + // dc1 == dc2 + } else { + ++m_shared; + ++sit1; + ++sit2; + } + } + } + + // add remaining hits to counters + for (; sit1 != sit1_end; ++sit1) { + if (m_mode && sit1->state() != DCOnTrack::OnTrack) continue; + + if (sit1->state() == DCOnTrack::CloseDC) continue; + + ++m_onlySeg1; + } + for (; sit2 != sit2_end; ++sit2) { + if (m_mode && sit2->state() != DCOnTrack::OnTrack) continue; + + if (sit2->state() == DCOnTrack::CloseDC) continue; + ++m_onlySeg2; + } + + return m_shared; + } + + unsigned int sharedHits() const { return m_shared; } + unsigned int onlyInSeg1() const { return m_onlySeg1; } + unsigned int onlyInSeg2() const { return m_onlySeg2; } private: - bool m_mode; - unsigned int m_shared; - unsigned int m_onlySeg1; - unsigned int m_onlySeg2; - }; + bool m_mode; + unsigned int m_shared; + unsigned int m_onlySeg1; + unsigned int m_onlySeg2; + }; -} +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SortDcsByY.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SortDcsByY.h index 3f15425fe50efdfe70253c266abbab5a7c32f21c..e15f5c7db1c23a592ad87e143897fdfc12a4723e 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SortDcsByY.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SortDcsByY.h @@ -5,46 +5,45 @@ #ifndef DCMATH_SORTDCSBYY_H #define DCMATH_SORTDCSBYY_H -#include <iostream> #include <functional> -#include "TrkDriftCircleMath/DriftCircle.h" -#include "TrkDriftCircleMath/DCOnTrack.h" +#include <iostream> + #include "CxxUtils/fpcompare.h" +#include "TrkDriftCircleMath/DCOnTrack.h" +#include "TrkDriftCircleMath/DriftCircle.h" namespace TrkDriftCircleMath { - struct SortDcsByY { - bool operator()(const DriftCircle& dc1, const DriftCircle& dc2 ) const { - if( dc1.id() == dc2.id() ) return false; - if (CxxUtils::fpcompare::less (dc1.y(), dc2.y())) return true; - if (CxxUtils::fpcompare::less (dc2.y(), dc1.y())) return false; - return CxxUtils::fpcompare::less (dc1.x(), dc2.x()); - } - - }; - - struct SameTube { - bool operator()(const DriftCircle& dc1, const DriftCircle& dc2 ) const { - if( dc1.id() == dc2.id() ) return true; - return false; - } - }; - - struct NeighbourTube { - bool operator()(const DriftCircle& dc1, const DriftCircle& dc2 ) const { - - // check whether this is not the same tube - SameTube sameTube; - if( sameTube(dc1,dc2) ) return false; - - // check whether in the same layer - if( std::abs( dc1.y() - dc2.y() ) > 1. ) return false; - - // check whether direct neighbours - if( std::abs( dc1.x() - dc2.x() ) > 31. ) return false; - - return true; - } - }; -} + struct SortDcsByY { + bool operator()(const DriftCircle& dc1, const DriftCircle& dc2) const { + if (dc1.id() == dc2.id()) return false; + if (CxxUtils::fpcompare::less(dc1.y(), dc2.y())) return true; + if (CxxUtils::fpcompare::less(dc2.y(), dc1.y())) return false; + return CxxUtils::fpcompare::less(dc1.x(), dc2.x()); + } + }; + + struct SameTube { + bool operator()(const DriftCircle& dc1, const DriftCircle& dc2) const { + if (dc1.id() == dc2.id()) return true; + return false; + } + }; + + struct NeighbourTube { + bool operator()(const DriftCircle& dc1, const DriftCircle& dc2) const { + // check whether this is not the same tube + SameTube sameTube; + if (sameTube(dc1, dc2)) return false; + + // check whether in the same layer + if (std::abs(dc1.y() - dc2.y()) > 1.) return false; + + // check whether direct neighbours + if (std::abs(dc1.x() - dc2.x()) > 31.) return false; + + return true; + } + }; +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SortSegBySizeAndChi2.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SortSegBySizeAndChi2.h index 0a0a142264d123a4f7cb06607a58c8aabc9c904b..d8c89560fa0e2724288e57149d8fe2332c9edf2c 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SortSegBySizeAndChi2.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/SortSegBySizeAndChi2.h @@ -9,64 +9,69 @@ namespace TrkDriftCircleMath { - struct SortSegByNumberOfMDTHitsAndChi2 - { - bool operator()(const Segment& seg1, const Segment& seg2 ) - { - - // prefer segment with T0 fit - if( seg1.hasT0Shift() && !seg2.hasT0Shift() ) return true; - else if( !seg1.hasT0Shift() && seg2.hasT0Shift() ) return false; - - // sort by numbers of hits on track - if( seg1.hitsOnTrack() > seg2.hitsOnTrack() ) return true; - else if( seg1.hitsOnTrack() < seg2.hitsOnTrack() ) return false; - - - // take the one with less empty crossed tubes - if( seg1.emptyTubes().size() < seg2.emptyTubes().size() ) return true; - else if( seg1.emptyTubes().size() > seg2.emptyTubes().size() ) return false; - - // take one with associated clusters - if( seg1.clusterLayers() > 0 && seg2.clusterLayers() == 0 ) return true; - if( seg1.clusterLayers() == 0 && seg2.clusterLayers() > 0 ) return false; - - // if equal sort by number of deltas - if( seg1.deltas() < seg2.deltas() ) return true; - else if( seg1.deltas() > seg2.deltas() ) return false; - - - // finally take the one with best chi2 - return seg1.chi2() < seg2.chi2(); - } - - }; - - struct SortSegByNumberOfHitsAndChi2 - { - bool operator()(const Segment& seg1, const Segment& seg2 ) - { - // prefer segment with T0 fit - if( seg1.hasT0Shift() && !seg2.hasT0Shift() ) return true; - else if( !seg1.hasT0Shift() && seg2.hasT0Shift() ) return false; - - unsigned int nhits1 = seg1.hitsOnTrack() + seg1.clusterLayers(); - unsigned int nhits2 = seg2.hitsOnTrack() + seg2.clusterLayers(); - - // sort by numbers of hits on track - if( nhits1 > nhits2 ) return true; - else if( nhits1 < nhits2 ) return false; - - // take the one with less empty crossed tubes - if( seg1.emptyTubes().size() < seg2.emptyTubes().size() ) return true; - else if( seg1.emptyTubes().size() > seg2.emptyTubes().size() ) return false; - - // finally take the one with best chi2 - return seg1.chi2() < seg2.chi2(); - } - - }; - -} + struct SortSegByNumberOfMDTHitsAndChi2 { + bool operator()(const Segment& seg1, const Segment& seg2) { + // prefer segment with T0 fit + if (seg1.hasT0Shift() && !seg2.hasT0Shift()) + return true; + else if (!seg1.hasT0Shift() && seg2.hasT0Shift()) + return false; + + // sort by numbers of hits on track + if (seg1.hitsOnTrack() > seg2.hitsOnTrack()) + return true; + else if (seg1.hitsOnTrack() < seg2.hitsOnTrack()) + return false; + + // take the one with less empty crossed tubes + if (seg1.emptyTubes().size() < seg2.emptyTubes().size()) + return true; + else if (seg1.emptyTubes().size() > seg2.emptyTubes().size()) + return false; + + // take one with associated clusters + if (seg1.clusterLayers() > 0 && seg2.clusterLayers() == 0) return true; + if (seg1.clusterLayers() == 0 && seg2.clusterLayers() > 0) return false; + + // if equal sort by number of deltas + if (seg1.deltas() < seg2.deltas()) + return true; + else if (seg1.deltas() > seg2.deltas()) + return false; + + // finally take the one with best chi2 + return seg1.chi2() < seg2.chi2(); + } + }; + + struct SortSegByNumberOfHitsAndChi2 { + bool operator()(const Segment& seg1, const Segment& seg2) { + // prefer segment with T0 fit + if (seg1.hasT0Shift() && !seg2.hasT0Shift()) + return true; + else if (!seg1.hasT0Shift() && seg2.hasT0Shift()) + return false; + + unsigned int nhits1 = seg1.hitsOnTrack() + seg1.clusterLayers(); + unsigned int nhits2 = seg2.hitsOnTrack() + seg2.clusterLayers(); + + // sort by numbers of hits on track + if (nhits1 > nhits2) + return true; + else if (nhits1 < nhits2) + return false; + + // take the one with less empty crossed tubes + if (seg1.emptyTubes().size() < seg2.emptyTubes().size()) + return true; + else if (seg1.emptyTubes().size() > seg2.emptyTubes().size()) + return false; + + // finally take the one with best chi2 + return seg1.chi2() < seg2.chi2(); + } + }; + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/TangentToCircles.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/TangentToCircles.h index 73aaf3861f118f4acfc9992e51afe2807ac70892..c4f9bfd45d34edde9e5bd959e6287894164b293d 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/TangentToCircles.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/TangentToCircles.h @@ -5,27 +5,29 @@ #ifndef DCMATH_TANGENTTOCIRCLES_H #define DCMATH_TANGENTTOCIRCLES_H -#include "TrkDriftCircleMath/Line.h" -#include "TrkDriftCircleMath/DriftCircle.h" - #include <cmath> #include <vector> +#include "TrkDriftCircleMath/DriftCircle.h" +#include "TrkDriftCircleMath/Line.h" + namespace TrkDriftCircleMath { - class TangentToCircles{ - public: - typedef std::vector<Line> LineVec; - public: - TangentToCircles() : m_debug(false) { } + class TangentToCircles { + public: + typedef std::vector<Line> LineVec; + + public: + TangentToCircles() : m_debug(false) {} + + LineVec tangentLines(const DriftCircle& dc1, const DriftCircle& dc2) const; - LineVec tangentLines( const DriftCircle& dc1, const DriftCircle& dc2 ) const; + void debug(bool debug) { m_debug = debug; } - void debug(bool debug) { m_debug = debug; } - private: - bool m_debug; - }; + private: + bool m_debug; + }; -} +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/TransformToLine.h b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/TransformToLine.h index c3b1cbeb2d6803bac5f2150901c178161785639d..e90547966eca4dff3743e6961ab74836651d649b 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/TransformToLine.h +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/TrkDriftCircleMath/TransformToLine.h @@ -7,52 +7,50 @@ #include <cmath> -#include "TrkDriftCircleMath/Line.h" #include "TrkDriftCircleMath/DriftCircle.h" +#include "TrkDriftCircleMath/Line.h" namespace TrkDriftCircleMath { - class TransformToLine{ - public: - TransformToLine() : m_toLineRot(0.), m_toLocalRot(0.),m_shift(0.,0.) {} - - TransformToLine( const Line& line) - : m_toLineRot(line.phi()), - m_toLocalRot(-line.phi()), - m_shift(line.x0(),line.y0()) - {} - - LocPos toLine( const LocPos& pos ) const { return m_toLineRot*pos - m_shift; } - - /** only get one coordinate -> faster */ - double toLineX( const LocPos& pos ) const { return m_toLineRot.xval(pos) - m_shift.x(); } - double toLineY( const LocPos& pos ) const { return m_toLineRot.yval(pos) - m_shift.y(); } - - LocPos toLocal( const LocPos& pos ) const { return m_toLocalRot*(pos+m_shift); } - - void set( const Line& line ) { - m_toLineRot.set(line.phi()); - m_toLocalRot.set(-line.phi()); - m_shift.setX(line.x0()); - m_shift.setY(line.y0()); - } - - DriftCircle toLine( const DriftCircle& dc ) const { - return DriftCircle( toLine(dc.position()),dc.r(), dc.dr(), dc.state(), dc.id(), dc.index(), dc.rot() ); } - DriftCircle toLocal( const DriftCircle& dc ) const { - return DriftCircle( toLocal(dc.position()),dc.r(), dc.dr(), dc.state(), dc.id(), dc.index(), dc.rot() ); } - - /** rotate local position into line frame */ - const RotPhi& toLineRotation() const { return m_toLineRot; } - - /** rotate position in line frame into local frame */ - const RotPhi& toLocalRotation() const { return m_toLocalRot; } - private: - RotPhi m_toLineRot; - RotPhi m_toLocalRot; - LocPos m_shift; - }; - -} + class TransformToLine { + public: + TransformToLine() = default; + TransformToLine(const Line& line) : m_toLineRot(line.phi()), m_toLocalRot(-line.phi()), m_shift(line.x0(), line.y0()) {} + + LocVec2D toLine(const LocVec2D& pos) const { return m_toLineRot * pos - m_shift; } + + /** only get one coordinate -> faster */ + double toLineX(const LocVec2D& pos) const { return m_toLineRot.xval(pos) - m_shift.x(); } + double toLineY(const LocVec2D& pos) const { return m_toLineRot.yval(pos) - m_shift.y(); } + + LocVec2D toLocal(const LocVec2D& pos) const { return m_toLocalRot * (pos + m_shift); } + + void set(const Line& line) { + m_toLineRot.set(line.phi()); + m_toLocalRot.set(-line.phi()); + m_shift.setX(line.x0()); + m_shift.setY(line.y0()); + } + + DriftCircle toLine(const DriftCircle& dc) const { + return DriftCircle(toLine(dc.position()), dc.r(), dc.dr(), dc.state(), dc.id(), dc.index(), dc.rot()); + } + DriftCircle toLocal(const DriftCircle& dc) const { + return DriftCircle(toLocal(dc.position()), dc.r(), dc.dr(), dc.state(), dc.id(), dc.index(), dc.rot()); + } + + /** rotate local position into line frame */ + const RotPhi& toLineRotation() const { return m_toLineRot; } + + /** rotate position in line frame into local frame */ + const RotPhi& toLocalRotation() const { return m_toLocalRot; } + + private: + RotPhi m_toLineRot{0.}; + RotPhi m_toLocalRot{0.}; + LocVec2D m_shift{0., 0.}; + }; + +} // namespace TrkDriftCircleMath #endif diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Cluster.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Cluster.cxx index 0bed9666a230a08694b871255fc66121ff34f048..acc01f19410dc5d0372f5839057fea908d06c8c6 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Cluster.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Cluster.cxx @@ -4,19 +4,20 @@ #include "TrkDriftCircleMath/Cluster.h" - -MsgStream& operator<< (MsgStream& os, const TrkDriftCircleMath::Cluster& cl) -{ +MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::Cluster& cl) { os << cl.position() << " err " << cl.err(); - if (cl.id().measuresPhi()) os << " phi"; - else os << " eta"; + if (cl.id().measuresPhi()) + os << " phi"; + else + os << " eta"; return os; } -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::Cluster& cl ) -{ +std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::Cluster& cl) { os << cl.position() << " err " << cl.err(); - if (cl.id().measuresPhi()) os << " phi"; - else os << " eta"; + if (cl.id().measuresPhi()) + os << " phi"; + else + os << " eta"; return os; } diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/ClusterId.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/ClusterId.cxx index 28a32a4ba8f2261d68c6f946bb171c866a448c4e..1e7a9f4bb984348c509490428b3dcd5fec18d4bf 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/ClusterId.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/ClusterId.cxx @@ -4,16 +4,18 @@ #include "TrkDriftCircleMath/ClusterId.h" - namespace TrkDriftCircleMath { -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::ClusterId& id ) -{ - if( id.isTgc() ) os << "TGC"; - else os << "RPC"; - if( id.measuresPhi() ) os << " phi"; - else os << " eta"; - return os; -} + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::ClusterId& id) { + if (id.isTgc()) + os << "TGC"; + else + os << "RPC"; + if (id.measuresPhi()) + os << " phi"; + else + os << " eta"; + return os; + } -} // namespace TrkDriftCircleMath +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/CurvedSegmentFinder.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/CurvedSegmentFinder.cxx index a710af94537b7d77b830b2b575bb3857e738f55f..e2b6cc28aaec5a4469bc4648567d18605b69e8de 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/CurvedSegmentFinder.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/CurvedSegmentFinder.cxx @@ -3,101 +3,102 @@ */ #include "TrkDriftCircleMath/CurvedSegmentFinder.h" -#define sq(x) ((x)*(x)) - +#define sq(x) ((x) * (x)) namespace TrkDriftCircleMath { - - void CurvedSegmentFinder::curvedSegments(const ChamberGeometry& mdtGeo,SegVec& segs) { - int nCurved = 0; - //collect all the ML1 and ML2 only segments - SegVec ml1segs, ml2segs; - for(SegIt it=segs.begin(); it!=segs.end(); ++it) { - int isBarrel = (*it).dcs()[0].id().isBarrel(); - if(!isBarrel) continue; - - if((*it).hitsMl2() == 0) { - ml1segs.push_back( (*it) ); - } - else if((*it).hitsMl1() == 0) { - ml2segs.push_back( (*it) ); - } - } - //check that both ML have segments - if(ml1segs.size() == 0 || ml2segs.size() == 0) return; - //Chamber information needed to calculate Delta b - const LocPos& ml1LocPos = mdtGeo.tubePosition(0,mdtGeo.nlay(),0); - const LocPos& ml2LocPos = mdtGeo.tubePosition(1,1,0); - double chamberMidPtY = (ml1LocPos.y() + ml2LocPos.y())/2.0; - //loop over the ML segments and find matches - if(m_debugLevel >= 10) std::cout << "CurvedSegmentsFinder begining match with " << ml1segs.size() << " ML1 segments and " << ml2segs.size() << " ML2 segments" << std::endl; - for(SegIt ml1=ml1segs.begin(); ml1!=ml1segs.end(); ++ml1) { - //bool foundCurvedSeg = false; - for(SegIt ml2=ml2segs.begin(); ml2!=ml2segs.end(); ++ml2) { - //angle between the 2 segments - double deltaAlpha = ml1->line().phi() - ml2->line().phi(); - //distance of closest approach between the 2 segments at the middle of chamber - double mid1 = (chamberMidPtY - ml1->line().position().y())/tan(ml1->line().phi()) + ml1->line().position().x(); - double mid2 = (chamberMidPtY - ml2->line().position().y())/tan(ml2->line().phi()) + ml2->line().position().x(); - double y01 = ml1->line().position().y() - ml1->line().position().x()*tan(ml1->line().phi()); - double y02 = ml2->line().position().y() - ml2->line().position().x()*tan(ml2->line().phi()); - double deltab = (mid2*tan(ml1->line().phi()) - chamberMidPtY + y01)/(sqrt(1+sq(tan(ml1->line().phi())))); - double deltab2 = (mid1*tan(ml2->line().phi()) - chamberMidPtY + y02)/(sqrt(1+sq(tan(ml2->line().phi())))); - if(fabs(deltab2) < fabs(deltab)) deltab = deltab2; - if(fabs(deltaAlpha) < m_maxDeltaAlpha && fabs(deltab) < m_maxDeltab) { - nCurved++; - //foundCurvedSeg = true; - if(m_debugLevel >= 10) std::cout << "CurvedSegment combination found with parameters (DeltaAlpha,Deltab) = (" << deltaAlpha << ", " << deltab << ")" << std::endl; - //build the curved segment - DCOnTrackVec dcs = ml1->dcs(); - DCOnTrackVec dcs2 = ml2->dcs(); - DCOnTrackIt ml2dcsIt = dcs2.begin(); - for(; ml2dcsIt != dcs2.end(); ++ml2dcsIt) dcs.push_back((*ml2dcsIt)); - double segChi2 = ml1->chi2() + ml2->chi2(); - double segNDoF = ml1->ndof() + ml2->ndof(); - Segment seg(ml1->line(),dcs,segChi2,segNDoF,ml1->dtheta(),ml1->dy0()); - //find the x coordinate of at the middle of the chamber for ml2 segment - float xb = ml2->line().position().x() - (ml2->line().position().y()-chamberMidPtY)/tan(ml2->line().phi()); - //set the curvature parameters - seg.setCurvatureParameters(deltaAlpha,xb); - //hit information - seg.deltas( ml1->deltas() + ml2->deltas() ); - seg.hitsOutOfTime( ml1->hitsOutOfTime() + ml2->hitsOutOfTime() ); - seg.hitsOnTrack( ml1->hitsOnTrack() + ml2->hitsOnTrack() ); - seg.hitsPerMl( ml1->hitsMl1(), ml2->hitsMl2() ); - seg.closeHits( ml1->closeHits() + ml2->closeHits() ); - //associated clusters - CLVec clusters; - double Ml1y = ml1->line().position().y(); - double Ml2y = ml2->line().position().y(); - if(Ml1y < Ml2y) { - for(CLVec::const_iterator it=ml1->clusters().begin(); it!=ml1->clusters().end(); ++it) { - if(it->y() < Ml1y) clusters.push_back( (*it) ); - } - for(CLVec::const_iterator it=ml2->clusters().begin(); it!=ml2->clusters().end(); ++it) { - if(it->y() > Ml2y) clusters.push_back( (*it) ); - } - } - else { - for(CLVec::const_iterator it=ml1->clusters().begin(); it!=ml1->clusters().end(); ++it) { - if(it->y() > Ml1y) clusters.push_back( (*it) ); - } - for(CLVec::const_iterator it=ml2->clusters().begin(); it!=ml2->clusters().end(); ++it) { - if(it->y() < Ml2y) clusters.push_back( (*it) ); - } - } - //store the new segment - segs.push_back(seg); - //remove the ML2 segment from the list - //ml2segs.erase( ml2 ); - //break; - } - }//end loop on ml2 - }//end loop on ml1 - if(m_debugLevel >= 5) std::cout << "Finished CurvedSegments Finding, and found " << nCurved << " CurvedSegments" << std::endl; + void CurvedSegmentFinder::curvedSegments(const ChamberGeometry& mdtGeo, SegVec& segs) { + int nCurved = 0; + // collect all the ML1 and ML2 only segments + SegVec ml1segs, ml2segs; + for (SegIt it = segs.begin(); it != segs.end(); ++it) { + int isBarrel = (*it).dcs()[0].id().isBarrel(); + if (!isBarrel) continue; + + if ((*it).hitsMl2() == 0) { + ml1segs.push_back((*it)); + } else if ((*it).hitsMl1() == 0) { + ml2segs.push_back((*it)); + } + } + // check that both ML have segments + if (ml1segs.size() == 0 || ml2segs.size() == 0) return; + // Chamber information needed to calculate Delta b + const LocVec2D& ml1LocVec2D = mdtGeo.tubePosition(0, mdtGeo.nlay(), 0); + const LocVec2D& ml2LocVec2D = mdtGeo.tubePosition(1, 1, 0); + double chamberMidPtY = (ml1LocVec2D.y() + ml2LocVec2D.y()) / 2.0; + // loop over the ML segments and find matches + if (m_debugLevel >= 10) + std::cout << "CurvedSegmentsFinder begining match with " << ml1segs.size() << " ML1 segments and " << ml2segs.size() + << " ML2 segments" << std::endl; + for (SegIt ml1 = ml1segs.begin(); ml1 != ml1segs.end(); ++ml1) { + // bool foundCurvedSeg = false; + for (SegIt ml2 = ml2segs.begin(); ml2 != ml2segs.end(); ++ml2) { + // angle between the 2 segments + double deltaAlpha = ml1->line().phi() - ml2->line().phi(); + // distance of closest approach between the 2 segments at the middle of chamber + double mid1 = (chamberMidPtY - ml1->line().position().y()) / tan(ml1->line().phi()) + ml1->line().position().x(); + double mid2 = (chamberMidPtY - ml2->line().position().y()) / tan(ml2->line().phi()) + ml2->line().position().x(); + double y01 = ml1->line().position().y() - ml1->line().position().x() * tan(ml1->line().phi()); + double y02 = ml2->line().position().y() - ml2->line().position().x() * tan(ml2->line().phi()); + double deltab = (mid2 * tan(ml1->line().phi()) - chamberMidPtY + y01) / (sqrt(1 + sq(tan(ml1->line().phi())))); + double deltab2 = (mid1 * tan(ml2->line().phi()) - chamberMidPtY + y02) / (sqrt(1 + sq(tan(ml2->line().phi())))); + if (fabs(deltab2) < fabs(deltab)) deltab = deltab2; + if (fabs(deltaAlpha) < m_maxDeltaAlpha && fabs(deltab) < m_maxDeltab) { + nCurved++; + // foundCurvedSeg = true; + if (m_debugLevel >= 10) + std::cout << "CurvedSegment combination found with parameters (DeltaAlpha,Deltab) = (" << deltaAlpha << ", " + << deltab << ")" << std::endl; + // build the curved segment + DCOnTrackVec dcs = ml1->dcs(); + DCOnTrackVec dcs2 = ml2->dcs(); + DCOnTrackIt ml2dcsIt = dcs2.begin(); + for (; ml2dcsIt != dcs2.end(); ++ml2dcsIt) dcs.push_back((*ml2dcsIt)); + double segChi2 = ml1->chi2() + ml2->chi2(); + double segNDoF = ml1->ndof() + ml2->ndof(); + Segment seg(ml1->line(), dcs, segChi2, segNDoF, ml1->dtheta(), ml1->dy0()); + // find the x coordinate of at the middle of the chamber for ml2 segment + float xb = ml2->line().position().x() - (ml2->line().position().y() - chamberMidPtY) / tan(ml2->line().phi()); + // set the curvature parameters + seg.setCurvatureParameters(deltaAlpha, xb); + // hit information + seg.deltas(ml1->deltas() + ml2->deltas()); + seg.hitsOutOfTime(ml1->hitsOutOfTime() + ml2->hitsOutOfTime()); + seg.hitsOnTrack(ml1->hitsOnTrack() + ml2->hitsOnTrack()); + seg.hitsPerMl(ml1->hitsMl1(), ml2->hitsMl2()); + seg.closeHits(ml1->closeHits() + ml2->closeHits()); + // associated clusters + CLVec clusters; + double Ml1y = ml1->line().position().y(); + double Ml2y = ml2->line().position().y(); + if (Ml1y < Ml2y) { + for (CLVec::const_iterator it = ml1->clusters().begin(); it != ml1->clusters().end(); ++it) { + if (it->y() < Ml1y) clusters.push_back((*it)); + } + for (CLVec::const_iterator it = ml2->clusters().begin(); it != ml2->clusters().end(); ++it) { + if (it->y() > Ml2y) clusters.push_back((*it)); + } + } else { + for (CLVec::const_iterator it = ml1->clusters().begin(); it != ml1->clusters().end(); ++it) { + if (it->y() > Ml1y) clusters.push_back((*it)); + } + for (CLVec::const_iterator it = ml2->clusters().begin(); it != ml2->clusters().end(); ++it) { + if (it->y() < Ml2y) clusters.push_back((*it)); + } + } - return; - } + // store the new segment + segs.push_back(seg); + // remove the ML2 segment from the list + // ml2segs.erase( ml2 ); + // break; + } + } // end loop on ml2 + } // end loop on ml1 + if (m_debugLevel >= 5) std::cout << "Finished CurvedSegments Finding, and found " << nCurved << " CurvedSegments" << std::endl; + + return; + } -}//end namespace TrkDriftCircleMath +} // end namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DCOnTrack.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DCOnTrack.cxx index 4d7d9e46b9f9d6a79e4f7f242b407cd66f63b54c..ffdc13ee53802e9e518361ba1523718c93f14980 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DCOnTrack.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DCOnTrack.cxx @@ -4,49 +4,61 @@ #include "TrkDriftCircleMath/DCOnTrack.h" - namespace TrkDriftCircleMath { + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::DCOnTrack& dc) { + double pull = dc.residual() / dc.dr(); -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::DCOnTrack& dc ) -{ - double pull = dc.residual()/dc.dr(); - - os << dc.position() << std::setw(6) << " r " << dc.r() << " dr " << dc.dr() << " id " << dc.id(); - if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::EarlyHit) os << " EarlyHit"; - else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::InTime) os << " InTime"; - else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::LateHit) os << " LateHit"; - else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::EmptyTube) os << " EmptyTube"; - else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::NotCrossed) os << " NotCrossed"; - else os << " unknown state"; - os << " res " << dc.residual() << " pull " << pull; - if( dc.dr() != dc.drPrecise() ) { - os << " pull(2) " << dc.residual()/dc.drPrecise(); - } - os << " errTrk " << dc.errorTrack(); - if( dc.state() == TrkDriftCircleMath::DCOnTrack::OnTrack ) os << " OnTrack "; - else if( dc.state() == TrkDriftCircleMath::DCOnTrack::Delta ) os << " Delta "; - else if( dc.state() == TrkDriftCircleMath::DCOnTrack::OutOfTime ) os << " OutOfTime "; - else if( dc.state() == TrkDriftCircleMath::DCOnTrack::CloseDC ) os << " CloseDC "; - return os; -} - -MsgStream& operator<< (MsgStream& os, const TrkDriftCircleMath::DCOnTrack& dc) -{ - if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::EarlyHit) os << " EarlyHit"; - else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::InTime) os << " InTime"; - else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::LateHit) os << " LateHit"; - else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::EmptyTube) os << " EmptyTube"; - else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::NotCrossed) os << " NotCrossed"; - else os << " unknown state"; - os << std::setw(7) << " res " << dc.residual() - << std::setw(7) << " pull " << dc.residual()/dc.dr(); - if (dc.state() == TrkDriftCircleMath::DCOnTrack::OnTrack) os << " OnTrack "; - else if (dc.state() == TrkDriftCircleMath::DCOnTrack::Delta) os << " Delta "; - else if (dc.state() == TrkDriftCircleMath::DCOnTrack::OutOfTime) os << " OutOfTime "; - else if (dc.state() == TrkDriftCircleMath::DCOnTrack::CloseDC) os << " CloseDC "; - return os; -} + os << dc.position() << std::setw(6) << " r " << dc.r() << " dr " << dc.dr() << " id " << dc.id(); + if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::EarlyHit) + os << " EarlyHit"; + else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::InTime) + os << " InTime"; + else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::LateHit) + os << " LateHit"; + else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::EmptyTube) + os << " EmptyTube"; + else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::NotCrossed) + os << " NotCrossed"; + else + os << " unknown state"; + os << " res " << dc.residual() << " pull " << pull; + if (dc.dr() != dc.drPrecise()) { os << " pull(2) " << dc.residual() / dc.drPrecise(); } + os << " errTrk " << dc.errorTrack(); + if (dc.state() == TrkDriftCircleMath::DCOnTrack::OnTrack) + os << " OnTrack "; + else if (dc.state() == TrkDriftCircleMath::DCOnTrack::Delta) + os << " Delta "; + else if (dc.state() == TrkDriftCircleMath::DCOnTrack::OutOfTime) + os << " OutOfTime "; + else if (dc.state() == TrkDriftCircleMath::DCOnTrack::CloseDC) + os << " CloseDC "; + return os; + } + MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::DCOnTrack& dc) { + if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::EarlyHit) + os << " EarlyHit"; + else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::InTime) + os << " InTime"; + else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::LateHit) + os << " LateHit"; + else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::EmptyTube) + os << " EmptyTube"; + else if (dc.DriftCircle::state() == TrkDriftCircleMath::DriftCircle::NotCrossed) + os << " NotCrossed"; + else + os << " unknown state"; + os << std::setw(7) << " res " << dc.residual() << std::setw(7) << " pull " << dc.residual() / dc.dr(); + if (dc.state() == TrkDriftCircleMath::DCOnTrack::OnTrack) + os << " OnTrack "; + else if (dc.state() == TrkDriftCircleMath::DCOnTrack::Delta) + os << " Delta "; + else if (dc.state() == TrkDriftCircleMath::DCOnTrack::OutOfTime) + os << " OutOfTime "; + else if (dc.state() == TrkDriftCircleMath::DCOnTrack::CloseDC) + os << " CloseDC "; + return os; + } -} // namespace TrkDriftCircleMath +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DCSLFitter.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DCSLFitter.cxx index 8a50d6dfb55dc2f6c59a72fa183667d7c977cc09..d58ce71cbfef2781a5f42c328f8aebf078758083 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DCSLFitter.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DCSLFitter.cxx @@ -8,296 +8,257 @@ namespace TrkDriftCircleMath { - DCSLFitter::DCSLFitter() : m_debug(false) { - - } - - bool DCSLFitter::fit( Segment& result, const Line& line, const DCOnTrackVec& dcs, const HitSelection& selection, double ) const - { - if(m_debug) std::cout << "New seg: " << std::endl; //<< seg; - - // reserve enough space for hits - std::vector<FitData> data; - data.reserve(100); - result.dcs().reserve(100); - - unsigned int N = dcs.size(); - - if(N<2) { - return false; - } - - if( selection.size() != N ) { - std::cout << "DCSLFitter <bad HitSelection>" << std::endl; - return false; - }else{ - int used(0); - for(unsigned int i=0;i<N;++i){ - if( selection[i] == 0 ) ++used; - } - if(used < 2){ - if(m_debug) std::cout << "TOO FEW HITS SELECTED" << std::endl; - return false; - } - } - - double S(0),Sz(0),Sy(0); - double Zc(0),Yc(0); - data.resize(N); - { - - - int ii(0); - - DCOnTrackVec::const_iterator it = dcs.begin(); - DCOnTrackVec::const_iterator it_end = dcs.end(); - for( ;it!=it_end; ++it ){ - - FitData& datum = data[ii]; - datum.y = it->y(); - datum.z = it->x(); - datum.r = std::abs( it->r() ); - if( it->dr() > 0.) - datum.w = 1./( it->dr() ); - else - datum.w = 0.; - datum.w*=datum.w; - if(datum.r<0){ - datum.r = 0.; - if(m_debug) std::cout << "DCSLFitter ERROR: <Negative r> " << datum.r << std::endl; - } - if(m_debug) - std::cout << "DC: (" << datum.y << "," << datum.z << ") R = " << datum.r - << " W " << datum.w << " sel " << selection[ii] << std::endl; - - if( selection[ii] == 0 ){ - S+=datum.w; - Sz+= datum.w*datum.z; - Sy+= datum.w*datum.y; - } - ++ii; - } - } - Zc = Sz/S; - Yc = Sy/S; - - if(m_debug) - std::cout << "Yc " << Yc << " Zc " << Zc << std::endl; - // - // shift hits - // - //std::cout << "Shifted d " << d << std::endl; - Sy = 0; - Sz = 0; - double Szz(0),Syy(0),Szy(0),Syyzz(0); - - for(unsigned int i=0;i<N;++i){ - - FitData& datum = data[i]; - - datum.y -= Yc; - datum.z -= Zc; - - if(selection[i]) continue; - - datum.rw = datum.r*datum.w; - datum.ryw = datum.rw*datum.y; - datum.rzw = datum.rw*datum.z; - - Szz += datum.z*datum.z*datum.w; - Syy += datum.y*datum.y*datum.w; - Szy += datum.y*datum.z*datum.w; - Syyzz += (datum.y-datum.z)*(datum.y+datum.z)*datum.w; - } - - if(m_debug) - std::cout << " Szz " << Szz << " Syy " << Syy - << " Szy " << Szy << " Syyzz " << Syyzz << std::endl; - - unsigned int count(0); - double R(0),Ry(0),Rz(0); - double Att(0); - double Add = S; - double Bt(0); - double Bd(0); - double Stt(0); - double Sd(0); - - double theta = line.phi(); - double cosin = cos( theta ); - double sinus = sin( theta ); - - if(m_debug) - std::cout << "cos " << cosin << " sin " << sinus << std::endl; - - // make sure 0 <= theta < PI - if ( sinus < 0.0 ) { - if(m_debug) { - std::cout << "sinus < 0.0 " << std::endl; - } - sinus = -sinus; - cosin = -cosin; - } else if ( sinus == 0.0 && cosin < 0.0 ) { - if(m_debug) { - std::cout << "sinus == 0.0 && cosin < 0.0" << std::endl; - } - cosin = -cosin; - } - // - // calculate shift - // - // double d = -( getZ( pos )-Zc)*sinus+( getY( pos )-Yc)*cosin; - double dshift = Zc*sinus-Yc*cosin; - if(m_debug) { - std::cout << " dshift " << dshift << std::endl; + bool DCSLFitter::fit(Segment& result, const Line& line, const DCOnTrackVec& dcs, const HitSelection& selection, double) const { + if (m_debug) std::cout << "New seg: " << std::endl; //<< seg; + + // reserve enough space for hits + std::vector<FitData> data; + data.reserve(100); + result.dcs().reserve(100); + + unsigned int N = dcs.size(); + + if (N < 2) { return false; } + + if (selection.size() != N) { + std::cout << "DCSLFitter <bad HitSelection>" << std::endl; + return false; + } else { + int used(0); + for (unsigned int i = 0; i < N; ++i) { + if (selection[i] == 0) ++used; + } + if (used < 2) { + if (m_debug) std::cout << "TOO FEW HITS SELECTED" << std::endl; + return false; + } + } + + double S(0), Sz(0), Sy(0); + double Zc(0), Yc(0); + data.resize(N); + { + int ii(0); + + DCOnTrackVec::const_iterator it = dcs.begin(); + DCOnTrackVec::const_iterator it_end = dcs.end(); + for (; it != it_end; ++it) { + FitData& datum = data[ii]; + datum.y = it->y(); + datum.z = it->x(); + datum.r = std::abs(it->r()); + if (it->dr() > 0.) + datum.w = 1. / (it->dr()); + else + datum.w = 0.; + datum.w *= datum.w; + if (datum.r < 0) { + datum.r = 0.; + if (m_debug) std::cout << "DCSLFitter ERROR: <Negative r> " << datum.r << std::endl; + } + if (m_debug) + std::cout << "DC: (" << datum.y << "," << datum.z << ") R = " << datum.r << " W " << datum.w << " sel " + << selection[ii] << std::endl; + + if (selection[ii] == 0) { + S += datum.w; + Sz += datum.w * datum.z; + Sy += datum.w * datum.y; + } + ++ii; + } + } + Zc = Sz / S; + Yc = Sy / S; + + if (m_debug) std::cout << "Yc " << Yc << " Zc " << Zc << std::endl; + // + // shift hits + // + Sy = 0; + Sz = 0; + double Szz(0), Syy(0), Szy(0), Syyzz(0); + + for (unsigned int i = 0; i < N; ++i) { + FitData& datum = data[i]; + + datum.y -= Yc; + datum.z -= Zc; + + if (selection[i]) continue; + + datum.rw = datum.r * datum.w; + datum.ryw = datum.rw * datum.y; + datum.rzw = datum.rw * datum.z; + + Szz += datum.z * datum.z * datum.w; + Syy += datum.y * datum.y * datum.w; + Szy += datum.y * datum.z * datum.w; + Syyzz += (datum.y - datum.z) * (datum.y + datum.z) * datum.w; + } + + if (m_debug) std::cout << " Szz " << Szz << " Syy " << Syy << " Szy " << Szy << " Syyzz " << Syyzz << std::endl; + + unsigned int count{0}; + double R{0}, Ry{0}, Rz{0}, Att{0}, Add{S}, Bt{0}, Bd{0}, Stt{0}, Sd{0}; + + double theta = line.phi(); + double cosin = std::cos(theta); + double sinus = std::sin(theta); + + if (m_debug) std::cout << "cos " << cosin << " sin " << sinus << std::endl; + + // make sure 0 <= theta < PI + if (sinus < 0.0) { + if (m_debug) { std::cout << "sinus < 0.0 " << std::endl; } + sinus = -sinus; + cosin = -cosin; + } else if (sinus == 0.0 && cosin < 0.0) { + if (m_debug) { std::cout << "sinus == 0.0 && cosin < 0.0" << std::endl; } + cosin = -cosin; + } + // + // calculate shift + // + // double d = -( getZ( pos )-Zc)*sinus+( getY( pos )-Yc)*cosin; + double dshift = Zc * sinus - Yc * cosin; + if (m_debug) { std::cout << " dshift " << dshift << std::endl; } + double d = line.y0() + Zc * sinus - Yc * cosin; + + if (m_debug) { + std::cout << "____________INITIAL VALUES________________" << count << std::endl; + std::cout << "Theta " << theta << " d " << d << std::endl; + } + + while (count < 100) { + if (m_debug) std::cout << "____________NEW ITERATION________________" << count << std::endl; + R = 0; + Ry = 0; + Rz = 0; + + double chi2(0); + + for (unsigned int i = 0; i < N; ++i) { + if (selection[i]) continue; + + FitData& datum = data[i]; + + double dist = datum.y * cosin - datum.z * sinus; + if (dist > d) { + R -= datum.rw; + Ry -= datum.ryw; + Rz -= datum.rzw; + if (m_debug) { + double res = std::abs(dist - d) - datum.r; + std::cout << " < - > " << dist - d << " r " << datum.r << " res " << res; + chi2 += res * res * datum.w * datum.w; + } + } else { + R += datum.rw; + Ry += datum.ryw; + Rz += datum.rzw; + if (m_debug) { + double res = std::abs(dist - d) - datum.r; + std::cout << " < + > " << dist - d << " r " << datum.r << " res " << res; + chi2 += res * res * datum.w; + } + } + if (m_debug) std::cout << std::endl; + } + Att = Syy + cosin * (2 * sinus * Szy - cosin * Syyzz); + Bt = -Szy + cosin * (sinus * Syyzz + 2 * cosin * Szy + Rz) + sinus * Ry; + Bd = -S * d + R; + if (Att == 0) { + if (m_debug) std::cerr << "===> Error NewtonSLDCFitter ZERO Determinant" << std::endl; + if (data.capacity() > 100) { + data.reserve(100); + result.dcs().reserve(100); + } + return false; + } + theta += Bt / Att; + if (m_debug) std::cout << " new theta " << theta << " chi2 " << chi2 << std::endl; + if (theta < 0.0) theta += M_PI; + if (theta >= M_PI) theta -= M_PI; + cosin = std::cos(theta); + sinus = std::sqrt(1 - cosin * cosin); + d = R / S; + if (m_debug) { + double dshift = Zc * sinus - Yc * cosin; + std::cout << " d " << d << " theta " << theta << " dshift " << dshift << std::endl; + std::cout << "R " << R << " Ry " << Ry << " Rz " << Rz << std::endl; + std::cout << "Att " << Att << " Add " << Add << " Bt " << Bt << " Bd " << Bd << std::endl; + std::cout << "dTheta " << Bt / Att << " dD " << Bd / Add << std::endl; + } + if (std::abs(Bt / Att) < 0.001 && std::abs(Bd / Add) < 0.001) { + Stt = std::sqrt(1 / Att); + Sd = std::sqrt(1 / Add); + if (m_debug) { + std::cout << "Fit converged after " << count << " iterations " << std::endl; + std::cout << "Theta " << theta << " d " << d << std::endl; + std::cout << "Errors: theta " << Stt << " d " << Sd << std::endl; + } + break; + } + ++count; + } + + if (count >= 100) { + if (data.capacity() > 100) { + result.dcs().reserve(100); + data.reserve(100); + } + return false; + } + if (m_debug) std::cout << "Calculating chi2" << std::endl; + + double yl{0}, chi2{0}; + + double dtheta = Stt; + double dy0 = Sd; + + if (m_debug) std::cout << "contributions to chi2: " << std::endl; + + result.dcs().clear(); + result.clusters().clear(); + result.emptyTubes().clear(); + + unsigned int nhits{0}; + + // calculate predicted hit positions from track parameters + for (unsigned int i = 0; i < N; ++i) { + FitData& datum = data[i]; + yl = cosin * datum.y - sinus * datum.z - d; + double dth = -(sinus * datum.y + cosin * datum.z) * Stt; + double errorResiduals = std::hypot(dth, Sd); + double residuals = std::abs(yl) - datum.r; + if (selection[i] == 0) { + ++nhits; + chi2 += residuals * residuals * datum.w; + } + result.dcs().emplace_back(dcs[i]); + result.dcs().back().residual(residuals); + result.dcs().back().errorTrack(errorResiduals); + + if (m_debug) { + std::cout << " r_track " << yl << " dr " << errorResiduals << " r_rt " << datum.r << " d_rt " << dcs[i].dr() << " res " + << residuals << " pull " << residuals * sqrt(datum.w) << " sel " << selection[i] << std::endl; + } + } + + result.set(chi2, nhits - 2, dtheta, dy0); + result.line().set(LocVec2D(Zc - sinus * d, Yc + cosin * d), theta); + + if (m_debug) { + std::cout << "Fit complete: Chi2 tof " << chi2 / (nhits - 2) << " " << !(chi2 / (nhits - 2) > 5) << std::endl; + if (chi2 / (nhits - 2) > 5) { std::cout << "_______NOT GOOD " << std::endl; } + std::cout << "fit done " << result << std::endl; + } + + if (data.capacity() > 100) { + result.dcs().reserve(100); + data.reserve(100); + } + return true; } - double d = line.y0() + Zc*sinus-Yc*cosin; - - if(m_debug) { - std::cout << "____________INITIAL VALUES________________" << count << std::endl; - std::cout << "Theta " << theta << " d " << d << std::endl; - } - - while(count<100){ - if(m_debug) std::cout << "____________NEW ITERATION________________" << count << std::endl; - R=0;Ry=0;Rz=0; - - double chi2(0); - - for(unsigned int i=0;i<N;++i){ - if(selection[i]) continue; - - FitData& datum = data[i]; - - double dist = datum.y*cosin-datum.z*sinus; - if(dist>d){ - R -= datum.rw; - Ry -= datum.ryw; - Rz -= datum.rzw; - if(m_debug) { - double res = std::abs(dist-d) - datum.r; - std::cout << " < - > " << dist - d << " r " << datum.r - << " res " << res; - chi2 += res*res*datum.w*datum.w; - } - }else{ - R += datum.rw; - Ry += datum.ryw; - Rz += datum.rzw; - if(m_debug) { - double res = std::abs(dist-d) - datum.r; - std::cout << " < + > " << dist - d << " r " << datum.r - << " res " << res; - chi2 += res*res*datum.w; - } - } - if(m_debug) std::cout << std::endl; - } - Att = Syy + cosin*(2*sinus*Szy - cosin*Syyzz); - Bt = -Szy + cosin*(sinus*Syyzz + 2*cosin*Szy + Rz) + sinus*Ry; - Bd = -S*d + R; - if(Att==0){ - if(m_debug) std::cerr << "===> Error NewtonSLDCFitter ZERO Determinant" << std::endl; - if( data.capacity() > 100 ) { - data.reserve(100); - result.dcs().reserve(100); - } - return false; - } - theta += Bt/Att; - if(m_debug) std::cout << " new theta " << theta << " chi2 " << chi2 << std::endl; - if ( theta < 0.0 ) theta += M_PI; - if ( theta >= M_PI ) theta -= M_PI; - cosin = cos(theta); - sinus = sqrt(1-cosin*cosin); - d = R/S; - if(m_debug) { - double dshift = Zc*sinus-Yc*cosin; - std::cout << " d " << d << " theta " << theta - << " dshift " << dshift << std::endl; - std::cout << "R " << R << " Ry " << Ry << " Rz " << Rz << std::endl; - std::cout << "Att " << Att << " Add " << Add << " Bt " << Bt << " Bd " << Bd << std::endl; - std::cout << "dTheta " << Bt/Att << " dD " << Bd/Add << std::endl; - } - if(fabs(Bt/Att) < 0.001 && fabs(Bd/Add) < 0.001){ - Stt = sqrt(1/Att); - Sd = sqrt(1/Add); - if(m_debug) { - std::cout << "Fit converged after " << count << " iterations " << std::endl; - std::cout << "Theta " << theta << " d " << d << std::endl; - std::cout << "Errors: theta " << Stt << " d " << Sd << std::endl; - } - break; - } - ++count; - } - - if( count >= 100 ){ - if( data.capacity() > 100 ) { - result.dcs().reserve(100); - data.reserve(100); - } - return false; - } - if(m_debug) std::cout << "Calculating chi2" << std::endl; - - double yl; - - double chi2 = 0; - - double dtheta = Stt; - double dy0 = Sd; - - if(m_debug) std::cout << "contributions to chi2: " << std::endl; - - result.dcs().clear(); - result.clusters().clear(); - result.emptyTubes().clear(); - - unsigned int nhits(0); - - // calculate predicted hit positions from track parameters - for(unsigned int i=0;i<N;++i){ - FitData& datum = data[i]; - yl = cosin*datum.y - sinus*datum.z - d; - double dth = -(sinus*datum.y + cosin*datum.z)*Stt; - double errorResiduals = sqrt( dth*dth + Sd*Sd ); - double residuals = fabs(yl) - datum.r; - if( selection[i] == 0 ) { - ++nhits; - chi2 += residuals*residuals*datum.w; - } - result.dcs().push_back(dcs[i]); - result.dcs().back().residual( residuals ); - result.dcs().back().errorTrack( errorResiduals ); - - if( m_debug ){ - std::cout << " r_track " << yl << " dr " << errorResiduals - << " r_rt " << datum.r << " d_rt " << dcs[i].dr() - << " res " << residuals << " pull " << residuals*sqrt(datum.w) - << " sel " << selection[i] << std::endl; - } - - } - - result.set( chi2, nhits-2, dtheta, dy0 ); - result.line().set( LocPos( Zc - sinus*d, Yc + cosin*d ), theta ); - - - if(m_debug) { - std::cout << "Fit complete: Chi2 tof " << chi2/(nhits-2) - << " " << !(chi2/(nhits-2) > 5) << std::endl; - if(chi2/(nhits-2) > 5) { - std::cout << "_______NOT GOOD " << std::endl; - } - std::cout << "fit done " << result << std::endl; - } - - if( data.capacity() > 100 ) { - result.dcs().reserve(100); - data.reserve(100); - } - return true; - } -} - +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DriftCircle.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DriftCircle.cxx index 1d9c63bcd4c63b33f9813edb44f205a1d2d4bbf4..0b79f31a502c705d724c69b28ac279a5e4cbb7dc 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DriftCircle.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/DriftCircle.cxx @@ -4,26 +4,36 @@ #include "TrkDriftCircleMath/DCOnTrack.h" -MsgStream& operator<< (MsgStream& os, const TrkDriftCircleMath::DriftCircle& dc) -{ - os << dc.position() << std::setw(6) << " r " << dc.r() << " dr " << dc.dr() << " id " << dc.id(); - if (dc.state() == TrkDriftCircleMath::DriftCircle::EarlyHit) os << " EarlyHit"; - else if (dc.state() == TrkDriftCircleMath::DriftCircle::InTime) os << " InTime"; - else if (dc.state() == TrkDriftCircleMath::DriftCircle::LateHit) os << " LateHit"; - else if (dc.state() == TrkDriftCircleMath::DriftCircle::EmptyTube) os << " EmptyTube"; - else if (dc.state() == TrkDriftCircleMath::DriftCircle::NotCrossed) os << " NotCrossed"; - else os << " unknown state"; +MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::DriftCircle& dc) { + os << dc.position() << std::setw(6) << " r " << dc.r() << " dr " << dc.dr() << " id " << dc.id(); + if (dc.state() == TrkDriftCircleMath::DriftCircle::EarlyHit) + os << " EarlyHit"; + else if (dc.state() == TrkDriftCircleMath::DriftCircle::InTime) + os << " InTime"; + else if (dc.state() == TrkDriftCircleMath::DriftCircle::LateHit) + os << " LateHit"; + else if (dc.state() == TrkDriftCircleMath::DriftCircle::EmptyTube) + os << " EmptyTube"; + else if (dc.state() == TrkDriftCircleMath::DriftCircle::NotCrossed) + os << " NotCrossed"; + else + os << " unknown state"; return os; } -std::ostream& operator<< (std::ostream& os, const TrkDriftCircleMath::DriftCircle& dc) -{ +std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::DriftCircle& dc) { os << dc.position() << " r " << dc.r() << " dr " << dc.dr() << " id " << dc.id(); - if (dc.state() == TrkDriftCircleMath::DriftCircle::EarlyHit) os << " EarlyHit"; - else if (dc.state() == TrkDriftCircleMath::DriftCircle::InTime) os << " InTime"; - else if (dc.state() == TrkDriftCircleMath::DriftCircle::LateHit) os << " LateHit"; - else if (dc.state() == TrkDriftCircleMath::DriftCircle::EmptyTube) os << " EmptyTube"; - else if (dc.state() == TrkDriftCircleMath::DriftCircle::NotCrossed) os << " NotCrossed"; - else os << " unknown state"; + if (dc.state() == TrkDriftCircleMath::DriftCircle::EarlyHit) + os << " EarlyHit"; + else if (dc.state() == TrkDriftCircleMath::DriftCircle::InTime) + os << " InTime"; + else if (dc.state() == TrkDriftCircleMath::DriftCircle::LateHit) + os << " LateHit"; + else if (dc.state() == TrkDriftCircleMath::DriftCircle::EmptyTube) + os << " EmptyTube"; + else if (dc.state() == TrkDriftCircleMath::DriftCircle::NotCrossed) + os << " NotCrossed"; + else + os << " unknown state"; return os; } diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Line.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Line.cxx index c16ecf3b73829fe0a6a631196fd5799690c53f4c..2c3e10c99769463fcb52ac403118e11fd5a90c52 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Line.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Line.cxx @@ -4,17 +4,12 @@ #include "TrkDriftCircleMath/Line.h" - namespace TrkDriftCircleMath { + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::Line& l) { + os << " phi " << l.phi() << " pos " << l.position(); + // << " pos " << l.position() << " dir " << l.direction(); + return os; + } -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::Line& l ) -{ - os << " phi " << l.phi() << " pos " << l.position(); - // << " pos " << l.position() << " dir " << l.direction(); - return os; -} - - -} // namespace TrkDriftCircleMath - +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/LocVec2D.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/LocVec2D.cxx index 093ea4e3d6b4d6f7b6ab15d0e49ee7e9b5f14ca8..8755ee21f85e314c82f6e2777b1ee290a0522925 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/LocVec2D.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/LocVec2D.cxx @@ -4,15 +4,11 @@ #include "TrkDriftCircleMath/LocVec2D.h" - namespace TrkDriftCircleMath { + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::LocVec2D& lv) { + os << " x " << lv.x() << " y " << lv.y(); + return os; + } -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::LocVec2D& lv ) -{ - os << " x " << lv.x() << " y " << lv.y(); - return os; -} - - -} // namespace TrkDriftCircleMath +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MatchDCWithLine.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MatchDCWithLine.cxx index 4ad8375322d3018cd1373bf5c9a76a2281b2c530..894972a08a0967058cdc1766de3b23f7654c9415 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MatchDCWithLine.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MatchDCWithLine.cxx @@ -1,132 +1,142 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TrkDriftCircleMath/MatchDCWithLine.h" +namespace TrkDriftCircleMath { + const DCOnTrackVec& MatchDCWithLine::match(const DCVec& dcs) { + // clear cached information + reset(); + DCCit it = dcs.begin(); + DCCit it_end = dcs.end(); + for (; it != it_end; ++it) { + double dline = m_resWithLine.residual(it->position()); + double rhit = it->r() < 0. ? -it->r() : it->r(); + if (dline < 0.) dline *= -1.; + + double res = dline - rhit; + + DCOnTrack dcOnTrack(*it, res); + + matchDC(dcOnTrack, res, dline); + + if (dcOnTrack.state() != DCOnTrack::OutsideRoad) { + /** add check to remove hits in the same tube + check whether + - this is not the first tube + - the tubes have the same id */ + if (!m_dcOnTrackVec.empty() && m_dcOnTrackVec.back().id() == it->id()) { + // take the hit with the smallest residual + if (fabs(m_dcOnTrackVec.back().residual()) > fabs(res)) { + // exchange the two hits + m_dcOnTrackVec.pop_back(); + m_dcOnTrackVec.push_back(dcOnTrack); + } + } else { + m_dcOnTrackVec.push_back(dcOnTrack); + } + } + } + return m_dcOnTrackVec; + } -namespace TrkDriftCircleMath { + const DCOnTrackVec& MatchDCWithLine::match(const DCOnTrackVec& dcs, const HitSelection* selection, bool recoverMdtHits, + bool usePrecise) { + // clear cached information + reset(); + + DCOnTrackCit it = dcs.begin(); + DCOnTrackCit it_end = dcs.end(); + unsigned int index = 0; + for (; it != it_end; ++it, ++index) { + double dline = m_resWithLine.residual(it->position()); + double rhit = it->r() < 0. ? -it->r() : it->r(); + if (dline < 0.) dline *= -1.; + + double res = dline - rhit; + + DCOnTrack dcOnTrack(*it, res); + dcOnTrack.errorTrack(it->errorTrack()); + + // check whether any DCOnTracks change state from or to OnTrack with respect to the old selection + if ((dcOnTrack.state() == DCOnTrack::OnTrack || it->state() == DCOnTrack::OnTrack) && dcOnTrack.state() != it->state()) + ++m_matchDifference; + + if (selection) { + if ((*selection)[index] == 0) { + matchDC(dcOnTrack, res, dline, true, false, usePrecise); + } else if (recoverMdtHits) { + matchDC(dcOnTrack, res, dline, false, false, usePrecise); + } else { + matchDC(dcOnTrack, res, dline, false, true, usePrecise); + } + } else { + matchDC(dcOnTrack, res, dline, false, false, usePrecise); + } + + if (dcOnTrack.state() != DCOnTrack::OutsideRoad) m_dcOnTrackVec.push_back(dcOnTrack); + } + return m_dcOnTrackVec; + } - const DCOnTrackVec& MatchDCWithLine::match( const DCVec& dcs ) - { - // clear cached information - reset(); - DCCit it = dcs.begin(); - DCCit it_end = dcs.end(); - for( ;it!=it_end;++it ) { - - double dline = m_resWithLine.residual( it->position() ); - double rhit = it->r() < 0. ? -it->r() : it->r(); - if( dline < 0. ) dline *= -1.; - - double res = dline - rhit; - - - DCOnTrack dcOnTrack( *it, res ); - - matchDC( dcOnTrack, res, dline ); - - - if( dcOnTrack.state() != DCOnTrack::OutsideRoad ) { - /** add check to remove hits in the same tube - check whether - - this is not the first tube - - the tubes have the same id */ - if( !m_dcOnTrackVec.empty() && m_dcOnTrackVec.back().id() == it->id() ) { - // take the hit with the smallest residual - if( fabs(m_dcOnTrackVec.back().residual()) > fabs(res) ){ - // exchange the two hits - m_dcOnTrackVec.pop_back(); - m_dcOnTrackVec.push_back( dcOnTrack ); - } - }else{ - m_dcOnTrackVec.push_back( dcOnTrack ); - } - } + void MatchDCWithLine::matchDC(DCOnTrack& dcOnTrack, double& res, double& dline, bool forceOnTrack, bool forceOffTrack, + bool usePrecise) { + // check whether hit within range + double error = usePrecise ? dcOnTrack.drPrecise() : dcOnTrack.dr(); + if (forceOnTrack || (!forceOffTrack && (dcOnTrack.DriftCircle::state() == DriftCircle::InTime && select(res, error)))) { + ++m_onTracks; + ++m_passedTubes; + if (dcOnTrack.id().ml() == 0) + ++m_ml1; + else + ++m_ml2; + dcOnTrack.state(DCOnTrack::OnTrack); + } else { + if (dline < m_tubeRadius) { + if (res < 0. || dcOnTrack.DriftCircle::state() == DriftCircle::LateHit) { + dcOnTrack.state(DCOnTrack::OutOfTime); + ++m_outOfTimes; + } else { + dcOnTrack.state(DCOnTrack::Delta); + ++m_deltas; + } + ++m_passedTubes; + } else { + if (dline < m_closeByCut) { + dcOnTrack.state(DCOnTrack::CloseDC); + ++m_closeHits; + } else { + dcOnTrack.state(DCOnTrack::OutsideRoad); + } + if (dline < m_showerCut) { ++m_showerHits; } + } + } } - return m_dcOnTrackVec; - } - - - const DCOnTrackVec& MatchDCWithLine::match( const DCOnTrackVec& dcs, const HitSelection* selection, bool recoverMdtHits, bool usePrecise ) - { - // clear cached information - reset(); - - DCOnTrackCit it = dcs.begin(); - DCOnTrackCit it_end = dcs.end(); - unsigned int index = 0; - for( ;it!=it_end;++it, ++index ) { - - double dline = m_resWithLine.residual( it->position() ); - double rhit = it->r() < 0. ? -it->r() : it->r(); - if( dline < 0. ) dline *= -1.; - - double res = dline - rhit; - - DCOnTrack dcOnTrack( *it, res ); - dcOnTrack.errorTrack(it->errorTrack()); - - // check whether any DCOnTracks change state from or to OnTrack with respect to the old selection - if( (dcOnTrack.state() == DCOnTrack::OnTrack || it->state() == DCOnTrack::OnTrack ) && dcOnTrack.state() != it->state() ) ++m_matchDifference; - - if( selection ){ - if( (*selection)[index] == 0 ){ - matchDC( dcOnTrack, res, dline, true, false, usePrecise ); - }else if( recoverMdtHits ) { - matchDC( dcOnTrack, res, dline, false, false, usePrecise ); - }else{ - matchDC( dcOnTrack, res, dline, false, true, usePrecise ); - } - }else{ - matchDC( dcOnTrack, res, dline, false, false, usePrecise ); - } - - if( dcOnTrack.state() != DCOnTrack::OutsideRoad ) m_dcOnTrackVec.push_back( dcOnTrack ); + + bool MatchDCWithLine::select(double residual, double error) const { + if (residual < 0.) residual *= -1.; + switch (m_strategy) { + case Road: return residual < m_deltaCut; + case Pull: return residual < m_deltaCut * error; + default: return false; + } } - return m_dcOnTrackVec; - } - - void MatchDCWithLine::matchDC( DCOnTrack& dcOnTrack, double& res, double& dline, bool forceOnTrack, bool forceOffTrack, bool usePrecise ){ - - - // check whether hit within range - double error = usePrecise ? dcOnTrack.drPrecise() : dcOnTrack.dr(); - if( forceOnTrack || (!forceOffTrack && (dcOnTrack.DriftCircle::state() == DriftCircle::InTime && select( res, error ) ) ) ){ - - ++m_onTracks; - ++m_passedTubes; - if( dcOnTrack.id().ml() == 0 ) ++m_ml1; - else ++m_ml2; - dcOnTrack.state( DCOnTrack::OnTrack ); -// std::cout << " DCOnTrack::OnTrack " << std::endl; - }else{ - - if( dline < m_tubeRadius ){ - if( res < 0. || dcOnTrack.DriftCircle::state() == DriftCircle::LateHit ){ - dcOnTrack.state( DCOnTrack::OutOfTime ); - ++m_outOfTimes; -// std::cout << " DCOnTrack::OutOfTime " << std::endl; - }else{ - dcOnTrack.state( DCOnTrack::Delta ); - ++m_deltas; -// std::cout << " DCOnTrack::Delta " << std::endl; - } - ++m_passedTubes; - }else{ - if( dline < m_closeByCut ) { - dcOnTrack.state( DCOnTrack::CloseDC ); - ++m_closeHits; - }else{ - dcOnTrack.state( DCOnTrack::OutsideRoad ); - } - if( dline < m_showerCut ) { - ++m_showerHits; - } - } + void MatchDCWithLine::reset() { + // clear cache + m_dcOnTrackVec.clear(); + + m_outOfTimes = 0; + m_deltas = 0; + m_onTracks = 0; + m_passedTubes = 0; + m_ml1 = 0; + m_ml2 = 0; + m_closeHits = 0; + m_showerHits = 0; + m_matchDifference = 0; } - } -} +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtChamberGeometry.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtChamberGeometry.cxx index bb4d811098a1ff5dda1b827f778179e91f338eec..4852e4d30ecf16322f954ec3fc6c8a9695afd2b7 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtChamberGeometry.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtChamberGeometry.cxx @@ -1,217 +1,214 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TrkDriftCircleMath/MdtChamberGeometry.h" -#include "TrkDriftCircleMath/SortDcsByY.h" -#include <iostream> +#include <MuonIdHelpers/MdtIdHelper.h> /// maxNTubesPerLayer +#include <TString.h> // for Form + #include <algorithm> -#include <TString.h> // for Form +#include <iostream> -// maxNTubesPerLayer is included via MdtChamberGeometry.h -> DriftCircle.h +#include "TrkDriftCircleMath/SortDcsByY.h" +namespace { + constexpr int maxNTubesPerLayer = MdtIdHelper::maxNTubesPerLayer; +} namespace TrkDriftCircleMath { - MdtChamberGeometry::MdtChamberGeometry() : - m_id{}, - m_nml{}, - m_nlay{}, - m_tubeStage{}, - m_stationTheta{}, - m_allTubes{}, - m_crossedTubes{}, - m_cachedPos(0.,0.), - m_validGeometry{}, - m_isSecondMultiLayer{}, - m_resLine{} - { - init(); - } - - MdtChamberGeometry::MdtChamberGeometry( MdtStationId id, unsigned int nml, unsigned int nlay, - unsigned int ntubesml0, unsigned int ntubesml1, - const LocPos& tube0ml0, const LocPos& tube0ml1, - double tubeDist, double tubeStage, double layDist, double stationTheta ) - : m_id(id),m_cachedPos(0.,0.), m_isSecondMultiLayer(false) - { - init(); - setGeometry( nml,nlay,ntubesml0,ntubesml1,tube0ml0,tube0ml1,tubeDist,tubeStage,layDist, stationTheta ); - } - - void MdtChamberGeometry::init() - { - m_validGeometry = true; - if( m_id.isSmallMdt() ) { - m_tubeDist = 15.10; - m_tubeRad = 7.1; - m_layDist = 13.085; - } else { - m_tubeDist = 30.035; - m_tubeRad = 14.6; - m_layDist = 26.011; - } - // initialize first tubes to zero - m_ntubesml.push_back(0); - m_ntubesml.push_back(0); - m_firstTube.emplace_back(0.,0. ); - m_firstTube.emplace_back(0.,0. ); - m_wasInit.push_back(1); - m_wasInit.push_back(1); - m_crossedTubes.reserve(50); + MdtChamberGeometry::MdtChamberGeometry() { init(); } + + MdtChamberGeometry::MdtChamberGeometry(MdtStationId id, unsigned int nml, unsigned int nlay, unsigned int ntubesml0, + unsigned int ntubesml1, const LocVec2D& tube0ml0, const LocVec2D& tube0ml1, double tubeDist, + double tubeStage, double layDist, double stationTheta) : + m_id{id} { + init(); + setGeometry(nml, nlay, ntubesml0, ntubesml1, tube0ml0, tube0ml1, tubeDist, tubeStage, layDist, stationTheta); + } + + void MdtChamberGeometry::setGeometry(unsigned int nml, unsigned int nlay, unsigned int ntubesml0, unsigned int ntubesml1, + const LocVec2D& tube0ml0, const LocVec2D& tube0ml1, double tubeDist, double tubeStage, + double layDist, double stationTheta) { + m_nml = nml; + m_nlay = nlay; + m_ntubesml.clear(); + m_ntubesml.push_back(ntubesml0); + m_ntubesml.push_back(ntubesml1); + m_tubeDist = tubeDist; + m_tubeStage = tubeStage; + m_layDist = layDist; + + m_firstTube[0] = tube0ml0; + m_firstTube[1] = tube0ml1; + + m_allTubes.clear(); + if (m_nml < 1 || m_nml > 2) + throw std::runtime_error( + Form("File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with nml=%d which is definitely out of range", + __FILE__, __LINE__, m_nml)); + if (m_nlay < 1 || m_nlay > 4) + throw std::runtime_error( + Form("File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with nlay=%d which is definitely out of range", + __FILE__, __LINE__, m_nlay)); + if (ntubesml0 < 1 || ntubesml0 > maxNTubesPerLayer) + throw std::runtime_error(Form( + "File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with ntubesml0=%d which is definitely out of range", + __FILE__, __LINE__, ntubesml0)); + // there can be chambers with only 1 multilayer. Then, the second multilayer will have ntubesml1=0 + if (ntubesml1 > maxNTubesPerLayer) + throw std::runtime_error(Form( + "File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with ntubesml1=%d which is definitely out of range", + __FILE__, __LINE__, ntubesml1)); + + // create vector with all tubes in chamber + for (unsigned int ml = 0; ml < m_nml; ++ml) { + if (!m_wasInit[ml]) continue; + for (unsigned int lay = 0; lay < m_nlay; ++lay) { + for (unsigned int tube = 0; tube < m_ntubesml[ml]; ++tube) { m_allTubes.emplace_back(tubePosition(ml, lay, tube)); } + } + } + + m_stationTheta = stationTheta; + } + + void MdtChamberGeometry::init() { + m_validGeometry = true; + if (m_id.isSmallMdt()) { + m_tubeDist = 15.10; + m_tubeRad = 7.1; + m_layDist = 13.085; + } else { + m_tubeDist = 30.035; + m_tubeRad = 14.6; + m_layDist = 26.011; + } + // initialize first tubes to zero + m_ntubesml.push_back(0); + m_ntubesml.push_back(0); + m_firstTube.emplace_back(0., 0.); + m_firstTube.emplace_back(0., 0.); + m_wasInit.push_back(true); + m_wasInit.push_back(true); } - void MdtChamberGeometry::setGeometry(unsigned int nml, unsigned int nlay, - unsigned int ntubesml0, unsigned int ntubesml1, - const LocPos& tube0ml0, const LocPos& tube0ml1, - double tubeDist, double tubeStage, double layDist, double stationTheta ) - { - m_nml = nml; - m_nlay = nlay; - m_ntubesml.clear(); - m_ntubesml.push_back(ntubesml0); - m_ntubesml.push_back(ntubesml1); - m_tubeDist = tubeDist; - m_tubeStage = tubeStage; - m_layDist = layDist; - - m_firstTube[0] = tube0ml0; - m_firstTube[1] = tube0ml1; - - m_allTubes.clear(); - if(m_nml<1 || m_nml>2) throw std::runtime_error(Form("File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with nml=%d which is definitely out of range", __FILE__, __LINE__,m_nml)); - if(m_nlay<1 || m_nlay>4) throw std::runtime_error(Form("File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with nlay=%d which is definitely out of range", __FILE__, __LINE__,m_nlay)); - if(ntubesml0<1 || ntubesml0>maxNTubesPerLayer) throw std::runtime_error(Form("File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with ntubesml0=%d which is definitely out of range", __FILE__, __LINE__,ntubesml0)); - // there can be chambers with only 1 multilayer. Then, the second multilayer will have ntubesml1=0 - if(ntubesml1>maxNTubesPerLayer) throw std::runtime_error(Form("File: %s, Line: %d\nMdtChamberGeometry::setGeometry() - got called with ntubesml1=%d which is definitely out of range", __FILE__, __LINE__,ntubesml1)); - m_stationTheta = stationTheta; + bool MdtChamberGeometry::validId(unsigned int ml, unsigned int lay, unsigned int tube) const { + if (!m_validGeometry) return false; + if (ml > 1) { + std::cout << " ERROR wrong index: ml " << ml << " max " << m_nml << std::endl; + print(); + return false; + } else if (lay > m_nlay) { + std::cout << " ERROR wrong index: lay " << lay << " max " << m_nlay << std::endl; + print(); + return false; + } else if (tube > m_ntubesml[ml]) { + std::cout << " ERROR wrong index: tube " << tube << " max " << m_ntubesml[ml] << std::endl; + print(); + return false; + } + return true; } + const std::vector<LocVec2D>& MdtChamberGeometry::allTubes() const { return m_allTubes; } + + void MdtChamberGeometry::tubesPassedByLine(const Line& line, int inMultilayer, DCVec& crossedTubes) const { + crossedTubes.reserve(50); + ResidualWithLine resLine{line}; + const LocVec2D& linepos = line.position(); + const LocVec2D& linedir = line.direction(); + double dxdy = std::abs(linedir.y()) > 0.0001 ? linedir.x() / linedir.y() : linedir.x() / 0.0001; + for (unsigned int ml = 0; ml < m_nml; ++ml) { + // check whether geometry was initialized for given multilayer + if (!m_wasInit[ml]) continue; + + // if indicated only scan single multilayer + if (inMultilayer != -1 && inMultilayer != (int)ml) { continue; } + for (unsigned int lay = 0; lay < m_nlay; ++lay) { + double ylay = yPosTube(ml, lay); + double xfirsttube = xPosTube(ml, lay, 0); + double xintersect = dxdy * (ylay - linepos.y()) + linepos.x(); + double relpos = (xintersect - xfirsttube) / m_tubeDist; + int ctube = (int)relpos; + if (ctube < 0) ctube = 0; + if (ctube >= (int)m_ntubesml[ml]) ctube = m_ntubesml[ml] - 1; + + if (inMultilayer != -1) + + for (int i = ctube - 1; i >= 0; --i) { + const LocVec2D& lp = tubePosition(ml, lay, i); + double res = resLine.residual(lp); + if (std::abs(res) > m_tubeRad) { + if (m_tubeDist > 0) { + if (res > m_tubeRad) break; + } else { + if (res < -m_tubeRad) break; + } + } else { + // if this is a chamber with only the second ml, set the ml index accordingly + unsigned int actualMl = m_isSecondMultiLayer ? 1 : ml; + crossedTubes.emplace_back(lp, m_tubeRad, res, DriftCircle::EmptyTube, MdtId(m_id.isBarrel(), actualMl, lay, i), + 0); + } + } + for (int i = ctube; i < (int)m_ntubesml[ml]; ++i) { + const LocVec2D& lp = tubePosition(ml, lay, i); + double res = resLine.residual(lp); + if (std::abs(res) > m_tubeRad) { + if (m_tubeDist > 0) { + if (res < -m_tubeRad) break; + } else { + if (res > m_tubeRad) break; + } + } else { + unsigned int actualMl = m_isSecondMultiLayer ? 1 : ml; + crossedTubes.emplace_back(lp, m_tubeRad, res, DriftCircle::EmptyTube, MdtId(m_id.isBarrel(), actualMl, lay, i), 0); + } + } + } + } + } + DCVec MdtChamberGeometry::tubesPassedByLine(const Line& line, int inMultilayer) const { + DCVec crossedTubes; + if (!m_validGeometry) return crossedTubes; - bool MdtChamberGeometry::validId( unsigned int ml, unsigned int lay,unsigned int tube) const - { - if(!m_validGeometry) return false; + tubesPassedByLine(line, inMultilayer, crossedTubes); - if( ml > 1 ) { - std::cout << " ERROR wrong index: ml " << ml << " max " << m_nml << std::endl; - print(); - return false; - }else if( lay > m_nlay ){ - std::cout << " ERROR wrong index: lay " << lay << " max " << m_nlay << std::endl; - print(); - return false; - }else if ( tube > m_ntubesml[ml] ){ - std::cout << " ERROR wrong index: tube " << tube << " max " << m_ntubesml[ml] << std::endl; - print(); - return false; + std::stable_sort(crossedTubes.begin(), crossedTubes.end(), SortDcsByY()); + return crossedTubes; } - return true; - } - - - const std::vector<LocPos>& MdtChamberGeometry::allTubes() const - { - if( !m_validGeometry) return m_allTubes; - if( !m_allTubes.empty() ) return m_allTubes; - - // create vector with all tubes in chamber - for( unsigned int ml=0;ml<m_nml;++ml){ - if( !m_wasInit[ml] ) continue; - for( unsigned int lay=0;lay<m_nlay;++lay){ - for( unsigned int tube=0;tube<m_ntubesml[ml];++tube ){ - const LocPos& lp = tubePosition(ml,lay,tube); - m_allTubes.push_back( lp ); - } - } + void MdtChamberGeometry::print() const { + std::cout << " MdtChamberGeometry " << m_id << std::endl; + std::cout << " nml " << m_nml << " nlay " << m_nlay << " ntube1 " << m_ntubesml[0] << " ntube2 " << m_ntubesml[1] << std::endl; + std::cout << " pos ml1 " << m_firstTube[0] << " ml2 " << m_firstTube[1] << std::endl; + std::cout << " tubeDist " << m_tubeDist << " tubeStage " << m_tubeStage << " layDist " << m_layDist << " tubeRad " << m_tubeRad + << std::endl; } - return m_allTubes; - } - - void MdtChamberGeometry::tubesPassedByLine( const Line& line, int inMultilayer, DCVec& crossedTubes ) const { - - m_resLine.set(line); - - const LocPos& linepos = line.position(); - const LocDir& linedir = line.direction(); - double dxdy = fabs(linedir.y())> 0.0001 ? linedir.x()/linedir.y() : linedir.x()/0.0001; - for( unsigned int ml=0;ml<m_nml;++ml){ - - // check whether geometry was initialized for given multilayer - if( !m_wasInit[ml] ) continue; - - // if indicated only scan single multilayer - if( inMultilayer != -1 && inMultilayer != (int)ml ){ - continue; - } - for( unsigned int lay=0;lay<m_nlay;++lay){ - - double ylay = yPosTube( ml, lay ); - double xfirsttube = xPosTube( ml,lay,0 ); - double xintersect = dxdy*(ylay-linepos.y()) + linepos.x(); - double relpos = (xintersect-xfirsttube)/m_tubeDist; - int ctube = (int)relpos; - if( ctube < 0 ) ctube = 0; - if( ctube >= (int)m_ntubesml[ml] ) ctube = m_ntubesml[ml]-1; - - if( inMultilayer != -1 ) - - for( int i = ctube-1;i>=0;--i ){ - const LocPos& lp = tubePosition(ml,lay,i); - double res = m_resLine.residual(lp); - if( std::abs(res) > m_tubeRad ) { - - if( m_tubeDist > 0 ){ - if( res > m_tubeRad ) break; - }else{ - if( res < -m_tubeRad ) break; - } - }else{ - // if this is a chamber with only the second ml, set the ml index accordingly - unsigned int actualMl = m_isSecondMultiLayer ? 1 : ml; - crossedTubes.push_back( DriftCircle(lp,m_tubeRad,res,DriftCircle::EmptyTube,MdtId(m_id.isBarrel(),actualMl,lay,i),0) ); - } - } - for( int i =ctube;i < (int)m_ntubesml[ml];++i ){ - const LocPos& lp = tubePosition(ml,lay,i); - double res = m_resLine.residual(lp); - if( std::abs(res) > m_tubeRad ) { - if( m_tubeDist > 0 ){ - if( res < - m_tubeRad ) break; - }else{ - if( res > m_tubeRad ) break; - } - }else{ - unsigned int actualMl = m_isSecondMultiLayer ? 1 : ml; - crossedTubes.push_back( DriftCircle(lp,m_tubeRad,res,DriftCircle::EmptyTube,MdtId(m_id.isBarrel(),actualMl,lay,i),0) ); - } - } - } + LocVec2D MdtChamberGeometry::tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const { + if (!validId(ml, lay, tube)) { + throw std::runtime_error(Form("%s:%d -- Invalid combination of multilayer ml: %u, layer: %u and tube: %d given: ", __FILE__, + __LINE__, ml, lay, tube)); + } + LocVec2D tube_vec{xPosTube(ml, lay, tube), yPosTube(ml, lay)}; + return tube_vec; } - } + inline double MdtChamberGeometry::xPosTube(unsigned int ml, unsigned int lay, unsigned int tube) const { + double xpos = tube * m_tubeDist + m_firstTube[ml].x(); - const DCVec& MdtChamberGeometry::tubesPassedByLine( const Line& line, int inMultilayer ) const - { - m_crossedTubes.clear(); + if (lay % 2 == 1) { + if (m_nlay == 4 && ml == 1) + xpos -= m_tubeStage; + else + xpos += m_tubeStage; + } - if( !m_validGeometry) return m_crossedTubes; - - tubesPassedByLine(line,inMultilayer,m_crossedTubes); - - std::stable_sort( m_crossedTubes.begin(),m_crossedTubes.end(),SortDcsByY() ); - return m_crossedTubes; - } + return xpos; + } - void MdtChamberGeometry::print() const { - std::cout << " MdtChamberGeometry " << m_id << std::endl; - std::cout << " nml " << m_nml << " nlay " << m_nlay << " ntube1 " << m_ntubesml[0] - << " ntube2 " << m_ntubesml[1] << std::endl; - std::cout << " pos ml1 " << m_firstTube[0] << " ml2 " << m_firstTube[1] << std::endl; - std::cout << " tubeDist " << m_tubeDist << " tubeStage " << m_tubeStage - << " layDist " << m_layDist << " tubeRad " << m_tubeRad << std::endl; - } + double MdtChamberGeometry::yPosTube(unsigned int ml, unsigned int lay) const { return lay * m_layDist + m_firstTube[ml].y(); } -} +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtId.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtId.cxx index 8869d12134984c9b69e838fdc6233f533529aa2d..f6d7fbbdb8ca783129fe1c54ba152708e3d6bdf9 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtId.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtId.cxx @@ -4,9 +4,8 @@ #include "TrkDriftCircleMath/MdtId.h" -//DR (clang32) operator<< in namespace -std::ostream& TrkDriftCircleMath::operator<<( std::ostream& os, const TrkDriftCircleMath::MdtId& id ) -{ - os << " ml " << id.ml() << " lay " << id.lay() << " tube " << id.tube(); - return os; +// DR (clang32) operator<< in namespace +std::ostream& TrkDriftCircleMath::operator<<(std::ostream& os, const TrkDriftCircleMath::MdtId& id) { + os << " ml " << id.ml() << " lay " << id.lay() << " tube " << id.tube(); + return os; } diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtMultiChamberGeometry.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtMultiChamberGeometry.cxx index 0edfaefa503932c3887562f2ef6da816722552a6..be5760607f9d84968073837a44e3431765e43956 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtMultiChamberGeometry.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtMultiChamberGeometry.cxx @@ -3,98 +3,56 @@ */ #include "TrkDriftCircleMath/MdtMultiChamberGeometry.h" -#include "TrkDriftCircleMath/SortDcsByY.h" +#include <algorithm> #include <iostream> #include <iterator> -#include <algorithm> + +#include "TrkDriftCircleMath/SortDcsByY.h" namespace TrkDriftCircleMath { - - MdtMultiChamberGeometry::MdtMultiChamberGeometry(): - m_chambers{}, - m_allTubes{}, - m_crossedTubes{}, - m_validGeometry{} - { - m_crossedTubes.reserve(30); - } - MdtMultiChamberGeometry::MdtMultiChamberGeometry( const std::vector<MdtChamberGeometry>& chambers ) - : m_chambers(chambers) - { - std::vector<MdtChamberGeometry>::const_iterator it = m_chambers.begin(); - std::vector<MdtChamberGeometry>::const_iterator it_end = m_chambers.end(); - m_validGeometry = true; - for(; it!=it_end;++it ){ - if( !it->validGeometry() ){ - m_validGeometry = false; - break; - } - } - m_crossedTubes.reserve(60); - } + MdtMultiChamberGeometry::MdtMultiChamberGeometry(const std::vector<MdtChamberGeometry>& chambers) : m_chambers(chambers) { + m_validGeometry = std::find_if(m_chambers.begin(), m_chambers.end(), + [](const MdtChamberGeometry& geo) { return !geo.validGeometry(); }) == m_chambers.end(); - - MdtMultiChamberGeometry::~MdtMultiChamberGeometry() {} + for (const MdtChamberGeometry& it : m_chambers) { + const std::vector<LocVec2D>& chamberTubes = it.allTubes(); + m_allTubes.reserve(m_allTubes.size() + chamberTubes.size()); + m_allTubes.insert(m_allTubes.end(), chamberTubes.begin(), chamberTubes.end()); + } + } + MdtMultiChamberGeometry::~MdtMultiChamberGeometry() = default; - const std::vector<LocPos>& MdtMultiChamberGeometry::allTubes() const - { - if( !m_validGeometry) return m_allTubes; - if( !m_allTubes.empty() ) return m_allTubes; + const std::vector<LocVec2D>& MdtMultiChamberGeometry::allTubes() const { return m_allTubes; } - std::vector<MdtChamberGeometry>::const_iterator it = m_chambers.begin(); - std::vector<MdtChamberGeometry>::const_iterator it_end = m_chambers.end(); + DCVec MdtMultiChamberGeometry::tubesPassedByLine(const Line& line, int ml) const { + DCVec crossedTubes; + crossedTubes.reserve(60); + if (!m_validGeometry) { + std::cout << " >>>>> invalid geometry <<<<< " << std::endl; + return crossedTubes; + } - for(; it!=it_end;++it ){ - const std::vector<LocPos>& chamberTubes = it->allTubes(); - m_allTubes.reserve( m_allTubes.size()+chamberTubes.size() ); - m_allTubes.insert( m_allTubes.end(),chamberTubes.begin(), chamberTubes.end() ); - } - return m_allTubes; - } + for (const MdtChamberGeometry& it : m_chambers) { it.tubesPassedByLine(line, ml, crossedTubes); } - - const DCVec& MdtMultiChamberGeometry::tubesPassedByLine( const Line& line, int ml ) const - { - m_crossedTubes.clear(); + std::stable_sort(crossedTubes.begin(), crossedTubes.end(), SortDcsByY()); - if( !m_validGeometry){ - std::cout << " >>>>> invalid geometry <<<<< " << std::endl; - return m_crossedTubes; + return crossedTubes; } - std::vector<MdtChamberGeometry>::const_iterator it = m_chambers.begin(); - std::vector<MdtChamberGeometry>::const_iterator it_end = m_chambers.end(); - -// std::cout << " crossed tubes for MdtMultiChamberGeometry " << std::endl; - for(; it!=it_end;++it ){ - it->tubesPassedByLine( line, ml, m_crossedTubes ); - } - - std::stable_sort( m_crossedTubes.begin(),m_crossedTubes.end(),SortDcsByY() ); - return m_crossedTubes; - } - - void MdtMultiChamberGeometry::print() const { - std::vector<MdtChamberGeometry>::const_iterator it = m_chambers.begin(); - std::vector<MdtChamberGeometry>::const_iterator it_end = m_chambers.end(); - for(; it!=it_end;++it ){ - it->print(); + void MdtMultiChamberGeometry::print() const { + for (const MdtChamberGeometry& it : m_chambers) { it.print(); } } - } - unsigned int MdtMultiChamberGeometry::nlay() const { - std::vector<MdtChamberGeometry>::const_iterator it = m_chambers.begin(); - if(it != m_chambers.end()) return it->nlay(); - else return 0; - } + unsigned int MdtMultiChamberGeometry::nlay() const { return m_chambers.empty() ? 0 : m_chambers[0].nlay(); } - const LocPos& MdtMultiChamberGeometry::tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const { - std::vector<MdtChamberGeometry>::const_iterator it = m_chambers.begin(); - if(it->validId(ml,lay,tube)) return it->tubePosition(ml,lay,tube); - else return it->tubePosition(1,0,0); - - } -} + LocVec2D MdtMultiChamberGeometry::tubePosition(unsigned int ml, unsigned int lay, unsigned int tube) const { + std::vector<MdtChamberGeometry>::const_iterator it = m_chambers.begin(); + if (it->validId(ml, lay, tube)) + return it->tubePosition(ml, lay, tube); + else + return it->tubePosition(1, 0, 0); + } +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtStationId.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtStationId.cxx index 454110748af34b6391639ee7ba465dc69c0a882e..502b224325eb6cd8a5ae84f2d88c5e1d235d0f38 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtStationId.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/MdtStationId.cxx @@ -5,12 +5,14 @@ namespace TrkDriftCircleMath { -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::MdtStationId& id ) { - if( id.isBarrel() ) os << " BARREL"; - else os << " ENDCAP"; - os << " stName " << id.stName() << " eta " << id.eta() << " phi " << id.phi(); - if( id.isSmallMdt() ) os << " sMDT"; - return os; -} + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::MdtStationId& id) { + if (id.isBarrel()) + os << " BARREL"; + else + os << " ENDCAP"; + os << " stName " << id.stName() << " eta " << id.eta() << " phi " << id.phi(); + if (id.isSmallMdt()) os << " sMDT"; + return os; + } -} // namespace TrkDriftCircleMath +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Road.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Road.cxx index 9ad734a8d273c61dce4f50bfa2b57804d292c2fe..5e63c4d2820ff4dcf73b9f1ff9106b7fe5dcd2a9 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Road.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Road.cxx @@ -6,14 +6,9 @@ namespace TrkDriftCircleMath { + Road::Road(const LocVec2D& roadPos, double roadAngle, double chamberAngle, double roadAngularWidth) : + m_pos(roadPos), m_angle(roadAngle), m_chamberAngle(chamberAngle), m_width(roadAngularWidth) {} - Road::Road (const TrkDriftCircleMath::LocPos& roadPos, double roadAngle, double chamberAngle, double roadAngularWidth) : - m_pos(roadPos),m_angle(roadAngle),m_chamberAngle(chamberAngle),m_width(roadAngularWidth) - { - } + Road::~Road() = default; - Road::~Road() - { - } - -} +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/RotPhi.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/RotPhi.cxx index ed3bf22567e0cb91ac9d6d4cc2abf72e4c859326..df75ebf33691939bdd236033c5d604891ae5a0f5 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/RotPhi.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/RotPhi.cxx @@ -4,8 +4,6 @@ #include "TrkDriftCircleMath/RotPhi.h" -TrkDriftCircleMath::LocVec2D operator*( const TrkDriftCircleMath::RotPhi& rot, - const TrkDriftCircleMath::LocVec2D& lv ){ - return TrkDriftCircleMath::LocVec2D( rot.cosphi()*lv.x() + rot.sinphi()*lv.y(), - -rot.sinphi()*lv.x() + rot.cosphi()*lv.y() ); +TrkDriftCircleMath::LocVec2D operator*(const TrkDriftCircleMath::RotPhi& rot, const TrkDriftCircleMath::LocVec2D& lv) { + return TrkDriftCircleMath::LocVec2D(rot.cosphi() * lv.x() + rot.sinphi() * lv.y(), -rot.sinphi() * lv.x() + rot.cosphi() * lv.y()); } diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Segment.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Segment.cxx index 86c997abe075bfa545ed013f5068c9bbec9811e8..7d9be6bfef122005ad2dfdfa44d88cde43ba52fe 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Segment.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/Segment.cxx @@ -3,58 +3,84 @@ */ #include "TrkDriftCircleMath/Segment.h" -#include "TrkDriftCircleMath/SegmentCandidate.h" #include "TrkDriftCircleMath/DCOnTrack.h" - +#include "TrkDriftCircleMath/SegmentCandidate.h" namespace TrkDriftCircleMath { + std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::Segment& seg) { + os << seg.line() << " chi2 " << seg.chi2() << " ndof " << seg.ndof() << " t0 shift " << seg.t0Shift() << std::endl + << " hot " << seg.hitsOnTrack() << " deltas " << seg.deltas() << " hoo " << seg.hitsOutOfTime() << " cl " << seg.closeHits() + << " ml1 " << seg.hitsMl1() << " ml2 " << seg.hitsMl2() << " cls " << seg.clusterLayers() << " empty " << seg.emptyTubes().size() + << " cross ml1 " << seg.crossedTubesMl1() << " ml2 " << seg.crossedTubesMl2() << std::endl; + + // TrkDriftCircleMath::ResidualWithLine resLine( seg.line() ); + + TrkDriftCircleMath::DCOnTrackCit it = seg.dcs().begin(); + TrkDriftCircleMath::DCOnTrackCit it_end = seg.dcs().end(); + + for (; it != it_end; ++it) { os << *it << std::endl; } + return os; + } + + MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::Segment& seg) { + os << seg.line() << " chi2 " << seg.chi2() << " ndof " << seg.ndof() << " t0 shift " << seg.t0Shift() << "\n hot " + << seg.hitsOnTrack() << " deltas " << seg.deltas() << " hoo " << seg.hitsOutOfTime() << " cl " << seg.closeHits() << " ml1 " + << seg.hitsMl1() << " ml2 " << seg.hitsMl2() << " cls " << seg.clusterLayers() << " empty " << seg.emptyTubes().size() + << " cross ml1 " << seg.crossedTubesMl1() << " ml2 " << seg.crossedTubesMl2() << endmsg; + + TrkDriftCircleMath::DCOnTrackCit it = seg.dcs().begin(); + TrkDriftCircleMath::DCOnTrackCit it_end = seg.dcs().end(); + + for (; it != it_end; ++it) { os << *it << endmsg; } + + return os; + } + + void Segment::set(double chi2, unsigned int ndof, double dtheta, double dy0) { + m_chi2 = chi2; + m_ndof = ndof; + m_dtheta = dtheta; + m_dy0 = dy0; + m_t0Shift = -99999.; + m_deltaAlpha = -99999.; + m_deltab = -99999.; + m_deltas = 0; + m_hitsOutOfTime = 0; + m_hitsOnTrack = 0; + m_closeHits = 0; + m_showerHits = 0; + m_crossedTubesMl1 = 0; + m_crossedTubesMl2 = 0; + m_hitsMl1 = 0; + m_hitsMl2 = 0; + m_ambigue = 0; + m_clusterLayers = 0; + } + + void Segment::setAndReset(double chi2, unsigned int ndof, double dtheta, double dy0) { + m_chi2 = chi2; + m_ndof = ndof; + m_dtheta = dtheta; + m_dy0 = dy0; + m_t0Shift = -99999.; + m_deltaAlpha = -99999.; + m_deltab = -99999.; + m_deltas = 0; + m_hitsOutOfTime = 0; + m_hitsOnTrack = 0; + m_closeHits = 0; + m_showerHits = 0; + m_crossedTubesMl1 = 0; + m_crossedTubesMl2 = 0; + m_hitsMl1 = 0; + m_hitsMl2 = 0; + m_ambigue = 0; + m_clusterLayers = 0; + m_dcs.clear(); + m_clusters.clear(); + m_emptyTubes.clear(); + } -std::ostream& operator<<( std::ostream& os, const TrkDriftCircleMath::Segment& seg ) -{ - os << seg.line() << " chi2 " << seg.chi2() << " ndof " << seg.ndof() << " t0 shift " << seg.t0Shift() << std::endl - << " hot " << seg.hitsOnTrack() - << " deltas " << seg.deltas() - << " hoo " << seg. hitsOutOfTime() - << " cl " << seg.closeHits() - << " ml1 " << seg.hitsMl1() << " ml2 " << seg.hitsMl2() - << " cls " << seg.clusterLayers() - << " empty " << seg.emptyTubes().size() - << " cross ml1 " << seg.crossedTubesMl1() << " ml2 " << seg.crossedTubesMl2() << std::endl; - - // TrkDriftCircleMath::ResidualWithLine resLine( seg.line() ); - - TrkDriftCircleMath::DCOnTrackCit it = seg.dcs().begin(); - TrkDriftCircleMath::DCOnTrackCit it_end = seg.dcs().end(); - - for( ; it!=it_end; ++it ){ - os << *it << std::endl; - } - return os; -} - -MsgStream& operator<< (MsgStream & os, const TrkDriftCircleMath::Segment& seg) -{ - os << seg.line() << " chi2 " << seg.chi2() << " ndof " << seg.ndof() << " t0 shift " << seg.t0Shift() - << "\n hot " << seg.hitsOnTrack() - << " deltas " << seg.deltas() - << " hoo " << seg. hitsOutOfTime() - << " cl " << seg.closeHits() - << " ml1 " << seg.hitsMl1() << " ml2 " << seg.hitsMl2() - << " cls " << seg.clusterLayers() - << " empty " << seg.emptyTubes().size() - << " cross ml1 " << seg.crossedTubesMl1() << " ml2 " << seg.crossedTubesMl2() << endmsg; - - TrkDriftCircleMath::DCOnTrackCit it = seg.dcs().begin(); - TrkDriftCircleMath::DCOnTrackCit it_end = seg.dcs().end(); - - for (; it != it_end; ++it) { - os << *it << endmsg; - } - - return os; -} - - -} // namespace TrkDriftCircleMath +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/SegmentCandidate.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/SegmentCandidate.cxx index 519b320c64caae6e492911da4a85ae885c22c9f8..d6962c9e21f4b9ed8e79e2e8c06c833b91194054 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/SegmentCandidate.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/SegmentCandidate.cxx @@ -3,66 +3,49 @@ */ #include "TrkDriftCircleMath/SegmentCandidate.h" -#include "TrkDriftCircleMath/Segment.h" -#include "TrkDriftCircleMath/ResidualWithLine.h" + #include <iostream> -std::ostream& operator<< (std::ostream& os, const TrkDriftCircleMath::SegmentCandidate& seg) -{ - os << "line " << seg.line() - << " dcs " << seg.dcs().size() - << " cls " << seg.clusters().size() << std::endl; - - TrkDriftCircleMath::DCCit it = seg.dcs().begin(); - TrkDriftCircleMath::DCCit it_end = seg.dcs().end(); - - for (; it != it_end; ++it) { - os << *it << std::endl; - } +#include "TrkDriftCircleMath/ResidualWithLine.h" +#include "TrkDriftCircleMath/Segment.h" + +std::ostream& operator<<(std::ostream& os, const TrkDriftCircleMath::SegmentCandidate& seg) { + os << "line " << seg.line() << " dcs " << seg.dcs().size() << " cls " << seg.clusters().size() << std::endl; + + TrkDriftCircleMath::DCCit it = seg.dcs().begin(); + TrkDriftCircleMath::DCCit it_end = seg.dcs().end(); + + for (; it != it_end; ++it) { os << *it << std::endl; } return os; } -MsgStream& operator<< (MsgStream & os, const TrkDriftCircleMath::SegmentCandidate& seg) -{ - os << "line " << seg.line() - << " dcs " << seg.dcs().size() - << " cls " << seg.clusters().size() << endmsg; - - TrkDriftCircleMath::DCCit it = seg.dcs().begin(); - TrkDriftCircleMath::DCCit it_end = seg.dcs().end(); - - for (; it != it_end; ++it) { - os << *it << endmsg; - } - +MsgStream& operator<<(MsgStream& os, const TrkDriftCircleMath::SegmentCandidate& seg) { + os << "line " << seg.line() << " dcs " << seg.dcs().size() << " cls " << seg.clusters().size() << endmsg; + + TrkDriftCircleMath::DCCit it = seg.dcs().begin(); + TrkDriftCircleMath::DCCit it_end = seg.dcs().end(); + + for (; it != it_end; ++it) { os << *it << endmsg; } + return os; } namespace TrkDriftCircleMath { - SegmentCandidate::SegmentCandidate (const Segment& seg) : - m_line (seg.line()), - m_clusters (seg.clusters()) - { - - m_dcs.reserve(seg.dcs().size()); - DCOnTrackCit it = seg.dcs().begin(); - DCOnTrackCit itEnd = seg.dcs().end(); - for (; it != itEnd; ++it) { - m_dcs.push_back(*it); - } - } - - SegCandVec::SegCandVec (const SegVec& segVec) { - reserve (segVec.size()); - - SegCit segIt = segVec.begin(); - SegCit segItEnd = segVec.end(); - for (; segIt != segItEnd; ++segIt) { - push_back(SegmentCandidate(*segIt)); + SegmentCandidate::SegmentCandidate(const Segment& seg) : m_line(seg.line()), m_clusters(seg.clusters()) { + m_dcs.reserve(seg.dcs().size()); + DCOnTrackCit it = seg.dcs().begin(); + DCOnTrackCit itEnd = seg.dcs().end(); + for (; it != itEnd; ++it) { m_dcs.push_back(*it); } } - } -} + SegCandVec::SegCandVec(const SegVec& segVec) { + reserve(segVec.size()); + + SegCit segIt = segVec.begin(); + SegCit segItEnd = segVec.end(); + for (; segIt != segItEnd; ++segIt) { push_back(SegmentCandidate(*segIt)); } + } +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/SegmentFinder.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/SegmentFinder.cxx index 2db1955aed9622e79d8e8aacca7edbf4ac3fcc7a..aaf17e5b8c8ef56e19216a41d336bf8b58991d95 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/SegmentFinder.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/SegmentFinder.cxx @@ -1,1224 +1,982 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TrkDriftCircleMath/SegmentFinder.h" -#include "TrkDriftCircleMath/TangentToCircles.h" -#include "TrkDriftCircleMath/SharedHitsSegments.h" +#include <algorithm> +#include <iostream> +#include <iterator> + #include "TrkDriftCircleMath/DCSLFitter.h" #include "TrkDriftCircleMath/DCSLHitSelector.h" #include "TrkDriftCircleMath/DriftCircle.h" -#include "TrkDriftCircleMath/SortSegBySizeAndChi2.h" #include "TrkDriftCircleMath/ResidualWithSegment.h" +#include "TrkDriftCircleMath/SharedHitsSegments.h" +#include "TrkDriftCircleMath/SortSegBySizeAndChi2.h" +#include "TrkDriftCircleMath/TangentToCircles.h" -#include <iostream> -#include <algorithm> -#include <iterator> - -namespace TrkDriftCircleMath { - - - SegmentFinder::SegmentFinder() : - m_deltaCut(5.), m_roadWidth(1.5), - m_phiRoad(acos(0.)), m_roadDir(0.,0.), m_phiChamber(acos(0.)), m_chamberDir(0.,0.), m_phiDifCut(0.5), - m_ratioEmptyTubesCut(1.), m_chi2Cut(10.),m_tgcPullCut(5.),m_rpcPullCut(5.), - m_resCutT0(1.),m_deltaCutT0(5.), - m_useSegmentQuality(false),m_recoverMdtHits(true), - m_removeSingleOutliers(true),m_fullScan(false), m_singleMultiLayerScan(true), m_seedCleaning(false), - m_doDrop(true), m_dropDepthMax(4), m_doAllHitSort(false),m_doCurvedSegmentFinder(false), - m_useChamberPhi(true),m_useRoadPhi(true),m_mdtGeometry(nullptr),m_dropDepthAcceptCounts(m_dropDepthMax+2,0),m_dropDepthRejectCounts(m_dropDepthMax+1,0) - { - m_ownsFitter = true; - m_fitter = new DCSLFitter(); - m_debugLevel = 0; - - // update the cached directions - updateDirections(); - } - - SegmentFinder::SegmentFinder(double roadWidth, double deltaCut, bool fullScan) : - m_deltaCut(deltaCut), m_roadWidth(roadWidth), - m_phiRoad(acos(0.)), m_roadDir(0.,0.), m_phiChamber(acos(0.)), m_chamberDir(0.,0.), m_phiDifCut(0.5), - m_ratioEmptyTubesCut(1.), m_chi2Cut(10.),m_tgcPullCut(5.),m_rpcPullCut(5.), - m_resCutT0(1.),m_deltaCutT0(5.),m_useSegmentQuality(false),m_recoverMdtHits(true), - m_removeSingleOutliers(true),m_fullScan(fullScan), m_singleMultiLayerScan(true), m_seedCleaning(false), - m_doDrop(true), m_dropDepthMax(4), m_doAllHitSort(false), m_doCurvedSegmentFinder(false), - m_useChamberPhi(true), m_useRoadPhi(true), m_mdtGeometry(nullptr),m_dropDepthAcceptCounts(m_dropDepthMax+1,0),m_dropDepthRejectCounts(m_dropDepthMax+1,0) - { - m_ownsFitter = true; - m_fitter = new DCSLFitter(); - m_debugLevel = 0; - - // update the cached directions - updateDirections(); - } - - SegmentFinder::~SegmentFinder() - { - if( m_ownsFitter ) delete m_fitter; - - if( m_debugLevel > 0 ){ - std::lock_guard<std::mutex> lock(m_mutex); - std::cout << " drop summary " << std::endl; - for( unsigned int i=0;i<m_dropDepthMax+1;++i ){ - std::cout << " Accepted " << m_dropDepthAcceptCounts[i] << std::endl; - } - for( unsigned int i=0;i<m_dropDepthMax;++i ){ - std::cout << " Rejected " << m_dropDepthRejectCounts[i] << std::endl; - } - } - } - - - void SegmentFinder::setMaxDropDepth( int max ) { - m_dropDepthMax = max; - std::lock_guard<std::mutex> lock(m_mutex); - m_dropDepthAcceptCounts.clear(); - m_dropDepthAcceptCounts.resize(max+1,0); - m_dropDepthRejectCounts.clear(); - m_dropDepthRejectCounts.resize(max+1,0); - } - - void SegmentFinder::setRecoverMDT(bool doRecover) { - m_recoverMdtHits = doRecover; - } - - void SegmentFinder::setSortSegmentsUsingAllHits( bool doAllHitsSort ) { - m_doAllHitSort = doAllHitsSort; - } - - void SegmentFinder::setResidualCutT0( double resCut ) { - m_resCutT0 = resCut; - } - - void SegmentFinder::setDeltaCutT0( double deltaCut ) { - m_deltaCutT0 = deltaCut; - } - - void SegmentFinder::setUseSegmentQuality( bool useQ ) { - m_useSegmentQuality = useQ; - } - - void SegmentFinder::setUseChamberPhi( bool useChamberPhi ) { - m_useChamberPhi = useChamberPhi; - } - - void SegmentFinder::setCurvedSegmentFinder( bool doCurvedSegmentFinder ) { - m_doCurvedSegmentFinder = doCurvedSegmentFinder; - } - - void SegmentFinder::setRemoveSingleOutliers( bool removeSingleOutliers ) { - m_removeSingleOutliers = removeSingleOutliers; - } - - void SegmentFinder::setTGCPullCut(double cut) - { - m_tgcPullCut = cut; - } - - void SegmentFinder::setRPCPullCut(double cut) - { - m_rpcPullCut = cut; - } - - void SegmentFinder::setDropHits(bool doDrop) - { - m_doDrop = doDrop; - } - - void SegmentFinder::setSeedCleaning(bool doCleanup) - { - m_seedCleaning = doCleanup; - } - - void SegmentFinder::setChi2DropCut(double chi2){ - m_chi2Cut = chi2; - } - - void SegmentFinder::setDeltaCut(double cut){ - m_deltaCut = cut; - } - - void SegmentFinder::setSingleMultiLayerScan( bool doScan ){ - m_singleMultiLayerScan = doScan; - } - - void SegmentFinder::setRatioEmptyTubesCut(double ratioEmptyTubesCut) - { - m_ratioEmptyTubesCut = ratioEmptyTubesCut; - } - - void SegmentFinder::setPhiRoad(double phiRoad, double phiChamber, double sinPhiCut, bool useRoadPhi, bool useChamberPhi ) - { - // set road - m_phiRoad = phiRoad; - - // set phi chamber - m_phiChamber = phiChamber; - - // set road cut - m_phiDifCut = sinPhiCut; - - m_useRoadPhi = useRoadPhi; - m_useChamberPhi = useChamberPhi; - - // update the cached directions - updateDirections(); - } - - void SegmentFinder::updateDirections() { - m_roadDir = LocDir( cos( m_phiRoad ), sin( m_phiRoad ) ); - m_chamberDir = LocDir( cos( m_phiChamber ), sin( m_phiChamber ) ); - - // set road cut - m_phiDifCut = std::cos(m_phiDifCut); - - Line roadLine( LocPos(0.,0.), m_roadDir ); - if( roadLine.phi() != m_phiRoad ){ - if( m_debugLevel >= 1 ) std::cout << " bad phi for road: road " << m_phiRoad << " dir phi " << roadLine.phi() << std::endl; - } - Line chamberLine( LocPos(0.,0.), m_chamberDir ); - if( chamberLine.phi() != m_phiChamber ){ - if( m_debugLevel >= 1 ) std::cout << " bad phi for chamber: chamber " << m_phiChamber << " dir phi " << chamberLine.phi() << std::endl; - } - } - - - SegVec SegmentFinder::findSegments( const DCVec& dcsIn ) const { - CLVec clusters; - return findSegments( dcsIn, clusters ); - } - - void SegmentFinder::printSettings() const { - std::cout << " SegmentFinder::setting: " << std::endl - << " Road width " << m_roadWidth << " Pull cuts: MDT " << m_deltaCut << " RPC " << m_rpcPullCut << " TGC " << m_tgcPullCut << std::endl - << " Phi seed " << m_phiRoad; - - if( m_useChamberPhi ) std::cout << " chamberCut"; - if( m_useRoadPhi ) std::cout << " roadCut"; - - if( m_useChamberPhi || m_useRoadPhi ) std::cout << " phi cut " << m_phiDifCut << std::endl; - - std::cout << " Empty tube ratio cut " << m_ratioEmptyTubesCut << " chi2 drop cut " << m_chi2Cut << std::endl; - std::cout << " Options: "; - if( m_fullScan ) std::cout << " -- full scan "; - if( m_singleMultiLayerScan ) std::cout << " -- single multilayer scan "; - if( m_seedCleaning ) std::cout << " -- seed cleaning "; - if( m_doDrop ) std::cout << " -- drop hits "; - if( m_doAllHitSort ) std::cout << " -- sort with all hits "; - if( m_doCurvedSegmentFinder) std::cout << " -- curved segment finder "; - if( m_mdtGeometry ) std::cout << " -- using geometry "; - std::cout << std::endl; - } - - void SegmentFinder::handleHits( const DCVec& dcsIn, const CLVec& clsIn, - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments ) const { - - DCVec dcs = dcsIn; - - if( m_debugLevel >= 1 ) { - std::cout << "In handleHits: dcs " << dcsIn.size() << " clusters " << clsIn.size() << std::endl; - printSettings(); - } - // sort input drift circles - std::stable_sort( dcs.begin(), dcs.end(), SortDcsByY() ); - - SegVec preSelSegs; - if( !m_fullScan ){ +namespace TrkDriftCircleMath { - // find seeds in multilayer - std::pair<DCVec,DCVec> dcsPerMl = splitInMulitlayers( dcs ); + SegmentFinder::SegmentFinder() { + m_fitter = std::make_shared<DCSLFitter>(); - DCVec seedsMl1; - DCVec seedsMl2; + // update the cached directions + updateDirections(); + } - if( m_seedCleaning ){ + SegmentFinder::SegmentFinder(double roadWidth, double deltaCut, bool fullScan) : + m_deltaCut{deltaCut}, m_roadWidth{roadWidth}, m_fullScan{fullScan} { + m_fitter = std::make_shared<DCSLFitter>(); - // remove triples or larger ranges per layer - selectSeeds( dcsPerMl.first, 3 ).swap(seedsMl1); - selectSeeds( dcsPerMl.second, 3 ).swap(seedsMl2); - }else{ + // update the cached directions + updateDirections(); + } - seedsMl1 = dcsPerMl.first; - seedsMl2 = dcsPerMl.second; + SegmentFinder::~SegmentFinder() { + if (m_debugLevel > 0) { + std::lock_guard<std::mutex> lock(m_mutex); + std::cout << " drop summary " << std::endl; + for (unsigned int i = 0; i < m_dropDepthMax + 1; ++i) { std::cout << " Accepted " << m_dropDepthAcceptCounts[i] << std::endl; } + for (unsigned int i = 0; i < m_dropDepthMax; ++i) { std::cout << " Rejected " << m_dropDepthRejectCounts[i] << std::endl; } + } + } - } + void SegmentFinder::setMaxDropDepth(int max) { + m_dropDepthMax = max; + std::lock_guard<std::mutex> lock(m_mutex); + m_dropDepthAcceptCounts.clear(); + m_dropDepthAcceptCounts.resize(max + 1, 0); + m_dropDepthRejectCounts.clear(); + m_dropDepthRejectCounts.resize(max + 1, 0); + } - // search for segments crossing both multilayers - twoMultiLayerScan( seedsMl1, seedsMl2, dcs, clsIn, segments); + void SegmentFinder::setRecoverMDT(bool doRecover) { m_recoverMdtHits = doRecover; } - if(m_debugLevel >= 1){ - std::cout << " two layer scan " << std::endl; - for( SegCit it = segments.data().begin(); it!= segments.data().end(); ++it ){ - std::cout << " " << *it << std::endl; - } - } + void SegmentFinder::setSortSegmentsUsingAllHits(bool doAllHitsSort) { m_doAllHitSort = doAllHitsSort; } - // reset segments so it contains only the cleaned segments - cleanSegments( segments.data() ).swap( preSelSegs ); - segments.set( preSelSegs ); + void SegmentFinder::setResidualCutT0(double resCut) { m_resCutT0 = resCut; } - if(m_debugLevel >= 1) { - std::cout << " after cleaning " << std::endl; - for( SegCit it = segments.data().begin(); it!= segments.data().end(); ++it ){ - std::cout << " " << *it << std::endl; - } - } + void SegmentFinder::setDeltaCutT0(double deltaCut) { m_deltaCutT0 = deltaCut; } - unsigned int usedHits(0); - for( SegCit it = segments.data().begin(); it!= segments.data().end(); ++it ){ - usedHits += it->hitsOnTrack(); - } + void SegmentFinder::setUseSegmentQuality(bool useQ) { m_useSegmentQuality = useQ; } + void SegmentFinder::setUseChamberPhi(bool useChamberPhi) { m_useChamberPhi = useChamberPhi; } + void SegmentFinder::setCurvedSegmentFinder(bool doCurvedSegmentFinder) { m_doCurvedSegmentFinder = doCurvedSegmentFinder; } - // if remaining dcs not associated with selected track smaller then 2 no additional segments can be formed - // thus no further search in single multi layers is needed - if( (usedHits >= dcs.size() - 2 && !m_doCurvedSegmentFinder) || !m_singleMultiLayerScan ){ + void SegmentFinder::setRemoveSingleOutliers(bool removeSingleOutliers) { m_removeSingleOutliers = removeSingleOutliers; } - }else{ + void SegmentFinder::setTGCPullCut(double cut) { m_tgcPullCut = cut; } - // full combinatorics in single ml - fullScan(seedsMl1, dcsPerMl.first, clsIn, segments); + void SegmentFinder::setRPCPullCut(double cut) { m_rpcPullCut = cut; } + void SegmentFinder::setDropHits(bool doDrop) { m_doDrop = doDrop; } - if(m_debugLevel >= 1) { - std::cout << " segments after scan multilayer 1 " << std::endl; - for( SegCit it = segments.data().begin(); it!= segments.data().end(); ++it ){ - std::cout << " " << *it << std::endl; - } - } + void SegmentFinder::setSeedCleaning(bool doCleanup) { m_seedCleaning = doCleanup; } - fullScan(seedsMl2, dcsPerMl.second, clsIn, segments); + void SegmentFinder::setChi2DropCut(double chi2) { m_chi2Cut = chi2; } - if(m_debugLevel >= 1) { - std::cout << " segments after scan multilayer 2 " << std::endl; - for( SegCit it = segments.data().begin(); it!= segments.data().end(); ++it ){ - std::cout << " " << *it << std::endl; - } - } - } + void SegmentFinder::setDeltaCut(double cut) { m_deltaCut = cut; } - }else{ + void SegmentFinder::setSingleMultiLayerScan(bool doScan) { m_singleMultiLayerScan = doScan; } - // remove triples or larger ranges per layer - DCVec seeds = selectSeeds( dcs, 3 ); - fullScan(seeds, dcs, clsIn, segments); + void SegmentFinder::setRatioEmptyTubesCut(double ratioEmptyTubesCut) { m_ratioEmptyTubesCut = ratioEmptyTubesCut; } - } - } + void SegmentFinder::setPhiRoad(double phiRoad, double phiChamber, double sinPhiCut, bool useRoadPhi, bool useChamberPhi) { + // set road + m_phiRoad = phiRoad; + // set phi chamber + m_phiChamber = phiChamber; - SegVec SegmentFinder::findSegments( const DCVec& dcsIn, const CLVec& clsIn ) const - { + // set road cut + m_phiDifCut = sinPhiCut; - // prepare segment collection - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>> segments; + m_useRoadPhi = useRoadPhi; + m_useChamberPhi = useChamberPhi; - // find segments - handleHits(dcsIn, clsIn, segments); - - //Curved Segment finder - if(m_mdtGeometry != nullptr && m_doCurvedSegmentFinder) { - CurvedSegmentFinder CurvedSegFinder(m_debugLevel); - CurvedSegFinder.curvedSegments(*m_mdtGeometry,segments.data()); + // update the cached directions + updateDirections(); } - else if(m_debugLevel >= 5 && m_doCurvedSegmentFinder) std::cout << "CurvedSegmentFinder was passed a NULL pointer to the ChamberGeometry" << std::endl; - - - SegVec selectedSegments; - // final cleaning of segments - cleanSegments( segments.data() ).swap(selectedSegments); + void SegmentFinder::updateDirections() { + m_roadDir = LocVec2D(std::cos(m_phiRoad), std::sin(m_phiRoad)); + m_chamberDir = LocVec2D(std::cos(m_phiChamber), std::sin(m_phiChamber)); - // redo cluster association with final tracks - associateClusters( selectedSegments, clsIn ); + // set road cut + m_phiDifCut = std::cos(m_phiDifCut); - if(m_debugLevel >= 1) { - std::cout << " final segments " << std::endl; - for( SegIt it = selectedSegments.begin(); it!=selectedSegments.end(); ++it ){ - std::cout << *it << std::endl; - } + Line roadLine(LocVec2D(0., 0.), m_roadDir); + if (roadLine.phi() != m_phiRoad) { + if (m_debugLevel >= 1) std::cout << " bad phi for road: road " << m_phiRoad << " dir phi " << roadLine.phi() << std::endl; + } + Line chamberLine(LocVec2D(0., 0.), m_chamberDir); + if (chamberLine.phi() != m_phiChamber) { + if (m_debugLevel >= 1) + std::cout << " bad phi for chamber: chamber " << m_phiChamber << " dir phi " << chamberLine.phi() << std::endl; + } } - return selectedSegments; - } - - std::pair<DCVec,DCVec> SegmentFinder::splitInMulitlayers( const DCVec& dcs ) const - { - DCCit it = dcs.begin(); - DCCit it_end = dcs.end(); - - DCVec ml1; - DCVec ml2; + SegVec SegmentFinder::findSegments(const DCVec& dcsIn) const { + CLVec clusters; + return findSegments(dcsIn, clusters); + } - for( ; it!=it_end; ++it ){ - if( it->id().ml() == 0 ) ml1.push_back( *it ); - else ml2.push_back( *it ); + void SegmentFinder::printSettings() const { + std::cout << " SegmentFinder::setting: " << std::endl + << " Road width " << m_roadWidth << " Pull cuts: MDT " << m_deltaCut << " RPC " << m_rpcPullCut << " TGC " + << m_tgcPullCut << std::endl + << " Phi seed " << m_phiRoad; + + if (m_useChamberPhi) std::cout << " chamberCut"; + if (m_useRoadPhi) std::cout << " roadCut"; + + if (m_useChamberPhi || m_useRoadPhi) std::cout << " phi cut " << m_phiDifCut << std::endl; + + std::cout << " Empty tube ratio cut " << m_ratioEmptyTubesCut << " chi2 drop cut " << m_chi2Cut << std::endl; + std::cout << " Options: "; + if (m_fullScan) std::cout << " -- full scan "; + if (m_singleMultiLayerScan) std::cout << " -- single multilayer scan "; + if (m_seedCleaning) std::cout << " -- seed cleaning "; + if (m_doDrop) std::cout << " -- drop hits "; + if (m_doAllHitSort) std::cout << " -- sort with all hits "; + if (m_doCurvedSegmentFinder) std::cout << " -- curved segment finder "; + if (m_mdtGeometry) std::cout << " -- using geometry "; + std::cout << std::endl; } - // std::cout << " split " << ml1.size() << " " << ml2.size() << std::endl; - return std::make_pair( ml1, ml2 ); - } - DCVec SegmentFinder::selectSeeds( const DCVec& dcs, int maxSerie ) const - { - // this algorithm assumes a sorted collection!! - if( dcs.size() <= 2 ) return dcs; + void SegmentFinder::handleHits(const DCVec& dcsIn, const CLVec& clsIn, + ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments) const { + DCVec dcs = dcsIn; - DCVec seeds; + if (m_debugLevel >= 1) { + std::cout << "In handleHits: dcs " << dcsIn.size() << " clusters " << clsIn.size() << std::endl; + printSettings(); + } + // sort input drift circles + std::stable_sort(dcs.begin(), dcs.end(), SortDcsByY()); + + SegVec preSelSegs; + if (!m_fullScan) { + // find seeds in multilayer + std::pair<DCVec, DCVec> dcsPerMl = splitInMulitlayers(dcs); + + DCVec seedsMl1; + DCVec seedsMl2; + + if (m_seedCleaning) { + // remove triples or larger ranges per layer + selectSeeds(dcsPerMl.first, 3).swap(seedsMl1); + selectSeeds(dcsPerMl.second, 3).swap(seedsMl2); + } else { + seedsMl1 = dcsPerMl.first; + seedsMl2 = dcsPerMl.second; + } + + // search for segments crossing both multilayers + twoMultiLayerScan(seedsMl1, seedsMl2, dcs, clsIn, segments); + + if (m_debugLevel >= 1) { + std::cout << " two layer scan " << std::endl; + for (SegCit it = segments.data().begin(); it != segments.data().end(); ++it) { std::cout << " " << *it << std::endl; } + } + + // reset segments so it contains only the cleaned segments + cleanSegments(segments.data()).swap(preSelSegs); + segments.set(preSelSegs); + + if (m_debugLevel >= 1) { + std::cout << " after cleaning " << std::endl; + for (SegCit it = segments.data().begin(); it != segments.data().end(); ++it) { std::cout << " " << *it << std::endl; } + } + + unsigned int usedHits(0); + for (SegCit it = segments.data().begin(); it != segments.data().end(); ++it) { usedHits += it->hitsOnTrack(); } + + // if remaining dcs not associated with selected track smaller then 2 no additional segments can be formed + // thus no further search in single multi layers is needed + if ((usedHits >= dcs.size() - 2 && !m_doCurvedSegmentFinder) || !m_singleMultiLayerScan) { + } else { + // full combinatorics in single ml + fullScan(seedsMl1, dcsPerMl.first, clsIn, segments); + + if (m_debugLevel >= 1) { + std::cout << " segments after scan multilayer 1 " << std::endl; + for (SegCit it = segments.data().begin(); it != segments.data().end(); ++it) { std::cout << " " << *it << std::endl; } + } + + fullScan(seedsMl2, dcsPerMl.second, clsIn, segments); + + if (m_debugLevel >= 1) { + std::cout << " segments after scan multilayer 2 " << std::endl; + for (SegCit it = segments.data().begin(); it != segments.data().end(); ++it) { std::cout << " " << *it << std::endl; } + } + } + + } else { + // remove triples or larger ranges per layer + DCVec seeds = selectSeeds(dcs, 3); + fullScan(seeds, dcs, clsIn, segments); + } + } - NeighbourTube isNeighbour; + SegVec SegmentFinder::findSegments(const DCVec& dcsIn, const CLVec& clsIn) const { + // prepare segment collection + ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>> segments; - DCCit it_start_serie; - DCCit it = dcs.begin(); - DCCit it_end = dcs.end()-1; + // find segments + handleHits(dcsIn, clsIn, segments); - while( it<=it_end ){ + // Curved Segment finder + if (m_mdtGeometry && m_doCurvedSegmentFinder) { + CurvedSegmentFinder CurvedSegFinder(m_debugLevel); + CurvedSegFinder.curvedSegments(*m_mdtGeometry, segments.data()); + } else if (m_debugLevel >= 5 && m_doCurvedSegmentFinder) + std::cout << "CurvedSegmentFinder was passed a NULL pointer to the ChamberGeometry" << std::endl; - // mark first entry as start serie - it_start_serie = it; + SegVec selectedSegments; - // loop over next entries until an entry is no neighbour or we reached the end of the data set - while( it!=it_end && isNeighbour( *it, *(it+1) ) ){ - ++it; - } + // final cleaning of segments + cleanSegments(segments.data()).swap(selectedSegments); - // if less then 2 neighbours found, add hits to seeds - if( std::distance( it_start_serie, it+1 ) < maxSerie ){ + // redo cluster association with final tracks + associateClusters(selectedSegments, clsIn); - // add new seeds - for( ;it_start_serie!=it+1;++it_start_serie ){ + if (m_debugLevel >= 1) { + std::cout << " final segments " << std::endl; + for (SegIt it = selectedSegments.begin(); it != selectedSegments.end(); ++it) { std::cout << *it << std::endl; } + } - // only fill hits that are "in time" - if( it_start_serie->state() == DriftCircle::InTime ) { - seeds.push_back( *it_start_serie ); - } - } - } - // all other combinations are not taken into account + return selectedSegments; + } - // if we reached the end of the data set quit loop - if( it == dcs.end() ) break; - ++it; + std::pair<DCVec, DCVec> SegmentFinder::splitInMulitlayers(const DCVec& dcs) const { + DCVec ml1, ml2; + ml1.reserve(dcs.size()); + ml2.reserve(dcs.size()); + for (const DriftCircle& circ : dcs) { + if (circ.id().ml() == 0) + ml1.emplace_back(circ); + else + ml2.emplace_back(circ); + } + return std::make_pair(std::move(ml1), std::move(ml2)); } - return seeds; - } + DCVec SegmentFinder::selectSeeds(const DCVec& dcs, int maxSerie) const { + // this algorithm assumes a sorted collection!! + if (dcs.size() <= 2) return dcs; + DCVec seeds; - SegVec SegmentFinder::refitSegments( const SegVec& segs ) const - { + NeighbourTube isNeighbour; - // no segments found return empty segment vector - if( segs.empty() ) return segs; + DCCit it_start_serie; + DCCit it = dcs.begin(); + DCCit it_end = dcs.end() - 1; - MatchDCWithLine matchWithLine; + while (it <= it_end) { + // mark first entry as start serie + it_start_serie = it; - SegVec segments; - segments.reserve( segs.size() ); + // loop over next entries until an entry is no neighbour or we reached the end of the data set + while (it != it_end && isNeighbour(*it, *(it + 1))) { ++it; } - if(m_debugLevel >= 3) { - std::cout << " refitting segments " << std::endl; - } - - - for( SegCit it=segs.begin();it!=segs.end();++it ){ - - Segment segment = *it; - - //keep all curved segments - if(segment.hasCurvatureParameters()) { - segments.push_back( segment ); - continue; - } - - // drop hits is switched on - bool goodSeg = true; - bool hasDroppedHit = false; - unsigned int dropDepth = 0; - if( m_doDrop ) goodSeg = dropHits( segment, hasDroppedHit, dropDepth ); - - if( goodSeg ){ - - if( !hasDroppedHit && !m_removeSingleOutliers ){ - // if the segment was accepted without dropping we still have to refit it - - // find all hits within cut-off - matchWithLine.set( it->line(), m_deltaCut, MatchDCWithLine::Pull, tubeRadius() ); - bool usePrecise = segment.hasT0Shift(); - const DCOnTrackVec& hitsOnLine = matchWithLine.match( it->dcs(), nullptr, m_recoverMdtHits, usePrecise ); - - if( matchWithLine.matchDifference() > 0 ){ - - if(m_debugLevel >= 4) { - std::cout << " -- " << *it; - std::cout << " -- new DCS " << hitsOnLine.size() << std::endl; - DCOnTrackCit cit = hitsOnLine.begin(); - DCOnTrackCit cit_end = hitsOnLine.end(); - - for( ; cit!=cit_end; ++cit ){ - std::cout << " " << *cit << std::endl; - } - } - - - // reject segment if less then 3 hits remain - if( matchWithLine.hitsOnTrack() <= 2 ){ - continue; - } - - // refit segment - Segment result( Line(0.,0.,0.), DCOnTrackVec() ); - if( it->hasT0Shift() ){ - if( !m_fitter->fit( result, it->line(), hitsOnLine, m_hitSelector.selectHitsOnTrack( hitsOnLine ), it->t0Shift() ) ) { - if( m_debugLevel >= 4 ) std::cout << " failed fit " << std::endl; - continue; - } - }else{ - if( !m_fitter->fit( result, it->line(), hitsOnLine, m_hitSelector.selectHitsOnTrack( hitsOnLine ) ) ) { - if( m_debugLevel >= 4 ) std::cout << " failed fit " << std::endl; - continue; - } - } - if(m_debugLevel >= 4) { - std::cout << " after fit " << std::endl; - std::cout << result << std::endl; - } - segment = result; - - // update match parameters - updateMatch( segment, matchWithLine ); - - // keep close hits from initial road as information is not available anymore and shouldn't change to much - segment.showerHits( it->showerHits() ); // copy showerHits of initial road - - // keep clusters - segment.clusters( it->clusters() ); // copy clusters of initial road - - // update crossed tubes - crossedTubes( segment ); - - // check hit ratio - if( !goodHitRatio( segment ) ) continue; - - // once more do dropping - if( m_doDrop ) goodSeg = dropHits( segment, hasDroppedHit, dropDepth ); - - if( !goodSeg ) { - if(m_debugLevel >= 2) { - std::cout << " segment lossed after refit and dropping " << segment << std::endl; - } - continue; - } - } - } - - // update segment parameters - segments.push_back( segment ); - - - if(m_debugLevel >= 2) { - std::cout << " new segment added " << segments.size() << std::endl; - std::cout << segments.back() << std::endl; - } - }else{ - if( m_debugLevel >= 2 ) std::cout << " segment lost during hit dropping " << std::endl; - } + // if less then 2 neighbours found, add hits to seeds + if (std::distance(it_start_serie, it + 1) < maxSerie) { + // add new seeds + for (; it_start_serie != it + 1; ++it_start_serie) { + // only fill hits that are "in time" + if (it_start_serie->state() == DriftCircle::InTime) { seeds.push_back(*it_start_serie); } + } + } + // all other combinations are not taken into account - } + // if we reached the end of the data set quit loop + if (it == dcs.end()) break; + ++it; + } - return segments; - } - - bool SegmentFinder::dropHits( Segment& segment, bool& hasDroppedHit, unsigned int& dropDepth ) const - { - if( dropDepth > m_dropDepthMax ){ - if( m_debugLevel >= 5 ){ - std::cout << " dropDepth too large keeping segment " << segment << std::endl; - std::cout << " dropDepth " << dropDepth << std::endl; - DCOnTrackCit hit = segment.dcs().begin(); - DCOnTrackCit hit_end = segment.dcs().end(); - for( ;hit!=hit_end;++hit ){ - if(segment.hasT0Shift()) { - std::cout << " t0 fit residual " << hit->residual() << std::endl; - } else { - std::cout << " NO t0 fit residual " << hit->residual() << std::endl; - } - } - } - if( m_debugLevel > 0 ) { - std::lock_guard<std::mutex> lock(m_mutex); - ++m_dropDepthAcceptCounts[dropDepth]; - } - return true; + return seeds; } - ++dropDepth; - if( m_debugLevel >= 5 ) std::cout << " dropDepth " << dropDepth << " " << segment << std::endl; + SegVec SegmentFinder::refitSegments(const SegVec& segs) const { + // no segments found return empty segment vector + if (segs.empty()) return segs; + + MatchDCWithLine matchWithLine; + + SegVec segments; + segments.reserve(segs.size()); + + if (m_debugLevel >= 3) { std::cout << " refitting segments " << std::endl; } + + /// Copy the segment due to dropHits in line 324 + for (const Segment& inSegment : segs) { + // keep all curved segments + if (inSegment.hasCurvatureParameters()) { + segments.emplace_back(inSegment); + continue; + } + /// Make a copy of the segment + Segment resultSeg{inSegment}; + + // drop hits is switched on + bool goodSeg{true}, hasDroppedHit{false}; + unsigned int dropDepth = 0; + if (m_doDrop) goodSeg = dropHits(resultSeg, hasDroppedHit, dropDepth); + + if (goodSeg) { + if (!hasDroppedHit && !m_removeSingleOutliers) { + // if the segment was accepted without dropping we still have to refit it + + // find all hits within cut-off + matchWithLine.set(inSegment.line(), m_deltaCut, MatchDCWithLine::Pull, tubeRadius()); + bool usePrecise = resultSeg.hasT0Shift(); + const DCOnTrackVec& hitsOnLine = matchWithLine.match(inSegment.dcs(), nullptr, m_recoverMdtHits, usePrecise); + + if (matchWithLine.matchDifference() > 0) { + if (m_debugLevel >= 4) { + std::cout << " -- " << inSegment; + std::cout << " -- new DCS " << hitsOnLine.size() << std::endl; + for (const DCOnTrack& cit : hitsOnLine) { std::cout << " " << cit << std::endl; } + } + + // reject segment if less then 3 hits remain + if (matchWithLine.hitsOnTrack() <= 2) { continue; } + + // refit segment + Segment result(Line(0., 0., 0.), DCOnTrackVec()); + if (inSegment.hasT0Shift()) { + if (!m_fitter->fit(result, inSegment.line(), hitsOnLine, m_hitSelector.selectHitsOnTrack(hitsOnLine), + inSegment.t0Shift())) { + if (m_debugLevel >= 4) std::cout << " failed fit " << std::endl; + continue; + } + } else { + if (!m_fitter->fit(result, inSegment.line(), hitsOnLine, m_hitSelector.selectHitsOnTrack(hitsOnLine))) { + if (m_debugLevel >= 4) std::cout << " failed fit " << std::endl; + continue; + } + } + if (m_debugLevel >= 4) { + std::cout << " after fit " << std::endl; + std::cout << result << std::endl; + } + resultSeg = std::move(result); + + // update match parameters + updateMatch(resultSeg, matchWithLine); + + // keep close hits from initial road as information is not available anymore and shouldn't change to much + resultSeg.showerHits(inSegment.showerHits()); // copy showerHits of initial road + + // keep clusters + resultSeg.clusters(inSegment.clusters()); // copy clusters of initial road + + // update crossed tubes + crossedTubes(resultSeg); + + // check hit ratio + if (!goodHitRatio(resultSeg)) continue; + + // once more do dropping + if (m_doDrop) goodSeg = dropHits(resultSeg, hasDroppedHit, dropDepth); + + if (!goodSeg) { + if (m_debugLevel >= 2) { std::cout << " segment lossed after refit and dropping " << resultSeg << std::endl; } + continue; + } + } + } + + // update segment parameters + segments.emplace_back(std::move(resultSeg)); + if (m_debugLevel >= 2) { + std::cout << " new segment added " << segments.size() << std::endl; + std::cout << segments.back() << std::endl; + } + } else { + if (m_debugLevel >= 2) std::cout << " segment lost during hit dropping " << std::endl; + } + } - // discard all segments with less then 3 hits - if(segment.ndof() <= 0) { - --dropDepth; - if( m_debugLevel > 0 ) { - std::lock_guard<std::mutex> lock(m_mutex); - ++m_dropDepthRejectCounts[dropDepth]; - } - return false; + return segments; } - // if chi2/ndof of segment smaller than cut-off: - // do dropping for t0 reffited segments if residual > 1 mm or 5 sigma precise errors - // for NOT refitted if residual > 3 mm - if( segment.chi2()/(double)(segment.ndof()) < m_chi2Cut ) { - - bool hasBadHit = false; - if( m_removeSingleOutliers ){ - DCOnTrackCit hit = segment.dcs().begin(); - DCOnTrackCit hit_end = segment.dcs().end(); - for( ;hit!=hit_end;++hit ){ - - if(segment.hasT0Shift()) { - // std::cout << " t0 fit residual " << hit->residual() << std::endl; - double res = fabs(hit->residual()); - if( hit->state() == DCOnTrack::OnTrack && (res > m_resCutT0 || res/hit->drPrecise() > m_deltaCutT0) ){ - hasBadHit = true; - break; - } - } else { - //std::cout << " NO t0 fit residual " << hit->residual() << std::endl; - if( hit->state() == DCOnTrack::OnTrack && (fabs(hit->residual()) > m_deltaCut*hit->dr()) ){ - hasBadHit = true; - break; - } - } - } - } - - if( !hasBadHit ){ - if( m_debugLevel >= 5 ) std::cout << " keeping candidate " << segment << std::endl; - --dropDepth; - if( m_debugLevel > 0 ) { - std::lock_guard<std::mutex> lock(m_mutex); - ++m_dropDepthAcceptCounts[dropDepth]; + bool SegmentFinder::dropHits(Segment& segment, bool& hasDroppedHit, unsigned int& dropDepth) const { + if (dropDepth > m_dropDepthMax) { + if (m_debugLevel >= 5) { + std::cout << " dropDepth too large keeping segment " << segment << std::endl; + std::cout << " dropDepth " << dropDepth << std::endl; + for (const DCOnTrack& hit : segment.dcs()) { + if (segment.hasT0Shift()) { + std::cout << " t0 fit residual " << hit.residual() << std::endl; + } else { + std::cout << " NO t0 fit residual " << hit.residual() << std::endl; + } + } + } + if (m_debugLevel > 0) { + std::lock_guard<std::mutex> lock(m_mutex); + ++m_dropDepthAcceptCounts[dropDepth]; + } + return true; + } + ++dropDepth; + + if (m_debugLevel >= 5) std::cout << " dropDepth " << dropDepth << " " << segment << std::endl; + + // discard all segments with less then 3 hits + if (segment.ndof() <= 0) { + --dropDepth; + if (m_debugLevel > 0) { + std::lock_guard<std::mutex> lock(m_mutex); + ++m_dropDepthRejectCounts[dropDepth]; + } + return false; } - return true; - } - } - if( m_debugLevel >= 5 ) std::cout << " dropHits " << segment << std::endl; + // if chi2/ndof of segment smaller than cut-off: + // do dropping for t0 reffited segments if residual > 1 mm or 5 sigma precise errors + // for NOT refitted if residual > 3 mm + if (segment.chi2() / segment.ndof() < m_chi2Cut) { + bool hasBadHit = false; + if (m_removeSingleOutliers) { + for (const DCOnTrack& hit : segment.dcs()) { + if (segment.hasT0Shift()) { + double res = std::abs(hit.residual()); + if (hit.state() == DCOnTrack::OnTrack && (res > m_resCutT0 || res / hit.drPrecise() > m_deltaCutT0)) { + hasBadHit = true; + break; + } + } else { + if (hit.state() == DCOnTrack::OnTrack && (std::abs(hit.residual()) > m_deltaCut * hit.dr())) { + hasBadHit = true; + break; + } + } + } + } + + if (!hasBadHit) { + if (m_debugLevel >= 5) std::cout << " keeping candidate " << segment << std::endl; + --dropDepth; + if (m_debugLevel > 0) { + std::lock_guard<std::mutex> lock(m_mutex); + ++m_dropDepthAcceptCounts[dropDepth]; + } + return true; + } + } - // if segment has 3 hots and fails cut discard segment - if( segment.hitsOnTrack() <= 3 ) { - --dropDepth; - if( m_debugLevel > 0 ) { - std::lock_guard<std::mutex> lock(m_mutex); - ++m_dropDepthRejectCounts[dropDepth]; - } - return false; - } - - // create selection hits for segment - DCSLFitter::HitSelection selection = m_hitSelector.selectHitsOnTrack( segment.dcs() ); - - // vector to hold results refit - SegVec segs; - segs.reserve(segment.hitsOnTrack()); - - double bestChi2(1e9); - int indexBest(-1); - - MatchDCWithLine matchWithLine; - - // loop over selection and refit without hit - for( unsigned int i=0;i<selection.size();++i ){ - - // if this is a hot - if( selection[i] == 0 ){ - - // unselect hit - selection[i] = 1; - - // refit segment - Segment result( Line(0.,0.,0.), DCOnTrackVec() ); - if( !m_fitter->fit( result, segment.line(), segment.dcs(), selection ) ){ - if( m_debugLevel >= 5 ) std::cout << " failed fit (dropHits) " << std::endl; - }else{ - if( m_debugLevel >= 5 ) std::cout << " dropping hit " << i << " " << segment.dcs()[i] << std::endl; - - // add segment to vector - segs.push_back( result ); - Segment& newSegment = segs.back(); - - // find all hits within cut-off - matchWithLine.set( newSegment.line(), 0.7*m_deltaCut, MatchDCWithLine::Pull, tubeRadius() ); - bool usePrecise = newSegment.hasT0Shift(); - DCOnTrackVec hitsOnLine = matchWithLine.match( newSegment.dcs(), &selection, m_recoverMdtHits, usePrecise ); - - // if less then three hits left drop segment - if( matchWithLine.hitsOnTrack() <= 2 ){ - // reset flag - selection[i] = 0; - segs.pop_back(); // remove segment from vector - continue; - } - - // reset DCOnTracks - newSegment.dcs(hitsOnLine); - - // check if number of hits used in fit equal to number of hits within 5 sigma of fit result - if( matchWithLine.matchDifference() > 0 ){ - if( m_debugLevel >= 5 ) { - std::cout << " Hits on track content changed after match, redoing fit " << matchWithLine.hitsOnTrack() << std::endl; - std::cout << " fit result " << newSegment << std::endl; - } - // redo refit using new prediction - if( !m_fitter->fit( result, newSegment.line(), newSegment.dcs(), m_hitSelector.selectHitsOnTrack( newSegment.dcs() ) ) ){ - if( m_debugLevel >= 5 ) std::cout << " failed fit (dropHits2) " << std::endl; - // reset flag - selection[i] = 0; - segs.pop_back(); // remove segment from vector - continue; - }else{ - matchWithLine.set( result.line(), 0.7*m_deltaCut, MatchDCWithLine::Pull, tubeRadius() ); - usePrecise = result.hasT0Shift(); - hitsOnLine = matchWithLine.match( result.dcs(), &selection, m_recoverMdtHits, usePrecise ); - newSegment = result; - // reset DCOnTracks - newSegment.dcs(hitsOnLine); - if( m_debugLevel >= 5 ) std::cout << " redid refit " << newSegment << std::endl; - } - } - - - // update match parameters - updateMatch( segs.back(), matchWithLine ); - - // keep close hits from initial road as information is not available anymore and shouldn't change to much - segs.back().showerHits( segment.showerHits() ); // copy showerHits of initial road - - // keep clusters - segs.back().clusters( segment.clusters() ); // copy clusters of initial road - segs.back().clusterLayers( segment.clusterLayers() ); - - // update crossed tubes - crossedTubes( segs.back() ); - - // remove segments with bad onTrack/emptyTube ratio - if( !goodHitRatio( segs.back() ) ) { - // reset flag - selection[i] = 0; - continue; - } - - // flag best candidate - double chi2 = segs.back().chi2(); - if( m_useSegmentQuality ) chi2 += 5.1*( segs.back().hitsOutOfTime() + segs.back().emptyTubes().size() ); - if( segs.empty() || bestChi2 > chi2 ){ - bestChi2 = chi2; - indexBest = segs.size()-1; - } - - if( m_debugLevel >= 5 ) std::cout << " fit result " << segs.back() << std::endl; - } - - // reset flag - selection[i] = 0; - } + if (m_debugLevel >= 5) std::cout << " dropHits " << segment << std::endl; - } - - // if we get here we performed hit dropping - hasDroppedHit = true; - - if( indexBest == -1 ){ - if( m_debugLevel >= 5 ) std::cout << " not good candidate found " << std::endl; - --dropDepth; - if( m_debugLevel > 0 ) { - std::lock_guard<std::mutex> lock(m_mutex); - ++m_dropDepthRejectCounts[dropDepth]; - } - return false; - } + // if segment has 3 hots and fails cut discard segment + if (segment.hitsOnTrack() <= 3) { + --dropDepth; + if (m_debugLevel > 0) { + std::lock_guard<std::mutex> lock(m_mutex); + ++m_dropDepthRejectCounts[dropDepth]; + } + return false; + } - segment = segs[indexBest]; - if( m_debugLevel >= 5 ) std::cout << " best candidate " << segment << std::endl; + // create selection hits for segment + HitSelection selection = m_hitSelector.selectHitsOnTrack(segment.dcs()); + + // vector to hold results refit + SegVec segs; + segs.reserve(segment.hitsOnTrack()); + + double bestChi2(1e9); + int indexBest(-1); + + MatchDCWithLine matchWithLine; + + // loop over selection and refit without hit + for (unsigned int i = 0; i < selection.size(); ++i) { + // if this is a hot + if (selection[i] == 0) { + // unselect hit + selection[i] = 1; + + // refit segment + Segment result(Line(0., 0., 0.), DCOnTrackVec()); + if (!m_fitter->fit(result, segment.line(), segment.dcs(), selection)) { + if (m_debugLevel >= 5) std::cout << " failed fit (dropHits) " << std::endl; + } else { + if (m_debugLevel >= 5) std::cout << " dropping hit " << i << " " << segment.dcs()[i] << std::endl; + + // add segment to vector + segs.push_back(std::move(result)); + Segment& newSegment = segs.back(); + + // find all hits within cut-off + matchWithLine.set(newSegment.line(), 0.7 * m_deltaCut, MatchDCWithLine::Pull, tubeRadius()); + bool usePrecise = newSegment.hasT0Shift(); + DCOnTrackVec hitsOnLine = matchWithLine.match(newSegment.dcs(), &selection, m_recoverMdtHits, usePrecise); + + // if less then three hits left drop segment + if (matchWithLine.hitsOnTrack() <= 2) { + // reset flag + selection[i] = 0; + segs.pop_back(); // remove segment from vector + continue; + } + + // reset DCOnTracks + newSegment.dcs(hitsOnLine); + + // check if number of hits used in fit equal to number of hits within 5 sigma of fit result + if (matchWithLine.matchDifference() > 0) { + if (m_debugLevel >= 5) { + std::cout << " Hits on track content changed after match, redoing fit " << matchWithLine.hitsOnTrack() + << std::endl; + std::cout << " fit result " << newSegment << std::endl; + } + // redo refit using new prediction + if (!m_fitter->fit(result, newSegment.line(), newSegment.dcs(), + m_hitSelector.selectHitsOnTrack(newSegment.dcs()))) { + if (m_debugLevel >= 5) std::cout << " failed fit (dropHits2) " << std::endl; + // reset flag + selection[i] = 0; + segs.pop_back(); // remove segment from vector + continue; + } else { + matchWithLine.set(result.line(), 0.7 * m_deltaCut, MatchDCWithLine::Pull, tubeRadius()); + usePrecise = result.hasT0Shift(); + hitsOnLine = matchWithLine.match(result.dcs(), &selection, m_recoverMdtHits, usePrecise); + newSegment = std::move(result); + // reset DCOnTracks + newSegment.dcs(hitsOnLine); + if (m_debugLevel >= 5) std::cout << " redid refit " << newSegment << std::endl; + } + } + + // update match parameters + updateMatch(segs.back(), matchWithLine); + + // keep close hits from initial road as information is not available anymore and shouldn't change to much + segs.back().showerHits(segment.showerHits()); // copy showerHits of initial road + + // keep clusters + segs.back().clusters(segment.clusters()); // copy clusters of initial road + segs.back().clusterLayers(segment.clusterLayers()); + + // update crossed tubes + crossedTubes(segs.back()); + + // remove segments with bad onTrack/emptyTube ratio + if (!goodHitRatio(segs.back())) { + // reset flag + selection[i] = 0; + continue; + } + + // flag best candidate + double chi2 = segs.back().chi2(); + if (m_useSegmentQuality) chi2 += 5.1 * (segs.back().hitsOutOfTime() + segs.back().emptyTubes().size()); + if (segs.empty() || bestChi2 > chi2) { + bestChi2 = chi2; + indexBest = segs.size() - 1; + } + + if (m_debugLevel >= 5) std::cout << " fit result " << segs.back() << std::endl; + } + + // reset flag + selection[i] = 0; + } + } - bool drop = dropHits( segment, hasDroppedHit, dropDepth ); - --dropDepth; - return drop; - } + // if we get here we performed hit dropping + hasDroppedHit = true; + + if (indexBest == -1) { + if (m_debugLevel >= 5) std::cout << " not good candidate found " << std::endl; + --dropDepth; + if (m_debugLevel > 0) { + std::lock_guard<std::mutex> lock(m_mutex); + ++m_dropDepthRejectCounts[dropDepth]; + } + return false; + } - SegVec SegmentFinder::cleanSegments( const SegVec& segs ) const - { + segment = segs[indexBest]; + if (m_debugLevel >= 5) std::cout << " best candidate " << segment << std::endl; - SegVec segments = refitSegments( segs ); + bool drop = dropHits(segment, hasDroppedHit, dropDepth); + --dropDepth; + return drop; + } - // no segments found return empty segment vector - if( segments.empty() ) return SegVec(); + SegVec SegmentFinder::cleanSegments(const SegVec& segs) const { + SegVec segments = refitSegments(segs); - // if only one segment found no further processing needed - if( segments.size() == 1 ) return segments; + // no segments found return empty segment vector + // if only one segment found no further processing needed + if (segments.size() <= 1) return segments; - // vector to hold clean segments - SegVec selectedSegments; + // vector to hold clean segments + SegVec selectedSegments; - // sort segments - if( m_doAllHitSort ) std::stable_sort( segments.begin(), segments.end(), SortSegByNumberOfHitsAndChi2() ); - else std::stable_sort( segments.begin(), segments.end(), SortSegByNumberOfMDTHitsAndChi2() ); + // sort segments + if (m_doAllHitSort) + std::stable_sort(segments.begin(), segments.end(), SortSegByNumberOfHitsAndChi2()); + else + std::stable_sort(segments.begin(), segments.end(), SortSegByNumberOfMDTHitsAndChi2()); - if(m_debugLevel >= 3) { - std::cout << " sorting segments " << std::endl; - for( SegIt it = segments.begin(); it!=segments.end(); ++it ){ - std::cout << *it << std::endl; - } - } - // first segment is automatically accepted - selectedSegments.push_back( segments.front() ); - - // function object to count number of shared hits between segments - SharedHitsSegments sharedHits(false); - - // discard all segments that share hits with the best segment(s) - SegIt it = segments.begin()+1; - SegIt it_end = segments.end(); - for( ; it!=it_end; ++it ){ - - unsigned int shareHits(0); - bool addSeg(true); - for( SegIt sit = selectedSegments.begin(); sit!=selectedSegments.end();++sit ){ - - // count number of shared hits - shareHits = sharedHits( *it, *sit ); - if( shareHits != 0 ) { - - unsigned int nmdtHitsIt = it->hitsOnTrack(); - unsigned int nmdtHitsSit = sit->hitsOnTrack(); - - //deal with curved segments - if(it->hasCurvatureParameters()) { - if(sit->hasCurvatureParameters()) continue; - if(shareHits == it->hitsOnTrack()) { - if( (sit->chi2() < it->chi2()) || (fabs(it->deltaAlpha()) < 0.01) ) { - addSeg = false; - break; - } - } - else if(sit->hasCurvatureParameters()) { - if( std::abs( it->line().phi() - sit->line().phi() ) < 0.05 && fabs(it->deltaAlpha() - sit->deltaAlpha()) < 0.01 ) { - ResidualWithLine resWithLine( it->line() ); - if( std::abs( resWithLine.residual( sit->line().position() ) ) < 0.1 ) { - addSeg = false; - break; - } - } - } - else { - //if the curved segment has unique hits, keep both - sit->ambigue(2); - continue; - } - } - - // reject segment if it containes less hits on track - if( nmdtHitsSit > nmdtHitsIt ){ - addSeg = false; - break; - } - - // reject segment if it has more empty tubes -// if( (sit->emptyTubes().size() < it->emptyTubes().size()) ){ -// addSeg = false; -// break; -// } - - // reject segment if slected has clusters and current doesn't - if( sit->clusters().size() > 0 && it->clusters().size() == 0 ){ - addSeg = false; - break; - } - -// // reject segment if it containes less hits on track + deltas -// if( sit->deltas() < it->deltas() ){ -// addSeg = false; -// break; -// } - - - // if number of contained hits not the same reject segments - // if( shareHits != sit->dcs().size() ) { - // addSeg = false; - // break; - // } - if( std::abs( it->chi2() - sit->chi2() ) > sit->hitsOnTrack() ){ - addSeg = false; - break; - } - - // if number of hits the same reject if difference in angle smaller 0.05 and distance between lines small 0.1 mm - if( std::abs( it->line().phi() - sit->line().phi() ) < 0.05 ) { - ResidualWithLine resWithLine( it->line() ); - if( std::abs( resWithLine.residual( sit->line().position() ) ) < 0.1 ) { - addSeg = false; - break; - } - } - - // mark segment as ambiguous - sit->ambigue( 2 ); - } - } - if( addSeg ) { - selectedSegments.push_back( *it ); - // set number of ambiguities - if( shareHits != 0 ) selectedSegments.back().ambigue( 2 ); - } + if (m_debugLevel >= 3) { + std::cout << " sorting segments " << std::endl; + for (SegIt it = segments.begin(); it != segments.end(); ++it) { std::cout << *it << std::endl; } + } + // first segment is automatically accepted + selectedSegments.push_back(segments.front()); + + // function object to count number of shared hits between segments + SharedHitsSegments sharedHits(false); + + // discard all segments that share hits with the best segment(s) + SegIt it = segments.begin() + 1; + SegIt it_end = segments.end(); + for (; it != it_end; ++it) { + unsigned int shareHits(0); + bool addSeg(true); + for (SegIt sit = selectedSegments.begin(); sit != selectedSegments.end(); ++sit) { + // count number of shared hits + shareHits = sharedHits(*it, *sit); + if (shareHits != 0) { + unsigned int nmdtHitsIt = it->hitsOnTrack(); + unsigned int nmdtHitsSit = sit->hitsOnTrack(); + + // deal with curved segments + if (it->hasCurvatureParameters()) { + if (sit->hasCurvatureParameters()) continue; + if (shareHits == it->hitsOnTrack()) { + if ((sit->chi2() < it->chi2()) || (std::abs(it->deltaAlpha()) < 0.01)) { + addSeg = false; + break; + } + } else if (sit->hasCurvatureParameters()) { + if (std::abs(it->line().phi() - sit->line().phi()) < 0.05 && + std::abs(it->deltaAlpha() - sit->deltaAlpha()) < 0.01) { + ResidualWithLine resWithLine(it->line()); + if (std::abs(resWithLine.residual(sit->line().position())) < 0.1) { + addSeg = false; + break; + } + } + } else { + // if the curved segment has unique hits, keep both + sit->ambigue(2); + continue; + } + } + + // reject segment if it containes less hits on track + if (nmdtHitsSit > nmdtHitsIt) { + addSeg = false; + break; + } + + // reject segment if slected has clusters and current doesn't + if (sit->clusters().size() > 0 && it->clusters().size() == 0) { + addSeg = false; + break; + } + if (std::abs(it->chi2() - sit->chi2()) > sit->hitsOnTrack()) { + addSeg = false; + break; + } + + // if number of hits the same reject if difference in angle smaller 0.05 and distance between lines small 0.1 mm + if (std::abs(it->line().phi() - sit->line().phi()) < 0.05) { + ResidualWithLine resWithLine(it->line()); + if (std::abs(resWithLine.residual(sit->line().position())) < 0.1) { + addSeg = false; + break; + } + } + + // mark segment as ambiguous + sit->ambigue(2); + } + } + if (addSeg) { + selectedSegments.push_back(*it); + // set number of ambiguities + if (shareHits != 0) selectedSegments.back().ambigue(2); + } + } + + return selectedSegments; } - return selectedSegments; - } - - void SegmentFinder::handleSeedPair( const DriftCircle& seed1, const DriftCircle& seed2, - const DCVec& dcs, const CLVec& cls, MatchDCWithLine& matchWithLine, - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments ) const { - - // create tangent lines - TangentToCircles::LineVec lines = m_tanCreator.tangentLines( seed1, seed2 ); - - - // loop over tangent lines match dcs with line - for( TangentToCircles::LineVec::const_iterator lit = lines.begin(); lit!=lines.end(); ++lit ){ - - // only accept segments with reasonable angle - if( !directionCheck(lit->direction()) ) { - if( m_debugLevel >= 19 ) { - std::cout << " failed direction cut " << lit->direction()*m_roadDir - << " line: " << lit->phi() << " road " << atan2(m_roadDir.y(),m_roadDir.x()) - << " chamber " << atan2(m_chamberDir.y(),m_chamberDir.x()) << std::endl; - } - continue; - } - matchWithLine.set( *lit, m_roadWidth, MatchDCWithLine::Road, tubeRadius() ); - const DCOnTrackVec& hitsOnLine = matchWithLine.match( dcs ); - - if( matchWithLine.hitsOnTrack() <= 2 ) { - if( m_debugLevel >= 19 ) { - std::cout << " too few hits associated " << matchWithLine.hitsOnTrack() << std::endl; - } - continue; - } - if( matchWithLine.hitsOutOfTime() + matchWithLine.deltas() >= matchWithLine.hitsOnTrack() ){ - if( m_debugLevel >= 19 ) { - std::cout << " too many outliers: hoo " << matchWithLine.hitsOutOfTime() - << " delta " << matchWithLine.deltas() << " hot " << matchWithLine.hitsOnTrack() << std::endl; - } - continue; - } - - Segment result( Line(0.,0.,0.), DCOnTrackVec() ); - if( !m_fitter->fit( result, *lit, hitsOnLine, m_hitSelector.selectHitsOnTrack( hitsOnLine ) ) ) { - if( m_debugLevel >= 3 ) std::cout << " failed fit " << std::endl; - continue; - } - - // also apply direction cuts on output - if( !directionCheck(result.line().direction()) ) { - if( m_debugLevel >= 19 ) { - std::cout << " failed direction cut (2) " << result.line().direction()*m_roadDir - << " line: " << result.line().phi() << " road " << atan2(m_roadDir.y(),m_roadDir.x()) - << " chamber " << atan2(m_chamberDir.y(),m_chamberDir.x()) << std::endl; - } - continue; - } - Segment seg = result; - - // update match parameters - updateMatch( seg, matchWithLine ); - - // add shower hits - seg.showerHits( matchWithLine.showerHits() ); - - // associate clusters with segment - - // hack for avoiding bad alloc problem (bug 45261), should be properly fixed! - if (cls.size() < 500) { - associateClusters( seg, cls ); - } - // calculate crossed tubes - crossedTubes( seg ); - - // remove segments with bad onTrack/emptyTube ratio - if( !goodHitRatio( seg ) ){ - if( m_debugLevel >= 3 ) std::cout << " candidate dropped due to hit ratio " << seg << std::endl; - continue; - } - - if( m_debugLevel >= 3 ){ - std::cout << " new segment candidate " << seg << std::endl; - } - - // add segment to collection - segments.insert( seg ); + void SegmentFinder::handleSeedPair(const DriftCircle& seed1, const DriftCircle& seed2, const DCVec& dcs, const CLVec& cls, + MatchDCWithLine& matchWithLine, + ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments) const { + // create tangent lines + TangentToCircles::LineVec lines = m_tanCreator.tangentLines(seed1, seed2); + + // loop over tangent lines match dcs with line + for (TangentToCircles::LineVec::const_iterator lit = lines.begin(); lit != lines.end(); ++lit) { + // only accept segments with reasonable angle + if (!directionCheck(lit->direction())) { + if (m_debugLevel >= 19) { + std::cout << " failed direction cut " << lit->direction() * m_roadDir << " line: " << lit->phi() << " road " + << atan2(m_roadDir.y(), m_roadDir.x()) << " chamber " << atan2(m_chamberDir.y(), m_chamberDir.x()) + << std::endl; + } + continue; + } + matchWithLine.set(*lit, m_roadWidth, MatchDCWithLine::Road, tubeRadius()); + const DCOnTrackVec& hitsOnLine = matchWithLine.match(dcs); + + if (matchWithLine.hitsOnTrack() <= 2) { + if (m_debugLevel >= 19) { std::cout << " too few hits associated " << matchWithLine.hitsOnTrack() << std::endl; } + continue; + } + if (matchWithLine.hitsOutOfTime() + matchWithLine.deltas() >= matchWithLine.hitsOnTrack()) { + if (m_debugLevel >= 19) { + std::cout << " too many outliers: hoo " << matchWithLine.hitsOutOfTime() << " delta " << matchWithLine.deltas() + << " hot " << matchWithLine.hitsOnTrack() << std::endl; + } + continue; + } + + Segment result(Line(0., 0., 0.), DCOnTrackVec()); + if (!m_fitter->fit(result, *lit, hitsOnLine, m_hitSelector.selectHitsOnTrack(hitsOnLine))) { + if (m_debugLevel >= 3) std::cout << " failed fit " << std::endl; + continue; + } + + // also apply direction cuts on output + if (!directionCheck(result.line().direction())) { + if (m_debugLevel >= 19) { + std::cout << " failed direction cut (2) " << result.line().direction() * m_roadDir << " line: " << result.line().phi() + << " road " << atan2(m_roadDir.y(), m_roadDir.x()) << " chamber " << atan2(m_chamberDir.y(), m_chamberDir.x()) + << std::endl; + } + continue; + } + Segment seg = result; + + // update match parameters + updateMatch(seg, matchWithLine); + + // add shower hits + seg.showerHits(matchWithLine.showerHits()); + + // associate clusters with segment + + // hack for avoiding bad alloc problem (bug 45261), should be properly fixed! + if (cls.size() < 500) { associateClusters(seg, cls); } + // calculate crossed tubes + crossedTubes(seg); + + // remove segments with bad onTrack/emptyTube ratio + if (!goodHitRatio(seg)) { + if (m_debugLevel >= 3) std::cout << " candidate dropped due to hit ratio " << seg << std::endl; + continue; + } + + if (m_debugLevel >= 3) { std::cout << " new segment candidate " << seg << std::endl; } + + // add segment to collection + segments.insert(seg); + } + } + void SegmentFinder::crossedTubes(Segment& seg) const { + if (m_mdtGeometry) { + // calculated number of passed tubes + + const DCVec ct = m_mdtGeometry->tubesPassedByLine(seg.line()); + const MatchResult result = m_matchCrossed(seg.dcs(), ct); + unsigned int tubesMl1 {0}, tubesMl2 {0}; + DCOnTrackCit doit = result.first.begin(); + DCOnTrackCit doit_end = result.first.end(); + for (; doit != doit_end; ++doit) { + if (doit->state() == DCOnTrack::CloseDC) continue; + + if (doit->id().ml() == 0) + ++tubesMl1; + else + ++tubesMl2; + } + + DCCit dcit = ct.begin(); + DCCit dcit_end = ct.end(); + for (; dcit != dcit_end; ++dcit) { + if (dcit->id().ml() == 0) + ++tubesMl1; + else + ++tubesMl2; + } + + if (tubesMl1 + tubesMl2 != ct.size() + result.first.size()) { + if (m_debugLevel >= 1) + std::cout << " ERROR in empty tube calculation: ml1 " << tubesMl1 << " ml2 " << tubesMl2 << " tot " + << ct.size() + result.first.size() << std::endl; + } + + seg.crossedTubes(tubesMl1, tubesMl2); + + seg.emptyTubes(result.second); + if (m_debugLevel >= 1) { + if (seg.crossedTubes() != seg.hitsOnTrack() + seg.deltas() + seg.hitsOutOfTime() + seg.emptyTubes().size()) { + std::cout << " ---- mismatch!!! " << std::endl; + DCCit eit = result.second.begin(); + DCCit eit_end = result.second.end(); + for (; eit != eit_end; ++eit) { std::cout << " match result " << *eit << std::endl; } + std::cout << seg << std::endl; + } + } + } } - } - - void SegmentFinder::crossedTubes( Segment& seg ) const - { - if( m_mdtGeometry ){ - // calculated number of passed tubes - - // if single multilayer segment just check geometry in given ml - // int mlflag = -1; - // if( seg.hitsMl2() == 0 ) mlflag = 0; - // else if( seg.hitsMl1() == 0 ) mlflag = 1; - const DCVec& ct = m_mdtGeometry->tubesPassedByLine( seg.line() ); - - -// { -// std::cout << std::endl << " SegmentFinder::crossedTubes " << std::endl; -// ResidualWithLine rline(seg.line()); -// DCOnTrackCit doit = seg.dcs().begin(); -// DCOnTrackCit doit_end = seg.dcs().end(); -// for( ;doit!=doit_end;++doit ){ -// std::cout << " " << *doit << std::endl; -// } -// DCCit eit = ct.begin(); -// DCCit eit_end = ct.end(); -// for( ;eit!=eit_end;++eit ){ -// std::cout << " " << *eit << " dist " << rline.residual(*eit) << std::endl; -// } -// } - - - const MatchResult result = m_matchCrossed( seg.dcs(), ct ); - - // std::cout << " match result " << std::endl; - unsigned int tubesMl1 = 0; - unsigned int tubesMl2 = 0; - DCOnTrackCit doit = result.first.begin(); - DCOnTrackCit doit_end = result.first.end(); - for( ;doit!=doit_end;++doit ){ - if( doit->state() == DCOnTrack::CloseDC ) continue; - - if( doit->id().ml() == 0 ) ++tubesMl1; - else ++tubesMl2; - } - -// { -// DCCit eit = result.second.begin(); -// DCCit eit_end = result.second.end(); -// for( ;eit!=eit_end;++eit ){ -// std::cout << " match result + " << *eit << std::endl; -// } -// } - -// if( m_debugLevel >= 1 ){ -// std::cout << " Number of empty tubes crossed by segment " << result.second.size() << " tubes on track but not crossed " << result.first.size() << std::endl; -// } - DCCit dcit = ct.begin(); - DCCit dcit_end = ct.end(); - for( ; dcit != dcit_end; ++dcit ){ - if( dcit->id().ml() == 0 ) ++tubesMl1; - else ++tubesMl2; - } - - if( tubesMl1 + tubesMl2 != ct.size()+result.first.size() ){ - if( m_debugLevel >= 1 ) std::cout << " ERROR in empty tube calculation: ml1 " << tubesMl1 << " ml2 " << tubesMl2 - << " tot " << ct.size()+result.first.size() << std::endl; - } - - seg.crossedTubes( tubesMl1, tubesMl2 ); - - seg.emptyTubes( result.second ); - if(m_debugLevel >= 1) { - if( seg.crossedTubes() != seg.hitsOnTrack()+seg.deltas()+seg.hitsOutOfTime()+seg.emptyTubes().size() ){ - std::cout << " ---- mismatch!!! " << std::endl; - DCCit eit = result.second.begin(); - DCCit eit_end = result.second.end(); - for( ;eit!=eit_end;++eit ){ - std::cout << " match result " << *eit << std::endl; - } - std::cout << seg << std::endl; - } - } - } - } - - void SegmentFinder::updateMatch( Segment& seg, MatchDCWithLine& matchWithLine ) const - { - seg.deltas( matchWithLine.deltas() ); - seg.hitsOutOfTime( matchWithLine.hitsOutOfTime() ); - seg.hitsOnTrack( matchWithLine.hitsOnTrack() ); - seg.hitsPerMl( matchWithLine.hitsMl1(), matchWithLine.hitsMl2() ); - seg.closeHits( matchWithLine.closeHits() ); - } - - void SegmentFinder::twoMultiLayerScan( const DCVec& seeds_ml1, const DCVec& seeds_ml2, - const DCVec& dcs, const CLVec& cls, - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments ) const { - MatchDCWithLine matchWithLine; - - // hack for bug #45261, should be properly fixed! - if (seeds_ml1.size()*seeds_ml2.size() > 2500) return; - - // combine a dc from the first set with a dc from the second set - for( DCCit it1=seeds_ml1.begin(); it1!=seeds_ml1.end(); ++it1 ){ - - for( DCVec::const_reverse_iterator it2=seeds_ml2.rbegin(); it2!=seeds_ml2.rend(); ++it2 ){ - - // find segments using the two seeds - handleSeedPair( *it1, *it2, dcs, cls, matchWithLine, segments ); - - } + + void SegmentFinder::updateMatch(Segment& seg, MatchDCWithLine& matchWithLine) const { + seg.deltas(matchWithLine.deltas()); + seg.hitsOutOfTime(matchWithLine.hitsOutOfTime()); + seg.hitsOnTrack(matchWithLine.hitsOnTrack()); + seg.hitsPerMl(matchWithLine.hitsMl1(), matchWithLine.hitsMl2()); + seg.closeHits(matchWithLine.closeHits()); } - } + void SegmentFinder::twoMultiLayerScan(const DCVec& seeds_ml1, const DCVec& seeds_ml2, const DCVec& dcs, const CLVec& cls, + ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments) const { + MatchDCWithLine matchWithLine; - void SegmentFinder::fullScan( const DCVec& seeds, const DCVec& dcs, const CLVec& cls, - ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments ) const { - MatchDCWithLine matchWithLine; + // hack for bug #45261, should be properly fixed! + if (seeds_ml1.size() * seeds_ml2.size() > 2500) return; - // use all combinations of segments as seed - - // hack for bug #45261, should be properly fixed! - if (seeds.size() > 50) return; + // combine a dc from the first set with a dc from the second set + for (DCCit it1 = seeds_ml1.begin(); it1 != seeds_ml1.end(); ++it1) { + for (DCVec::const_reverse_iterator it2 = seeds_ml2.rbegin(); it2 != seeds_ml2.rend(); ++it2) { + // find segments using the two seeds + handleSeedPair(*it1, *it2, dcs, cls, matchWithLine, segments); + } + } + } - for( DCCit it=seeds.begin() ;it!=seeds.end(); ++it ){ + void SegmentFinder::fullScan(const DCVec& seeds, const DCVec& dcs, const CLVec& cls, + ResolvedCollection<Segment, IsSubsetSegment<SortDcsByY>>& segments) const { + MatchDCWithLine matchWithLine; - for( DCVec::const_reverse_iterator rit = seeds.rbegin();rit!=seeds.rend(); ++rit ){ + // use all combinations of segments as seed - // break of inner loop when *it == *rit - if( std::distance( seeds.begin(), it ) >= std::distance( rit, seeds.rend()-1 ) ) break; + // hack for bug #45261, should be properly fixed! + if (seeds.size() > 50) return; - // hits in the same ml are not combined - if( std::abs( it->position().y() - rit->position().y() ) < 1. ) break; + for (DCCit it = seeds.begin(); it != seeds.end(); ++it) { + for (DCVec::const_reverse_iterator rit = seeds.rbegin(); rit != seeds.rend(); ++rit) { + // break of inner loop when *it == *rit + if (std::distance(seeds.begin(), it) >= std::distance(rit, seeds.rend() - 1)) break; - // find segments using the two seeds - handleSeedPair( *it, *rit, dcs, cls, matchWithLine, segments ); + // hits in the same ml are not combined + if (std::abs(it->position().y() - rit->position().y()) < 1.) break; - } - } - } + // find segments using the two seeds + handleSeedPair(*it, *rit, dcs, cls, matchWithLine, segments); + } + } + } - DCVec SegmentFinder::removeDCOnSegments( const DCVec& dcs, const SegVec& segs ) const - { + DCVec SegmentFinder::removeDCOnSegments(const DCVec& dcs, const SegVec& segs) const { + if (segs.empty()) return dcs; - if( segs.empty() ) return dcs; + DCVec newdcs; - DCVec newdcs; + SameTube sameTube; - SameTube sameTube; + DCCit dit = dcs.begin(); + DCCit dit_end = dcs.end(); - DCCit dit = dcs.begin(); - DCCit dit_end = dcs.end(); + for (; dit != dit_end; ++dit) { + bool found(false); + for (SegCit sit = segs.begin(); sit != segs.end(); ++sit) { + DCOnTrackCit pos = std::lower_bound(sit->dcs().begin(), sit->dcs().end(), *dit, SortDcsByY()); + if (pos != sit->dcs().end() && pos->state() != DCOnTrack::CloseDC && sameTube(*pos, *dit)) { + found = true; + break; + } + } + if (!found) { newdcs.push_back(*dit); } + } - for( ; dit!=dit_end; ++dit ){ - bool found(false); - // std::cout << " ------ dc " << *dit <<std::endl; - for( SegCit sit = segs.begin(); sit!=segs.end(); ++sit ){ - // std::cout << " segments " << *sit; - DCOnTrackCit pos = std::lower_bound( sit->dcs().begin(), sit->dcs().end(), - *dit, SortDcsByY() ); - if( pos != sit->dcs().end() && pos->state() != DCOnTrack::CloseDC && sameTube( *pos, *dit ) ) { - //std::cout << " dc found " << *dit << " - " << *pos << std::endl; - found = true; - break; - } - } - if(!found){ - //std::cout << " no match found " << std::endl; - newdcs.push_back( *dit ); - } + return newdcs; } - // std::cout << " old seeds " << dcs.size() << " new " << newdcs.size() << std::endl; - - return newdcs; - } - - void SegmentFinder::associateClusters( SegVec& segs, const CLVec& cls ) const - { - // loop over all segments pass to associateClusters - SegIt sit= segs.begin(); - SegIt sit_end = segs.end(); - for( ;sit!=sit_end;++sit ){ - associateClusters( *sit, cls ); + void SegmentFinder::associateClusters(SegVec& segs, const CLVec& cls) const { + // loop over all segments pass to associateClusters + SegIt sit = segs.begin(); + SegIt sit_end = segs.end(); + for (; sit != sit_end; ++sit) { associateClusters(*sit, cls); } } + void SegmentFinder::associateClusters(Segment& seg, const CLVec& cls) const { + // calculate residuals with line + ResidualWithSegment resSeg(seg); + + // store associated clusters + CLVec assCls; + + bool hasClustersBefore = false; + bool hasClustersAfter = false; + + CLCit cit = cls.begin(); + CLCit cit_end = cls.end(); + for (; cit != cit_end; ++cit) { + // always assign phi hits + if (cit->id().measuresPhi() == 1) { + if (m_debugLevel >= 1) + std::cout << " phi hit, not associated: id " << cit->id().id() << " pos " << cit->position() << std::endl; + continue; + } + + // calculate residual + double res = resSeg.residual(*cit); + double error = std::sqrt(cit->err() * cit->err() + resSeg.trackError2(*cit)); + double pull = res / error; + + if (m_debugLevel >= 4) + std::cout << " handling cluster " << cit->id() << " res " << res << " pull " << pull << " hit error " << cit->err() + << " track error " << sqrt(resSeg.trackError2(*cit)) << " index " << cit->index() << " pos " << cit->position(); + + double pullCut = cit->id().isTgc() ? m_tgcPullCut : m_rpcPullCut; + + // spatial associate + if (std::abs(pull) < pullCut) { + assCls.push_back(*cit); + if (cit->position().y() < 0.) hasClustersBefore = true; + if (cit->position().y() > 0.) hasClustersAfter = true; + if (m_debugLevel >= 4) std::cout << " associated" << std::endl; + } else { + if (m_debugLevel >= 4) std::cout << " dropped" << std::endl; + } + } - } - void SegmentFinder::associateClusters( Segment& seg, const CLVec& cls ) const - { - - // calculate residuals with line - ResidualWithSegment resSeg(seg); - - // store associated clusters - CLVec assCls; - - bool hasClustersBefore = false; - bool hasClustersAfter = false; - - CLCit cit = cls.begin(); - CLCit cit_end = cls.end(); - for( ;cit!=cit_end;++cit ){ - - // always assign phi hits - if( cit->id().measuresPhi() == 1 ){ - if( m_debugLevel >= 1 ) std::cout << " phi hit, not associated: id " << cit->id().id() << " pos " << cit->position() << std::endl; - continue; - } - - // calculate residual - double res = resSeg.residual( *cit ); - double error = sqrt( cit->err()*cit->err() + resSeg.trackError2(*cit) ); - double pull = res/error; - - if( m_debugLevel >= 4 ) std::cout << " handling cluster " << cit->id() << " res " << res << " pull " << pull - << " hit error " << cit->err() - << " track error " << sqrt(resSeg.trackError2(*cit) ) - << " index " << cit->index() - << " pos " << cit->position(); - - double pullCut = cit->id().isTgc() ? m_tgcPullCut : m_rpcPullCut; - - // spatial associate - if( std::abs( pull ) < pullCut ){ - assCls.push_back( *cit ); - if( cit->position().y() < 0. ) hasClustersBefore = true; - if( cit->position().y() > 0. ) hasClustersAfter = true; - if( m_debugLevel >= 4 ) std::cout << " associated" << std::endl; - }else{ - if( m_debugLevel >= 4 ) std::cout << " dropped" << std::endl; - } - } + if (assCls.empty()) return; - if( assCls.empty() ) return; - - seg.clusters( assCls ); - unsigned int ncl = 0; - if( hasClustersBefore ) ++ncl; - if( hasClustersAfter ) ++ncl; - seg.clusterLayers( ncl ); - // std::cout << " associated clusters " << seg.clusters().size() << std::endl; - - } - - bool SegmentFinder::goodHitRatio( Segment& seg ) const - { - if( !m_mdtGeometry ) return true; - bool good = (double)( seg.crossedTubes() - seg.hitsOnTrack() ) < m_ratioEmptyTubesCut*seg.hitsOnTrack(); - if( !good ){ - if( seg.hitsMl1() == 0 ){ - good = (double)( seg.crossedTubesMl2() - seg.hitsMl2() ) < m_ratioEmptyTubesCut*seg.hitsMl2(); - }else if( seg.hitsMl2() == 0 ){ - good = (double)( seg.crossedTubesMl1() - seg.hitsMl1() ) < m_ratioEmptyTubesCut*seg.hitsMl1(); - } + seg.clusters(assCls); + unsigned int ncl = 0; + if (hasClustersBefore) ++ncl; + if (hasClustersAfter) ++ncl; + seg.clusterLayers(ncl); } - return good; - } - - -} + bool SegmentFinder::goodHitRatio(Segment& seg) const { + if (!m_mdtGeometry) return true; + bool good = (double)(seg.crossedTubes() - seg.hitsOnTrack()) < m_ratioEmptyTubesCut * seg.hitsOnTrack(); + if (!good) { + if (seg.hitsMl1() == 0) { + good = (double)(seg.crossedTubesMl2() - seg.hitsMl2()) < m_ratioEmptyTubesCut * seg.hitsMl2(); + } else if (seg.hitsMl2() == 0) { + good = (double)(seg.crossedTubesMl1() - seg.hitsMl1()) < m_ratioEmptyTubesCut * seg.hitsMl1(); + } + } + return good; + } +} // namespace TrkDriftCircleMath diff --git a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/TangentToCircles.cxx b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/TangentToCircles.cxx index 8d2645cf011d7a1837a071fba176067e42230a9c..2608dc0c15bb737abe805b03162391a4f32740b3 100644 --- a/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/TangentToCircles.cxx +++ b/Tracking/TrkUtilityPackages/TrkDriftCircleMath/src/TangentToCircles.cxx @@ -8,102 +8,71 @@ namespace TrkDriftCircleMath { - - TangentToCircles::LineVec TangentToCircles::tangentLines( const DriftCircle& dc1, const DriftCircle& dc2 ) const - { - LineVec lines; - lines.reserve(4); - - double DeltaX = dc2.x() - dc1.x(); - double DeltaY = dc2.y() - dc1.y(); - double DistanceOfCenters = sqrt(DeltaX*DeltaX + DeltaY*DeltaY); - if( DistanceOfCenters == 0. ) { - std::cout << " TangentToCircles::tangentLines >>> ERROR same tube on input " << std::endl; - return lines; + TangentToCircles::LineVec TangentToCircles::tangentLines(const DriftCircle& dc1, const DriftCircle& dc2) const { + LineVec lines; + lines.reserve(4); + + double DeltaX = dc2.x() - dc1.x(); + double DeltaY = dc2.y() - dc1.y(); + double DistanceOfCenters = std::hypot(DeltaX, DeltaY); + if (DistanceOfCenters == 0.) { + std::cout << " TangentToCircles::tangentLines >>> ERROR same tube on input " << std::endl; + return lines; + } + double Alpha0 = std::atan2(DeltaY, DeltaX); + + // Case of 0 drift distances, only 1 line + if (dc1.r() == 0. && dc2.r() == 0.) { + lines.emplace_back(dc1.position(), Alpha0); + return lines; + } + + // Here are the first 2 "inner" lines .... + double RSum = dc1.r() + dc2.r(); + + double ratio = RSum / DistanceOfCenters; + if (std::abs(ratio) > 1.) return lines; + + double Alpha1 = std::asin(ratio); + + double line_phi = Alpha0 + Alpha1; + LocVec2D pos1(dc1.x() + dc1.r() * std::sin(line_phi), dc1.y() - dc1.r() * std::cos(line_phi)); + lines.emplace_back(pos1, line_phi); + + line_phi = Alpha0 - Alpha1; + LocVec2D pos2(dc1.x() - dc1.r() * std::sin(line_phi), dc1.y() + dc1.r() * std::cos(line_phi)); + lines.emplace_back(pos2, line_phi); + + // Case where one of the drifts is 0 ==> Only two lines + if (dc1.r() == 0. || dc2.r() == 0.) return lines; + + // ... and here are the other 2 "outer" lines + double DeltaR = std::abs(dc2.r() - dc1.r()); + + ratio = DeltaR / DistanceOfCenters; + if (std::abs(ratio) > 1.) return lines; + + double Alpha2 = asin(ratio); + + if (dc1.r() < dc2.r()) { + line_phi = Alpha0 + Alpha2; + LocVec2D pos3(dc1.x() - dc1.r() * sin(line_phi), dc1.y() + dc1.r() * cos(line_phi)); + lines.emplace_back(pos3, line_phi); + + line_phi = Alpha0 - Alpha2; + LocVec2D pos4(dc1.x() + dc1.r() * std::sin(line_phi), dc1.y() - dc1.r() * std::cos(line_phi)); + lines.emplace_back(pos4, line_phi); + + } else { + line_phi = Alpha0 + Alpha2; + LocVec2D pos3(dc1.x() + dc1.r() * std::sin(line_phi), dc1.y() - dc1.r() * std::cos(line_phi)); + lines.emplace_back(pos3, line_phi); + + line_phi = Alpha0 - Alpha2; + LocVec2D pos4(dc1.x() - dc1.r() * std::sin(line_phi), dc1.y() + dc1.r() * std::cos(line_phi)); + lines.emplace_back(pos4, line_phi); + } + return lines; } - double Alpha0 = atan2(DeltaY,DeltaX); - - // clean up lines vector - //if( m_debug ) - //std::cout << " calculating Lines " << dc1 << " " << dc2 << std::endl; - - - // Case of 0 drift distances, only 1 line - if ( dc1.r() == 0. && dc2.r() == 0.) { - //if( m_debug ) std::cout << " line pos " << dc1.position() << " phi " << Alpha0 << std::endl; - lines.push_back( Line( dc1.position(), Alpha0 ) ); - return lines; - } - - - // Here are the first 2 "inner" lines .... - double RSum = dc1.r() + dc2.r(); - - //std::cout << " DistanceOfCenters " << DistanceOfCenters << " RSum " << RSum << std::endl; - - double ratio = RSum/DistanceOfCenters; - if( fabs(ratio) > 1. ) return lines; - - double Alpha1 = asin(ratio); - - double line_phi = Alpha0 + Alpha1; - LocPos pos1( dc1.x() + dc1.r()*sin(line_phi), dc1.y() - dc1.r()*cos(line_phi) ) ; - lines.push_back( Line(pos1, line_phi) ); - - //if( m_debug ) std::cout << " line pos " << pos1 << " phi " << line_phi << std::endl; - - - - line_phi = Alpha0 - Alpha1; - LocPos pos2( dc1.x() - dc1.r()*sin(line_phi), dc1.y() + dc1.r()*cos(line_phi) ); - lines.push_back( Line(pos2, line_phi) ); - - //if( m_debug ) std::cout << " line pos " << pos2 << " phi " << line_phi << std::endl; - - - // Case where one of the drifts is 0 ==> Only two lines - if (dc1.r() == 0. || dc2.r() == 0.) return lines; - - // ... and here are the other 2 "outer" lines - double DeltaR = fabs(dc2.r() - dc1.r()); - - ratio = DeltaR/DistanceOfCenters; - if( fabs(ratio) > 1. ) return lines; - - double Alpha2 = asin(ratio); - - if ( dc1.r() < dc2.r() ) { - //if( m_debug ) std::cout << " dc1.r() < dc2.r() " << std::endl; - - line_phi = Alpha0 + Alpha2; - LocPos pos3( dc1.x() - dc1.r()*sin(line_phi), dc1.y() + dc1.r()*cos(line_phi) ); - lines.push_back( Line(pos3, line_phi) ); - - //if( m_debug ) std::cout << " line pos " << pos3 << " phi " << line_phi << std::endl; - - line_phi = Alpha0 - Alpha2; - LocPos pos4( dc1.x() + dc1.r()*sin(line_phi), dc1.y() - dc1.r()*cos(line_phi) ); - lines.push_back( Line(pos4, line_phi) ); - - //if( m_debug ) std::cout << " line pos " << pos4 << " phi " << line_phi << std::endl; - - } else { - //if( m_debug ) std::cout << " dc1.r() > dc2.r() " << std::endl; - - line_phi = Alpha0 + Alpha2; - LocPos pos3( dc1.x() + dc1.r()*sin(line_phi), dc1.y() - dc1.r()*cos(line_phi) ); - lines.push_back( Line(pos3, line_phi) ); - - //if( m_debug ) std::cout << " line pos " << pos3 << " phi " << line_phi << std::endl; - - line_phi = Alpha0 - Alpha2; - LocPos pos4( dc1.x() - dc1.r()*sin(line_phi), dc1.y() + dc1.r()*cos(line_phi) ); - lines.push_back( Line(pos4, line_phi) ); - - //if( m_debug ) std::cout << " line pos " << pos4 << " phi " << line_phi << std::endl; - - } - return lines; - } -} +} // namespace TrkDriftCircleMath diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx index ccb83610c5e551aca9cf62d15bf38d043b16c9e8..9a586d49ec74533af417317db9b0350084ce8007 100644 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/src/TrigFastTrackFinder.cxx @@ -2096,14 +2096,14 @@ StatusCode TrigFastTrackFinder::finddEdxTrk(const EventContext& ctx, const Track xAOD::TrigComposite *dEdxTrk = new xAOD::TrigComposite(); dEdxTrk->makePrivateStore(); dEdxTrkContainer->push_back(dEdxTrk); - dEdxTrk->setDetail<int> ("dEdxTrk_id", i_track); - dEdxTrk->setDetail<float>("dEdxTrk_pt", pt); + dEdxTrk->setDetail<int> ("dEdxTrk_id", i_track); + dEdxTrk->setDetail<float>("dEdxTrk_pt", pt); float eta = -log(tan(0.5*theta)); - dEdxTrk->setDetail<float>("dEdxTrk_eta", eta); - dEdxTrk->setDetail<float>("dEdxTrk_phi", phi0); - dEdxTrk->setDetail<float>("dEdxTrk_dedx", dedx); + dEdxTrk->setDetail<float>("dEdxTrk_eta", eta); + dEdxTrk->setDetail<float>("dEdxTrk_phi", phi0); + dEdxTrk->setDetail<float>("dEdxTrk_a0beam", a0beam); + dEdxTrk->setDetail<float>("dEdxTrk_dedx", dedx); dEdxTrk->setDetail<int> ("dEdxTrk_dedx_n_usedhits", n_usedhits); - dEdxTrk->setDetail<float>("dEdxTrk_a0beam", a0beam); dEdxTrk->setDetail<int> ("dEdxTrk_n_hits_innermost", n_hits_innermost); dEdxTrk->setDetail<int> ("dEdxTrk_n_hits_inner", n_hits_inner); dEdxTrk->setDetail<int> ("dEdxTrk_n_hits_pix", n_hits_pix); diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py index 4754d261bf8466889d129e09f002d09e69911a1b..72a8e964ec409ef315f0aa8e0281859c02e0cfaf 100644 --- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py +++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py @@ -220,8 +220,8 @@ def muFastSteeringCfg( flags, roisKey, setup="" ): topoRoad=True, dEtasurrRoI = 0.14, dPhisurrRoI = 0.14, - MonTool = None ) - #MonTool = TrigL2MuonSAMonitoring() ) + MonTool = None, + UseRun3Config = flags.Trigger.enableL1MuonPhase1 ) # Default backextrapolator is for MC Misaligned Detector # Based on MuonBackExtrapolatorForMisalignedDet at TrigMuonBackExtrapolator/TrigMuonBackExtrapolatorConfig.py diff --git a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py index 138b8ee87ec510486e672d3d0b45e248b78ed4fe..a55d11393b3da3a16b20333d70614f455d54208c 100644 --- a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py +++ b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/python/TrigT2CaloEgammaConfig.py @@ -9,8 +9,36 @@ from TrigT2CaloCalibration.EgammaCalibrationConfig import (EgammaHitsCalibration EgammaSshapeCalibrationBarrelConfig, EgammaSshapeCalibrationEndcapConfig) - - +#======================================================================= +from AthenaCommon.JobProperties import JobProperty, JobPropertyContainer +from AthenaCommon.JobProperties import jobproperties + +#======================================================================= +# Defines a sub-container for the algorithm switches +class RingerReFexFlags(JobPropertyContainer): + """ RingerReFex information """ + +# add the CaloRingerFlags flags container to the top container +jobproperties.add_Container(RingerReFexFlags) +#======================================================================= +class DoQuarter(JobProperty): + """ master switch for quarter rings Algorithm + """ + statusOn = True + allowedTypes = ['bool'] + StoredValue = False +jobproperties.RingerReFexFlags.add_JobProperty(DoQuarter) + +class DumpCells(JobProperty): + """ master switch for dump cells property + """ + statusOn = True + allowedTypes = ['bool'] + StoredValue = False +jobproperties.RingerReFexFlags.add_JobProperty(DumpCells) + +ringerReFexFlags = jobproperties.RingerReFexFlags +#======================================================================= class RingerReFexConfig( CompFactory.RingerReFex ): @@ -49,8 +77,10 @@ class RingerReFexConfig( CompFactory.RingerReFex ): [ Layer.HEC3, Layer.TileBar2, Layer.TileGap1, Layer.TileExt2 ] # TTHEC: 3, TILE ] - - self.DoQuarter = same(False) + # NOTE: This properties should be test soon + #self.DoQuarter = same( ringerReFexFlags.DoQuarter ) + #self.DumpCells = ringerReFexFlags.DumpCells + self.DoQuarter = same( False ) self.DoEtaAxesDivision = same(True) self.DoPhiAxesDivision = same(True) @@ -61,12 +91,10 @@ class RingerReFexConfig( CompFactory.RingerReFex ): monTool.defineHistogram( "TIME_load_cells", title="Load Cells Time;time [us]",xbins=50, xmin=0, xmax=100,type='TH1F', path='EXPERT') self.MonTool = monTool - +#======================================================================= class AsymRingerReFexConfig( RingerReFexConfig ): - __slots__ = [] - def __init__(self, name = "AsymRingerReMaker"): super(AsymRingerReFexConfig, self).__init__(name) def same(value): @@ -74,9 +102,7 @@ class AsymRingerReFexConfig( RingerReFexConfig ): self.DoQuarter = same(True) self.RingerKey = "FastCaloAsymRings" - - - +#======================================================================= class T2CaloEgamma_All (CompFactory.T2CaloEgammaReFastAlgo): __slots__ = [] @@ -97,7 +123,7 @@ class T2CaloEgamma_All (CompFactory.T2CaloEgammaReFastAlgo): ( 'IRegSelLUTCondData' , 'ConditionStore+RegSelLUTCondData_TILE' ), ( 'IRegSelLUTCondData' , 'ConditionStore+RegSelLUTCondData_FCALEM' ), ( 'IRegSelLUTCondData' , 'ConditionStore+RegSelLUTCondData_FCALHAD' ) ] - +#======================================================================= class T2CaloEgamma_AllEm (CompFactory.T2CaloEgammaReFastAlgo): __slots__ = [] @@ -117,7 +143,7 @@ class T2CaloEgamma_AllEm (CompFactory.T2CaloEgammaReFastAlgo): ( 'IRegSelLUTCondData' , 'ConditionStore+RegSelLUTCondData_TILE' ), ( 'IRegSelLUTCondData' , 'ConditionStore+RegSelLUTCondData_FCALEM' ), ( 'IRegSelLUTCondData' , 'ConditionStore+RegSelLUTCondData_FCALHAD' ) ] - +#======================================================================= class T2CaloEgamma_ReFastAlgo (CompFactory.T2CaloEgammaReFastAlgo): __slots__ = [] @@ -149,12 +175,7 @@ class T2CaloEgamma_ReFastAlgo (CompFactory.T2CaloEgammaReFastAlgo): ringer.ClustersName = ClustersName self.IReAlgToolList+= [ringer] - from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import AsymRingerReFexConfig - asymringer = AsymRingerReFexConfig('ReFaAlgoAsymRingerFexConfig') - asymringer.RingerKey= "HLT_FastCaloAsymRinger" - asymringer.trigDataAccessMT=svcMgr.TrigCaloDataAccessSvc - asymringer.ClustersName = ClustersName - self.IReAlgToolList+= [asymringer] + self.EtaWidth = 0.2 self.PhiWidth = 0.2 diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/JetMetExAlg.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/JetMetExAlg.cxx index d557edc0ef31772ddb1bc7a7c71d5b040e064224..cf2b164b30c6cd648c36db9ec39b1642720cb3ae 100644 --- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/JetMetExAlg.cxx +++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/JetMetExAlg.cxx @@ -51,8 +51,7 @@ StatusCode JetMetExAlg::initialize() { CHECK( m_matchTool.retrieve() ); CHECK( m_tah.retrieve() ); CHECK( m_histSvc.retrieve() ); - m_trigDec->ExperimentalAndExpertMethods()->enable(); - + //Setup histograms for trigger decision and prescale const int nTrigger = (int) m_hltchainList.size(); m_h_triggerAccepts = new TH1F( "TriggerAccepts", "TriggerAccepts", nTrigger, 0, nTrigger); diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TDTExample.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TDTExample.cxx index b78509da0bb26875c264586fb113462d9506b822..ea3be11b9e136741cc9e3c7f6e80813cdfe3c136 100644 --- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TDTExample.cxx +++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TDTExample.cxx @@ -1,8 +1,7 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -// $Id: TDTExample.cxx 779433 2016-10-20 15:22:56Z rwhite $ // Updated August 2016 for Trigger for Physics Workshop by rwhite // // STL include(s): @@ -41,8 +40,6 @@ * * @author Tomasz Bold <tomasz.bold@cern.ch> - UC Irvine, AGH-UST Krakow * - * $Revision: 779433 $ - * $Date: 2016-10-20 17:22:56 +0200 (Thu, 20 Oct 2016) $ */ class JetInfo { @@ -74,7 +71,6 @@ StatusCode Trig::TDTExample::initialize() { // Retrieve the TDT: CHECK( m_trigDec.retrieve() ); - m_trigDec->ExperimentalAndExpertMethods()->enable(); CHECK( m_tah.retrieve() ); ATH_MSG_INFO( "Initialization successful" ); @@ -130,9 +126,6 @@ StatusCode Trig::TDTExample::checkTriggerDecision(){ // passedBits fully define the trigger decision of a particular chain // More details see inside the definition of Chain // http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx - // Expert methods updates the cache object - ExpertMethods *em = m_trigDec->ExperimentalAndExpertMethods(); - for(const auto& chain:m_cfg_chains){ // By default, this returns the "Physics condition ATH_MSG_INFO(chain << " Passed " << m_trigDec->isPassed(chain)); @@ -173,7 +166,7 @@ StatusCode Trig::TDTExample::checkTriggerDecision(){ ATH_MSG_INFO(chain << " ============= "); // Create a Chain object from configuration - const HLT::Chain *aChain=em->getChainDetails(chain); + const HLT::Chain *aChain=m_trigDec->ExperimentalAndExpertMethods().getChainDetails(chain); if(!aChain) ATH_MSG_WARNING("Cannot create chain object"); else @@ -256,7 +249,7 @@ StatusCode Trig::TDTExample::printChainConfiguration() { // See TrigConfHLTData/HLTChain.h for(const std::string& trigger : m_cfg_chains){ - const auto trig_conf = m_trigDec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(trigger); + const auto trig_conf = m_trigDec->ExperimentalAndExpertMethods().getChainConfigurationDetails(trigger); ATH_MSG_INFO("Chain passes " << m_trigDec->isPassed(trigger)); if(!trig_conf) { ATH_MSG_WARNING("Cannot retrieve trigger configuration for " << trigger << " " << typeid(trigger).name()); diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TagAndProbeExAlg.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TagAndProbeExAlg.cxx index a9fed6edcde647b26b58f76adf73cebc69aaa628..9f1f65b61413e764b3a57005707d98a5f9291d1e 100644 --- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TagAndProbeExAlg.cxx +++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TagAndProbeExAlg.cxx @@ -1,8 +1,7 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -// $Id: TagAndProbeExAlg.cxx 785295 2016-11-19 03:18:52Z ssnyder $ // Updated to xAOD for Trigger Tutorial // // Gaudi/Athena include(s): @@ -53,7 +52,6 @@ StatusCode TagAndProbeExAlg::initialize() { CHECK( m_matchTool.retrieve() ); CHECK( m_tah.retrieve() ); CHECK( m_histSvc.retrieve() ); - m_trigDec->ExperimentalAndExpertMethods()->enable(); if(m_flavor=="Electron") m_objType = xAOD::Type::Electron; else if(m_flavor=="Muon") m_objType = xAOD::Type::Muon; else if(m_flavor=="Tau") m_objType = xAOD::Type::Tau; diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigEmulatorExAlg.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigEmulatorExAlg.cxx index df8efbd03228612f55c939538bbfd8e9a348c099..e79bf0b9bd4f6d21191ab090d92e9a895bc30f40 100644 --- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigEmulatorExAlg.cxx +++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigEmulatorExAlg.cxx @@ -1,8 +1,7 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -// $Id: TrigEmulatorExAlg.cxx 770492 2016-08-28 16:52:40Z rwhite $ // Place holder for TrigEmulator trigger analysis for Trigger Tutorial // // Gaudi/Athena include(s): @@ -59,8 +58,6 @@ StatusCode TrigEmulatorExAlg::initialize() { CHECK( m_triggerAnalysisHelper.retrieve() ); CHECK( m_histSvc.retrieve() ); - m_triggerDecisionTool->ExperimentalAndExpertMethods()->enable(); - if ( ! m_l1chainList.empty() ) { ATH_MSG_INFO("Considering the following L1 chains:"); for(const auto& chain : m_l1chainList) { diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigExpressStreamAlg.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigExpressStreamAlg.cxx index 236f29eeba6972f4c39d2864d8d2a1474ca4e2a2..22c93b73d4956e7aedfb6ed6536f1ddf4de7ffa3 100644 --- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigExpressStreamAlg.cxx +++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TrigExpressStreamAlg.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // C/C++ @@ -39,8 +39,7 @@ StatusCode TrigExpressStreamAlg::initialize() { CHECK( m_trigDec.retrieve() ); - m_trigDec->ExperimentalAndExpertMethods()->enable(); - m_numHLTPassedEvents.clear(); // events firing RAW trigger + m_numHLTPassedEvents.clear(); // events firing RAW trigger m_numHLTFailedEvents.clear(); // events failing m_numL1PrescaledEvents.clear(); // events prescaled at L1 m_numHLTPrescaledEvents.clear(); // events prescaled at HLT @@ -75,15 +74,13 @@ StatusCode TrigExpressStreamAlg::execute() return StatusCode::SUCCESS; } - const Trig::ExpertMethods *em = m_trigDec->ExperimentalAndExpertMethods(); - // Do we need to check this every event? if(m_evtNr==1){ std::vector<std::string> configuredHLTChains = m_trigDec->getListOfTriggers( "HLT_.*" ); // Get list of triggers in the Express Stream for(const auto& chain:configuredHLTChains){ - const HLT::Chain *aChain=em->getChainDetails(chain); - const auto trig_conf = m_trigDec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(chain); + const HLT::Chain *aChain=m_trigDec->ExperimentalAndExpertMethods().getChainDetails(chain); + const auto trig_conf = m_trigDec->ExperimentalAndExpertMethods().getChainConfigurationDetails(chain); const std::vector<TrigConf::HLTStreamTag*> chainStreams=trig_conf->streams(); const unsigned int chid=aChain->getChainCounter(); const float prescale=trig_conf->prescale(); @@ -122,7 +119,7 @@ StatusCode TrigExpressStreamAlg::execute() bool l1prescale=tbp && !tap; // bool isPrescale=efprescale || l1prescale; - const auto trig_conf = m_trigDec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(chain); + const auto trig_conf = m_trigDec->ExperimentalAndExpertMethods().getChainConfigurationDetails(chain); const std::vector<TrigConf::HLTStreamTag*> chainStreams=trig_conf->streams(); const float prescale=trig_conf->prescale(); if(prescale!=m_prescale) m_prescale=prescale; // Update the prescale for this chain diff --git a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisTutorial.cxx b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisTutorial.cxx index 777237c9b5525e17f355593a7ff3585d237b09e0..700c92f29919bdd13d30dfa5368d14dc0b0d0320 100644 --- a/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisTutorial.cxx +++ b/Trigger/TrigAnalysis/TrigAnalysisExamples/src/TriggerAnalysisTutorial.cxx @@ -53,7 +53,6 @@ StatusCode TriggerAnalysisTutorial::initialize() { CHECK( m_trigDec.retrieve() ); CHECK( m_matchTool.retrieve() ); CHECK( m_histSvc.retrieve() ); - m_trigDec->ExperimentalAndExpertMethods()->enable(); // done // const int nTrigger = (int) m_chain_names.size(); diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx index 0d6504f5f6be1ad51ed57c78e7e1c87697403820..c1a61af1d63c6a52e6b2eb42a8813db8969cf4ae 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /********************************************************************************** @@ -49,43 +49,6 @@ #endif -Trig::CacheGlobalMemory::CacheGlobalMemory() : - m_store( nullptr ), - m_unpacker( nullptr ), - m_navigation(nullptr), - m_confItems(nullptr), - m_confChains(nullptr), - m_expressStreamContainer(nullptr), - m_decisionKeyPtr(nullptr), -#ifndef XAOD_ANALYSIS // Full Athena - m_oldDecisionKeyPtr(nullptr), - m_oldEventInfoKeyPtr(nullptr), -#endif - m_run2NavigationKeyPtr(nullptr), - m_run3NavigationKeyPtr(nullptr), - m_bgCode(0) -{} - -Trig::CacheGlobalMemory::~CacheGlobalMemory() { - delete m_unpacker; - - for( auto cgIt = m_chainGroups.begin(); cgIt != m_chainGroups.end(); - ++cgIt ) { - delete cgIt->second; - } - for( auto iIt = m_itemsCache.begin(); iIt != m_itemsCache.end(); ++iIt ) { - delete iIt->second; - } - for( auto cIt = m_l2chainsCache.begin(); cIt != m_l2chainsCache.end(); - ++cIt ) { - delete cIt->second; - } - for( auto cIt = m_efchainsCache.begin(); cIt != m_efchainsCache.end(); - ++cIt ) { - delete cIt->second; - } -} - const Trig::ChainGroup* Trig::CacheGlobalMemory::createChainGroup(const std::vector< std::string >& triggerNames, const std::string& alias, const bool parseAsRegex) { @@ -95,31 +58,26 @@ const Trig::ChainGroup* Trig::CacheGlobalMemory::createChainGroup(const std::vec // create a proper key std::vector< std::string > key=Trig::keyWrap(triggerNames); - auto res = m_chainGroups.try_emplace (key, nullptr); - if (res.second) { - res.first->second = new ChainGroup( key, *this ); - updateChainGroup(res.first->second, parseAsRegex); - m_chainGroupsRef[key] = res.first->second; + auto [itr, inserted] = m_chainGroups.try_emplace (key, /*ChainGroup*/ key, *this); + if (inserted) { + updateChainGroup(itr->second, parseAsRegex); + m_chainGroupsRef[key] = &(itr->second); } // this overwrites the pointer in the map each time in case the alias needs defining - if (alias!="") { + if (!alias.empty()) { std::vector< std::string > key_alias=Trig::keyWrap(Trig::convertStringToVector(alias)); - if (m_chainGroupsRef.find(key_alias)==m_chainGroupsRef.end()) { - m_chainGroupsRef[key_alias]=m_chainGroups[key]; - } - else { - if (m_chainGroupsRef[key_alias]!=m_chainGroupsRef[key]) { - throw std::runtime_error("TrigDecisionTool: The alias "+alias+" already exists and cannot be overwritten."); - } + auto [alias_itr, alias_inserted] = m_chainGroupsRef.try_emplace (key_alias, &m_chainGroups.at(key)); + if (!alias_inserted && alias_itr->second!=m_chainGroupsRef[key]) { + throw std::runtime_error("TrigDecisionTool: The alias "+alias+ + " already exists and cannot be overwritten."); } } - return m_chainGroupsRef[key]; } -void Trig::CacheGlobalMemory::updateChainGroup(Trig::ChainGroup* chainGroup, const bool parseAsRegex) { - chainGroup->update(m_confChains, m_confItems, parseAsRegex); +void Trig::CacheGlobalMemory::updateChainGroup(Trig::ChainGroup& chainGroup, const bool parseAsRegex) { + chainGroup.update(m_confChains, m_confItems, parseAsRegex); } @@ -132,31 +90,28 @@ void Trig::CacheGlobalMemory::update(const TrigConf::HLTChainList* confChains, if ( !ctp ) { ATH_MSG_WARNING( "No LVL1 config, something went wrong, TDT will " "not attempt accessing HLT too" ); - m_confItems = 0; + m_confItems = nullptr; return; } m_confItems = &(ctp->menu().items()); // rebuild all the caches with decision information - //clear cache completely becuase underlying config objects might have changed - for(auto& item : m_itemsCache){delete item.second;} - m_itemsCache.clear(); + //clear cache completely becuase underlying config objects might have changed + m_itemsCache.clear(); - std::vector<float> prescales = ctp->prescaleSet().prescales_float(); + const std::vector<float>& prescales = ctp->prescaleSet().prescales_float(); for(auto item : ctp->menu().items() ) { - unsigned int ctpid = item->ctpId(); - m_itemsCache[ctpid] = new LVL1CTP::Lvl1Item(item->name(), - 0, - 0, 0, 0, prescales[ctpid]); - ATH_MSG_DEBUG( " new configuration for item" << item->name() ); + const auto ctpid = item->ctpId(); + m_itemsCache.try_emplace(ctpid, + /*LVL1CTP::Lvl1Item*/ item->name(), 0, + 0, 0, 0, prescales[ctpid]); + ATH_MSG_DEBUG( "new configuration for item" << item->name() ); } ATH_MSG_DEBUG( "Updating configuration, done with L1" ); //clear cache completely becuase underlying config objects might have changed - for(auto& c : m_l2chainsCache){delete c.second;} m_l2chainsCache.clear(); - for(auto& c : m_efchainsCache){delete c.second;} m_efchainsCache.clear(); m_mConfChains.clear(); @@ -180,9 +135,9 @@ void Trig::CacheGlobalMemory::update(const TrigConf::HLTChainList* confChains, // std::cerr << "CacheGlobalMemory::update updating chain" << (*cChIt)->chain_name() << std::endl; int cntr = ch->chain_counter(); if( ch->level()=="L2" ) { - m_l2chainsCache[cntr] = new HLT::Chain(ch); + m_l2chainsCache.emplace(cntr, /*HLT::Chain*/ch); } else {//merged chains are stored in efchains - m_efchainsCache[cntr] = new HLT::Chain(ch); + m_efchainsCache.emplace(cntr, /*HLT::Chain*/ch); } } ATH_MSG_DEBUG( "Updating configuration, done with basic HLT based on " @@ -195,63 +150,53 @@ void Trig::CacheGlobalMemory::update(const TrigConf::HLTChainList* confChains, m_streams.clear(); for(auto ch : *m_confChains) { - if (( ch->level() == "EF" || ch->level() == "HLT") && ch->streams().size()>0 ) { + if (( ch->level() == "EF" || ch->level() == "HLT") && !ch->streams().empty() ) { ATH_MSG_DEBUG( "Stream: " << ch->chain_name() << " " << ch->streams().size() ); for(auto stream : ch->streams()) { - if( msgLvl( MSG::DEBUG ) ) { - msg() << " " << stream->stream(); - } + ATH_MSG(DEBUG) << " " << stream->stream(); m_streams[stream->stream()].push_back(ch->chain_name()); } - if( msgLvl( MSG::DEBUG ) ) { - msg() << endmsg; - } + ATH_MSG(DEBUG) << endmsg; } - if ( ( ch->level() == "EF" || ch->level() == "HLT") && ch->groups().size()>0 ) { + if ( ( ch->level() == "EF" || ch->level() == "HLT") && !ch->groups().empty() ) { ATH_MSG_DEBUG( "Groups: " << ch->chain_name() << " " << ch->groups().size() ); for(auto& group : ch->groups()) { - if( msgLvl( MSG::DEBUG ) ) { - msg() << " " << group; - } + ATH_MSG(DEBUG) << " " << group; m_groups[group].push_back(ch->chain_name()); } - if( msgLvl( MSG::DEBUG ) ) { - msg() << endmsg; - } + ATH_MSG(DEBUG) << endmsg; } } - - std::map<std::string, std::vector<std::string> >::iterator mstIt; - for (mstIt=m_streams.begin(); mstIt != m_streams.end(); ++mstIt) { - const std::string alias("STREAM_"+mstIt->first); + for (const auto& [stream, chains] : m_streams) { + const std::string alias("STREAM_"+stream); std::vector< std::string > key_alias=Trig::keyWrap(Trig::convertStringToVector(alias)); - ChGrIt preIt = m_chainGroupsRef.find(key_alias); + const auto preIt = m_chainGroupsRef.find(key_alias); if ( preIt != m_chainGroupsRef.end()) { ATH_MSG_INFO( "Replacing predefined, stream based, chain group: " << alias ); // cg already exists (from previous config, we need to update it) - preIt->second->m_patterns = mstIt->second; - updateChainGroup(preIt->second, /*parseAsRegex=*/ false); + preIt->second->m_patterns = chains; + updateChainGroup(*preIt->second, /*parseAsRegex=*/ false); processed_chain_groups.insert(preIt->second); } else { - processed_chain_groups.insert( createChainGroup(mstIt->second, alias, /*parseAsRegex=*/ false) ); + processed_chain_groups.insert( createChainGroup(chains, alias, /*parseAsRegex=*/ false) ); } - } - for (mstIt=m_groups.begin(); mstIt != m_groups.end(); ++mstIt) { - const std::string alias("GROUP_"+mstIt->first); + + for (const auto& [group, chains] : m_groups) { + const std::string alias("GROUP_"+group); std::vector< std::string > key_alias=Trig::keyWrap(Trig::convertStringToVector(alias)); - ChGrIt preIt = m_chainGroupsRef.find(key_alias); + const auto preIt = m_chainGroupsRef.find(key_alias); if (preIt != m_chainGroupsRef.end()) { ATH_MSG_INFO( "Replacing predefined, config group based, chain " << "group: " << alias ); - preIt->second->m_patterns = mstIt->second; - updateChainGroup(preIt->second, /*parseAsRegex=*/ false); + preIt->second->m_patterns = chains; + updateChainGroup(*preIt->second, /*parseAsRegex=*/ false); processed_chain_groups.insert(preIt->second); } else { - processed_chain_groups.insert( createChainGroup(mstIt->second,alias, /*parseAsRegex=*/ false) ); + processed_chain_groups.insert( createChainGroup(chains,alias, /*parseAsRegex=*/ false) ); } } ATH_MSG_DEBUG( "ChainGroups for streams and configuration groups " @@ -260,11 +205,11 @@ void Trig::CacheGlobalMemory::update(const TrigConf::HLTChainList* confChains, // update all previously defined chainGroups - for (ChGrIt it=m_chainGroups.begin(); it!=m_chainGroups.end(); it++) { - if (processed_chain_groups.count(it->second) == 1) { + for (auto& [key, group] : m_chainGroups) { + if (processed_chain_groups.count(&group) == 1) { continue; // We already updated this chain group, just above } - updateChainGroup(it->second); + updateChainGroup(group); } ATH_MSG_DEBUG( "Updating configuration, done with ChainGroups defined so far" ); ATH_MSG_DEBUG( "Updating configuration done" ); @@ -281,7 +226,7 @@ const HLT::Chain* Trig::CacheGlobalMemory::chain(const std::string& name) const if ( i != m_l2chainsByName.end() ) { return i->second; } - return 0; + return nullptr; } const HLT::Chain* Trig::CacheGlobalMemory::chain(const TrigConf::HLTChain& ch) const { @@ -291,13 +236,13 @@ const HLT::Chain* Trig::CacheGlobalMemory::chain(const TrigConf::HLTChain& ch) c const TrigConf::HLTChain* Trig::CacheGlobalMemory::config_chain(const std::string& name) const { ChainHashMap_t::const_iterator f = m_mConfChains.find(name); if ( f == m_mConfChains.end() ){ - return 0; + return nullptr; } return f->second; } struct itemByName { - itemByName(const std::string& name) : m_name(name) {} + explicit itemByName(const std::string& name) : m_name(name) {} bool operator() (const TrigConf::TriggerItem* it) { return m_name == it->name(); } @@ -307,7 +252,7 @@ struct itemByName { const TrigConf::TriggerItem* Trig::CacheGlobalMemory::config_item(const std::string& name) const { TrigConf::ItemContainer::const_iterator f = find_if(m_confItems->begin(), m_confItems->end(), itemByName(name)); if ( f == m_confItems->end() ) - return 0; + return nullptr; return *f; } @@ -319,7 +264,7 @@ float Trig::CacheGlobalMemory::item_prescale(int ctpid) const { << " is not present in the configuration" ); return 0; } - return m_itemsCache.find(ctpid)->second->prescaleFactor(); + return m_itemsCache.find(ctpid)->second.prescaleFactor(); } const LVL1CTP::Lvl1Item* Trig::CacheGlobalMemory::item(const TrigConf::TriggerItem& i) const { @@ -333,7 +278,7 @@ const LVL1CTP::Lvl1Item* Trig::CacheGlobalMemory::item(const TrigConf::TriggerIt const LVL1CTP::Lvl1Item* Trig::CacheGlobalMemory::item(const std::string& name) const { if ( m_itemsByName.find(name) != m_itemsByName.end()) return m_itemsByName.find(name)->second; - return 0; + return nullptr; } const xAOD::TrigCompositeContainer* Trig::CacheGlobalMemory::expressStreamContainer() const { @@ -348,7 +293,7 @@ const xAOD::TrigCompositeContainer* Trig::CacheGlobalMemory::expressStreamContai bool Trig::CacheGlobalMemory::assert_decision() { std::lock_guard<std::recursive_mutex> lock(m_cgmMutex); - ATH_MSG_VERBOSE("asserting decision with unpacker " << m_unpacker); + ATH_MSG_VERBOSE("asserting decision with unpacker " << m_unpacker.get()); // here we unpack the decision. Note: the navigation will be unpacked only on demand (see navigation()) bool contains_xAOD_decision = false; @@ -392,25 +337,26 @@ bool Trig::CacheGlobalMemory::assert_decision() { // over DecisionUnpackerAthena if ( contains_xAOD_decision ){ ATH_MSG_INFO("SG contains xAOD decision, use DecisionUnpackerStandalone"); - setUnpacker(new DecisionUnpackerStandalone(m_decisionKeyPtr, m_run2NavigationKeyPtr)); + m_unpacker = std::make_unique<DecisionUnpackerStandalone>(m_decisionKeyPtr, m_run2NavigationKeyPtr); } else if( is_l1result_configured ){ ATH_MSG_INFO("SG contains AOD decision, use DecisionUnpackerAthena"); - setUnpacker(new DecisionUnpackerAthena(m_oldDecisionKeyPtr)); + m_unpacker = std::make_unique<DecisionUnpackerAthena>(m_oldDecisionKeyPtr); } else if (contains_old_event_info) { ATH_MSG_INFO("SG contains NO(!) L1Result in the AOD TrigDecision, assuming also no HLTResult. Read from EventInfo"); - setUnpacker(new DecisionUnpackerEventInfo(m_oldEventInfoKeyPtr)); + m_unpacker = std::make_unique<DecisionUnpackerEventInfo>(m_oldEventInfoKeyPtr); } #else if ( contains_xAOD_decision ){ ATH_MSG_INFO("SG contains xAOD decision, use DecisionUnpackerStandalone"); - setUnpacker(new DecisionUnpackerStandalone(m_decisionKeyPtr, m_run2NavigationKeyPtr)); + m_unpacker = std::make_unique<DecisionUnpackerStandalone>(m_decisionKeyPtr, m_run2NavigationKeyPtr); } #endif }//if(!m_unpacker) + // cppcheck-suppress duplicateCondition if(!m_unpacker){ std::stringstream extra; #ifndef XAOD_ANALYSIS // Full Athena @@ -454,7 +400,7 @@ StatusCode Trig::CacheGlobalMemory::unpackDecision() { ATH_MSG_DEBUG("clearing the delete-end-of-event store"); m_deleteAtEndOfEvent.clear(); - bool unpackHLT = ( m_confChains != 0 ); + bool unpackHLT = ( m_confChains != nullptr ); ATH_CHECK( m_unpacker->unpackDecision( m_itemsByName, m_itemsCache, m_l2chainsByName, m_l2chainsCache, m_efchainsByName, m_efchainsCache, @@ -468,18 +414,16 @@ StatusCode Trig::CacheGlobalMemory::unpackNavigation() { // Navigation // protect from unpacking in case HLT was not run // (i.e. configuration chains are 0) - if( m_confChains == 0 ) { + if( m_confChains == nullptr ) { return StatusCode::SUCCESS; } // Failing to unpack the navigation is not a failure, as it may be missing // from the xAOD file: if( ! m_unpacker->unpackNavigation( m_navigation ).isSuccess() ) { - static bool warningPrinted = false; - if( ! warningPrinted ) { - ATH_MSG_WARNING( "TrigNavigation unpacking failed" ); - warningPrinted = true; - } + [[maybe_unused]] static std::atomic<bool> warningPrinted = + [&]() { ATH_MSG_WARNING( "TrigNavigation unpacking failed" ); + return true; }(); } // Return gracefully: return StatusCode::SUCCESS; diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx index 824d5e20658249dcc6964749bdc75bad6112299d..23b96e5483b8dabd640df1e6aa6fea822b93805c 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/ChainGroup.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /********************************************************************************** @@ -136,9 +136,9 @@ bool Trig::ChainGroup::L1Result(const std::string& item, unsigned int condition) if (item=="") return r; if (item.find(',')!=std::string::npos) { std::vector< std::string > items = convertStringToVector(item); - std::vector< std::string >::iterator itit = items.begin(); - for(;itit != items.end(); ++itit) - if(L1Result(*itit,condition)) return true; + for(const std::string& item : items) { + if(L1Result(item,condition)) return true; + } return false; } const LVL1CTP::Lvl1Item* fitem=cgm()->item(item); @@ -183,12 +183,10 @@ bool Trig::ChainGroup::isPassed(unsigned int condition) const ChainGroup::const_conf_chain_iterator chIt; bool RESULT = false; - bool chainRESULT; std::string nexttwo; for ( chIt = conf_chain_begin(); chIt != conf_chain_end(); ++chIt) { - chainRESULT=false; - chainRESULT=HLTResult((*chIt)->chain_name(),condition); + bool chainRESULT=HLTResult((*chIt)->chain_name(),condition); if (chainRESULT && (condition & TrigDefs::enforceLogicalFlow)) { // enforceLogicalFlow if ((*chIt)->level()=="EF") { @@ -263,9 +261,9 @@ unsigned int Trig::ChainGroup::L1Bits(const std::string& item) const { if (item=="") return r; if (item.find(',')!=std::string::npos) { std::vector< std::string > items = convertStringToVector(item); - std::vector< std::string >::iterator itit = items.begin(); - for(;itit != items.end(); ++itit) - r |= L1Bits(*itit); + for(const std::string& item : items) { + r |= L1Bits(item); + } return r; } const LVL1CTP::Lvl1Item* fitem = cgm()->item(item); @@ -300,8 +298,7 @@ unsigned int Trig::ChainGroup::isPassedBits() const } else if ((*chIt)->level()=="HLT") { RESULT = RESULT | L1Bits(getLowerName((*chIt)->chain_name())); } - RESULT = RESULT | RESULT; - // cout << "After looking at :" << (*chIt)->chain_name() + // cout << "After looking at :" << (*chIt)->chain_name() // << " " << std::hex << RESULT << endl; } @@ -387,12 +384,11 @@ float Trig::ChainGroup::L1Prescale(const std::string& item, unsigned int /*condi } else { float minprescale=0; std::vector< std::string > items = convertStringToVector(item); - std::vector< std::string >::iterator itit = items.begin(); - for(;itit != items.end(); ++itit) { + for(const std::string& item : items) { - const TrigConf::TriggerItem* fitem=cgm(true)->config_item(*itit); + const TrigConf::TriggerItem* fitem=cgm(true)->config_item(item); if (fitem==0) { - ATH_MSG_WARNING("Configuration for the item: " << *itit << " not known"); + ATH_MSG_WARNING("Configuration for the item: " << item << " not known"); return std::numeric_limits<float>::quiet_NaN(); } int ctpid = fitem->ctpId(); @@ -627,8 +623,6 @@ std::vector< std::vector< TrigConf::HLTTriggerElement* > > Trig::ChainGroup::get } -Trig::ChainGroup::~ChainGroup() {} - void Trig::ChainGroup::update(const TrigConf::HLTChainList* confChains, const TrigConf::ItemContainer* confItems, @@ -645,10 +639,9 @@ Trig::ChainGroup::update(const TrigConf::HLTChainList* confChains, if (parseAsRegex) { - for(std::vector< std::string >::const_iterator it = m_patterns.begin(); - it != m_patterns.end(); ++it) { - // find chains matching pattern - boost::regex compiled(*it); + for(const std::string& pat : m_patterns) { + // find chains matching pattern + boost::regex compiled(pat); boost::cmatch what; for(TrigConf::HLTChain* ch : *confChains) { @@ -790,7 +783,6 @@ Trig::ChainGroup::features(unsigned int condition) const { std::set< std::string > threshold_names; std::stack<const TrigConf::TriggerItemNode*>nodes; - const TrigConf::TriggerItemNode*node; threshold_names.clear(); //node = item->topNode(); @@ -798,7 +790,8 @@ Trig::ChainGroup::features(unsigned int condition) const { // collect unique list (= set) of threshold names for this item while (!nodes.empty()) { - node = nodes.top(); nodes.pop(); + const TrigConf::TriggerItemNode* node = nodes.top(); + nodes.pop(); if (node == NULL) continue; if (node->isThreshold()) { @@ -849,10 +842,3 @@ void Trig::ChainGroup::appendFeatures(std::vector< std::vector< HLT::TriggerElem ++combination; } } - - -namespace ChainGroup_impl { - bool vsize(const std::vector<TrigConf::HLTTriggerElement*>& a , const std::vector<TrigConf::HLTTriggerElement*>& b) { - return a.size() < b.size(); - } -} diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/DecisionObjectHandleStandalone.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/DecisionObjectHandleStandalone.cxx index ad8b848c91e748259745fcfde98f15895a06eaee..2275bc89e37fabc6bf0828fd721078573e29ba81 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/DecisionObjectHandleStandalone.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/DecisionObjectHandleStandalone.cxx @@ -1,9 +1,7 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -// $Id$ - // Local include(s): #include "TrigDecisionTool/DecisionObjectHandleStandalone.h" @@ -44,12 +42,9 @@ namespace Trig { const EventContext& ctx = Gaudi::Hive::currentContext(); SG::ReadHandle<xAOD::TrigDecision> decisionReadHandle = SG::makeHandle(*m_deckey, ctx); if( ! decisionReadHandle.isValid() ) { - static bool warningPrinted = false; - if( ! warningPrinted ) { - ATH_MSG_WARNING( "xAOD::TrigDecision is not available on the " - "input" ); - warningPrinted = true; - } + [[maybe_unused]] static std::atomic<bool> warningPrinted = + [&]() { ATH_MSG_WARNING( "xAOD::TrigDecision is not available on the input" ); + return true; }(); return nullptr; } m_decision = decisionReadHandle.ptr(); @@ -64,12 +59,9 @@ namespace Trig { const EventContext& ctx = Gaudi::Hive::currentContext(); SG::ReadHandle<xAOD::TrigNavigation> navReadHandle = SG::makeHandle(*m_navikey, ctx); if( ! navReadHandle.isValid() ) { - static bool warningPrinted = false; - if( ! warningPrinted ) { - ATH_MSG_WARNING( "xAOD::TrigNavigation is not available on the " - "input" ); - warningPrinted = true; - } + [[maybe_unused]] static std::atomic<bool> warningPrinted = + [&]() { ATH_MSG_WARNING( "xAOD::TrigNavigation is not available on the input" ); + return true; }(); return nullptr; } m_navigation = navReadHandle.ptr(); diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/DecisionUnpackerStandalone.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/DecisionUnpackerStandalone.cxx index a80f91760a9a78303613abaef5ec00acf65a6e60..205b08807234ff620a09e7e3285e8e8c96649300 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/DecisionUnpackerStandalone.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/DecisionUnpackerStandalone.cxx @@ -39,26 +39,23 @@ namespace Trig { DecisionUnpackerStandalone::DecisionUnpackerStandalone( SG::ReadHandleKey<xAOD::TrigDecision>* deckey, SG::ReadHandleKey<xAOD::TrigNavigation>* navikey) - : m_handle( new DecisionObjectHandleStandalone( deckey, navikey ) ) + : m_handle( std::make_unique<DecisionObjectHandleStandalone>( deckey, navikey ) ) { } DecisionUnpackerStandalone::~DecisionUnpackerStandalone() { - - delete m_handle; } StatusCode DecisionUnpackerStandalone:: - unpackDecision( std::unordered_map< std::string, - const LVL1CTP::Lvl1Item* >& itemsByName, - std::map< CTPID, LVL1CTP::Lvl1Item* >& itemsCache, - std::unordered_map< std::string, const HLT::Chain* >& l2chainsByName, - std::map< CHAIN_COUNTER, HLT::Chain* >& l2chainsCache, - std::unordered_map< std::string, const HLT::Chain* >& efchainsByName, - std::map< CHAIN_COUNTER, HLT::Chain* >& efchainsCache, - char& bgCode, - bool unpackHLT ) { + unpackDecision( std::unordered_map< std::string,const LVL1CTP::Lvl1Item* >& itemsByName, + std::map< CTPID, LVL1CTP::Lvl1Item >& itemsCache, + std::unordered_map< std::string, const HLT::Chain* >& l2chainsByName, + std::map< CHAIN_COUNTER, HLT::Chain >& l2chainsCache, + std::unordered_map< std::string, const HLT::Chain* >& efchainsByName, + std::map< CHAIN_COUNTER, HLT::Chain >& efchainsCache, + char& bgCode, + bool unpackHLT ) { // Grab the trigger decision: const xAOD::TrigDecision* xaoddec = m_handle->getDecision(); @@ -123,11 +120,9 @@ namespace Trig { const xAOD::TrigNavigation* serializedNav = m_handle->getNavigation(); if( ! serializedNav ) { - static bool warningPrinted = false; - if( ! warningPrinted ) { - ATH_MSG_WARNING( "Serialized navigation not available" ); - warningPrinted = true; - } + [[maybe_unused]] static std::atomic<bool> warningPrinted = + [&]() { ATH_MSG_WARNING( "Serialized navigation not available" ); + return true; }(); return StatusCode::FAILURE; } @@ -197,18 +192,12 @@ namespace Trig { StatusCode DecisionUnpackerStandalone:: - unpackItems( std::map< unsigned, LVL1CTP::Lvl1Item* >& itemsCache, - std::unordered_map< std::string, - const LVL1CTP::Lvl1Item* >& itemsByName ) { + unpackItems( std::map< unsigned, LVL1CTP::Lvl1Item >& itemsCache, + std::unordered_map< std::string, const LVL1CTP::Lvl1Item* >& itemsByName ) { itemsByName.reserve( itemsByName.size() + itemsCache.size() ); - auto cacheItr = itemsCache.begin(); - auto cacheEnd = itemsCache.end(); - for( ; cacheItr != cacheEnd; ++cacheItr ) { - - unsigned int ctpid = cacheItr->first; - LVL1CTP::Lvl1Item* item = cacheItr->second; + for( auto& [ctpid, item] : itemsCache ) { ATH_MSG_VERBOSE( "Unpacking bits for item: " << ctpid << " " - << item->name() ); + << item.name() ); bool passBP = get32BitDecision( ctpid, m_handle->getDecision()->tbp() ); bool passAP = get32BitDecision( ctpid, @@ -219,11 +208,11 @@ namespace Trig { << " ap: " << passAP << " av: " << passAV ); - LVL1CTP::Lvl1Item itemNew (item->name(), item->hashId(), + LVL1CTP::Lvl1Item itemNew (item.name(), item.hashId(), passBP, passAP, passAV, - item->prescaleFactor()); - *item = std::move (itemNew); - itemsByName[ item->name() ] = item; + item.prescaleFactor()); + item = std::move (itemNew); + itemsByName[ item.name() ] = &item; } return StatusCode::SUCCESS; @@ -232,7 +221,7 @@ namespace Trig { StatusCode DecisionUnpackerStandalone:: - unpackChains( std::map< unsigned, HLT::Chain* >& cache, + unpackChains( std::map< unsigned, HLT::Chain >& cache, const std::vector< uint32_t >& raw, const std::vector< uint32_t >& passedthrough, const std::vector< uint32_t >& prescaled, @@ -240,20 +229,18 @@ namespace Trig { std::unordered_map< std::string, const HLT::Chain* >& output ) { output.reserve( output.size() + cache.size() ); - for( auto& cntrchain : cache ) { + for( auto& [cntr, chain] : cache ) { - unsigned cntr = cntrchain.first; - cntrchain.second->reset(); + chain.reset(); ATH_MSG_VERBOSE( "raw dec for " << cntr << " is " << get32BitDecision( cntr, raw ) ); - cntrchain.second->setDecisions( get32BitDecision( cntr, raw ), - get32BitDecision( cntr, - passedthrough ), - get32BitDecision( cntr, prescaled), - get32BitDecision( cntr, resurrected ) ); - output[ cntrchain.second->getChainName() ] = cntrchain.second; - ATH_MSG_VERBOSE( "Updated chain in this event : " - << *( cntrchain.second ) ); + chain.setDecisions( get32BitDecision( cntr, raw ), + get32BitDecision( cntr, + passedthrough ), + get32BitDecision( cntr, prescaled), + get32BitDecision( cntr, resurrected ) ); + output[ chain.getChainName() ] = &chain; + ATH_MSG_VERBOSE( "Updated chain in this event : " << chain ); } return StatusCode::SUCCESS; diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/ExpertMethods.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/ExpertMethods.cxx index 6d9332781d2632f3c84a6607cd03b1cf1464d689..ec77145eb40203927832260cb88ad42a84955526 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/ExpertMethods.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/ExpertMethods.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /********************************************************************************** @@ -39,16 +39,14 @@ #if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) // Full Athena Trig::ExpertMethods::ExpertMethods(SG::SlotSpecificObj<Trig::CacheGlobalMemory>* cgm) - : m_cacheGlobalMemory(cgm), - m_useExperimentalAndExpertMethods(false) + : m_cacheGlobalMemory(cgm) { } #else // Analysis or Standalone Trig::ExpertMethods::ExpertMethods(Trig::CacheGlobalMemory* cgm) - : m_cacheGlobalMemory(cgm), - m_useExperimentalAndExpertMethods(false) + : m_cacheGlobalMemory(cgm) { } @@ -56,38 +54,24 @@ Trig::ExpertMethods::ExpertMethods(Trig::CacheGlobalMemory* cgm) Trig::ExpertMethods::~ExpertMethods() {} -bool Trig::ExpertMethods::checkExperimentalAndExpertMethods() const { - if (m_useExperimentalAndExpertMethods) return true; - else { - ATH_MSG_ERROR("You have not confirmed the use of experimental or expert TrigDecisionTool methods at this time. Please take care before using such methods."); - return false; - } -} - - const TrigConf::TriggerItem* -Trig::ExpertMethods::getItemConfigurationDetails(const std::string& chain) { - if (!(checkExperimentalAndExpertMethods())) return 0; +Trig::ExpertMethods::getItemConfigurationDetails(const std::string& chain) const { ATH_MSG_VERBOSE("getting L1 item configuration details for: " << chain); return cgm(true)->config_item(chain); } const TrigConf::HLTChain* -Trig::ExpertMethods::getChainConfigurationDetails(const std::string& chain) { - if (!(checkExperimentalAndExpertMethods())) return 0; +Trig::ExpertMethods::getChainConfigurationDetails(const std::string& chain) const { ATH_MSG_VERBOSE("getting chain configuration details for: " << chain); return cgm(true)->config_chain(chain); } const HLT::Chain* Trig::ExpertMethods::getChainDetails(const std::string& chain) const { - if (!(checkExperimentalAndExpertMethods())) return 0; return cgm()->chain(chain); - } const LVL1CTP::Lvl1Item* Trig::ExpertMethods::getItemDetails(const std::string& chain) const { - if (!(checkExperimentalAndExpertMethods())) return 0; return cgm()->item(chain); } @@ -95,7 +79,6 @@ const LVL1CTP::Lvl1Item* Trig::ExpertMethods::getItemDetails(const std::string& const HLT::NavigationCore* Trig::ExpertMethods::getNavigation() const { - if (!(checkExperimentalAndExpertMethods())) return 0; return dynamic_cast<const HLT::NavigationCore*>(cgm()->navigation()); } @@ -112,7 +95,6 @@ Trig::CacheGlobalMemory* Trig::ExpertMethods::cgm(bool onlyConfig) const { const HLT::TrigNavStructure* Trig::ExpertMethods::getNavigation() const { - if (!(checkExperimentalAndExpertMethods())) return 0; return cgm()->navigation(); } diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/IDecisionUnpacker.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/IDecisionUnpacker.cxx deleted file mode 100644 index a452f96c4bc8bf6a83284e3317cede8addd3aca6..0000000000000000000000000000000000000000 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/IDecisionUnpacker.cxx +++ /dev/null @@ -1,14 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "TrigDecisionTool/IDecisionUnpacker.h" -namespace Trig{ - IDecisionUnpacker::IDecisionUnpacker() : - m_unpackedDecision(false), m_unpackedNavigation(false) { - - } - - IDecisionUnpacker::~IDecisionUnpacker(){ - } -} diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/Logger.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/Logger.cxx deleted file mode 100644 index 46fe03bc9dc2bb98828550c0926c8305bf7f6d36..0000000000000000000000000000000000000000 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/Logger.cxx +++ /dev/null @@ -1,26 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#include "TrigDecisionTool/Logger.h" - -#ifdef XAOD_STANDALONE -asg::AsgMessaging* Trig::Logger::staticStream = 0; -#endif -#ifndef XAOD_STANDALONE -AthMessaging* Trig::Logger::staticStream = 0; -#endif - -namespace Trig{ -MsgStream& Logger::msg() const { - if(!Logger::staticStream){ -#ifdef XAOD_STANDALONE - Logger::staticStream = new asg::AsgMessaging("TrigDecisionTool"); -#endif -#ifndef XAOD_STANDALONE -Logger::staticStream = new AthMessaging(Athena::getMessageSvc(),"TrigDecisionTool"); -#endif - } - return Logger::staticStream->msg(); -} -} diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx index 9261a15d6008821290f8fa3775ad302c58680238..50bebae43b98ff3c1570fb990a591e89c335e515 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx @@ -15,76 +15,29 @@ ***********************************************************************************/ #include "TrigDecisionTool/DecisionUnpackerAthena.h" - - - #include "TrigDecisionTool/DecisionUnpackerStandalone.h" -#include "TrigNavStructure/StandaloneNavigation.h" #include "TrigDecisionTool/TrigDecisionTool.h" + #include "TrigConfHLTData/HLTChainList.h" #include "TrigConfL1Data/CTPConfig.h" #include "TrigConfL1Data/Menu.h" -#ifndef XAOD_STANDALONE -#include "AthenaKernel/getMessageSvc.h" -#endif - -static std::vector<std::string> s_instances; +/// Number of TDT instances +static std::atomic<int> s_instances = 0; -Trig::TrigDecisionTool::TrigDecisionTool(const std::string& name) : - asg::AsgMetadataTool(name) -#ifndef XAOD_STANDALONE - ,AthMessaging( Athena::getMessageSvc(), this->name() ) // call name() to get demangled name from AsgTool -#endif -#ifndef XAOD_ANALYSIS - ,m_fullNavigation("HLT::Navigation/Navigation", this) -#endif +Trig::TrigDecisionTool::TrigDecisionTool(const std::string& name) + : Logger(this) + , asg::AsgMetadataTool(name) { #ifdef XAOD_ANALYSIS - m_navigation = new HLT::StandaloneNavigation(); -#endif - - //full Athena env -#ifndef XAOD_ANALYSIS - declareProperty( "Navigation", m_fullNavigation); - // ugly hack to prevent genconf from causing the MessageSvc to bork - const std::string cmd = System::cmdLineArgs()[0]; - if ( cmd.find( "genconf" ) == std::string::npos ) { - m_navigation = &*m_fullNavigation; - } -#endif - -#ifndef XAOD_STANDALONE - //just for Athena/AthAnalysisBase - auto props = getProperties(); - for( Gaudi::Details::PropertyBase* prop : props ) { - if( prop->name() != "OutputLevel" ) { - continue; - } - prop->declareUpdateHandler( &Trig::TrigDecisionTool::outputlevelupdateHandler, this ); - break; - } + m_navigation = &m_standaloneNavigation; +#else //full Athena env + m_navigation = &*m_fullNavigation; #endif - Logger::setMessaging(this); - } -#ifndef XAOD_STANDALONE -void Trig::TrigDecisionTool::outputlevelupdateHandler(Gaudi::Details::PropertyBase& /*p*/) { - //call the original update handler - Logger::msg().setLevel(AthMessaging::msg().level()); -} -#endif - -Trig::TrigDecisionTool::~TrigDecisionTool() { -#ifdef XAOD_ANALYSIS - if(m_navigation){ - delete m_navigation; - } -#endif -} StatusCode Trig::TrigDecisionTool::initialize() { @@ -105,13 +58,15 @@ Trig::TrigDecisionTool::initialize() { ATH_CHECK(m_navigationKey.initialize(m_navigationFormat == "TriggerElement")); ATH_CHECK(m_decisionKey.initialize()); - s_instances.push_back(name()); - if ( s_instances.size() > 1) { - ATH_MSG_WARNING("Several TrigDecisionTool instances" ); - ATH_MSG_WARNING("This not to efficent from performance perspective. Access of the same EDM objects will give warnings. Continues anyway ..." ); + ++s_instances; + if ( s_instances > 1) { + ATH_MSG_WARNING("Multiple TrigDecisionTool instances created. " + "This is not efficent from performance perspective. " + "Access of the same EDM objects will give warnings." ); if (!m_acceptMultipleInstance){ - ATH_MSG_ERROR("Will not accept multiple instances. If you really want to have some, use 'AcceptMultipleInstance' property" ); - return StatusCode::FAILURE; + ATH_MSG_ERROR("Will not accept multiple instances. " + "Set 'AcceptMultipleInstance' to overwrite this behavior."); + return StatusCode::FAILURE; } } @@ -187,8 +142,10 @@ std::vector<uint32_t>* Trig::TrigDecisionTool::getKeys() { void Trig::TrigDecisionTool::setForceConfigUpdate(bool b, bool forceForAllSlots) { #if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) // Full athena - std::atomic<bool>* ab = m_forceConfigUpdate.get(); - (*ab) = b; + { + std::atomic<bool>* ab = m_forceConfigUpdate.get(); + (*ab) = b; + } if (forceForAllSlots) { for (size_t dummySlot = 0; dummySlot < SG::getNSlots(); ++dummySlot) { EventContext dummyContext(/*dummyEventNumber*/0, dummySlot); @@ -331,15 +288,9 @@ Trig::TrigDecisionTool::finalize() { // release all chaingroups m_navigation->reset(true); - auto it = std::find(s_instances.begin(), s_instances.end(), name()); - if(it != s_instances.end()){ - s_instances.erase(it); - } - else{ - ATH_MSG_ERROR("could not find instance name in instance list, but must have been added in ::initialize(). Name: " << name()); - return StatusCode::FAILURE; - } - ATH_MSG_INFO("TDT finalized and removed from instance list"); + --s_instances; + + ATH_MSG_INFO("Finalized"); return StatusCode::SUCCESS; } diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionToolCore.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionToolCore.cxx index 3adad6f47554714e98eb52919a97d7df24c8459e..030bb6d8e83a9e5dfaf9308eed9e4c23d4e180a1 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionToolCore.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionToolCore.cxx @@ -20,14 +20,13 @@ #include "TrigDecisionTool/TrigDecisionToolCore.h" -#if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) // Full Athena - -Trig::TrigDecisionToolCore::TrigDecisionToolCore() +Trig::TrigDecisionToolCore::TrigDecisionToolCore() : + m_expertMethods(&m_cacheGlobalMemory) { - SG::SlotSpecificObj<Trig::CacheGlobalMemory>* ptr = &m_cacheGlobalMemory; - m_expertMethods=new ExpertMethods(ptr); } +#if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) // Full Athena + Trig::CacheGlobalMemory* Trig::TrigDecisionToolCore::cgm() const { const Trig::CacheGlobalMemory* ptr = m_cacheGlobalMemory.get(); // A consequence of placing the cache in a slot-specific wrapper @@ -38,13 +37,7 @@ Trig::CacheGlobalMemory* Trig::TrigDecisionToolCore::cgm() const { #else // Analysis or Standalone -Trig::TrigDecisionToolCore::TrigDecisionToolCore() -{ - Trig::CacheGlobalMemory* ptr = &m_cacheGlobalMemory; - m_expertMethods=new ExpertMethods(ptr); -} - -Trig::CacheGlobalMemory* Trig::TrigDecisionToolCore::cgm() const { +Trig::CacheGlobalMemory* Trig::TrigDecisionToolCore::cgm() const { return const_cast<Trig::CacheGlobalMemory*>(&m_cacheGlobalMemory); } @@ -52,7 +45,6 @@ Trig::CacheGlobalMemory* Trig::TrigDecisionToolCore::cgm() const { Trig::TrigDecisionToolCore::~TrigDecisionToolCore() { - delete m_expertMethods; } @@ -64,5 +56,3 @@ StatusCode Trig::TrigDecisionToolCore::initialize() { StatusCode Trig::TrigDecisionToolCore::finalize() { return StatusCode::SUCCESS; } - - diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h index 128cbcb055e51b13709a06c14c139ccff034cc08..35ede4d0175381ed9f07b4afd3cb8e3c35c6da05 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGGER_DECISION_TOOL_CACHE_GLOBAL_MEMORY_H @@ -16,14 +16,13 @@ * ***********************************************************************************/ -#include<iterator> #include<vector> -#include<list> #include<set> #include<map> #include<unordered_map> #include<string> #include<mutex> +#include<memory> #include "TrigConfHLTData/HLTChain.h" #include "TrigConfHLTData/HLTChainList.h" @@ -32,10 +31,10 @@ #include "TrigConfL1Data/CTPConfig.h" #include "TrigSteeringEvent/Chain.h" +#include "TrigSteeringEvent/Lvl1Item.h" #include "TrigDecisionTool/IDecisionUnpacker.h" #include "TrigDecisionTool/Logger.h" -#include "AsgMessaging/AsgMessaging.h" #include "AsgDataHandles/ReadHandleKey.h" @@ -54,7 +53,6 @@ namespace HLT { } namespace LVL1CTP { - class Lvl1Item; class Lvl1Result; } @@ -67,16 +65,10 @@ namespace Trig { class CacheGlobalMemory : public virtual Logger { - using Logger::msgLvl;//resolve ambiguity from also inheriting from Logger - public: // constructors, destructor - CacheGlobalMemory(); - ~CacheGlobalMemory(); - - /** - * @brief - **/ + CacheGlobalMemory() = default; + ~CacheGlobalMemory() = default; /** * @brief creates new chain group @@ -137,9 +129,7 @@ namespace Trig { **/ bool assert_decision(); - void setUnpacker( Trig::IDecisionUnpacker* up ){ m_unpacker = up; } - Trig::IDecisionUnpacker* unpacker(){ return m_unpacker; } - + Trig::IDecisionUnpacker* unpacker(){ return m_unpacker.get(); } /// Set the event store to be used by the object void setStore( EventPtr_t store ) { m_store = store; } @@ -180,25 +170,24 @@ namespace Trig { /** * @brief unpacks everything that belongs to a ChainGroup **/ - void updateChainGroup(Trig::ChainGroup* chainGroup, const bool parseAsRegex = true); + void updateChainGroup(Trig::ChainGroup& chainGroup, const bool parseAsRegex = true); // // Data members // /// Pointer to the event store in use - EventPtr_t m_store; + EventPtr_t m_store{nullptr}; /// Trigger decision unpacker helper - IDecisionUnpacker* m_unpacker; + std::unique_ptr<IDecisionUnpacker> m_unpacker; // Navigation owned by CGM - HLT::TrigNavStructure* m_navigation; + HLT::TrigNavStructure* m_navigation{nullptr}; // chain groups - typedef std::map< std::vector< std::string >, Trig::ChainGroup* >::iterator ChGrIt; - std::map< std::vector< std::string >, Trig::ChainGroup* > m_chainGroups; //!< primary storage for chain groups - std::map< std::vector< std::string >, Trig::ChainGroup* > m_chainGroupsRef; //!< this map keeps the chain group more than once i.e. when alias is given + std::map< std::vector< std::string >, Trig::ChainGroup > m_chainGroups; //!< primary storage for chain groups + std::map< std::vector< std::string >, Trig::ChainGroup* > m_chainGroupsRef; //!< this map keeps the chain group more than once i.e. when alias is given // std::map<CTPID, const LVL1CTP::Lvl1Item*> m_items; //!< items keyed by id (changing every event) // std::map<CHAIN_COUNTER, const HLT::Chain*> m_l2chains; //!< chains keyed by chain counter (chainging every event) @@ -210,31 +199,31 @@ namespace Trig { typedef unsigned CTPID; typedef unsigned CHAIN_COUNTER; - std::map<CTPID, LVL1CTP::Lvl1Item*> m_itemsCache; //!< cache of all CTP items possible (given configuration) - std::map<CHAIN_COUNTER, HLT::Chain*> m_l2chainsCache; //!< cache of all L2 chains possible (given configuration) - std::map<CHAIN_COUNTER, HLT::Chain*> m_efchainsCache; //!< cache of all EF chains possible (given configuration) + std::map<CTPID, LVL1CTP::Lvl1Item> m_itemsCache; //!< cache of all CTP items possible (given configuration) + std::map<CHAIN_COUNTER, HLT::Chain> m_l2chainsCache; //!< cache of all L2 chains possible (given configuration) + std::map<CHAIN_COUNTER, HLT::Chain> m_efchainsCache; //!< cache of all EF chains possible (given configuration) std::map<std::string, std::vector<std::string> > m_groups; //!< mapping from group to list of chains std::map<std::string, std::vector<std::string> > m_streams; //!< mapping from stream to list of chains - const TrigConf::ItemContainer* m_confItems; //!< items configuration - const TrigConf::HLTChainList* m_confChains; //!< all chains configuration - mutable const xAOD::TrigCompositeContainer* m_expressStreamContainer; + const TrigConf::ItemContainer* m_confItems{nullptr}; //!< items configuration + const TrigConf::HLTChainList* m_confChains{nullptr}; //!< all chains configuration + mutable const xAOD::TrigCompositeContainer* m_expressStreamContainer{nullptr}; - SG::ReadHandleKey<xAOD::TrigDecision>* m_decisionKeyPtr; //!< Parent TDT's read handle key + SG::ReadHandleKey<xAOD::TrigDecision>* m_decisionKeyPtr{nullptr}; //!< Parent TDT's read handle key #ifndef XAOD_ANALYSIS // Full Athena - SG::ReadHandleKey<TrigDec::TrigDecision>* m_oldDecisionKeyPtr; //!< Parent TDT's read handle key - SG::ReadHandleKey<EventInfo>* m_oldEventInfoKeyPtr; //!< Parent TDT's read handle key + SG::ReadHandleKey<TrigDec::TrigDecision>* m_oldDecisionKeyPtr{nullptr}; //!< Parent TDT's read handle key + SG::ReadHandleKey<EventInfo>* m_oldEventInfoKeyPtr{nullptr}; //!< Parent TDT's read handle key #endif - SG::ReadHandleKey<xAOD::TrigNavigation>* m_run2NavigationKeyPtr; //!< Parent TDT's read handle key - SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer>* m_run3NavigationKeyPtr; //!< Parent TDT's read handle key + SG::ReadHandleKey<xAOD::TrigNavigation>* m_run2NavigationKeyPtr{nullptr}; //!< Parent TDT's read handle key + SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer>* m_run3NavigationKeyPtr{nullptr}; //!< Parent TDT's read handle key typedef std::unordered_map<std::string, const TrigConf::HLTChain*> ChainHashMap_t; ChainHashMap_t m_mConfChains; //!< map of conf chains - char m_bgCode; //!< the encoded bunchgroup information + char m_bgCode{0}; //!< the encoded bunchgroup information class AnyTypeDeleter { diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h index be99272ee23e24d95d828128c3bd9f6d9ebede0a..056683fd0df1280b9d78b9372e5e5398f25427b8 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGGER_DECISION_TOOL_CHAIN_GROUP_H @@ -59,6 +59,10 @@ namespace Trig { public: + ChainGroup(const std::vector< std::string >& triggerNames, + const Trig::CacheGlobalMemory& parent); + ~ChainGroup() = default; + typedef std::vector<std::string>::const_iterator const_iterator; const Trig::ChainGroup& operator+(const Trig::ChainGroup& rhs); bool operator==(const Trig::ChainGroup& rhs); @@ -141,12 +145,6 @@ namespace Trig { const std::vector< std::string >& patterns() const {return m_patterns;} private: - // constructor - ChainGroup(const std::vector< std::string >& triggerNames, - const Trig::CacheGlobalMemory& parent); - // - ~ChainGroup(); - bool isCorrelatedL1items(const std::string& item) const; float correlatedL1Prescale(const std::string& item) const; float calculatePrescale(unsigned int condition=TrigDefs::Physics); diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleAthena.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleAthena.h index 028ac8880f9447d7a3510f7133bdb18c3773ebfd..667b57c07b2d17c31253e2bb43a883b2e70abbee 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleAthena.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleAthena.h @@ -1,7 +1,7 @@ // -*- C++ -*- /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -11,26 +11,20 @@ #ifndef TrigDecisionTool_DecisionObjectHandleAthena_h #define TrigDecisionTool_DecisionObjectHandleAthena_h -#include <string> -#include "StoreGate/DataHandle.h" - - #include "TrigDecisionTool/Logger.h" #include "TrigDecisionTool/DecisionObjectHandle.h" #include "TrigDecisionTool/EventPtrDef.h" #include "TrigDecisionEvent/TrigDecision.h" -#include "AsgMessaging/AsgMessaging.h" +#include "StoreGate/DataHandle.h" #include "StoreGate/ReadHandleKey.h" - -class StoreGateSvc; +#include <string> namespace TrigDec { class TrigDecision; } - namespace Trig { /** * @brief Decision invalidator for Athena (really doing the job) diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleEventInfo.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleEventInfo.h index 276a25d11d8ca53b8c13dea8fe7c629256d48e5a..956f1935981d828e249ef59e73cc0324f69d5278 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleEventInfo.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleEventInfo.h @@ -1,7 +1,7 @@ // -*- C++ -*- /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -15,16 +15,13 @@ #include "StoreGate/DataHandle.h" #include "TrigDecisionTool/EventPtrDef.h" -#include "TrigDecisionTool/Logger.h" #include "TrigDecisionTool/DecisionObjectHandle.h" #include "EventInfo/EventInfo.h" -#include "AsgMessaging/AsgMessaging.h" #include "StoreGate/ReadHandleKey.h" class TriggerInfo; class EventInfo; -class StoreGateSvc; namespace Trig { /** diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleStandalone.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleStandalone.h index 2b8ca014591cc96a0872d82b857dc415877e60ae..3b46362c3f9951b9261d924c3a9355b1e12ed27c 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleStandalone.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionObjectHandleStandalone.h @@ -1,19 +1,15 @@ // -*- C++ -*- /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -// $Id$ #ifndef TrigDecisionTool_DecisionObjectHandleStandalone_h #define TrigDecisionTool_DecisionObjectHandleStandalone_h // System include(s): #include <string> -// ASG include(s): -#include "AsgMessaging/AsgMessaging.h" - // xAOD include(s): #include "xAODTrigger/TrigDecision.h" #include "xAODTrigger/TrigNavigation.h" diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerAthena.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerAthena.h index 84880279c5c1b142eaf6703ac2f9769fe009b5b9..12e749ed84f9a000c7f75489e1854821f7237a1c 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerAthena.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerAthena.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIG_DECISIONUNPACKERATHENA_H @@ -8,17 +8,14 @@ #include "TrigConfHLTData/HLTChain.h" #include "TrigConfL1Data/CTPConfig.h" #include "TrigSteeringEvent/Chain.h" - +#include "TrigSteeringEvent/Lvl1Item.h" #include "TrigDecisionTool/IDecisionUnpacker.h" #include "TrigDecisionTool/Logger.h" -#include "AsgMessaging/AsgMessaging.h" #include "AsgDataHandles/ReadHandleKey.h" - - -class StoreGateSvc; +#include <memory> namespace TrigDec { class TrigDecision; @@ -29,7 +26,6 @@ namespace HLT { } namespace LVL1CTP{ - class Lvl1Item; class Lvl1Result; } @@ -47,11 +43,11 @@ namespace Trig{ DecisionUnpackerAthena& operator= (const DecisionUnpackerAthena&) = delete; virtual StatusCode unpackDecision(std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>&, - std::map<CTPID, LVL1CTP::Lvl1Item*>&, + std::map<CTPID, LVL1CTP::Lvl1Item>&, std::unordered_map<std::string, const HLT::Chain*>&, - std::map<CHAIN_COUNTER, HLT::Chain*>&, + std::map<CHAIN_COUNTER, HLT::Chain>&, std::unordered_map<std::string, const HLT::Chain*>&, - std::map<CHAIN_COUNTER, HLT::Chain*>&, + std::map<CHAIN_COUNTER, HLT::Chain>&, char&, bool ); @@ -60,12 +56,12 @@ namespace Trig{ virtual void validate_handle(); virtual void invalidate_handle(); private: - DecisionObjectHandleAthena* m_handle; + std::unique_ptr<DecisionObjectHandleAthena> m_handle; StatusCode unpackItems(const LVL1CTP::Lvl1Result& result, - std::map<CTPID, LVL1CTP::Lvl1Item*>&, + std::map<CTPID, LVL1CTP::Lvl1Item>&, std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>&); StatusCode unpackChains(const std::vector<uint32_t>& serialized_chains, - std::map<unsigned, HLT::Chain*>& cache, + std::map<unsigned, HLT::Chain>& cache, std::unordered_map<std::string, const HLT::Chain*>& output); }; diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerEventInfo.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerEventInfo.h index eb93a78d9ac907b597a1c6a086aba8d7fefc8c4d..1edf67b983ece74df146ec106cfde027e6ec31b1 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerEventInfo.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerEventInfo.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIG_DECISIONUNPACKEREVENTINFO_H @@ -8,21 +8,20 @@ #include "TrigConfHLTData/HLTChain.h" #include "TrigConfL1Data/CTPConfig.h" #include "TrigSteeringEvent/Chain.h" - +#include "TrigSteeringEvent/Lvl1Item.h" #include "TrigDecisionTool/IDecisionUnpacker.h" -#include "AsgMessaging/AsgMessaging.h" +#include "TrigDecisionTool/Logger.h" #include "DecisionObjectHandleEventInfo.h" -class StoreGateSvc; +#include <memory> namespace HLT { class TrigNavStructure; } namespace LVL1CTP{ - class Lvl1Item; class Lvl1Result; } @@ -38,11 +37,11 @@ namespace Trig{ DecisionUnpackerEventInfo& operator= (const DecisionUnpackerEventInfo&) = delete; virtual StatusCode unpackDecision(std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>&, - std::map<CTPID, LVL1CTP::Lvl1Item*>&, + std::map<CTPID, LVL1CTP::Lvl1Item>&, std::unordered_map<std::string, const HLT::Chain*>&, - std::map<CHAIN_COUNTER, HLT::Chain*>&, + std::map<CHAIN_COUNTER, HLT::Chain>&, std::unordered_map<std::string, const HLT::Chain*>&, - std::map<CHAIN_COUNTER, HLT::Chain*>&, + std::map<CHAIN_COUNTER, HLT::Chain>&, char&, bool ); @@ -51,12 +50,12 @@ namespace Trig{ virtual void validate_handle(); virtual void invalidate_handle(); private: - DecisionObjectHandleEventInfo* m_handle; + std::unique_ptr<DecisionObjectHandleEventInfo> m_handle; StatusCode unpackItems(const std::vector<uint32_t>& level1TriggerInfo, - std::map<CTPID, LVL1CTP::Lvl1Item*>& itemsCache, + std::map<CTPID, LVL1CTP::Lvl1Item>& itemsCache, std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>& itemsByName); StatusCode unpackChains(const std::vector<uint32_t>& chainTriggerInfo, - std::map<unsigned, HLT::Chain*>& cache, + std::map<unsigned, HLT::Chain>& cache, std::unordered_map<std::string, const HLT::Chain*>& output); }; diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerStandalone.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerStandalone.h index 19f8a4c51da2cd910cee279a3a18536ea5dcf6bc..17bd49fdbe1491e1ded3ca5f323581e86d070e4a 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerStandalone.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionUnpackerStandalone.h @@ -1,19 +1,16 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -// $Id$ #ifndef TRIGDECISIONTOOL_DECISIONUNPACKERSTANDALONE_H #define TRIGDECISIONTOOL_DECISIONUNPACKERSTANDALONE_H -// ASG include(s): -#include "AsgMessaging/AsgMessaging.h" - // Trigger configuration include(s): #include "TrigConfHLTData/HLTChain.h" #include "TrigConfL1Data/CTPConfig.h" +#include "TrigSteeringEvent/Lvl1Item.h" // Local include(s): #include "TrigDecisionTool/IDecisionUnpacker.h" @@ -26,6 +23,8 @@ #include "AsgDataHandles/ReadHandleKey.h" +#include <memory> + // Forward declaration(s): namespace HLT { class TrigNavStructure; @@ -56,17 +55,14 @@ namespace Trig { /// Function unpacking the payload of the trigger decision virtual StatusCode - unpackDecision( std::unordered_map< std::string, - const LVL1CTP::Lvl1Item* >& itemsByName, - std::map< CTPID, LVL1CTP::Lvl1Item* >& itemsCache, - std::unordered_map< std::string, - const HLT::Chain* >& l2chainsByName, - std::map< CHAIN_COUNTER, HLT::Chain* >& l1chainsCache, - std::unordered_map< std::string, - const HLT::Chain* >& efchainsByName, - std::map< CHAIN_COUNTER, HLT::Chain* >& efchainsCache, - char& bgCode, - bool unpackHLT ); + unpackDecision( std::unordered_map< std::string, const LVL1CTP::Lvl1Item* >& itemsByName, + std::map< CTPID, LVL1CTP::Lvl1Item >& itemsCache, + std::unordered_map< std::string, const HLT::Chain* >& l2chainsByName, + std::map< CHAIN_COUNTER, HLT::Chain >& l2chainsCache, + std::unordered_map< std::string, const HLT::Chain* >& efchainsByName, + std::map< CHAIN_COUNTER, HLT::Chain >& efchainsCache, + char& bgCode, + bool unpackHLT ); /// Function unpacking the payload of the trigger navigation virtual StatusCode unpackNavigation( HLT::TrigNavStructure* nav ); @@ -82,11 +78,11 @@ namespace Trig { private: /// Function unpacking the decision of the LVL1 items - StatusCode unpackItems( std::map< CTPID, LVL1CTP::Lvl1Item* >& itemsCache, + StatusCode unpackItems( std::map< CTPID, LVL1CTP::Lvl1Item >& itemsCache, std::unordered_map< std::string, const LVL1CTP::Lvl1Item*>& itemsByName ); /// Function unpacking the decision of the HLT chains - StatusCode unpackChains( std::map< unsigned, HLT::Chain* >& cache, + StatusCode unpackChains( std::map< unsigned, HLT::Chain >& cache, const std::vector< uint32_t >& raw, const std::vector< uint32_t >& passedThrough, const std::vector< uint32_t >& prescaled, @@ -95,7 +91,7 @@ namespace Trig { const HLT::Chain* >& output ); /// Helper object for retrieving the event information - DecisionObjectHandleStandalone* m_handle; + std::unique_ptr<DecisionObjectHandleStandalone> m_handle; }; // class DecisionUnpackerStandalone } // namespace Trig diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ExpertMethods.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ExpertMethods.h index b0c70f9e906389afcb04e02d3b67bfddde403174..d4b358f88f76b54f68e12ae03aed8e039e9244f0 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ExpertMethods.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ExpertMethods.h @@ -1,7 +1,7 @@ // -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGGER_DECISION_TOOL_ExpertMethods_H @@ -18,7 +18,6 @@ * ***********************************************************************************/ #include <string> -#include <boost/algorithm/string/predicate.hpp> #include "TrigNavStructure/TriggerElement.h" #include "TrigDecisionTool/Logger.h" @@ -58,26 +57,17 @@ namespace Trig { virtual ~ExpertMethods(); - /** - * @brief enable use of Experimental or expert methods - **/ - void enable() {m_useExperimentalAndExpertMethods=true;}; - /** - * @brief disable use of Experimental or expert methods - **/ - void disable() {m_useExperimentalAndExpertMethods=false;}; - /** * @brief return TrigConf::TriggerItem * @param chain: name of the item **/ - const TrigConf::TriggerItem* getItemConfigurationDetails(const std::string& chain); + const TrigConf::TriggerItem* getItemConfigurationDetails(const std::string& chain) const; /** * @brief return TrigConf::HLTChain * @param chain: name of the chain **/ - const TrigConf::HLTChain* getChainConfigurationDetails(const std::string& chain); + const TrigConf::HLTChain* getChainConfigurationDetails(const std::string& chain) const; /** * @brief return LVL1CTP::Lvl1Item @@ -115,11 +105,6 @@ namespace Trig { #endif Trig::CacheGlobalMemory* cgm(bool onlyConfig=false) const; - - bool m_useExperimentalAndExpertMethods; - - bool checkExperimentalAndExpertMethods() const; - }; } // End of namespace diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/IDecisionUnpacker.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/IDecisionUnpacker.h index 6c7c6236c79da932af4e8286cc38954e86f34c15..34355d28568e328de08e85e3b0c19667742ba8f6 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/IDecisionUnpacker.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/IDecisionUnpacker.h @@ -1,7 +1,7 @@ // Dear emacs, this is -*- c++ -*- /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -13,9 +13,11 @@ #include <unordered_map> #include <string> +#include "TrigSteeringEvent/Chain.h" +#include "TrigSteeringEvent/Lvl1Item.h" + namespace HLT { class TrigNavStructure; - class Chain; } namespace LVL1CTP{ @@ -27,17 +29,17 @@ namespace Trig{ public: typedef unsigned CTPID; typedef unsigned CHAIN_COUNTER; - IDecisionUnpacker(); - virtual ~IDecisionUnpacker(); + IDecisionUnpacker() = default; + virtual ~IDecisionUnpacker() = default; virtual StatusCode unpackDecision(std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>&, - std::map<CTPID, LVL1CTP::Lvl1Item*>& itemsCache, - std::unordered_map<std::string, const HLT::Chain*>&, - std::map<CHAIN_COUNTER, HLT::Chain*>&, - std::unordered_map<std::string, const HLT::Chain*>&, - std::map<CHAIN_COUNTER, HLT::Chain*>&, - char&, - bool - ) = 0; + std::map<CTPID, LVL1CTP::Lvl1Item>& itemsCache, + std::unordered_map<std::string, const HLT::Chain*>&, + std::map<CHAIN_COUNTER, HLT::Chain>&, + std::unordered_map<std::string, const HLT::Chain*>&, + std::map<CHAIN_COUNTER, HLT::Chain>&, + char&, + bool + ) = 0; virtual StatusCode unpackNavigation(HLT::TrigNavStructure*) = 0; bool unpacked_decision() const { return m_unpackedDecision;} void unpacked_decision(bool state) { m_unpackedDecision = state;} @@ -50,8 +52,8 @@ namespace Trig{ virtual void invalidate_handle() = 0; private: - bool m_unpackedDecision; - bool m_unpackedNavigation; + bool m_unpackedDecision{false}; + bool m_unpackedNavigation{false}; }; } //end of Trig namespace diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/Logger.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/Logger.h index d293be661e2064c255d0958891d4b507cfbe82c4..b60b0154970b45b9785f48d511ad7da0201882e5 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/Logger.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/Logger.h @@ -1,45 +1,39 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ - #ifndef TrigDecisionTool_Logger_h #define TrigDecisionTool_Logger_h -/********************************************************************************** - * @Project: - * @Package: TrigDecision - * @class : TrigDecision - * - * @brief common logger for various non Athena components - * - * @author Tomasz Bold <Tomasz.Bold@cern.ch> - UC Irvine - AGH-UST Krakow - * - ***********************************************************************************/ -#include <string> - -#ifdef XAOD_STANDALONE -#include "AsgMessaging/AsgMessaging.h" -#endif -#ifndef XAOD_STANDALONE -#include "AthenaKernel/getMessageSvc.h" -#include "AthenaBaseComps/AthMessaging.h" -#endif +#include "AsgTools/AsgTool.h" +#include <stdexcept> namespace Trig{ + /** + * Logging adaptor to provide interfaces required for ATH_MSG macros. + * + * TrigDecisionTool helper classes derive from this class to be able to use the usual + * ATH_MSG macros in their code. One has to ensure that one class in the hierarchy + * initializes the (static) Logger via the non-default constructor. All messaging + * then occurs via the actual messaging implementation of that class. + * + * Note that while we are using asg::AsgTool as the logger type, in a full athena + * release, this is a direct descendent of AthAlgTool. + */ class Logger { public: - MsgStream& msg() const; - MsgStream& msg(const MSG::Level lvl) const {return msg() << lvl;} - bool msgLvl(const MSG::Level lvl) const {return Logger::staticStream->msgLvl(lvl);} -#ifdef XAOD_STANDALONE - void setMessaging(asg::AsgMessaging* messaging){staticStream = messaging;} - static asg::AsgMessaging* staticStream; -#endif -#ifndef XAOD_STANDALONE - void setMessaging(AthMessaging* messaging){staticStream = messaging;} - static AthMessaging* staticStream; -#endif + Logger() = default; + Logger(asg::AsgTool* logger) { s_logger = logger; } + + MsgStream& msg() const { + if (s_logger) return s_logger->msg(); + else throw std::runtime_error("TrigDecisionTool Logger not initialized."); + } + MsgStream& msg(const MSG::Level lvl) const { return msg() << lvl; } + bool msgLvl(const MSG::Level lvl) const { return s_logger && s_logger->msgLvl(lvl); } + + private: + inline static asg::AsgTool* s_logger{nullptr}; }; } diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/TrigDecisionTool.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/TrigDecisionTool.h index 58a42681a20ad4dd8c6106323f8abd93ef727d9f..f3e1e3d77deab6745ffd52f467c4becd5acd1b96 100755 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/TrigDecisionTool.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/TrigDecisionTool.h @@ -4,7 +4,6 @@ Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -// $Id: TrigDecisionTool.h 775686 2016-09-28 16:26:51Z lheinric $ #ifndef TrigDecision_TrigDecisionTool_h #define TrigDecision_TrigDecisionTool_h /********************************************************************************** @@ -24,15 +23,15 @@ #include "AsgTools/ToolHandle.h" #include "AsgTools/PropertyWrapper.h" -#include "TrigConfInterfaces/ITrigConfigTool.h" +#include "TrigConfInterfaces/ITrigConfigTool.h" +#include "TrigNavStructure/StandaloneNavigation.h" + #ifndef XAOD_STANDALONE -#include "AthenaBaseComps/AthMessaging.h" #include "EventInfo/EventInfo.h" #ifndef XAOD_ANALYSIS #include "TrigNavigation/Navigation.h" #include "TrigConfInterfaces/ITrigConfigSvc.h" -#include "GaudiKernel/IIncidentListener.h" #include "GaudiKernel/ServiceHandle.h" #include "AthenaKernel/SlotSpecificObj.h" @@ -61,21 +60,18 @@ namespace Trig { public asg::AsgMetadataTool, virtual Trig::ITrigDecisionTool, public TrigDecisionToolCore -#ifndef XAOD_STANDALONE - , public AthMessaging -#endif - { + { // constructors, destructor ASG_TOOL_INTERFACE(Trig::TrigDecisionTool) ASG_TOOL_CLASS2(TrigDecisionTool,Trig::ITrigDecisionTool,Trig::TrigDecisionTool) public: - using Logger::msgLvl;//resolve ambiguity from also inheriting from Logger - using Logger::msg; //resolve ambiguity from also inheriting from Logger + // resolve ambiguity and use Logger adaptor for all messaging + using Logger::msgLvl; + using Logger::msg; - // constructors, destructor + // constructors TrigDecisionTool(const std::string& name); - virtual ~TrigDecisionTool(); // initialize routine as required for an Algorithm StatusCode initialize(); @@ -86,11 +82,6 @@ namespace Trig { StatusCode finalize(); - #ifndef XAOD_STANDALONE - void outputlevelupdateHandler(Gaudi::Details::PropertyBase& p); //propagates outputlevel changes to the Logger - - #endif - #ifndef XAOD_ANALYSIS // this is called by Incident dispatcher virtual void handle(const Incident& inc); @@ -112,8 +103,6 @@ namespace Trig { using TrigDecisionToolCore::isPassed; using TrigDecisionToolCore::isPassedBits; - bool msgLvl(const MSG::Level lvl) const { return Logger::msgLvl(lvl); } - const std::string& getNavigationFormat() const; //!< Note: Temporary private: @@ -125,12 +114,17 @@ namespace Trig { void setForceConfigUpdate(bool b, bool forceForAllSlots = false); bool getForceConfigUpdate(); - ToolHandle<TrigConf::ITrigConfigTool> m_configTool{this, "ConfigTool", "TrigConf::xAODConfigTool"}; //!< trigger configuration service handle + + #if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) // Athena: Do not set a Config Tool by default (this tool is not thread safe, the service should be used in Athena) + ToolHandle<TrigConf::ITrigConfigTool> m_configTool{this, "ConfigTool", ""}; + #else // AnalysisBase: Do set a Config Tool by default for analysis convienience + ToolHandle<TrigConf::ITrigConfigTool> m_configTool{this, "ConfigTool", "TrigConf::xAODConfigTool"}; + #endif //full Athena #if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) - ServiceHandle<TrigConf::ITrigConfigSvc> m_configSvc{this, "TrigConfigSvc", ""}; //!< trigger configuration service handle - ToolHandle<HLT::Navigation> m_fullNavigation; + ServiceHandle<TrigConf::ITrigConfigSvc> m_configSvc{this, "TrigConfigSvc", "TrigConf::xAODConfigSvc"}; //!< trigger configuration service handle + ToolHandle<HLT::Navigation> m_fullNavigation{this, "Navigation", "HLT::Navigation/Navigation"}; Gaudi::Property<bool> m_useOldEventInfoDecisionFormat {this, "UseOldEventInfoDecisionFormat", false, "For use when reading old BS with trigger decision information available in the EventInfo"}; @@ -154,7 +148,10 @@ namespace Trig { #endif - Gaudi::Property<bool> m_acceptMultipleInstance{this, "AcceptMultipleInstance", false}; + HLT::StandaloneNavigation m_standaloneNavigation; + + Gaudi::Property<bool> m_acceptMultipleInstance{this, "AcceptMultipleInstance", false, + "Allow multiple TrigDecisionTool instances"}; SG::ReadHandleKey<xAOD::TrigNavigation> m_navigationKey {this, "NavigationKey", "TrigNavigation", "Storegate key of Run1, Run2 Trig Navigation"}; diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/TrigDecisionToolCore.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/TrigDecisionToolCore.h index d2e35b128bb12f050a009bd32864c63c727f79bf..42a3da4d803eddac28183c5b3f8647ad948b2d98 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/TrigDecisionToolCore.h +++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/TrigDecisionToolCore.h @@ -55,7 +55,7 @@ namespace Trig { using DecisionAccess::features; using DecisionAccess::ancestor; - Trig::ExpertMethods* ExperimentalAndExpertMethods() const { return m_expertMethods; } + const Trig::ExpertMethods& ExperimentalAndExpertMethods() const { return m_expertMethods; } protected: virtual Trig::CacheGlobalMemory* cgm() const; @@ -69,7 +69,7 @@ namespace Trig { Trig::CacheGlobalMemory m_cacheGlobalMemory; #endif - Trig::ExpertMethods* m_expertMethods; + Trig::ExpertMethods m_expertMethods; TrigDecisionToolCore (const TrigDecisionToolCore&); TrigDecisionToolCore& operator= (const TrigDecisionToolCore&); diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/share/checkR3Trigger.py b/Trigger/TrigAnalysis/TrigDecisionTool/share/checkR3Trigger.py index bac660aac9104e21ed838902622c64a590c8649c..8f55e1d71f90eb02e11525dd7d6335cebe3c5246 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/share/checkR3Trigger.py +++ b/Trigger/TrigAnalysis/TrigDecisionTool/share/checkR3Trigger.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from Gaudi.Configuration import * # Run Three Offline Trigger Checker @@ -25,6 +25,7 @@ svcMgr += cvgsvc tdt = Trig__TrigDecisionTool('TrigDecisionTool') tdt.TrigConfigSvc = cvgsvc +tdt.OutputLevel = Level tdt.NavigationFormat = "TrigComposite" ToolSvc += tdt diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionObjectHandleAthena.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionObjectHandleAthena.cxx index 28fbcd90308738c18ca5d7fb495d30786a7b5ab4..d698f21ab09cc0cb5fb25138a98134ebfe416b69 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionObjectHandleAthena.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionObjectHandleAthena.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef XAOD_ANALYSIS @@ -21,12 +21,9 @@ TrigDec::TrigDecision const * DecisionObjectHandleAthena::getDecision() const { const EventContext& ctx = Gaudi::Hive::currentContext(); SG::ReadHandle<TrigDec::TrigDecision> oldDecisionReadHandle = SG::makeHandle(*m_oldDecKey, ctx); if( ! oldDecisionReadHandle.isValid() ) { - static bool warningPrinted = false; - if( ! warningPrinted ) { - ATH_MSG_WARNING( "TrigDec::TrigDecision is not available on the " - "input" ); - warningPrinted = true; - } + [[maybe_unused]] static std::atomic<bool> warningPrinted = + [&]() { ATH_MSG_WARNING( "TrigDec::TrigDecision is not available on the input" ); + return true; }(); return nullptr; } m_object = oldDecisionReadHandle.ptr(); diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionUnpackerAthena.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionUnpackerAthena.cxx index 97825971021a4dce15b49a05cbac2fbdd67bb5a6..133de300280b96c61ace639174b2b2d3ed38cbc8 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionUnpackerAthena.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionUnpackerAthena.cxx @@ -6,8 +6,6 @@ #if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) - -#ifndef XAOD_ANALYSIS #include "TrigSteeringEvent/Lvl1Result.h" #include "StoreGate/StoreGateSvc.h" #include "TrigNavStructure/TrigNavStructure.h" @@ -18,38 +16,38 @@ namespace Trig { - DecisionUnpackerAthena::DecisionUnpackerAthena(SG::ReadHandleKey<TrigDec::TrigDecision>* olddeckey) : m_handle(new DecisionObjectHandleAthena(olddeckey)){ + DecisionUnpackerAthena::DecisionUnpackerAthena(SG::ReadHandleKey<TrigDec::TrigDecision>* olddeckey) : + m_handle(std::make_unique<DecisionObjectHandleAthena>(olddeckey)){ } DecisionUnpackerAthena::~DecisionUnpackerAthena(){ - delete m_handle; } - StatusCode DecisionUnpackerAthena::unpackItems(const LVL1CTP::Lvl1Result& result,std::map<unsigned, LVL1CTP::Lvl1Item*>& itemsCache, std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>& itemsByName) { + StatusCode DecisionUnpackerAthena::unpackItems(const LVL1CTP::Lvl1Result& result, + std::map<unsigned, LVL1CTP::Lvl1Item>& itemsCache, + std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>& itemsByName) { itemsByName.reserve( itemsByName.size() + itemsCache.size() ); - for ( auto cacheIt = itemsCache.begin() ; cacheIt != itemsCache.end(); ++cacheIt ) { - unsigned int ctpid = cacheIt->first; - LVL1CTP::Lvl1Item* item = cacheIt->second; - ATH_MSG_VERBOSE("Unpacking bits for item: " << ctpid << " " << item->name()); - bool passBP = result.isPassedBeforePrescale(ctpid); - bool passAP = result.isPassedAfterPrescale(ctpid); - bool passAV = result.isPassedAfterVeto(ctpid); - LVL1CTP::Lvl1Item itemNew (item->name(), item->hashId(), + for ( auto& [ctpid, item] : itemsCache ) { + ATH_MSG_VERBOSE("Unpacking bits for item: " << ctpid << " " << item.name()); + const bool passBP = result.isPassedBeforePrescale(ctpid); + const bool passAP = result.isPassedAfterPrescale(ctpid); + const bool passAV = result.isPassedAfterVeto(ctpid); + LVL1CTP::Lvl1Item itemNew (item.name(), item.hashId(), passBP, passAP, passAV, - item->prescaleFactor()); - *item = std::move (itemNew); - itemsByName[item->name()] = item; + item.prescaleFactor()); + item = std::move (itemNew); + itemsByName[item.name()] = &item; } return StatusCode::SUCCESS; } StatusCode DecisionUnpackerAthena::unpackChains(const std::vector<uint32_t>& serialized_chains, - std::map<unsigned, HLT::Chain*>& cache, + std::map<unsigned, HLT::Chain>& cache, std::unordered_map<std::string, const HLT::Chain*>& output) { - if( serialized_chains.size() == 0 ) { + if( serialized_chains.empty() ) { ATH_MSG_WARNING("ChainResult is empty"); return StatusCode::FAILURE; } @@ -68,21 +66,21 @@ namespace Trig { ATH_MSG_WARNING("Missing chain of counter in the configuration: " << cntr); return StatusCode::FAILURE; } else { - cacheIt->second->reset(); - cacheIt->second->deserialize(*rawIt); - output[cacheIt->second->getChainName()] = cacheIt->second; - ATH_MSG_VERBOSE("Updated chain in this event : " << *(cacheIt->second)); + cacheIt->second.reset(); + cacheIt->second.deserialize(*rawIt); + output[cacheIt->second.getChainName()] = &cacheIt->second; + ATH_MSG_VERBOSE("Updated chain in this event : " << cacheIt->second); } } return StatusCode::SUCCESS; } StatusCode DecisionUnpackerAthena::unpackDecision(std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>& itemsByName, - std::map<CTPID, LVL1CTP::Lvl1Item*>& itemsCache, + std::map<CTPID, LVL1CTP::Lvl1Item>& itemsCache, std::unordered_map<std::string, const HLT::Chain*>& l2chainsByName, - std::map<CHAIN_COUNTER, HLT::Chain*>& l2chainsCache, + std::map<CHAIN_COUNTER, HLT::Chain>& l2chainsCache, std::unordered_map<std::string, const HLT::Chain*>& efchainsByName, - std::map<CHAIN_COUNTER, HLT::Chain*>& efchainsCache, + std::map<CHAIN_COUNTER, HLT::Chain>& efchainsCache, char& bgCode, bool unpackHLT ){ @@ -141,7 +139,6 @@ namespace Trig { if (nav) { HLT::NavigationCore* fullNav = dynamic_cast<HLT::NavigationCore*>(nav); - // cppcheck-suppress oppositeInnerCondition if(!fullNav){ ATH_MSG_WARNING("downcast failed"); return StatusCode::FAILURE; @@ -202,6 +199,5 @@ namespace Trig { this->unpacked_decision(false); } } -#endif #endif // full Athena env diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionUnpackerEventInfo.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionUnpackerEventInfo.cxx index e5dc9b3f537c07b596e52fd4fb9e2a03e07a5c5e..c6cb1868bf7c2d3c81ca4c2ba25d96bc1897d94f 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionUnpackerEventInfo.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/src/DecisionUnpackerEventInfo.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ //only in full Athena @@ -32,15 +32,17 @@ bool get32BitDecision( unsigned int index, namespace Trig { - DecisionUnpackerEventInfo::DecisionUnpackerEventInfo(SG::ReadHandleKey<EventInfo>* oldEventInfoKey) : m_handle(new DecisionObjectHandleEventInfo(oldEventInfoKey)){ + DecisionUnpackerEventInfo::DecisionUnpackerEventInfo(SG::ReadHandleKey<EventInfo>* oldEventInfoKey) : + m_handle(std::make_unique<DecisionObjectHandleEventInfo>(oldEventInfoKey)){ } DecisionUnpackerEventInfo::~DecisionUnpackerEventInfo(){ - delete m_handle; } - StatusCode DecisionUnpackerEventInfo::unpackItems(const std::vector<uint32_t>& level1TriggerInfo, std::map<unsigned, LVL1CTP::Lvl1Item*>& itemsCache, std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>& itemsByName) { + StatusCode DecisionUnpackerEventInfo::unpackItems(const std::vector<uint32_t>& level1TriggerInfo, + std::map<unsigned, LVL1CTP::Lvl1Item>& itemsCache, + std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>& itemsByName) { uint32_t L1SIZE = level1TriggerInfo.size()/3; std::vector<uint32_t>::const_iterator begin, end; @@ -59,31 +61,27 @@ namespace Trig { std::vector<uint32_t> tav(begin,end); itemsByName.reserve( itemsByName.size() + itemsCache.size() ); - for ( auto cacheIt = itemsCache.begin(); cacheIt != itemsCache.end(); ++cacheIt ) { - unsigned int ctpid = cacheIt->first; - LVL1CTP::Lvl1Item* item = cacheIt->second; - ATH_MSG_VERBOSE("Unpacking bits for item: " << ctpid << " " << item->name()); - bool passBP = get32BitDecision(ctpid,tbp); - bool passAP = get32BitDecision(ctpid,tap); - bool passAV = get32BitDecision(ctpid,tav); - LVL1CTP::Lvl1Item itemNew (item->name(), item->hashId(), + for ( auto [ctpid, item] : itemsCache ) { + ATH_MSG_VERBOSE("Unpacking bits for item: " << ctpid << " " << item.name()); + const bool passBP = get32BitDecision(ctpid,tbp); + const bool passAP = get32BitDecision(ctpid,tap); + const bool passAV = get32BitDecision(ctpid,tav); + LVL1CTP::Lvl1Item itemNew (item.name(), item.hashId(), passBP, passAP, passAV, - item->prescaleFactor()); - *item = std::move (itemNew); - itemsByName[item->name()] = item; + item.prescaleFactor()); + item = std::move (itemNew); + itemsByName[item.name()] = &item; } return StatusCode::SUCCESS; } StatusCode DecisionUnpackerEventInfo::unpackChains(const std::vector<uint32_t>& chainTriggerInfo, - std::map<unsigned, HLT::Chain*>& cache, + std::map<unsigned, HLT::Chain>& cache, std::unordered_map<std::string, const HLT::Chain*>& output) { output.reserve( output.size() + cache.size() ); - for( auto& cntr_chain : cache){ - auto cntr = cntr_chain.first; - auto chain = cntr_chain.second; - chain->reset(); + for( auto& [cntr, chain] : cache){ + chain.reset(); //we have to make a guess here //the bit form the event header is set according to @@ -95,30 +93,30 @@ namespace Trig { bool decision = get32BitDecision( cntr, chainTriggerInfo ); if(decision){ - chain->setDecisions( true, //raw + chain.setDecisions( true, //raw false,//passedthrough false,//prescaled false //resurrected ); } else { - chain->setDecisions( false,//raw + chain.setDecisions( false,//raw false,//passedthrough false,//prescaled false //resurrected ); } - output[chain->getChainName()] = chain; + output[chain.getChainName()] = &chain; } return StatusCode::SUCCESS; } StatusCode DecisionUnpackerEventInfo::unpackDecision(std::unordered_map<std::string, const LVL1CTP::Lvl1Item*>& itemsByName, - std::map<CTPID, LVL1CTP::Lvl1Item*>& itemsCache, + std::map<CTPID, LVL1CTP::Lvl1Item>& itemsCache, std::unordered_map<std::string, const HLT::Chain*>& l2chainsByName, - std::map<CHAIN_COUNTER, HLT::Chain*>& l2chainsCache, + std::map<CHAIN_COUNTER, HLT::Chain>& l2chainsCache, std::unordered_map<std::string, const HLT::Chain*>& efchainsByName, - std::map<CHAIN_COUNTER, HLT::Chain*>& efchainsCache, + std::map<CHAIN_COUNTER, HLT::Chain>& efchainsCache, char& /*bgCode*/, bool unpackHLT ){ diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/src/FeatureCollectAthena.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/src/FeatureCollectAthena.cxx index ed350e2a647143f91096538255a79d32a99669da..80f9e4a391b10b36c943b2e486275757a2383b2f 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/src/FeatureCollectAthena.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/src/FeatureCollectAthena.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ //only in full Athena @@ -50,8 +50,8 @@ namespace Trig{ // L1 specific access ( objects not in the navigation, we need to pick them from different container in SG) template<class T> void l1collect(const HLT::TriggerElement* te, std::vector<Trig::Feature<T> >& data, unsigned int condition, - const std::vector<T>& (LVL1_ROI::*method)() const, - HLT::TrigNavStructure* navstructure) { + const std::vector<T>& (LVL1_ROI::*method)() const, + HLT::TrigNavStructure* navstructure) { auto navigation = dynamic_cast<HLT::NavigationCore*>(navstructure); @@ -62,16 +62,16 @@ namespace Trig{ const LVL1_ROI* lvl1(0); if ( !navigation || navigation->getAccessProxy()->retrieve(lvl1, "LVL1_ROI").isFailure() || lvl1 == 0 ) { - return; + return; } for(const Trig::Feature<TrigRoiDescriptor>& roi : rois) { - for(const T& specific : (lvl1->*(method))() ) { + for(const T& specific : (lvl1->*(method))() ) { if (specific.getROIWord() == roi.cptr()->roiWord()) { - data.push_back( Trig::Feature<T>( &specific, roi.te(), "") ); - break; + data.push_back( Trig::Feature<T>( &specific, roi.te(), "") ); + break; } - } + } } } diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/test/TDTTestAccessAndPassFlagsARA.py b/Trigger/TrigAnalysis/TrigDecisionTool/test/TDTTestAccessAndPassFlagsARA.py deleted file mode 100755 index a447531cedeff8bdefdc7e533eff33d98951bb07..0000000000000000000000000000000000000000 --- a/Trigger/TrigAnalysis/TrigDecisionTool/test/TDTTestAccessAndPassFlagsARA.py +++ /dev/null @@ -1,124 +0,0 @@ -#!/usr/bin/env python - -# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration - -import re - -def printElectronContainer(elContFeature,flag): - if not elContFeature: return - ec = elContFeature.cptr() - print '... Electron container with label %s is of size %i' % (elContFeature.label(), ec.size()) - for j,el in enumerate(ec): - print ' --- electron %i with eta: %s phi: %s et: %s' % (j, el.eta(), el.phi(), el.et()) - printFlag(flag) - - - -def printElectron(elFeature,flag): - if not elFeature: return - el = elFeature.cptr() - print '... Electron with label %s with eta: %s phi: %s et: %s' % (elFeature.label(), el.eta(), el.phi(), el.et()) - printFlag(flag) - - - -def printFlag(flag,asList=True): - return - from TrigEventARA.TrigPassFlags import TrigPassFlagsARA - flag = TrigPassFlagsARA(flag) - print '... Flag size: %i' % (flag.size()) - for i in range(flag.size()): - print ' %i: isEM = %i' % (i, flag.FlagsAsInt(i)) - -### import the modules -print '... importing ROOT' -import ROOT - -print '... define list of files' -# location -# eosatlas.cern.ch/eos/atlas/user/s/stelzer/ESD_withEGammaPassFlags.pool.root -#PoolAODInput=['./ESD_withEGammaPassFlags.pool.root'] -PoolAODInput=['./ESD.pool.root'] -for f in PoolAODInput: print ' + %s' % f - - -### build the transient event and metadata trees -print '... build collection and metadata trees' -from TrigDecisionTool.BuildTransientTrees import BuildTransientTrees -(transientTree, transientMetaDataTree) = BuildTransientTrees(PoolAODInput) - - -### instantiate the TrigDecisionToolARA -print '... instantiate TrigDecisionToolARA' -tdt = ROOT.Trig.TrigDecisionToolARA(transientTree, transientMetaDataTree) -### changing the output level of the TrigDecisionTool (default is ERROR) -#import AthenaCommon.Constants as Constants -#tdt.setOutputLevel(Constants.DEBUG) - - -### create trigger chain group -electronChain = tdt.getChainGroup('EF_e22_loose') - -### loop over the events -nevt = transientTree.GetEntries() -print '... loop over %i events' % nevt - - -tdt.ExperimentalAndExpertMethods().enable() - - -for evt in xrange(nevt): -#for evt in [6,7]: - - print "\nreading event",evt, "==============================" - transientTree.GetEntry(evt) - - if evt==0: - print "... electron chains:", [x for x in electronChain.getListOfTriggers()] - # getting some configuration details - cfgCh = tdt.ExperimentalAndExpertMethods().getChainConfigurationDetails('EF_e22_loose') - print "%s (%i)" % (cfgCh.chain_name(), cfgCh.chain_counter()) - - - testSingleAccessPhysics = True - testSingleAccessDeactiv = True - testContainerAccessPhysics = True - testContainerAccessDeactiv = True - - for ch in [x for x in electronChain.getListOfTriggers()]: - - print "Chain:",ch,'... passed:', tdt.isPassed(ch) - features = tdt.features(ch,ROOT.TrigDefs.alsoDeactivateTEs) - - print "... Now getting the electrons and pass flags\n" - - if testSingleAccessPhysics: - print "Single object access (Physics)" - print "------------------------------" - eg = features.get('egamma')('egamma_Electrons', ROOT.TrigDefs.Physics) # list of Feature<egamma> - for e in eg: - printElectron(e,features.getFlags(e,'isEM')) - - - if testSingleAccessDeactiv: - print "Single object access (alsoDeactivateTEs)" - print "----------------------------------------" - eg = features.get('egamma')('egamma_Electrons', ROOT.TrigDefs.alsoDeactivateTEs) # list of Feature<egamma> - for ec in eg: - printElectron(ec,features.getFlags(ec,'isEM')) - - - if testContainerAccessPhysics: - print "Container access (Physics)" - print "--------------------------" - egC = features.get('egammaContainer')('egamma_Electrons', ROOT.TrigDefs.Physics) # list of Feature<egammaContainer> - for ec in egC: - printElectronContainer(ec,features.getFlags(ec,'isEM')) - - - if testContainerAccessDeactiv: - print "Container access (alsoDeactivateTEs)" - print "------------------------------------" - egC = features.get('egammaContainer')('egamma_Electrons', ROOT.TrigDefs.alsoDeactivateTEs) # list of Feature<egammaContainer> - for ec in egC: - printElectronContainer(ec,features.getFlags(ec,'isEM')) diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/test/Templates_test.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/test/Templates_test.cxx index 11ca2960b396a5b2d30bf30cccf8ca91d8de4eab..5e617ceb716e714675ae378a80207d266c9cff5b 100644 --- a/Trigger/TrigAnalysis/TrigDecisionTool/test/Templates_test.cxx +++ b/Trigger/TrigAnalysis/TrigDecisionTool/test/Templates_test.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include <iostream> @@ -9,13 +9,9 @@ #include "TrigNavigation/NavigationInit.h" -//#include "TestTools/initGaudi.h" -#include "AthenaKernel/getMessageSvc.h" -#include "GaudiKernel/MsgStream.h" #include "AthContainers/DataVector.h" #include "GaudiKernel/ClassID.h" - #include "AnalysisTriggerEvent/Muon_ROI.h" #include "AnalysisTriggerEvent/EmTau_ROI.h" #include "AnalysisTriggerEvent/Jet_ROI.h" @@ -26,10 +22,7 @@ #include "TrigMuonEvent/MuonFeature.h" #include "TrigMuonEvent/TrigMuonEFContainer.h" - - #include "TrigDecisionTool/TrigDecisionTool.h" -//#include "TrigDecisionTool/DecisionAccess.h" using namespace std; diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx index add4680f05c27795c40129ff7a691be4005df736..945635b2b8e0fc43352a26706e5fb792ea1f786e 100644 --- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx +++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaAnalysisBaseTool.cxx @@ -157,9 +157,6 @@ StatusCode TrigEgammaAnalysisBaseTool::initialize() { ATH_MSG_ERROR("Could not retrieve Trigger Decision Tool! Can't work"); return StatusCode::FAILURE; } - //Enable expert methods - m_trigdec->ExperimentalAndExpertMethods()->enable(); - //TrigEgammaPlotTool if(m_parent) m_plot->setParent(m_parent); @@ -980,7 +977,7 @@ std::string TrigEgammaAnalysisBaseTool::getProbePid(const std::string pidtype){ } std::string TrigEgammaAnalysisBaseTool::getL1Item(std::string trigger){ - auto trig_conf = m_trigdec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(trigger); + auto trig_conf = m_trigdec->ExperimentalAndExpertMethods().getChainConfigurationDetails(trigger); std::string L1_seed = ""; if(trig_conf != nullptr){ ATH_MSG_DEBUG("TrigConf available"); diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavAnalysisTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavAnalysisTool.cxx index 0d86adee3335bea20e1edc8d0ec66dd7a6c761e2..202d1073cbf0c56535337adf204d2981216ee78b 100644 --- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavAnalysisTool.cxx +++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavAnalysisTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TrigEgammaAnalysisTools/TrigEgammaNavAnalysisTool.h" @@ -106,7 +106,7 @@ StatusCode TrigEgammaNavAnalysisTool::childExecute(){ } // Check HLTResult - if(tdt()->ExperimentalAndExpertMethods()->isHLTTruncated()){ + if(tdt()->ExperimentalAndExpertMethods().isHLTTruncated()){ ATH_MSG_WARNING("HLTResult truncated, skip trigger analysis"); return StatusCode::SUCCESS; } diff --git a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPAnalysisTool.cxx b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPAnalysisTool.cxx index 78cd63d526135ad232836d184f89af571f8ab8da..95e8336797d516e2d244082b4c7a9800853a4fc3 100644 --- a/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPAnalysisTool.cxx +++ b/Trigger/TrigAnalysis/TrigEgammaAnalysisTools/Root/TrigEgammaNavTPAnalysisTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -165,7 +165,7 @@ StatusCode TrigEgammaNavTPAnalysisTool::childExecute() TrigEgammaNavTPBaseTool::executeTandP(); // Check HLTResult - if(tdt()->ExperimentalAndExpertMethods()->isHLTTruncated()){ + if(tdt()->ExperimentalAndExpertMethods().isHLTTruncated()){ ATH_MSG_WARNING("HLTResult truncated, skip trigger analysis"); return StatusCode::SUCCESS; } diff --git a/Trigger/TrigAnalysis/TrigEgammaEmulationTool/src/TrigEgammaEmulationToolTest.cxx b/Trigger/TrigAnalysis/TrigEgammaEmulationTool/src/TrigEgammaEmulationToolTest.cxx index 6cc158fcb44cbd85d919eedbafd09c57b86ba549..e85586bd15be1048e4ba20f28dbcdd8ea54a37ad 100644 --- a/Trigger/TrigAnalysis/TrigEgammaEmulationTool/src/TrigEgammaEmulationToolTest.cxx +++ b/Trigger/TrigAnalysis/TrigEgammaEmulationTool/src/TrigEgammaEmulationToolTest.cxx @@ -37,8 +37,6 @@ StatusCode TrigEgammaEmulationToolTest::initialize() { ATH_CHECK(m_matchTool.retrieve()); ATH_CHECK(m_emulatorTool.retrieve()); - m_trigdec->ExperimentalAndExpertMethods()->enable(); - m_accept.addCut("L1Calo",""); m_accept.addCut("L2Calo",""); m_accept.addCut("L2",""); diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfigMT_Tier0.h b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfigMT_Tier0.h index ee8c5b5a9bd1b43caace37d8e097711032bea5fc..9527e4c1619ff720e655cc9c51af782a209833da 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfigMT_Tier0.h +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfigMT_Tier0.h @@ -453,7 +453,7 @@ protected: } - // if ( (*m_tdt)->ExperimentalAndExpertMethods()->isHLTTruncated() ) { + // if ( (*m_tdt)->ExperimentalAndExpertMethods().isHLTTruncated() ) { // m_provider->msg(MSG::WARNING) << "HLTResult truncated, skipping event" << endmsg; // return; // } diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfig_Tier0.h b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfig_Tier0.h index 300203660c0c68144df7424e87b4646607324d0a..2fc5b626a458a918ba2c9b50b3b2f9873de7cdf6 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfig_Tier0.h +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/TrigInDetAnalysisExample/T_AnalysisConfig_Tier0.h @@ -464,7 +464,7 @@ protected: // still need in the future a more robust test to achieve this same // functionality // - // if ( (*m_tdt)->ExperimentalAndExpertMethods()->isHLTTruncated() ) { + // if ( (*m_tdt)->ExperimentalAndExpertMethods().isHLTTruncated() ) { // m_provider->msg(MSG::WARNING) << "HLTResult truncated, skipping event" << endmsg; // return; // } diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/TrigTestBase.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/TrigTestBase.cxx index c88e55467cbae3971a18fc398bab6ae6268f0285..4ab8998bdd7c1742b9d8fa25c4675f1e938a85eb 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/TrigTestBase.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisExample/src/TrigTestBase.cxx @@ -196,7 +196,7 @@ StatusCode TrigTestBase::book(bool newEventsBlock, bool newLumiBlock, bool newRu // track filters // reference (offline) tracks... - TrackFilter* filterRef = new Filter_Track( m_etaCutOffline, m_d0CutOffline, m_z0CutOffline, m_pTCutOffline, + TrackFilter* filterRef = new Filter_Track( m_etaCutOffline, m_d0CutOffline, 0, m_z0CutOffline, m_pTCutOffline, m_pixHitsOffline, m_sctHitsOffline, m_siHitsOffline, m_blayerHitsOffline, m_strawHitsOffline, m_trtHitsOffline, 0, m_pixHolesOffline, m_sctHolesOffline, m_siHolesOffline ); diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/Makefile b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/Makefile index 9c429617969c1e41556abb408d1bbeb0b3e31eba..2fc5d09619fcda6d6465e744b25a5bcd703bc02a 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/Makefile +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/Makefile @@ -163,6 +163,7 @@ LOBJECTS = \ $(OBJDIR)/TIDAEvent.o \ $(OBJDIR)/Track.o \ $(OBJDIR)/TIDAVertex.o \ + $(OBJDIR)/TIDAVertexNew.o \ $(OBJDIR)/TIDAChain.o \ $(OBJDIR)/TIDARoi.o \ $(OBJDIR)/TIDARoiParameters.o \ diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/comparitor.cxx b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/comparitor.cxx index f6ee8d4e7221eb129196c6b44c1954d161c0986a..4f4080b0d2ffcd32b73240f761f8ab34231be8b1 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/comparitor.cxx +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/Analysis/src/comparitor.cxx @@ -297,7 +297,9 @@ int usage(const std::string& name, int status, const std::string& err_msg="" ) { s << " -m, --mapfile \t remap file for reference histograms \n\n"; s << " -rc, --refchains values ..\t allow different reference chains for comparison\n"; - s << " -s, --swap pattern regex \t swap \"pattern\" in the reference chains name by \"regex\"\n"; + s << " -s, --swap pattern regex \t swap \"pattern\" in the chain names by \"regex\"\n"; + s << " --swapr pattern regex \t swap \"pattern\" in the ref chain names by \"regex\"\n"; + s << " --swapt pattern regex \t swap \"pattern\" in the test chain names by \"regex\"\n"; s << " -nr, --noref \t do not plot reference histograms\n"; s << " --normref \t normalise the reference counting histograms to test histograms\n"; s << " -us, --usechainref \t use the histograms from chain definied in the \"Chain\" histogram as reference\n\n"; @@ -478,6 +480,14 @@ int main(int argc, char** argv) { std::string pattern = ""; std::string regex = ""; + std::string patternr = ""; + std::string regexr = ""; + + std::string patternt = ""; + std::string regext = ""; + + std::string basedir = ""; + std::string xpattern = ""; std::string xregex = ""; @@ -547,6 +557,10 @@ int main(int argc, char** argv) { if ( ++i<argc ) dir=argv[i]; else return usage(argv[0], -1, "no directory provided"); } + else if ( arg=="-b" || arg=="--bdir" ) { + if ( ++i<argc ) basedir=argv[i]; + else return usage(argv[0], -1, "no directory provided"); + } else if ( arg=="--taglabels" ) { addingtags = true; } @@ -665,6 +679,18 @@ int main(int argc, char** argv) { if ( ++i<argc ) regex=argv[i]; else return usage(argv[0], -1, "no target pattern provided"); } + else if ( arg=="--swapt" ) { + if ( ++i<argc ) patternt=argv[i]; + else return usage(argv[0], -1, "no patterns provided"); + if ( ++i<argc ) regext=argv[i]; + else return usage(argv[0], -1, "no target pattern provided"); + } + else if ( arg=="--swapr" ) { + if ( ++i<argc ) patternr=argv[i]; + else return usage(argv[0], -1, "no patterns provided"); + if ( ++i<argc ) regexr=argv[i]; + else return usage(argv[0], -1, "no target pattern provided"); + } else if ( arg=="-sx" || arg=="--swapaxtitles" ) { if ( ++i<argc ) xregex=argv[i]; else return usage(argv[0], -1, "no target pattern provided"); @@ -777,6 +803,12 @@ int main(int argc, char** argv) { if ( chains.size()==0 ) return usage(argv[0], -1, "no chains specified"); + + if ( basedir.size()>0 ) { + if ( basedir[basedir.size()-1]!='/' ) basedir += "/"; + for ( size_t ic=chains.size() ; ic-- ; ) chains[ic] = basedir+chains[ic]; + } + if ( refchains.size()>0 && refchains.size()!=chains.size() ) return usage(argv[0], -1, "not enough chains specified"); if ( refchains.size()==0 ) refchains = chains; @@ -910,6 +942,7 @@ int main(int argc, char** argv) { pattern = testrun; regex = refrun; } + } if ( !refrun.empty() ) { @@ -1009,6 +1042,9 @@ int main(int argc, char** argv) { std::cout << "\ncreating chain and reference information ..." << std::endl; for ( size_t j=0; j<chains.size(); j++) { + + if ( !regex.empty() ) chains[j] = fullreplace( chains[j], pattern, regex ); + if ( !regext.empty() ) chains[j] = fullreplace( chains[j], patternt, regext ); /// get the actual chain name and track collection from @@ -1059,13 +1095,20 @@ int main(int argc, char** argv) { } } - std::cout << "chainref size: " << chainref.size() << " " << refchains.size() << std::endl; for ( size_t j=0 ; j<chainref.size() ; j++ ) { std::cout << "chainref: " << chainref[j] << " :: " << refchains[j] << std::endl; + + /// reference chains if ( chainref[j]!="" ) refchain[j] = fullreplace( chainref[j], pattern, regex ); else refchain[j] = fullreplace( refchains[j], pattern, regex ); + + if ( !patternr.empty() ) { + if ( chainref[j]!="" ) refchain[j] = fullreplace( chainref[j], patternr, regexr ); + else refchain[j] = fullreplace( refchains[j], patternr, regexr ); + } + std::cout << "refchain: " << refchain[j] << std::endl; } diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAhisto-tier0.dat b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAhisto-tier0.dat new file mode 100644 index 0000000000000000000000000000000000000000..10b5b2e6a41481eafab9f63cf5c48d3892bf95b1 --- /dev/null +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUser/share/TIDAhisto-tier0.dat @@ -0,0 +1,326 @@ +/// emacs: this is -*- c++ -*- + +panels = { sum_panel, eff_panel, res_panel, diff_panel, spoff_panel, sp_panel, trt_panel, mult_panel, dist_panel, d0_panel, z0_panel, beam_panel }; + + +dist_panel = { + "reftrk_pT", "p_{T}", "xaxis:log:auto:0.5:400", "Offline p_{T} [GeV]", "yaxis:log:autonw", "(1/N)dN/dp_{T} [GeV^{-1}]" , + "reftrk_eta", "eta", "xaxis:lin:-3:3", "Offline #eta", "yaxis:lin:auton", "Normalised entries" , + "reftrk_phi", "phi", "xaxis:lin:-3.14:3.14", "Offline #phi", "yaxis:lin:auton", "Normalised entries" , + + "testtrk_pT", "p_{T} rec", "xaxis:log:auto:0.5:400", "Trigger p_{T} [GeV]", "yaxis:log:autonw", "(1/N)dN/dp_{T} [GeV^{-1}]" , + "testtrk_eta", "eta rec", "xaxis:lin:-3:3", "Trigger #eta", "yaxis:lin:auton", "Normalised entries" , + "testtrk_phi", "phi rec", "xaxis:lin:-3.14:3.14", "Trigger #phi", "yaxis:lin:auton", "Normalised entries" +}; + + +d0_panel = { + "reftrk_d0", "a0", "xaxis:lin:-2:2", "Offline a_{0} [mm]", "yaxis:log:auton", "(1/N)dN" , + "reftrk_dd0", "Delta a0", "xaxis:lin:-0.1:2", "Offline a_{0} error estimate [mm]", "yaxis:log:auton", "Normalised entries" , + "reftrk_d0sig", "a0 significance", "xaxis:lin:autosym", "Offline a_{0} significance", "yaxis:log:auton", "Normalised entries" , + + "testtrk_d0", "a0 rec", "xaxis:lin:-2:2", "Trigger a_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + "testtrk_dd0", "Delta a0 rec", "xaxis:lin:-0.1:2", "Trigger a_{0} error estimate [mm]", "yaxis:log:auton", "Normalised entries" , + "testtrk_d0sig", "a0 rec significance", "xaxis:lin:autosym", "Trigger a_{0} significance", "yaxis:log:auton", "Normalised entries" , +}; + + +eff_panel = { + "Eff_pT", "Efficiency p_{T}", "xaxis:log:0.5:200", "Offline track p_{T} [GeV]", "yaxis:lin:auto:0.9:1.02", "Efficiency " , + "Eff_Eta", "Efficiency #eta", "xaxis:lin:-2.5:2.5", "Offline track #eta", "yaxis:lin:auto:0.9:1.02", "Efficiency " , + "Eff_Phi", "Efficiency #phi", "xaxis:lin", "Offline track #phi", "yaxis:lin:auto:0.9:1.02", "Efficiency " , + + "Eff_nVtx", "Efficiency nVtx", "xaxis:lin:auto", "Offline vertex multiplicity", "yaxis:lin:auto:0.9:1.02", "Efficiency " , + "Eff_d0", "Efficiency d0", "xaxis:lin:autosym", "Offline track d_{0} [mm]", "yaxis:lin:auto:0.9:1.02", "Efficiency " , + "Eff_z0", "Efficiency z0", "xaxis:lin:-250:250", "Offline track z_{0} [mm]", "yaxis:lin:auto:0.9:1.02", "Efficiency " +}; + + +res_panel = { + "residual_eta", "Residual #eta", "xaxis:lin:-0.05:0.05", "#Delta#eta", "yaxis:log:auton", "Normalised entries" , + // "residual_eta", "Residual #eta", "xaxis:lin:-0.05:0.05", "#Delta#eta", "yaxis:lin:auton", "Normalised entries" , + "residual_z0", "Residual z0", "xaxis:lin:-10:10", "#Delta z_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + "residual_dz0", "Residual sig z0", "xaxis:lin:-10:10", "#Delta #sigma(z_{0}) [mm]", "yaxis:log:auton", "Normalised entries" , + + "residual_phi", "Residual #phi", "xaxis:lin:-0.05:0.05", "#Delta#phi", "yaxis:log:auton", "Normalised entries" , + "residual_d0", "Residual a0", "xaxis:lin:-1:1", "#Delta d_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + "residual_dd0", "Residual sig a0", "xaxis:lin:-1:1", "#Delta #sigma(d_{0}) [mm]", "yaxis:log:auton", "Normalised entries" +}; + + +sum_panel = { + "Chain", "chain", "xaxis:lin", "Chain counts", "yaxis:log:auto", "counts" , + "reftrk_N", "N tracks", "xaxis:lin:auto", "Offline multiplicity", "yaxis:log:auton:0.01:0.5", "Normalised entries" , + "Eff_lb", "Efficiency lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + + "Eff_overall", "Efficiency overall", "xaxis:lin:auto", "", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + "testtrk_N", "N tracks rec", "xaxis:lin:auto", "Online multiplicity", "yaxis:log:autown:0.01:0.5", "(1/Nev)dNev/dn(tracks)" , + "nsihits_lb", "Si hits per lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:auto:14:18", "Offline Si multiplicity" +}; + + +spoff_panel = { + "npix_vs_eta", "mean number of offline pixel hits", "xaxis:lin", "Offline #eta", "yaxis:lin:3:7:auto", "Offline pixel hits" , + "npix_vs_phi", "mean number of offline pixel hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:3:7:auto", "Offline pixel hits" , + "npix_vs_d0", "mean number of offline pixel hits", "xaxis:lin:autosym", "Offline d0 [mm]", "yaxis:lin:auto:0:5", "Offline pixel hits" , + + "nsct_vs_eta", "mean number of offline SCT hits", "xaxis:lin", "Offline #eta", "yaxis:lin:7:11", "Offline SCT clusters" , + "nsct_vs_phi", "mean number of offline SCT hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:7:11", "Offline SCT clusters" , + "nsct_vs_d0", "mean number of offline SCT hits", "xaxis:lin:autosym", "Offline d0 [mm]", "yaxis:lin:auto:6:10", "Offline SCT clusters" +}; + + +sp_panel = { + "npix_vs_eta_rec", "mean number of trigger pixel hits", "xaxis:lin", "Offline #eta", "yaxis:lin:3:7:auto", "Trigger pixel hits" , + "npix_vs_phi_rec", "mean number of trigger pixel hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:3:7:auto", "Trigger pixel hits" , + "npix_vs_d0_rec", "mean number of trigger pixel hits", "xaxis:lin:autosym", "Offline d0 [mm]", "yaxis:lin:auto:0:5", "Trigger pixel hits" , + + "nsct_vs_eta_rec", "mean number of trigger SCT hits", "xaxis:lin", "Offline #eta", "yaxis:lin:7:11", "Trigger SCT clusters" , + "nsct_vs_phi_rec", "mean number of trigger SCT hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:7:11", "Trigger SCT clusters" , + "nsct_vs_d0_rec", "mean number of trigger SCT hits", "xaxis:lin:autosym", "Offline d0 [mm]", "yaxis:lin:auto:6:10", "Trigger SCT clusters" +}; + + +beam_panel = { + "trkvtx_x_vs_lb", "x beamline vs lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:-1500:1500:auto", "Trigger beamspot x [mm]", + "trkvtx_y_vs_lb", "y beamline vs lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:-1500:1500:auto", "Trigger beamspot y [mm]", + "trkvtx_z_vs_lb", "z beamline vs lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:-250:250:auto", "Trigger beamspot z [mm]", + + "Eff_lb", "Efficiency lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + "d0_vs_phi_prof", "d0 vs #phi", "xaxis:lin", "Offline #phi", "yaxis:-0.1:0.15", "Offline d0 [mm]", + "d0_vs_phi_rec_prof", "d0 vs #phi rec", "xaxis:lin", "Trigger #phi", "yaxis:-0.1:0.15", "Trigger d0 [mm]" +}; + + +mult_panel = { + "npix", "Offline pixel multiplicity", "xaxis:lin", "Offline Pixel hit multiplicity", "yaxis:lin:auton", "Tracks" , + "nsct", "Offline sct multiplicity", "xaxis:lin", "Offline SCT hit multiplicity", "yaxis:lin:auton", "Tracks" , + "ntrt", "Offline TRT multiplicity", "xaxis:lin", "Offline TRT hit multiplicity", "yaxis:log:auton", "Tracks" , + + "npix_rec", "Trigger pixel multiplicity", "xaxis:lin", "Trigger Pixel hit multiplicity", "yaxis:lin:auton", "Tracks" , + "nsct_rec", "Trigger sct multiplicity", "xaxis:lin", "Trigger SCT hit multiplicity", "yaxis:lin:auton", "Tracks" , + "ntrt_rec", "Trigger TRT multiplicity", "xaxis:lin", "Trigger TRT hit multiplicity", "yaxis:log:auton", "Tracks" , +}; + + +trt_panel = { + "ntrt", "Offline TRT multiplicity", "xaxis:lin", "Offline TRT hit multiplicity", "yaxis:log:auton", "Tracks" , + "ntrt_vs_eta", "mean number of offline TRT hits", "xaxis:lin:auto", "Offline #eta", "yaxis:lin:auto:0:50", "Offline TRT hit multiplicity" , + "ntrt_vs_phi", "Offline TRT vs phi", "xaxis:lin", "Offline #phi", "yaxis:lin:auto:0:50", "Offline TRT hit multiplicity", + + "ntrt_rec", "Trigger TRT multiplicity", "xaxis:lin", "Trigger TRT hit multiplicity", "yaxis:log:auton", "Tracks" , + "ntrt_vs_eta_rec", "mean number of trigger TRT hits", "xaxis:lin:auto", "Trigger #eta", "yaxis:lin:auto:0:50", "Trigger TRT hit multiplicity" , + "ntrt_vs_phi_rec", "Trigger TRT vs phi", "xaxis:lin", "Offline #phi", "yaxis:lin:auto:0:50", "Trigger TRT hit multiplicity", +}; + + +z0_panel = { + "reftrk_z0", "z0", "xaxis:lin:-250:250", "Offline z_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + "reftrk_dz0", "Delta z0", "xaxis:lin:-0.5:2", "Offline z_{0} error estimate [mm]", "yaxis:log:auton", "Normalised entries" , + "residual_z0", "Residual z0", "xaxis:lin:-10:10", "#Delta z_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + + "testtrk_z0", "z0 rec", "xaxis:lin:-250:250", "Trigger z_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + "testtrk_dz0", "Delta z0 rec", "xaxis:lin:-0.5:2", "Trigger z_{0} error estimate [mm]", "yaxis:log:auton", "Normalised entries" , + "residual_dz0", "Residual sig z0", "xaxis:lin:-10:10", "#Delta #sigma(z_{0}) [mm]", "yaxis:log:auton", "Normalised entries" , +}; + + + +diff_panel = { + "Res_eta", "Residual #eta vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto:-0.002:0.002", "d#eta profile" , + "Res_phi", "Residual #phi vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto:-0.002:0.002", "d#phi profile" , + "Res_pT", "Residual pT vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto", "dpT profile [GeV]" , + + "Res_d0", "Residual d0 vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto:-0.5:0.5", "dd_{0} profile [mm]" , + "Res_z0", "Residual z vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto:-0.5:0.5", "dz_{0} profile [mm]" , + "Res_ipT", "Residual 1/pT vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto", "d(1/pT) profile [GeV^{-1}]" +}; + + + + + +mult2_panel = { + "npix", "Offline pixel multiplicity", "xaxis:lin", "Offline Pixel hit multiplicity", "yaxis:lin:auton", "Tracks" , + "nsct", "Offline sct multiplicity", "xaxis:lin", "Offline SCT hit multiplicity", "yaxis:lin:auton", "Tracks" , + "nsiHits", "Offline si multiplicity", "xaxis:lin", "Offline Si hit multiplicity", "yaxis:lin:auton", "Tracks" , + + "npix_rec", "Trigger pixel multiplicity", "xaxis:lin", "Trigger Pixel hit multiplicity", "yaxis:lin:auton", "Tracks" , + "nsct_rec", "Trigger sct multiplicity", "xaxis:lin", "Trigger SCT hit multiplicity", "yaxis:lin:auton", "Tracks" , + "nsiHits_rec", "Trigger si multiplicity", "xaxis:lin", "Trigger Si hit multiplicity", "yaxis:lin:auton", "Tracks" , +}; + + + +ang_panel = { + "reftrk_eta", "eta", "xaxis:lin:-3:3", "Offline #eta", "yaxis:lin:auton", "Normalised entries" , + "reftrk_phi", "phi", "xaxis:lin:-3.14:3.14", "Offline #phi", "yaxis:lin:auton", "Normalised entries" , + "reftrk_z0", "z0", "xaxis:lin:-250:250", "Offline z_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + + "testtrk_eta", "eta rec", "xaxis:lin:-3:3", "Trigger #eta", "yaxis:lin:auton", "Normalised entries" , + "testtrk_phi", "phi rec", "xaxis:lin:-3.14:3.14", "Trigger #phi", "yaxis:lin:auton", "Normalised entries" , + "testtrk_z0", "z0 rec", "xaxis:lin:-250:250", "Trigger z_{0} [mm]", "yaxis:log:auton", "Normalised entries" +}; + + + +histos_duff = { + // histos = { + + + "Chain", "chain", "xaxis:lin", "Chain counts", "yaxis:log:auto", "counts" , + + /// distributions - 4 + "reftrk_pT", "p_{T}", "xaxis:log:auto:0.5:400", "Offline p_{T} [GeV]", "yaxis:log:autonw", "(1/N)dN/dp_{T} [GeV^{-1}]" , + "testtrk_pT", "p_{T} rec", "xaxis:log:auto:0.5:400", "Trigger p_{T} [GeV]", "yaxis:log:autonw", "(1/N)dN/dp_{T} [GeV^{-1}]" , + + "reftrk_eta", "eta", "xaxis:lin:-3:3", "Offline #eta", "yaxis:lin:auton", "Normalised entries" , + "testtrk_eta", "eta rec", "xaxis:lin:-3:3", "Trigger #eta", "yaxis:lin:auton", "Normalised entries" , + + "reftrk_phi", "phi", "xaxis:lin:-3.14:3.14", "Offline #phi", "yaxis:lin:auton", "Normalised entries" , + "testtrk_phi", "phi rec", "xaxis:lin:-3.14:3.14", "Trigger #phi", "yaxis:lin:auton", "Normalised entries" , + + + + + "reftrk_d0", "a0", "xaxis:lin:-2:2", "Offline a_{0} [mm]", "yaxis:log:auton", "(1/N)dN" , + "testtrk_d0", "a0 rec", "xaxis:lin:-2:2", "Trigger a_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + + "reftrk_dd0", "Delta a0", "xaxis:lin:-0.1:2", "Offline a_{0} error estimate [mm]", "yaxis:log:auton", "Normalised entries" , + "testtrk_dd0", "Delta a0 rec", "xaxis:lin:-0.1:2", "Trigger a_{0} error estimate [mm]", "yaxis:log:auton", "Normalised entries" , + + "reftrk_d0sig", "a0 significance", "xaxis:lin:autosym", "Offline a_{0} significance", "yaxis:log:auton", "Normalised entries" , + "testtrk_d0sig", "a0 rec significance", "xaxis:lin:autosym", "Trigger a_{0} significance", "yaxis:log:auton", "Normalised entries" , + + + + "reftrk_z0", "z0", "xaxis:lin:-250:250", "Offline z_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + "testtrk_z0", "z0 rec", "xaxis:lin:-250:250", "Trigger z_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + + "reftrk_dz0", "Delta z0", "xaxis:lin:-0.5:2", "Offline z_{0} error estimate [mm]", "yaxis:log:auton", "Normalised entries" , + "testtrk_dz0", "Delta z0 rec", "xaxis:lin:-0.5:2", "Trigger z_{0} error estimate [mm]", "yaxis:log:auton", "Normalised entries" , + + "reftrk_N", "N tracks", "xaxis:lin:auto", "Offline multiplicity", "yaxis:log:auton:0.01:0.5", "Normalised entries" , + "testtrk_N", "N tracks rec", "xaxis:lin:auto", "Online multiplicity", "yaxis:log:auton:0.01:0.5", "Normalised entries" , + + + /// efficiencies - 10 + // "pT_eff", "Efficiency p_{T}", "xaxis:log:0.7:100", "Offline p_{T} [GeV]", "yaxis:lin:0.90:1.02", "Efficiency " , + "Eff_pT", "Efficiency p_{T}", "xaxis:log:0.5:200", "Offline track p_{T} [GeV]", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + "Eff_Eta", "Efficiency #eta", "xaxis:lin:-2.5:2.5", "Offline track #eta", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + "Eff_Phi", "Efficiency #phi", "xaxis:lin", "Offline track #phi", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + + "Eff_nVtx", "Efficiency nVtx", "xaxis:lin:auto", "Vertex multiplicity", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + "Eff_d0", "Efficiency d0", "xaxis:lin:autosym", "Offline track d_{0} [mm]", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + "Eff_z0", "Efficiency z0", "xaxis:lin:-250:250", "Offline track z_{0} [mm]", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + + "Eff_lb", "Efficiency lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + + "Eff_overall", "Efficiency overall", "xaxis:lin:auto", "", "yaxis:lin:auto:0.8:1.02", "Efficiency " , + + // "eff_vs_mu", "Efficiency <#mu>", "xaxis:lin:auto", "<#mu>", "yaxis:lin:0.90:1.02", "Efficiency " , + + /// standard residuals - 5 + // "residual_ipT", "Residual 1/p_{T}", "xaxis:lin:-0.15:0.2", "#Delta 1/p_{T} [GeV^{-1}]", "yaxis:log:auto", "Normalised entries" , + "residual_eta", "Residual #eta", "xaxis:lin:-0.05:0.05", "#Delta#eta", "yaxis:log:auton", "Normalised entries" , + "residual_phi", "Residual #phi", "xaxis:lin:-0.05:0.05", "#Delta#phi", "yaxis:log:auton", "Normalised entries" , + "residual_z0", "Residual z0", "xaxis:lin:-10:10", "#Delta z_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + "residual_dz0", "Residual sig z0", "xaxis:lin:-10:10", "#Delta #sigma(z_{0}) [mm]", "yaxis:log:auton", "Normalised entries" , + "residual_d0", "Residual a0", "xaxis:lin:-1:1", "#Delta d_{0} [mm]", "yaxis:log:auton", "Normalised entries" , + "residual_dd0", "Residual sig a0", "xaxis:lin:-1:1", "#Delta #sigma(d_{0}) [mm]", "yaxis:log:auton", "Normalised entries" , + "residual_pT", "Residual pT", "xaxis:lin:-100:100", "#Delta p_{T} [GeV]", "yaxis:log:auton", "Normalised entries" , + + /// residuals vs track parameters - 17 + // "Res_ipt", "Residual 1/p_{T} vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto", "1/p_{T} resolution [GeV^{-1}]" , + "Res_eta", "Residual #eta vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto:-0.002:0.002", "d#eta profile" , + "Res_phi", "Residual #phi vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto:-0.002:0.002", "d#phi profile" , + "Res_d0", "Residual d0 vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto:-0.5:0.5", "dd_{0} profile [mm]" , + "Res_z0", "Residual z vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto:-0.5:0.5", "dz_{0} profile [mm]" , + + "Res_dz0", "Residual sig(z0) vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto", "dsig(z_{0}) profile [mm]" , + "Res_dd0", "Residual sig(d0) vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto", "dsig(d_{0}) profile [mm]" , + + "Res_pT", "Residual pT vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto", "dpT profile [GeV]" , + "Res_ipT", "Residual 1/pT vs #eta", "xaxis:lin", "Offline #eta", "yaxis:lin:auto", "d(1/pT) profile [GeV^{-1}]" , + + + /// hit multiplicity - 6 + "npix_vs_eta", "mean number of offline pixel hits", "xaxis:lin", "Offline #eta", "yaxis:lin:2:7", "Offline pixel hits" , + "nsct_vs_eta", "mean number of offline SCT hits", "xaxis:lin", "Offline #eta", "yaxis:lin:7:11", "Offline SCT clusters" , + "npix_vs_phi", "mean number of offline pixel hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:2:7", "Offline pixel hits" , + "nsct_vs_phi", "mean number of offline SCT hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:7:11", "Offline SCT clusters" , + "npix_vs_pt", "mean number of offline pixel hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:2:7", "Offline pixel hits" , + "nsct_vs_pt", "mean number of offline SCT hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:7:11", "Offline SCT clusters" , + + "npix_vs_d0", "mean number of offline pixel hits", "xaxis:lin:autosym", "Offline d0 [mm]", "yaxis:lin:auto:0:5", "Offline pixel hits" , + "nsct_vs_d0", "mean number of offline SCT hits", "xaxis:lin:autosym", "Offline d0 [mm]", "yaxis:lin:auto:6:10", "Offline SCT clusters" , + + + "npix_vs_eta_rec", "mean number of trigger pixel hits", "xaxis:lin", "Offline #eta", "yaxis:lin:2:7", "Trigger pixel hits" , + "nsct_vs_eta_rec", "mean number of trigger SCT hits", "xaxis:lin", "Offline #eta", "yaxis:lin:7:11", "Trigger SCT clusters" , + "npix_vs_phi_rec", "mean number of trigger pixel hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:2:7", "Trigger pixel hits" , + "nsct_vs_phi_rec", "mean number of trigger SCT hits", "xaxis:lin:auto", "Offline #phi", "yaxis:lin:7:11", "Trigger SCT clusters" , + + "npix_vs_d0_rec", "mean number of trigger pixel hits", "xaxis:lin:autosym", "Offline d0 [mm]", "yaxis:lin:auto:0:5", "Trigger pixel hits" , + "nsct_vs_d0_rec", "mean number of trigger SCT hits", "xaxis:lin:autosym", "Offline d0 [mm]", "yaxis:lin:auto:6:10", "Trigger SCT clusters" , + + + "npix", "Offline pixel multiplicity", "xaxis:lin", "Offline Pixel hit multiplicity", "yaxis:lin:auton", "Tracks" , + "npix_rec", "Trigger pixel multiplicity", "xaxis:lin", "Trigger Pixel hit multiplicity", "yaxis:lin:auton", "Tracks" , + + "nsct", "Offline sct multiplicity", "xaxis:lin", "Offline SCT hit multiplicity", "yaxis:lin:auton", "Tracks" , + "nsct_rec", "Trigger sct multiplicity", "xaxis:lin", "Trigger SCT hit multiplicity", "yaxis:lin:auton", "Tracks" , + + "nsiHits", "Offline si multiplicity", "xaxis:lin", "Offline Si hit multiplicity", "yaxis:lin:auton", "Tracks" , + "nsiHits_rec", "Trigger si multiplicity", "xaxis:lin", "Trigger Si hit multiplicity", "yaxis:lin:auton", "Tracks" , + + "ntrt", "Offline TRT multiplicity", "xaxis:lin", "Offline TRT hit multiplicity", "yaxis:log:auton", "Tracks" , + "ntrt_rec", "Trigger TRT multiplicity", "xaxis:lin", "Trigger TRT hit multiplicity", "yaxis:log:auton", "Tracks" , + + "ntrt_vs_eta", "mean number of offline TRT hits", "xaxis:lin:auto", "Offline #eta", "yaxis:lin:auto:0:50", "Offline TRT hit multiplicity" , + "ntrt_vs_eta_rec", "mean number of trigger TRT hits", "xaxis:lin:auto", "Trigger #eta", "yaxis:lin:auto:0:50", "Trigger TRT hit multiplicity" , + + + "ntrt_vs_phi", "Offline TRT vs phi", "xaxis:lin", "Offline #phi", "yaxis:lin:auto:0:50", "Offline TRT hit multiplicity", + "ntrt_vs_phi_rec", "Trigger TRT vs phi", "xaxis:lin", "Offline #phi", "yaxis:lin:auto:0:50", "Trigger TRT hit multiplicity", + + + + // beamline and per lumi block related + + "d0_vs_phi_prof", "d0 vs #phi", "xaxis:lin", "Offline #phi", "yaxis:-0.1:0.15", "Offline d0 [mm]", + "d0_vs_phi_rec_prof", "d0 vs #phi rec", "xaxis:lin", "Trigger #phi", "yaxis:-0.1:0.15", "Trigger d0 [mm]", + + "nsihits_lb", "Si hits per lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:auto:14:18", "Offline Si multiplicity", + + + "trkvtx_x_vs_lb", "x beamline vs lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:auto", "Trigger beamspot x [mm]", + "trkvtx_y_vs_lb", "y beamline vs lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:auto", "Trigger beamspot y [mm]", + "trkvtx_z_vs_lb", "z beamline vs lb", "xaxis:lin:auto", "Luminosity block", "yaxis:lin:auto", "Trigger beamspot z [mm]" + + +}; + + + + + + +ChainMap = { + + "Electron/HLT_e26_etcut_L1EM22VHI/HLT_IDTrack_Electron", "Electron/HLT_e28_lhtight_idperf/InDetTrigTrackingxAODCnv_Electron", + "Electron/HLT_e3_etcut_L1EM3/HLT_IDTrack_Electron", "Electron/HLT_e5_lhtight_idperf/InDetTrigTrackingxAODCnv_Electron", + "Electron/HLT_e5_etcut_L1EM3/HLT_IDTrack_Electron", "Electron/HLT_e5_lhtight_idperf/InDetTrigTrackingxAODCnv_Electron", + "Electron/HLT_e7_etcut_L1EM3/HLT_IDTrack_Electron", "Electron/HLT_e5_lhtight_idperf/InDetTrigTrackingxAODCnv_Electron", + "Electron_offline/HLT_e26_etcut_L1EM22VHI/HLT_IDTrack_Electron", "Electron_offline/HLT_e28_lhtight_idperf/InDetTrigTrackingxAODCnv_Electron", + "Electron_offline/HLT_e3_etcut_L1EM3/HLT_IDTrack_Electron", "Electron_offline/HLT_e5_lhtight_idperf/InDetTrigTrackingxAODCnv_Electron", + "Electron_offline/HLT_e5_etcut_L1EM3/HLT_IDTrack_Electron", "Electron_offline/HLT_e5_lhtight_idperf/InDetTrigTrackingxAODCnv_Electron", + "Electron_offline/HLT_e7_etcut_L1EM3/HLT_IDTrack_Electron", "Electron_offline/HLT_e5_lhtight_idperf/InDetTrigTrackingxAODCnv_Electron", + + "Muon/HLT_mu24_idperf_L1MU20/HLT_IDTrack_Muon", "Muon/HLT_mu24_idperf/InDetTrigTrackingxAODCnv_Muon", + "Muon/HLT_mu6_idperf_L1MU6/HLT_IDTrack_Muon", "Muon/HLT_mu6_idperf/InDetTrigTrackingxAODCnv_Muon", + "Muon_offline/HLT_mu24_idperf_L1MU20/HLT_IDTrack_Muon", "Muon/HLT_mu24_idperf/InDetTrigTrackingxAODCnv_Muon", + "Muon_offline/HLT_mu6_idperf_L1MU6/HLT_IDTrack_Muon", "Muon_offline/HLT_mu6_idperf/InDetTrigTrackingxAODCnv_Muon" + +}; + diff --git a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/T_AnalysisConfig.h b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/T_AnalysisConfig.h index fd07e763078463e7d5f4a2e88696a6399b90d5a9..4cbf701ed9e21e5aafe1ebd0157bf071b2b4af25 100644 --- a/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/T_AnalysisConfig.h +++ b/Trigger/TrigAnalysis/TrigInDetAnalysisUtils/TrigInDetAnalysisUtils/T_AnalysisConfig.h @@ -5,7 +5,7 @@ ** @author mark sutton ** @date Fri 11 Jan 2019 07:06:39 CET ** - ** Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + ** Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration **/ @@ -531,9 +531,7 @@ protected: std::vector< Trig::Feature<Collection> > trackcollections = citr->get<Collection>( key, TrigDefs::alsoDeactivateTEs ); if ( !trackcollections.empty() ) { - Trig::ExpertMethods* em = (*m_tdt)->ExperimentalAndExpertMethods(); - em->enable(); - const HLT::NavigationCore* nc = em->getNavigation(); + const HLT::NavigationCore* nc = (*m_tdt)->ExperimentalAndExpertMethods().getNavigation(); // NB!! a combination should never have more than one entry for a track collection from a single algorithm, // if ( trackcollections.size()>1 ) std::cerr << "SUTT OH NO!!!!!!!!" << endmsg; diff --git a/Trigger/TrigAnalysis/TrigNavSlimmingMT/src/TrigNavSlimmingMTAlg.cxx b/Trigger/TrigAnalysis/TrigNavSlimmingMT/src/TrigNavSlimmingMTAlg.cxx index b8d26cba68b52b36802eab35d42d5799b2187537..a209a1418a7a0e4af4ff82b97998491f1878ad4e 100644 --- a/Trigger/TrigAnalysis/TrigNavSlimmingMT/src/TrigNavSlimmingMTAlg.cxx +++ b/Trigger/TrigAnalysis/TrigNavSlimmingMT/src/TrigNavSlimmingMTAlg.cxx @@ -20,7 +20,6 @@ StatusCode TrigNavSlimmingMTAlg::initialize() { ATH_CHECK( m_outputCollection.initialize() ); if (not m_trigDec.empty()) { ATH_CHECK( m_trigDec.retrieve() ); - m_trigDec->ExperimentalAndExpertMethods()->enable(); } for (const std::string& output : m_allOutputContainers) { if (output == m_primaryInputCollection.key()) { @@ -162,7 +161,7 @@ StatusCode TrigNavSlimmingMTAlg::fillChainIDs(DecisionIDContainer& chainIDs) con const Trig::ChainGroup* cg = m_trigDec->getChainGroup(filter); std::vector<std::string> chains = cg->getListOfTriggers(); for (const std::string& chain : chains) { - const TrigConf::HLTChain* hltChain = m_trigDec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(chain); + const TrigConf::HLTChain* hltChain = m_trigDec->ExperimentalAndExpertMethods().getChainConfigurationDetails(chain); const HLT::Identifier chainID( hltChain->chain_name() ); chainIDs.insert( chainID.numeric() ); const std::vector<size_t> legMultiplicites = hltChain->leg_multiplicities(); diff --git a/Trigger/TrigAnalysis/TrigObjectMatching/src/TrigMatchTool.cxx b/Trigger/TrigAnalysis/TrigObjectMatching/src/TrigMatchTool.cxx index 775a6c6048c68f9f758c0ef856f17da2dc62cab1..f90e0aed5e63458097dcf87d583d96fb9dcc7f4b 100644 --- a/Trigger/TrigAnalysis/TrigObjectMatching/src/TrigMatchTool.cxx +++ b/Trigger/TrigAnalysis/TrigObjectMatching/src/TrigMatchTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ // $Id$ @@ -70,11 +70,7 @@ TrigMatchTool::getConfiguredChainNames() const std::string TrigMatchTool::lowerChainName( const std::string& chainName ) const { - // enable expert methods in tdt - Trig::ExpertMethods *em = m_trigDecisionTool->ExperimentalAndExpertMethods(); - em->enable(); - - const TrigConf::HLTChain *hltChain = em->getChainConfigurationDetails(chainName); + const TrigConf::HLTChain *hltChain = m_trigDecisionTool->ExperimentalAndExpertMethods().getChainConfigurationDetails(chainName); if( hltChain ) { return hltChain->lower_chain_name(); } diff --git a/Trigger/TrigAnalysis/TriggerMatchingTool/Root/IParticleRetrievalTool.cxx b/Trigger/TrigAnalysis/TriggerMatchingTool/Root/IParticleRetrievalTool.cxx index ebec62884c7b5d87a7d908702da4ffec0d729ff7..3dc5be036df91d6497ab3982bb56f8f736131636 100644 --- a/Trigger/TrigAnalysis/TriggerMatchingTool/Root/IParticleRetrievalTool.cxx +++ b/Trigger/TrigAnalysis/TriggerMatchingTool/Root/IParticleRetrievalTool.cxx @@ -67,8 +67,6 @@ namespace Trig { { ATH_MSG_INFO("Initializing " << name() ); ATH_CHECK( m_tdt.retrieve() ); - /// We need the expert methods for the navigation - m_tdt->ExperimentalAndExpertMethods()->enable(); return StatusCode::SUCCESS; } @@ -159,7 +157,7 @@ namespace Trig { // feature const HLT::TriggerElement* sourceTE = nullptr; const HLT::TrigNavStructure* navigation = - m_tdt->ExperimentalAndExpertMethods()->getNavigation(); + m_tdt->ExperimentalAndExpertMethods().getNavigation(); HLT::TriggerElement::FeatureAccessHelper egFeature = navigation->getFeatureRecursively(te, clid, "", sourceTE); if (!sourceTE) { @@ -257,7 +255,7 @@ namespace Trig { // Build a vector of typeless features so that we can use the central // functions. const HLT::TrigNavStructure* navigation = - m_tdt->ExperimentalAndExpertMethods()->getNavigation(); + m_tdt->ExperimentalAndExpertMethods().getNavigation(); /// Expand the typedGet function here diff --git a/Trigger/TrigAnalysis/TriggerMatchingTool/Root/R3IParticleRetrievalTool.cxx b/Trigger/TrigAnalysis/TriggerMatchingTool/Root/R3IParticleRetrievalTool.cxx index 0862237e020bb4ab20d2591ce1d8f6876f2c01ea..d924307ef4644503159973bdafd945e45f65fb9d 100644 --- a/Trigger/TrigAnalysis/TriggerMatchingTool/Root/R3IParticleRetrievalTool.cxx +++ b/Trigger/TrigAnalysis/TriggerMatchingTool/Root/R3IParticleRetrievalTool.cxx @@ -20,8 +20,6 @@ namespace Trig { ATH_MSG_INFO("Initializing " << name()); ATH_CHECK(m_tdt.retrieve()); - // We need the expert methods for the navigation - m_tdt->ExperimentalAndExpertMethods()->enable(); return StatusCode::SUCCESS; } @@ -63,7 +61,7 @@ namespace Trig TrigCompositeUtils::Combinations trigCombinations = TrigCompositeUtils::buildCombinations( name, features, - m_tdt->ExperimentalAndExpertMethods()->getChainConfigurationDetails(name), + m_tdt->ExperimentalAndExpertMethods().getChainConfigurationDetails(name), TrigCompositeUtils::FilterType::UniqueObjects); // Copy the combinations into the output vector for (const VecLinkInfo_t &combo : trigCombinations) @@ -77,4 +75,4 @@ namespace Trig } return StatusCode::SUCCESS; } -} // namespace Trig \ No newline at end of file +} // namespace Trig diff --git a/Trigger/TrigAnalysis/TriggerMatchingTool/Root/R3MatchingTool.cxx b/Trigger/TrigAnalysis/TriggerMatchingTool/Root/R3MatchingTool.cxx index 0912a2399ac254e50e08b8f719b3b493ba66ae50..88bc762279f09e488f0b7caf3b760844e9f0fd56 100644 --- a/Trigger/TrigAnalysis/TriggerMatchingTool/Root/R3MatchingTool.cxx +++ b/Trigger/TrigAnalysis/TriggerMatchingTool/Root/R3MatchingTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "TriggerMatchingTool/R3MatchingTool.h" @@ -40,7 +40,6 @@ namespace Trig StatusCode R3MatchingTool::initialize() { ATH_CHECK(m_trigDecTool.retrieve()); - m_trigDecTool->ExperimentalAndExpertMethods()->enable(); return StatusCode::SUCCESS; } @@ -84,7 +83,7 @@ namespace Trig TrigCompositeUtils::Combinations combinations = TrigCompositeUtils::buildCombinations( chainName, m_trigDecTool->features<xAOD::IParticleContainer>(chainName), - m_trigDecTool->ExperimentalAndExpertMethods()->getChainConfigurationDetails(chainName), + m_trigDecTool->ExperimentalAndExpertMethods().getChainConfigurationDetails(chainName), TrigCompositeUtils::FilterType::UniqueObjects); // Warn once per call if one of the chain groups is too small to match anything if (combinations.size() < recoObjects.size()) @@ -171,4 +170,4 @@ namespace Trig return cacheItr->second; } -} // namespace Trig \ No newline at end of file +} // namespace Trig diff --git a/Trigger/TrigConfiguration/TrigConfBase/src/TrigDBConnectionConfig.cxx b/Trigger/TrigConfiguration/TrigConfBase/src/TrigDBConnectionConfig.cxx index a92bf4a643691ffbb096b1bfbb2e89b10351a3e9..7c2aa8dae2db92a9fd1bc27446f488161485cd34 100644 --- a/Trigger/TrigConfiguration/TrigConfBase/src/TrigDBConnectionConfig.cxx +++ b/Trigger/TrigConfiguration/TrigConfBase/src/TrigDBConnectionConfig.cxx @@ -13,6 +13,7 @@ #include <stdexcept> #include <boost/regex.hpp> #include <boost/algorithm/string.hpp> +#include <sstream> using PSKeys = TrigConf::TrigDBConnectionConfig::PSKeys; using namespace boost; diff --git a/Trigger/TrigConfiguration/TrigConfData/CMakeLists.txt b/Trigger/TrigConfiguration/TrigConfData/CMakeLists.txt index 784063246aaefe92514eaefe4757ef5f47b67cfa..48efdb89527dab982cc20eb36140043b33eefba7 100644 --- a/Trigger/TrigConfiguration/TrigConfData/CMakeLists.txt +++ b/Trigger/TrigConfiguration/TrigConfData/CMakeLists.txt @@ -51,7 +51,7 @@ if( NOT XAOD_ANALYSIS ) atlas_add_test( TestDoubleMenuLoad SOURCES test/doubleLoad.cxx INCLUDE_DIRS ${CORAL_INCLUDE_DIRS} LINK_LIBRARIES ${CORAL_LIBRARIES} TrigConfData TrigConfIO - ENVIRONMENT "CLArgs=TRIGGERDBDEV1 45 179 152 4" + ENVIRONMENT "CLArgs=TRIGGERDBDEV1_I8 92 442 429 4" PRE_EXEC_SCRIPT "rm -f *1.json *2.json NoDBConnection.txt" POST_EXEC_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/share/doubleTestComp.py ) endif() diff --git a/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1ThrExtraInfo.h b/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1ThrExtraInfo.h index c75b0b2454435797ec5a6f0096680ed86172b361..e094be9df16a10e64426c92febbce41abd38c76c 100644 --- a/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1ThrExtraInfo.h +++ b/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1ThrExtraInfo.h @@ -20,8 +20,9 @@ namespace TrigConf { class L1ThrExtraInfo_XSLegacy; class L1ThrExtraInfo_eEM; class L1ThrExtraInfo_eTAU; - class L1ThrExtraInfo_jJ; class L1ThrExtraInfo_jTAU; + class L1ThrExtraInfo_cTAU; + class L1ThrExtraInfo_jJ; class L1ThrExtraInfo_gXE; class L1ThrExtraInfo_MU; @@ -37,8 +38,9 @@ namespace TrigConf { const L1ThrExtraInfo_XSLegacy & XS() const; const L1ThrExtraInfo_eEM & eEM() const; const L1ThrExtraInfo_eTAU & eTAU() const; - const L1ThrExtraInfo_jJ & jJ() const; const L1ThrExtraInfo_jTAU & jTAU() const; + const L1ThrExtraInfo_cTAU & cTAU() const; + const L1ThrExtraInfo_jJ & jJ() const; const L1ThrExtraInfo_gXE & gXE() const; const L1ThrExtraInfo_MU & MU() const; @@ -169,17 +171,23 @@ namespace TrigConf { std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_eEM::WorkingPoints_eEM & iso); - class L1ThrExtraInfo_eTAU final : public L1ThrExtraInfoBase { public: class WorkingPoints_eTAU { public: WorkingPoints_eTAU( const boost::property_tree::ptree & ); - int isolation() const { return m_isolation; } - double isolation_d() const { return m_isolation/100.; } - unsigned int maxEt() const { return m_maxEt; } + bool isDefined() const { return m_isDefined; } + int isoConeRel_fw() const { return m_isoConeRel_fw; } + double isoConeRel_d() const { return m_isoConeRel_d; } + int fEM_fw() const { return m_fEM_fw; } + double fEM_d() const { return m_fEM_d; } + unsigned int maxEt() const { return m_maxEt; } private: - int m_isolation {0}; + bool m_isDefined { false }; + int m_isoConeRel_fw {0}; + int m_fEM_fw {0}; + double m_isoConeRel_d { 0 }; + double m_fEM_d { 0 }; unsigned int m_maxEt { 0 }; }; L1ThrExtraInfo_eTAU(const std::string & thrTypeName, const ptree & data) : @@ -194,46 +202,90 @@ namespace TrigConf { private: /** Update the internal members */ void load(); - /** eEM specific data */ + /** eTAU specific data */ unsigned int m_ptMinToTopoMeV{0}; std::map<TrigConf::Selection::WP, ValueWithEtaDependence<WorkingPoints_eTAU>> m_isolation{}; }; + std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_eTAU::WorkingPoints_eTAU & iso); - class L1ThrExtraInfo_jJ final : public L1ThrExtraInfoBase { + class L1ThrExtraInfo_jTAU final : public L1ThrExtraInfoBase { public: - L1ThrExtraInfo_jJ(const std::string & thrTypeName, const ptree & data) : + class WorkingPoints_jTAU { + public: + WorkingPoints_jTAU( const boost::property_tree::ptree & ); + bool isDefined() const { return m_isDefined; } + int isolation_fw() const { return m_isolation_fw; } + double isolation_d() const { return m_isolation_d; } + unsigned int maxEt() const { return m_maxEt; } + private: + bool m_isDefined { false }; + int m_isolation_fw {0}; + double m_isolation_d { 0 }; + unsigned int m_maxEt { 0 }; + }; + L1ThrExtraInfo_jTAU(const std::string & thrTypeName, const ptree & data) : L1ThrExtraInfoBase(thrTypeName, data) { load(); } - virtual ~L1ThrExtraInfo_jJ() = default; - virtual std::string className() const { return "L1ThrExtraInfo_jJ"; } - double ptMinToTopoLarge(int eta = 0) const { return ptMinToTopoLargeMeV(eta) / 1000.0; } - double ptMinToTopoSmall(int eta = 0) const { return ptMinToTopoSmallMeV(eta) / 1000.0; } - unsigned int ptMinToTopoLargeMeV(int eta = 0) const { return m_ptMinToTopoMeV.at(eta).second; } - unsigned int ptMinToTopoSmallMeV(int eta = 0) const { return m_ptMinToTopoMeV.at(eta).first; } - unsigned int ptMinToTopoLargeCounts(int eta = 0) const { return energyInCounts( ptMinToTopoLargeMeV(eta), resolutionMeV() ); } - unsigned int ptMinToTopoSmallCounts(int eta = 0) const { return energyInCounts( ptMinToTopoSmallMeV(eta), resolutionMeV() ); } - const ValueWithEtaDependence<std::pair<unsigned int,unsigned int>> & ptMinToTopoMeV() const { return m_ptMinToTopoMeV; } + virtual ~L1ThrExtraInfo_jTAU() = default; + virtual std::string className() const { return "L1ThrExtraInfo_jTAU"; } + float ptMinToTopo() const { return m_ptMinToTopoMeV/1000.0f; } + unsigned int ptMinToTopoMeV() const { return m_ptMinToTopoMeV; } + unsigned int ptMinToTopoCounts() const { return energyInCounts( m_ptMinToTopoMeV, resolutionMeV() ); } + const WorkingPoints_jTAU & isolation(TrigConf::Selection::WP wp, int eta) const { return m_isolation.at(wp).at(eta); } + const ValueWithEtaDependence<WorkingPoints_jTAU> & isolation(TrigConf::Selection::WP wp) const { return m_isolation.at(wp); } private: /** Update the internal members */ void load(); - /** jJ specific data */ - ValueWithEtaDependence<std::pair<unsigned int,unsigned int>> m_ptMinToTopoMeV{"jJptMinTopo"}; + /** jTAU specific data */ + unsigned int m_ptMinToTopoMeV{0}; + std::map<TrigConf::Selection::WP, ValueWithEtaDependence<WorkingPoints_jTAU>> m_isolation{}; }; + std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_jTAU::WorkingPoints_jTAU & iso); - - class L1ThrExtraInfo_jTAU final : public L1ThrExtraInfoBase { + class L1ThrExtraInfo_cTAU final : public L1ThrExtraInfoBase { public: - L1ThrExtraInfo_jTAU(const std::string & thrTypeName, const ptree & data) : + class WorkingPoints_cTAU { + public: + WorkingPoints_cTAU( const boost::property_tree::ptree & ); + bool isDefined() const { return m_isDefined; } + int isolation_fw() const { return m_isolation_fw; } + double isolation_d() const { return m_isolation_d; } + unsigned int maxEt() const { return m_maxEt; } + private: + bool m_isDefined { false }; + int m_isolation_fw {0}; + double m_isolation_d { 0 }; + unsigned int m_maxEt { 0 }; + }; + L1ThrExtraInfo_cTAU(const std::string & thrTypeName, const ptree & data) : L1ThrExtraInfoBase(thrTypeName, data) { load(); } - virtual ~L1ThrExtraInfo_jTAU() = default; - virtual std::string className() const { return "L1ThrExtraInfo_jTAU"; } - unsigned int ptMinToTopo() const { return m_ptMinToTopo; } + virtual ~L1ThrExtraInfo_cTAU() = default; + virtual std::string className() const { return "L1ThrExtraInfo_cTAU"; } + const WorkingPoints_cTAU & isolation(TrigConf::Selection::WP wp, int eta) const { return m_isolation.at(wp).at(eta); } + const ValueWithEtaDependence<WorkingPoints_cTAU> & isolation(TrigConf::Selection::WP wp) const { return m_isolation.at(wp); } private: /** Update the internal members */ void load(); - /** jTAU specific data */ - unsigned int m_ptMinToTopo{0}; + /** cTAU specific data */ + std::map<TrigConf::Selection::WP, ValueWithEtaDependence<WorkingPoints_cTAU>> m_isolation{}; }; + std::ostream & operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_cTAU::WorkingPoints_cTAU & iso); + class L1ThrExtraInfo_jJ final : public L1ThrExtraInfoBase { + public: + L1ThrExtraInfo_jJ(const std::string & thrTypeName, const ptree & data) : + L1ThrExtraInfoBase(thrTypeName, data) { load(); } + virtual ~L1ThrExtraInfo_jJ() = default; + virtual std::string className() const { return "L1ThrExtraInfo_jJ"; } + double ptMinToTopo(int eta = 0) const { return ptMinToTopoMeV(eta) / 1000.0; } + unsigned int ptMinToTopoMeV(int eta = 0) const { return m_ptMinToTopoMeV.at(eta); } + unsigned int ptMinToTopoCounts(int eta = 0) const { return energyInCounts( ptMinToTopoMeV(eta), resolutionMeV() ); } + const ValueWithEtaDependence<int> & ptMinToTopoEtaMeV() const { return m_ptMinToTopoMeV; } + private: + /** Update the internal members */ + void load(); + /** jJ specific data */ + ValueWithEtaDependence<int> m_ptMinToTopoMeV{"jJptMinTopo"}; + }; class L1ThrExtraInfo_gXE final : public L1ThrExtraInfoBase { public: diff --git a/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1Threshold.h b/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1Threshold.h index 9d0f3201d2ab8c39e60a2d9fc54882783dcc107a..418fab857ee269c02a3622798c766bdb48638051 100644 --- a/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1Threshold.h +++ b/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1Threshold.h @@ -166,6 +166,29 @@ namespace TrigConf { L1Threshold_Calo(name, type, extraInfo, data) { load(); } virtual ~L1Threshold_eTAU() = default; virtual std::string className() const override { return "L1Threshold_eTAU"; } + // access functions + Selection::WP isoConeRel() const { return m_isoConeRel; } + Selection::WP fEM() const { return m_fEM; } + protected: + virtual void update() override { + L1Threshold_Calo::update(); + load(); + } + private: + void load(); + // the isolation requirement + Selection::WP m_isoConeRel { Selection::WP::NONE }; + Selection::WP m_fEM { Selection::WP::NONE }; + }; + + class L1Threshold_jTAU final : public L1Threshold_Calo { + public: + L1Threshold_jTAU( const std::string & name, const std::string & type, std::weak_ptr<L1ThrExtraInfoBase> extraInfo, const ptree & data) : + L1Threshold_Calo(name, type, extraInfo, data) { load(); } + virtual ~L1Threshold_jTAU() = default; + virtual std::string className() const override { return "L1Threshold_jTAU"; } + // access functions + Selection::WP isolation() const { return m_isolation; } protected: virtual void update() override { L1Threshold_Calo::update(); @@ -173,6 +196,27 @@ namespace TrigConf { } private: void load(); + // the isolation requirement + Selection::WP m_isolation { Selection::WP::NONE }; + }; + + class L1Threshold_cTAU final : public L1Threshold_Calo { + public: + L1Threshold_cTAU( const std::string & name, const std::string & type, std::weak_ptr<L1ThrExtraInfoBase> extraInfo, const ptree & data) : + L1Threshold_Calo(name, type, extraInfo, data) { load(); } + virtual ~L1Threshold_cTAU() = default; + virtual std::string className() const override { return "L1Threshold_cTAU"; } + // access functions + Selection::WP isolation() const { return m_isolation; } + protected: + virtual void update() override { + L1Threshold_Calo::update(); + load(); + } + private: + void load(); + // the isolation requirement + Selection::WP m_isolation { Selection::WP::NONE }; }; class L1Threshold_jJ final : public L1Threshold_Calo { diff --git a/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1ThresholdBase.h b/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1ThresholdBase.h index 2036068ecfac1f8f07b149cb0c8475b742e78cd8..26208f38be34a60a32cf2ed25413ff2d084fa8ac 100644 --- a/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1ThresholdBase.h +++ b/Trigger/TrigConfiguration/TrigConfData/TrigConfData/L1ThresholdBase.h @@ -223,12 +223,18 @@ namespace TrigConf { */ virtual unsigned int thrValueMeV(int eta = 0) const; + /** as above above but in 100 MeV */ + virtual unsigned int thrValue100MeV(int eta = 0) const; + /** access to the list of ThresholdValues in GeV */ virtual ValueWithEtaDependence<float> thrValues() const; /** access to the list of ThresholdValues in MeV */ virtual const ValueWithEtaDependence<unsigned int> & thrValuesMeV() const; + /** access to the list of ThresholdValues in 100 MeV (for L1Topo multiplicity) */ + virtual ValueWithEtaDependence<unsigned int> thrValues100MeV() const; + /** access to the list of ThresholdValues in energy units */ virtual ValueWithEtaDependence<unsigned int> thrValuesCounts() const; @@ -287,7 +293,7 @@ namespace TrigConf { **************************************/ class Selection { public: - enum class WP { NONE = 0, LOOSE = 1, MEDIUM = 2, TIGHT = 3 }; + enum class WP { NONE = 0, LOOSE = 1, MEDIUM = 2, TIGHT = 3, HAD = 4 }; static std::string wpToString(WP); static WP stringToWP(const std::string &); }; diff --git a/Trigger/TrigConfiguration/TrigConfData/src/L1ThrExtraInfo.cxx b/Trigger/TrigConfiguration/TrigConfData/src/L1ThrExtraInfo.cxx index 2b404b49bf5a21eb9daffaecc66e024d6f647258..34df1ca587e9f728b6d097068fb01cd757742c74 100644 --- a/Trigger/TrigConfiguration/TrigConfData/src/L1ThrExtraInfo.cxx +++ b/Trigger/TrigConfiguration/TrigConfData/src/L1ThrExtraInfo.cxx @@ -34,6 +34,12 @@ TrigConf::L1ThrExtraInfo::createExtraInfo(const std::string & thrTypeName, const if( thrTypeName == "eTAU" ) return std::make_unique<L1ThrExtraInfo_eTAU>(thrTypeName, data); + if( thrTypeName == "jTAU" ) + return std::make_unique<L1ThrExtraInfo_jTAU>(thrTypeName, data); + + if( thrTypeName == "cTAU" ) + return std::make_unique<L1ThrExtraInfo_cTAU>(thrTypeName, data); + if( thrTypeName == "jJ" ) return std::make_unique<L1ThrExtraInfo_jJ>(thrTypeName, data); @@ -99,16 +105,21 @@ TrigConf::L1ThrExtraInfo::eTAU() const { return dynamic_cast<const TrigConf::L1ThrExtraInfo_eTAU&>( * m_thrExtraInfo.at("eTAU") ); } -const TrigConf::L1ThrExtraInfo_jJ & -TrigConf::L1ThrExtraInfo::jJ() const { - return dynamic_cast<const TrigConf::L1ThrExtraInfo_jJ&>( * m_thrExtraInfo.at("jJ") ); -} - const TrigConf::L1ThrExtraInfo_jTAU & TrigConf::L1ThrExtraInfo::jTAU() const { return dynamic_cast<const TrigConf::L1ThrExtraInfo_jTAU&>( * m_thrExtraInfo.at("jTAU") ); } +const TrigConf::L1ThrExtraInfo_cTAU & +TrigConf::L1ThrExtraInfo::cTAU() const { + return dynamic_cast<const TrigConf::L1ThrExtraInfo_cTAU&>( * m_thrExtraInfo.at("cTAU") ); +} + +const TrigConf::L1ThrExtraInfo_jJ & +TrigConf::L1ThrExtraInfo::jJ() const { + return dynamic_cast<const TrigConf::L1ThrExtraInfo_jJ&>( * m_thrExtraInfo.at("jJ") ); +} + const TrigConf::L1ThrExtraInfo_gXE & TrigConf::L1ThrExtraInfo::gXE() const { return dynamic_cast<const TrigConf::L1ThrExtraInfo_gXE&>( * m_thrExtraInfo.at("gXE") ); @@ -253,8 +264,18 @@ TrigConf::L1ThrExtraInfo_eEM::load() * eTAU *******/ TrigConf::L1ThrExtraInfo_eTAU::WorkingPoints_eTAU::WorkingPoints_eTAU( const boost::property_tree::ptree & pt ) { - m_isolation = lround(100 * pt.get_optional<float>("isolation").get_value_or(0)); - m_maxEt = pt.get_optional<unsigned int>("maxEt").get_value_or(0); + m_isDefined = true; + m_isoConeRel_d = pt.get_optional<float>("isoConeRel").get_value_or(0); + m_fEM_d = pt.get_optional<float>("fEM").get_value_or(0); + m_isoConeRel_fw = pt.get_optional<float>("isoConeRel_fw").get_value_or(0); + m_fEM_fw = pt.get_optional<float>("fEM_fw").get_value_or(0); + m_maxEt = pt.get_optional<unsigned int>("maxEt").get_value_or(0); +} + +std::ostream & +TrigConf::operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_eTAU::WorkingPoints_eTAU & iso) { + os << "isoConeRel_fw=" << iso.isoConeRel_fw() << ", fEM_fw=" << iso.fEM_fw() ; + return os; } void @@ -266,7 +287,7 @@ TrigConf::L1ThrExtraInfo_eTAU::load() } else if( x.first == "workingPoints" ) { for( auto & y : x.second.data() ) { auto wp = TrigConf::Selection::stringToWP(y.first); - auto & iso = m_isolation.emplace(wp, string("eEM_WP_" + y.first)).first->second; + auto & iso = m_isolation.emplace(wp, string("eTAU_WP_" + y.first)).first->second; for(auto & c : y.second ) { int etamin = c.second.get_optional<int>("etamin").get_value_or(-49); int etamax = c.second.get_optional<int>("etamax").get_value_or(49); @@ -278,26 +299,73 @@ TrigConf::L1ThrExtraInfo_eTAU::load() } } +/******* + * jTAU + *******/ +TrigConf::L1ThrExtraInfo_jTAU::WorkingPoints_jTAU::WorkingPoints_jTAU( const boost::property_tree::ptree & pt ) { + m_isDefined = true; + m_isolation_d = pt.get_optional<float>("isolation").get_value_or(0); + m_isolation_fw = pt.get_optional<float>("isolation_fw").get_value_or(0); + m_maxEt = pt.get_optional<unsigned int>("maxEt").get_value_or(0); +} +std::ostream & +TrigConf::operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_jTAU::WorkingPoints_jTAU & iso) { + os << "isolation_fw=" << iso.isolation_fw() ; + return os; +} - +void +TrigConf::L1ThrExtraInfo_jTAU::load() +{ + for( auto & x : m_extraInfo ) { + if( x.first == "ptMinToTopo" ) { + m_ptMinToTopoMeV = lround(1000 * x.second.getValue<float>()); + } else if( x.first == "workingPoints" ) { + for( auto & y : x.second.data() ) { + auto wp = TrigConf::Selection::stringToWP(y.first); + auto & iso = m_isolation.emplace(wp, string("jTAU_WP_" + y.first)).first->second; + for(auto & c : y.second ) { + int etamin = c.second.get_optional<int>("etamin").get_value_or(-49); + int etamax = c.second.get_optional<int>("etamax").get_value_or(49); + unsigned int priority = c.second.get_optional<unsigned int>("priority").get_value_or(0); + iso.addRangeValue(WorkingPoints_jTAU(c.second), etamin, etamax, priority, /*symmetric=*/ false); + } + } + } + } +} /******* - * jJ + * cTAU *******/ +TrigConf::L1ThrExtraInfo_cTAU::WorkingPoints_cTAU::WorkingPoints_cTAU( const boost::property_tree::ptree & pt ) { + m_isDefined = true; + m_isolation_d = pt.get_optional<float>("isolation").get_value_or(0); + m_isolation_fw = pt.get_optional<float>("isolation_fw").get_value_or(0); + m_maxEt = pt.get_optional<unsigned int>("maxEt").get_value_or(0); +} + +std::ostream & +TrigConf::operator<<(std::ostream & os, const TrigConf::L1ThrExtraInfo_cTAU::WorkingPoints_cTAU & iso) { + os << "isolation_fw=" << iso.isolation_fw() ; + return os; +} + void -TrigConf::L1ThrExtraInfo_jJ::load() +TrigConf::L1ThrExtraInfo_cTAU::load() { for( auto & x : m_extraInfo ) { - if( x.first == "ptMinToTopo" ) { - for( auto & k : x.second.data() ) { - auto etamin = k.second.get_child("etamin").get_value<unsigned int>(); - auto etamax = k.second.get_child("etamax").get_value<unsigned int>(); - auto small = k.second.get_child("small").get_value<float>(); - auto large = k.second.get_child("large").get_value<float>(); - auto priority = k.second.get_optional<unsigned int>("priority").get_value_or(0); - m_ptMinToTopoMeV.addRangeValue( std::make_pair<unsigned int, unsigned int>(lround(1000*small),lround(1000*large)), - etamin, etamax, priority, /*symmetric=*/ false); + if( x.first == "workingPoints" ) { + for( auto & y : x.second.data() ) { + auto wp = TrigConf::Selection::stringToWP(y.first); + auto & iso = m_isolation.emplace(wp, string("cTAU_WP_" + y.first)).first->second; + for(auto & c : y.second ) { + int etamin = c.second.get_optional<int>("etamin").get_value_or(-49); + int etamax = c.second.get_optional<int>("etamax").get_value_or(49); + unsigned int priority = c.second.get_optional<unsigned int>("priority").get_value_or(0); + iso.addRangeValue(WorkingPoints_cTAU(c.second), etamin, etamax, priority, /*symmetric=*/ false); + } } } } @@ -305,14 +373,21 @@ TrigConf::L1ThrExtraInfo_jJ::load() /******* - * jTAU + * jJ *******/ void -TrigConf::L1ThrExtraInfo_jTAU::load() +TrigConf::L1ThrExtraInfo_jJ::load() { for( auto & x : m_extraInfo ) { if( x.first == "ptMinToTopo" ) { - m_ptMinToTopo = x.second.getValue<unsigned int>(); + for( auto & k : x.second.data() ) { + auto etamin = k.second.get_child("etamin").get_value<unsigned int>(); + auto etamax = k.second.get_child("etamax").get_value<unsigned int>(); + auto value = k.second.get_child("value").get_value<float>(); + auto priority = k.second.get_optional<unsigned int>("priority").get_value_or(0); + m_ptMinToTopoMeV.addRangeValue( lround(1000*value), + etamin, etamax, priority, /*symmetric=*/ false); + } } } } diff --git a/Trigger/TrigConfiguration/TrigConfData/src/L1Threshold.cxx b/Trigger/TrigConfiguration/TrigConfData/src/L1Threshold.cxx index a37b38e1d02b3d9e20e390bfc2846fd9e8513bcb..aea3ab3e8c523aac7c82166f2a78382b7502acc9 100644 --- a/Trigger/TrigConfiguration/TrigConfData/src/L1Threshold.cxx +++ b/Trigger/TrigConfiguration/TrigConfData/src/L1Threshold.cxx @@ -41,8 +41,9 @@ TrigConf::L1Threshold_EM::print(std::ostream & os) const { auto value = thrValue(eta); auto valueMeV = thrValueMeV(eta); auto counts = thrValueCounts(eta); + auto value100MeV = thrValue100MeV(eta); auto iso = isolationMask(eta); - os << " eta = " << eta << " : " << value << " GeV " << valueMeV << " MeV " + os << " eta = " << eta << " : " << value << " GeV " << valueMeV << " MeV " << value100MeV << " 100MeV " << counts << " counts , isoMaks " << iso << std::endl; } } @@ -125,7 +126,25 @@ TrigConf::L1Threshold_eEM::load() void TrigConf::L1Threshold_eTAU::load() -{} +{ + // read the isolation requirements + m_isoConeRel = Selection::stringToWP(getAttribute("isoConeRel")); + m_fEM = Selection::stringToWP(getAttribute("fEM")); +} + +void +TrigConf::L1Threshold_jTAU::load() +{ + // read the isolation requirements + m_isolation = Selection::stringToWP(getAttribute("isolation")); +} + +void +TrigConf::L1Threshold_cTAU::load() +{ + // read the isolation requirements + m_isolation = Selection::stringToWP(getAttribute("isolation")); +} void TrigConf::L1Threshold_jJ::load() diff --git a/Trigger/TrigConfiguration/TrigConfData/src/L1ThresholdBase.cxx b/Trigger/TrigConfiguration/TrigConfData/src/L1ThresholdBase.cxx index ef4069646dda0cb68664eab0290d642ee1f6d7bf..eab875b152b816104cb920ad4723d6addba98e18 100644 --- a/Trigger/TrigConfiguration/TrigConfData/src/L1ThresholdBase.cxx +++ b/Trigger/TrigConfiguration/TrigConfData/src/L1ThresholdBase.cxx @@ -52,6 +52,12 @@ TrigConf::L1Threshold::createThreshold( const std::string & name, const std::str if( type == "eTAU" ) return std::make_shared<L1Threshold_eTAU>( name, type, extraInfo, data ); + if( type == "jTAU" ) + return std::make_shared<L1Threshold_jTAU>( name, type, extraInfo, data ); + + if( type == "cTAU" ) + return std::make_shared<L1Threshold_cTAU>( name, type, extraInfo, data ); + if( type == "jJ" ) return std::make_shared<L1Threshold_jJ>( name, type, extraInfo, data ); @@ -253,6 +259,11 @@ TrigConf::L1Threshold_Calo::thrValueCounts(int eta) const { return energyInCounts( thrValueMeV(eta), extraInfo->resolutionMeV() ); } +unsigned int +TrigConf::L1Threshold_Calo::thrValue100MeV(int eta) const { + return energyInCounts( thrValueMeV(eta), 100 ); +} + unsigned int TrigConf::L1Threshold_Calo::thrValueMeV(int eta) const { return m_etaDepThrValue.empty() ? m_thrValue : m_etaDepThrValue.at(eta); @@ -260,7 +271,7 @@ TrigConf::L1Threshold_Calo::thrValueMeV(int eta) const { TrigConf::ValueWithEtaDependence<float> TrigConf::L1Threshold_Calo::thrValues() const { - auto thresholdValuesGeV = ValueWithEtaDependence<float>{ m_etaDepThrValue.name()+"Counts" }; + auto thresholdValuesGeV = ValueWithEtaDependence<float>{ m_etaDepThrValue.name()+"GeV" }; for( auto & r : m_etaDepThrValue ) { thresholdValuesGeV.addRangeValue(r.value() / 1000.0f, r.etaMin(), r.etaMax(), r.priority(), r.symmetric()); } @@ -272,6 +283,15 @@ TrigConf::L1Threshold_Calo::thrValuesMeV() const { return m_etaDepThrValue; } +TrigConf::ValueWithEtaDependence<unsigned int> +TrigConf::L1Threshold_Calo::thrValues100MeV() const { + auto thrValues100MeV = ValueWithEtaDependence<unsigned int>{ m_etaDepThrValue.name()+"100MeV" }; + for( auto & r : m_etaDepThrValue ) { + thrValues100MeV.addRangeValue( energyInCounts( r.value(), 100 ), r.etaMin(), r.etaMax(), r.priority(), r.symmetric()); + } + return thrValues100MeV; +} + TrigConf::ValueWithEtaDependence<unsigned int> TrigConf::L1Threshold_Calo::thrValuesCounts() const { auto extraInfo = m_extraInfo.lock(); @@ -313,6 +333,8 @@ TrigConf::Selection::wpToString(TrigConf::Selection::WP wp) return "Medium"; if (wp == Selection::WP::TIGHT) return "Tight"; + if (wp == Selection::WP::HAD) + return "Had"; throw std::runtime_error("Unknown working point " + std::to_string(int(wp))); } @@ -327,5 +349,7 @@ TrigConf::Selection::stringToWP(const std::string & wpStr) return Selection::WP::MEDIUM; if (wpStr == "Tight") return Selection::WP::TIGHT; + if (wpStr == "Had") + return Selection::WP::HAD; throw std::runtime_error("Unknown working point name " + wpStr); } diff --git a/Trigger/TrigConfiguration/TrigConfIO/src/JsonFileWriterL1.cxx b/Trigger/TrigConfiguration/TrigConfIO/src/JsonFileWriterL1.cxx index 7b3c6c7c84224653b6b47cff3514261d34144655..6557675a19ecdf4b62a278720d1775891753c844 100644 --- a/Trigger/TrigConfiguration/TrigConfIO/src/JsonFileWriterL1.cxx +++ b/Trigger/TrigConfiguration/TrigConfIO/src/JsonFileWriterL1.cxx @@ -168,6 +168,28 @@ TrigConf::JsonFileWriterL1::writeJsonFile(const std::string & filename, const L1 } } catch(std::bad_cast&) {}; + // eTAU + try { + auto eTAUThr = dynamic_cast<const TrigConf::L1Threshold_eTAU &>(*thr); + jThr["isoConeRel"] = TrigConf::Selection::wpToString(eTAUThr.isoConeRel()); + jThr["fEM"] = TrigConf::Selection::wpToString(eTAUThr.fEM()); + jThr["value"] = int(eTAUThr.thrValue()); + } catch(std::bad_cast&) {}; + + // jTAU + try { + auto jTAUThr = dynamic_cast<const TrigConf::L1Threshold_jTAU &>(*thr); + jThr["isolation"] = TrigConf::Selection::wpToString(jTAUThr.isolation()); + jThr["value"] = int(jTAUThr.thrValue()); + } catch(std::bad_cast&) {}; + + // cTAU + try { + auto cTAUThr = dynamic_cast<const TrigConf::L1Threshold_cTAU &>(*thr); + jThr["isolation"] = TrigConf::Selection::wpToString(cTAUThr.isolation()); + jThr["value"] = int(cTAUThr.thrValue()); + } catch(std::bad_cast&) {}; + // jJ try { auto jJThr = dynamic_cast<const TrigConf::L1Threshold_jJ &>(*thr); @@ -311,12 +333,45 @@ TrigConf::JsonFileWriterL1::writeJsonFile(const std::string & filename, const L1 if(thrType == "eTAU") { auto & eeminfo = l1menu.thrExtraInfo().eTAU(); + for( auto wp : {TrigConf::Selection::WP::LOOSE, TrigConf::Selection::WP::MEDIUM, TrigConf::Selection::WP::TIGHT, TrigConf::Selection::WP::HAD} ) { + auto wpstr = TrigConf::Selection::wpToString(wp); + jThrType["workingPoints"][wpstr] = json::array_t({}); + for(auto & iso : eeminfo.isolation(wp)) { + json jWPIso({}); + jWPIso["isoConeRel"] = iso.value().isoConeRel_d(); + jWPIso["isoConeRel_fw"] = iso.value().isoConeRel_fw(); + jWPIso["fEM"] = iso.value().fEM_d(); + jWPIso["fEM_fw"] = iso.value().fEM_fw(); + jWPIso["maxEt"] = iso.value().maxEt(); + jThrType["workingPoints"][wpstr] += jWPIso; + } + } + } + + if(thrType == "jTAU") { + auto & eeminfo = l1menu.thrExtraInfo().jTAU(); + for( auto wp : {TrigConf::Selection::WP::LOOSE, TrigConf::Selection::WP::MEDIUM, TrigConf::Selection::WP::TIGHT} ) { + auto wpstr = TrigConf::Selection::wpToString(wp); + jThrType["workingPoints"][wpstr] = json::array_t({}); + for(auto & iso : eeminfo.isolation(wp)) { + json jWPIso({}); + jWPIso["isolation"] = iso.value().isolation_d(); + jWPIso["isolation_fw"] = iso.value().isolation_fw(); + jWPIso["maxEt"] = iso.value().maxEt(); + jThrType["workingPoints"][wpstr] += jWPIso; + } + } + } + + if(thrType == "cTAU") { + auto & eeminfo = l1menu.thrExtraInfo().cTAU(); for( auto wp : {TrigConf::Selection::WP::LOOSE, TrigConf::Selection::WP::MEDIUM, TrigConf::Selection::WP::TIGHT} ) { auto wpstr = TrigConf::Selection::wpToString(wp); jThrType["workingPoints"][wpstr] = json::array_t({}); for(auto & iso : eeminfo.isolation(wp)) { json jWPIso({}); - jWPIso["isolation"] = (int)iso.value().isolation_d(); + jWPIso["isolation"] = iso.value().isolation_d(); + jWPIso["isolation_fw"] = iso.value().isolation_fw(); jWPIso["maxEt"] = iso.value().maxEt(); jThrType["workingPoints"][wpstr] += jWPIso; } @@ -326,12 +381,11 @@ TrigConf::JsonFileWriterL1::writeJsonFile(const std::string & filename, const L1 if(thrType == "jJ") { auto & ei = l1menu.thrExtraInfo().jJ(); jThrType["ptMinToTopo"] = json::array_t({}); - for(auto & x : ei.ptMinToTopoMeV() ) { + for(auto & x : ei.ptMinToTopoEtaMeV() ) { jThrType["ptMinToTopo"] += json({ {"etamin",x.etaMin()}, {"etamax",x.etaMax()}, - {"small",int(x.value().first/1000.)}, - {"large",int(x.value().second/1000.)} + {"value",int(x.value()/1000.)}, }); } } diff --git a/Trigger/TrigConfiguration/TrigConfIO/utils/TestTriggerMenuAccess.cxx b/Trigger/TrigConfiguration/TrigConfIO/utils/TestTriggerMenuAccess.cxx index df051d52397c22095d75753db70179543cddd02e..6c6e3aa6b47a967221644c78b924388bced81325 100644 --- a/Trigger/TrigConfiguration/TrigConfIO/utils/TestTriggerMenuAccess.cxx +++ b/Trigger/TrigConfiguration/TrigConfIO/utils/TestTriggerMenuAccess.cxx @@ -368,12 +368,9 @@ testL1Menu_Extrainfo(const TrigConf::L1Menu & l1menu) auto & ex = l1menu.thrExtraInfo().jJ(); cout << " jJ" << endl; cout << " energy resolution (MeV) " << ex.resolutionMeV() << endl; - cout << " ptMinToTopoSmallWindow " << ex.ptMinToTopoSmall() << endl; - cout << " ptMinToTopoLargeWindow " << ex.ptMinToTopoLarge() << endl; - cout << " ptMinToTopoSmallWindow (MeV) " << ex.ptMinToTopoSmallMeV() << endl; - cout << " ptMinToTopoLargeWindow (MeV) " << ex.ptMinToTopoLargeMeV() << endl; - cout << " ptMinToTopoSmallWindow (counts) " << ex.ptMinToTopoSmallCounts() << endl; - cout << " ptMinToTopoLargeWindow (counts) " << ex.ptMinToTopoLargeCounts() << endl; + cout << " ptMinToTopoWindow " << ex.ptMinToTopo() << endl; + cout << " ptMinToTopoWindow (MeV) " << ex.ptMinToTopoMeV() << endl; + cout << " ptMinToTopoWindow (counts) " << ex.ptMinToTopoCounts() << endl; } { auto & ex = l1menu.thrExtraInfo().eTAU(); @@ -386,19 +383,73 @@ testL1Menu_Extrainfo(const TrigConf::L1Menu & l1menu) for(auto & iso : ex.isolation(TrigConf::Selection::WP::LOOSE)) { cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") - << ", isolation=" << iso.value().isolation() << endl; + << ", isolation=" << iso.value() << endl; } cout << " working point Medium" << endl; for(auto & iso : ex.isolation(TrigConf::Selection::WP::MEDIUM)) { cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") - << ", isolation=" << iso.value().isolation() << endl; + << ", isolation=" << iso.value() << endl; } cout << " working point Tight" << endl; for(auto & iso : ex.isolation(TrigConf::Selection::WP::TIGHT)) { cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") - << ", isolation=" << iso.value().isolation() << endl; + << ", isolation=" << iso.value() << endl; + } + cout << " working point Had" << endl; + for(auto & iso : ex.isolation(TrigConf::Selection::WP::HAD)) { + cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() + << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") + << ", isolation=" << iso.value() << endl; + } + } + { + auto & ex = l1menu.thrExtraInfo().jTAU(); + cout << " jTAU" << endl; + cout << " energy resolution (MeV) " << ex.resolutionMeV() << endl; + cout << " ptMinToTopo " << ex.ptMinToTopo() << endl; + cout << " ptMinToTopo (MeV) " << ex.ptMinToTopoMeV() << endl; + cout << " ptMinToTopo (counts)" << ex.ptMinToTopoCounts() << endl; + cout << " working point Loose" << endl; + for(auto & iso : ex.isolation(TrigConf::Selection::WP::LOOSE)) { + cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() + << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") + << ", isolation=" << iso.value() << endl; + } + cout << " working point Medium" << endl; + for(auto & iso : ex.isolation(TrigConf::Selection::WP::MEDIUM)) { + cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() + << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") + << ", isolation=" << iso.value() << endl; + } + cout << " working point Tight" << endl; + for(auto & iso : ex.isolation(TrigConf::Selection::WP::TIGHT)) { + cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() + << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") + << ", isolation=" << iso.value() << endl; + } + } + { + auto & ex = l1menu.thrExtraInfo().cTAU(); + cout << " cTAU" << endl; + cout << " working point Loose" << endl; + for(auto & iso : ex.isolation(TrigConf::Selection::WP::LOOSE)) { + cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() + << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") + << ", isolation=" << iso.value() << endl; + } + cout << " working point Medium" << endl; + for(auto & iso : ex.isolation(TrigConf::Selection::WP::MEDIUM)) { + cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() + << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") + << ", isolation=" << iso.value() << endl; + } + cout << " working point Tight" << endl; + for(auto & iso : ex.isolation(TrigConf::Selection::WP::TIGHT)) { + cout << " range etaMin=" << iso.etaMin() << ", etaMax=" << iso.etaMax() + << ", priority=" << iso.priority() << ", symmetric=" << (iso.symmetric() ? "yes" : "no") + << ", isolation=" << iso.value() << endl; } } diff --git a/Trigger/TrigCost/RatesAnalysis/src/RatesAnalysisAlg.cxx b/Trigger/TrigCost/RatesAnalysis/src/RatesAnalysisAlg.cxx index a72fcae49c8a5bf61e80baf407d825a9bbc6e73e..ef2c5f46385e2f963a5542a30acbd366b6582eff 100644 --- a/Trigger/TrigCost/RatesAnalysis/src/RatesAnalysisAlg.cxx +++ b/Trigger/TrigCost/RatesAnalysis/src/RatesAnalysisAlg.cxx @@ -226,7 +226,7 @@ StatusCode RatesAnalysisAlg::addExisting(const std::string pattern) { for (const auto& trigger : triggers) { ATH_MSG_DEBUG("Considering " << trigger ); const bool isHLT = (getLevel(trigger) == 2); - const auto trigConf = (isHLT ? m_tdt->ExperimentalAndExpertMethods()->getChainConfigurationDetails(trigger) : nullptr); + const auto trigConf = (isHLT ? m_tdt->ExperimentalAndExpertMethods().getChainConfigurationDetails(trigger) : nullptr); if (isHLT && !trigConf) { ATH_MSG_ERROR("Problem with TDT trig conf - cannot get details for " << trigger << ", will be ignored."); continue; @@ -326,7 +326,7 @@ StatusCode RatesAnalysisAlg::checkExistingTrigger(const std::string& name, const } if (getLevel(name) == 1) return StatusCode::SUCCESS; // L1 items will crash if we call this on them. - const auto trigConf = m_tdt->ExperimentalAndExpertMethods()->getChainConfigurationDetails(triggers.at(0)); + const auto trigConf = m_tdt->ExperimentalAndExpertMethods().getChainConfigurationDetails(triggers.at(0)); if (trigConf->lower_chain_name() != seedName) { ATH_MSG_FATAL("Tried to register an existing trigger '" << name << "' seeding from '" << seedName << "' but in this AOD it seeds from '" << trigConf->lower_chain_name() << "'"); return StatusCode::FAILURE; @@ -365,7 +365,6 @@ StatusCode RatesAnalysisAlg::initialize() { ATH_MSG_INFO ("Initializing " << name() << "..."); ATH_CHECK( m_tdt.retrieve() ); - m_tdt->ExperimentalAndExpertMethods()->enable(); if(!m_configSvc.empty()) { ATH_CHECK( m_configSvc.retrieve() ); diff --git a/Trigger/TrigCost/RatesAnalysis/src/RatesGroup.cxx b/Trigger/TrigCost/RatesAnalysis/src/RatesGroup.cxx index 0bebdfc9092fc636233d396399bfc7eaf14afbe4..94220c044c17920cd473102941d34197b5053189 100644 --- a/Trigger/TrigCost/RatesAnalysis/src/RatesGroup.cxx +++ b/Trigger/TrigCost/RatesAnalysis/src/RatesGroup.cxx @@ -110,7 +110,7 @@ void RatesGroup::execute(const WeightingValuesSummary_t& weights) { } else { // Keep track for each CPS group RatesCPS& cps = weightHLT_CPS[CPSID]; cps.setCoherentFactor( trigger->getCoherentFactor() ); - cps.execute( trigPrescaleReciprocal ); + cps.execute( 1. / trigPrescaleReciprocal ); } } else { // Trigger FAILED diff --git a/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py b/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py index 0b0a590d9427cf040842a54d4c8242d3e7bbaf7c..a378c686f250e15628ca443ee8261142ff430998 100755 --- a/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py +++ b/Trigger/TrigCost/TrigCostAnalysis/share/RunTrigCostAnalysis.py @@ -70,17 +70,21 @@ def readHashes(joFileName="", smk=0, dbAlias=""): joData = {} - if joFileName: - log.debug("Reading HLTJobOptions from file {0}".format(joFileName)) - with open(joFileName, "r") as joFile: - import json - joData = json.load(joFile) - elif smk and dbAlias: - log.debug("Reading HLTJobOptions from database {0} {1}".format(smk, dbAlias)) - from TrigConfIO.HLTTriggerConfigAccess import HLTJobOptionsAccess - joData = HLTJobOptionsAccess(dbalias = dbAlias, smkey = smk) - else: - log.debug("Additional names not available") + try: + if joFileName: + log.debug("Reading HLTJobOptions from file {0}".format(joFileName)) + with open(joFileName, "r") as joFile: + import json + joData = json.load(joFile) + elif smk and dbAlias: + log.debug("Reading HLTJobOptions from database {0} {1}".format(smk, dbAlias)) + from TrigConfIO.HLTTriggerConfigAccess import HLTJobOptionsAccess + joData = HLTJobOptionsAccess(dbalias = dbAlias, smkey = smk) + else: + log.debug("Additional names not available") + return list() + except Exception as err: + log.warning("Retrieving additional names failed: {0}".format(err)) return list() namesList = set() diff --git a/Trigger/TrigEvent/TrigNavTools/share/navGraphDump.py b/Trigger/TrigEvent/TrigNavTools/share/navGraphDump.py index f6d096e12876f96e1da4140cffcfdf8204dd8c21..4a944f5031ac66e0f666174bb1d7011ac2043a32 100644 --- a/Trigger/TrigEvent/TrigNavTools/share/navGraphDump.py +++ b/Trigger/TrigEvent/TrigNavTools/share/navGraphDump.py @@ -43,6 +43,7 @@ svcMgr += cvgsvc tdt = Trig__TrigDecisionTool('TrigDecisionTool') tdt.TrigConfigSvc = cvgsvc +tdt.OutputLevel = Level tdt.NavigationFormat = "TrigComposite" ToolSvc += tdt @@ -61,4 +62,4 @@ checker.doTDTCheck = True topSequence += checker svcMgr.EventSelector.SkipEvents = Skip -theApp.EvtMax = Max \ No newline at end of file +theApp.EvtMax = Max diff --git a/Trigger/TrigEvent/TrigNavTools/src/Run2ToRun3TrigNavConverter.cxx b/Trigger/TrigEvent/TrigNavTools/src/Run2ToRun3TrigNavConverter.cxx index d32fd979bb2cca28e317dc063d65054e4002674a..a454e27798b5da990fae5da1ef90754ced92a405 100644 --- a/Trigger/TrigEvent/TrigNavTools/src/Run2ToRun3TrigNavConverter.cxx +++ b/Trigger/TrigEvent/TrigNavTools/src/Run2ToRun3TrigNavConverter.cxx @@ -32,7 +32,6 @@ StatusCode Run2ToRun3TrigNavConverter::initialize() ATH_CHECK( m_tdt.empty() != m_trigNavKey.key().empty() ); //either of the two has to be enabled but not both if ( !m_tdt.empty() ) { ATH_CHECK(m_tdt.retrieve()); - m_tdt->ExperimentalAndExpertMethods()->enable(); ATH_MSG_INFO( "Will use Trigger Navigation from TrigDecisionTool"); } else { ATH_CHECK(m_trigNavKey.initialize(SG::AllowEmpty)); @@ -86,7 +85,7 @@ StatusCode Run2ToRun3TrigNavConverter::execute(const EventContext &context) cons standaloneNav.deserialize(navReadHandle->serialized()); navDecoderPtr = &standaloneNav; } else { - navDecoderPtr = m_tdt->ExperimentalAndExpertMethods()->getNavigation(); + navDecoderPtr = m_tdt->ExperimentalAndExpertMethods().getNavigation(); } const HLT::TrigNavStructure& navDecoder = *navDecoderPtr; diff --git a/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationThinningSvc.cxx b/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationThinningSvc.cxx index aae51c905c7174185c4a54a54452464be0afe43d..fe74a95163827a677fed7e0bd052e13f0805fee3 100644 --- a/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationThinningSvc.cxx +++ b/Trigger/TrigEvent/TrigNavTools/src/TrigNavigationThinningSvc.cxx @@ -291,10 +291,9 @@ StatusCode TrigNavigationThinningSvc::doSlimming( const EventContext& ctx, std::lock_guard<std::mutex> lock(TrigNavigationThinningSvcMutex::s_mutex); // grab the navigation - Trig::ExpertMethods *navAccess = m_trigDecisionTool->ExperimentalAndExpertMethods(); - navAccess->enable(); + auto navAccess = m_trigDecisionTool->ExperimentalAndExpertMethods(); // protected by above lock - HLT::NavigationCore *cnav ATLAS_THREAD_SAFE = const_cast<HLT::NavigationCore*>(navAccess->getNavigation()); + HLT::NavigationCore *cnav ATLAS_THREAD_SAFE = const_cast<HLT::NavigationCore*>(navAccess.getNavigation()); if(cnav == 0) { ATH_MSG_WARNING ( "Could not get navigation from Trigger Decision Tool" ); diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigBmumuxComboHypoMonitoringConfig.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigBmumuxComboHypoMonitoringConfig.py index 74eb8c8d62ca2e88164e9043f5d51d5d94261c03..eb7a96b0adf27f26fed707954617161beb06e78e 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigBmumuxComboHypoMonitoringConfig.py +++ b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigBmumuxComboHypoMonitoringConfig.py @@ -19,5 +19,6 @@ class TrigBmumuxComboHypoToolMonitoring(GenericMonitoringTool): defineHistogram('Chi2', type='TH1F', path='EXPERT', title="chi2 of the fitted vertex", xbins=100, xmin=0, xmax=100), defineHistogram('Fitmass', type='TH1F', path='EXPERT', title="mass of BPhys object", xbins=100, xmin=4000, xmax=8000), defineHistogram('Mass', type='TH1F', path='EXPERT', title="mass(BPhys object) - mass(dimuon) + PDG::mJpsi", xbins=100, xmin=4000, xmax=8000), - defineHistogram('Pt', type='TH1F', path='EXPERT', title="p_{T} of BPhys object", xbins=100, xmin=0, xmax=40000), + defineHistogram('Pt', type='TH1F', path='EXPERT', title="p_{T} of BPhys object [MeV]", xbins=100, xmin=0, xmax=40000), + defineHistogram('Eta', type='TH1F', path='EXPERT', title="#eta_{T} of BPhys object", xbins=100, xmin=-3.15, xmax=3.15) ] diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigMultiTrkComboHypoMonitoringConfig.py b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigMultiTrkComboHypoMonitoringConfig.py index 74a8fd7dc3b1c23a3578e905a1efd50d92ba47df..8714c396b23c22fc54045152c3b6660118974d94 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigMultiTrkComboHypoMonitoringConfig.py +++ b/Trigger/TrigHypothesis/TrigBphysHypo/python/TrigMultiTrkComboHypoMonitoringConfig.py @@ -27,6 +27,10 @@ class TrigMultiTrkComboHypoMonitoring(GenericMonitoringTool): defineHistogram('TIME_all', type='TH1F', path='EXPERT', title='execution time; [microseconds]', xbins=100, xmin=0, xmax=1000), defineHistogram('bphysd0_trk1', type='TH1F', path='EXPERT', title="d0 of Vertex first track; [mm]", xbins=30, xmin=-10, xmax=10), defineHistogram('bphysd0_trk2', type='TH1F', path='EXPERT', title="d0 of Vertex second track; [mm]", xbins=30, xmin=-10, xmax=10), + defineHistogram('bphysPt_trk1', type='TH1F', path='EXPERT', title="p_{T} of Vertex first track; [GeV]", xbins=60, xmin=0, xmax=60), + defineHistogram('bphysPt_trk2', type='TH1F', path='EXPERT', title="p_{T} of Vertex second track; [GeV]", xbins=60, xmin=0, xmax=60), + defineHistogram('bphysEtatrack1', type='TH1F', path='EXPERT', title="Eta of Vertex first track; [rad]", xbins=50, xmin=-3.15, xmax=3.15), + defineHistogram('bphysEtatrack2', type='TH1F', path='EXPERT', title="Eta of Vertex second track; [rad]", xbins=50, xmin=-3.15, xmax=3.15), ] class TrigMultiTrkComboHypoToolMonitoring(GenericMonitoringTool): @@ -41,4 +45,6 @@ class TrigMultiTrkComboHypoToolMonitoring(GenericMonitoringTool): defineHistogram('pT_trk2', type='TH1F', path='EXPERT', title="p_{T} of the second track; p_{T}(#mu_{2}) [GeV]", xbins=100, xmin=0, xmax=40), defineHistogram('d0_trk1', type='TH1F', path='EXPERT', title="d0 of the first track; d0(#mu_{1}) [mm]", xbins=100, xmin=-10, xmax=10), defineHistogram('d0_trk2', type='TH1F', path='EXPERT', title="d0 of the second track; d0(#mu_{2}) [mm]", xbins=100, xmin=-10, xmax=10), + defineHistogram('eta_trk1', type='TH1F', path='EXPERT', title="Eta of Vertex first track; [rad]", xbins=50, xmin=-3.15, xmax=3.15), + defineHistogram('eta_trk2', type='TH1F', path='EXPERT', title="Eta of Vertex second track; [rad]", xbins=50, xmin=-3.15, xmax=3.15), ] diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBmumuxComboHypoTool.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBmumuxComboHypoTool.cxx index aaf12f1740d8ac05ff23f288eb6498616c1f309c..a97af6073a07c8cb3ac9335ac0626c7af8e37dee 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBmumuxComboHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigBmumuxComboHypoTool.cxx @@ -37,7 +37,8 @@ bool TrigBmumuxComboHypoTool::passed(const xAOD::TrigBphys* trigBphys) const { auto mon_fitmass = Monitored::Scalar<float>("Fitmass", -1.); auto mon_mass = Monitored::Scalar<float>("Mass", -1.); auto mon_pt = Monitored::Scalar<float>("Pt", -1.); - auto group = Monitored::Group(m_monTool, mon_chi2, mon_fitmass, mon_mass, mon_pt); + auto mon_eta = Monitored::Scalar<float>("Eta", -100.); + auto group = Monitored::Group(m_monTool, mon_chi2, mon_fitmass, mon_mass, mon_pt, mon_eta); ATH_MSG_DEBUG( "in TrigBmumuxComboHypoTool::decideOnSingleObject(), looking at TrigBphys object"); @@ -53,6 +54,7 @@ bool TrigBmumuxComboHypoTool::passed(const xAOD::TrigBphys* trigBphys) const { mon_fitmass = trigBphys->fitmass(); mon_mass = trigBphys->mass(); mon_pt = trigBphys->pt(); + mon_eta = trigBphys->eta(); } return result; diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypo.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypo.cxx index 37fe284c539fed3e3e7cbbaa9446c2ab6acc9214..1a4b08aac892e8bcb2111714974b1a1baaf42525 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypo.cxx +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypo.cxx @@ -465,14 +465,20 @@ StatusCode TrigMultiTrkComboHypo::findDiTrackCandidates(TrigMultiTrkStateCand<T> std::vector<float> trkMassBeforeFit; std::vector<float> bphysMass; std::vector<float> d0track1, d0track2; + std::vector<float> pttrack1, pttrack2; + std::vector<float> etatrack1, etatrack2; std::vector<int> bphysCharge; auto mon_trkMassBeforeFit = Monitored::Collection("trkMassBeforeFit", trkMassBeforeFit); auto mon_bphysChi2 = Monitored::Collection("bphysChi2", *state.trigBphysCollection, &xAOD::TrigBphys::fitchi2); auto mon_bphysLxy = Monitored::Collection("bphysLxy", *state.trigBphysCollection, &xAOD::TrigBphys::lxy); auto mon_bphysFitMass = Monitored::Collection("bphysFitMass", *state.trigBphysCollection, [](const xAOD::TrigBphys* x){ return x->fitmass()*0.001; }); auto mon_bphysMass = Monitored::Collection("bphysMass", bphysMass); - auto mon_d0track1 = Monitored::Collection("d0track1", d0track1); - auto mon_d0track2 = Monitored::Collection("d0track2", d0track2); + auto mon_d0track1 = Monitored::Collection("bphysd0_trk1", d0track1); + auto mon_d0track2 = Monitored::Collection("bphysd0_trk2", d0track2); + auto mon_pttrack1 = Monitored::Collection("bphysPt_trk1", pttrack1); + auto mon_pttrack2 = Monitored::Collection("bphysPt_trk2", pttrack2); + auto mon_etatrack1 = Monitored::Collection("bphysEtatrack1", etatrack1); + auto mon_etatrack2 = Monitored::Collection("bphysEtatrack2", etatrack2); auto mon_bphysCharge = Monitored::Collection("bphysCharge", bphysCharge); auto mon_timer = Monitored::Timer( "TIME_all" ); @@ -480,7 +486,7 @@ StatusCode TrigMultiTrkComboHypo::findDiTrackCandidates(TrigMultiTrkStateCand<T> auto group = Monitored::Group(m_monTool, mon_nAcceptedTrk, mon_nCombination, mon_nCombinationBeforeFit, mon_nBPhysObject, mon_trkMassBeforeFit, mon_bphysChi2, mon_bphysLxy, mon_bphysFitMass, mon_bphysMass, mon_bphysCharge, mon_d0track1, mon_d0track2, - mon_timer); + mon_timer, mon_pttrack1, mon_pttrack2, mon_etatrack1, mon_etatrack2); if (legs.size() < m_nTrk) { ATH_MSG_DEBUG( "Could not build a subset of " << m_nTrk.value() << " legs from collection which contains only " << legs.size() << " objects" ); @@ -549,6 +555,10 @@ StatusCode TrigMultiTrkComboHypo::findDiTrackCandidates(TrigMultiTrkStateCand<T> bphysCharge.push_back(charge); d0track1.push_back((*tracklist[0])->d0()); d0track2.push_back((*tracklist[1])->d0()); + pttrack1.push_back((*tracklist[0])->pt() * 0.001); + pttrack2.push_back((*tracklist[1])->pt() * 0.001); + etatrack1.push_back((*tracklist[0])->eta()); + etatrack2.push_back((*tracklist[1])->eta()); } while (std::prev_permutation(leptonTags.begin(), leptonTags.end())); diff --git a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.cxx b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.cxx index 8ca254f2f070c4a242e55e89cf1a9f570130f27b..aeb01c226a41ece304479ed51338e7d7c021ac09 100644 --- a/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigBphysHypo/src/TrigMultiTrkComboHypoTool.cxx @@ -60,8 +60,10 @@ bool TrigMultiTrkComboHypoTool::passed(const xAOD::TrigBphys* trigBphys) const { auto mon_D0_trk1 = Monitored::Scalar<float>("d0_trk1", -1.); auto mon_D0_trk2 = Monitored::Scalar<float>("d0_trk2", -1.); auto mon_Lxy = Monitored::Scalar<float>("Lxy", -1.); + auto mon_Eta1 = Monitored::Scalar<float>("eta_trk1", -100.); + auto mon_Eta2 = Monitored::Scalar<float>("eta_trk2", -100.); - auto mon = Monitored::Group( m_monTool, mon_totalCharge, mon_chi2, mon_mass, mon_pT_trk1, mon_pT_trk2, mon_Lxy, mon_D0_trk1, mon_D0_trk2); + auto mon = Monitored::Group( m_monTool, mon_totalCharge, mon_chi2, mon_mass, mon_pT_trk1, mon_pT_trk2, mon_Lxy, mon_D0_trk1, mon_D0_trk2, mon_Eta1, mon_Eta2); if (m_acceptAll || (isInMassRange(trigBphys->mass()) && passedChi2Cut(trigBphys->fitchi2()) && passedChargeCut(totalCharge(trigBphys)) && trigBphys->lxy() > m_LxyCut )) { @@ -73,6 +75,8 @@ bool TrigMultiTrkComboHypoTool::passed(const xAOD::TrigBphys* trigBphys) const { mon_pT_trk2 = 0.001 * trigBphys->trackParticle(1)->pt(); mon_D0_trk1 = trigBphys->trackParticle(0)->d0(); mon_D0_trk2 = trigBphys->trackParticle(1)->d0(); + mon_Eta1 = trigBphys->trackParticle(0)->eta(); + mon_Eta2 = trigBphys->trackParticle(1)->eta(); ATH_MSG_DEBUG( "accepting event" ); return true; } diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEgammaPrecisionElectronHypoTool.cxx b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEgammaPrecisionElectronHypoTool.cxx index 9f5803dc58322d0289e0cd8bc6d3d95c092046f0..a783a16bcc0654617984addda20e3d828954c7f0 100644 --- a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEgammaPrecisionElectronHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TrigEgammaPrecisionElectronHypoTool.cxx @@ -178,6 +178,10 @@ bool TrigEgammaPrecisionElectronHypoTool::decide( const ITrigEgammaPrecisionElec float ptcone20(999), ptcone30(999), ptcone40(999), etcone20(999), etcone30(999), etcone40(999), topoetcone20(999), topoetcone30(999), topoetcone40(999), relptcone20(999); + bool ispt20 = input.electron->isolationValue(ptcone20, xAOD::Iso::ptcone20); + if (!ispt20) { + ATH_MSG_WARNING("ptcone20 not available. Will not cut on isolation"); + } // variables based on HCAL // transverse energy in 1st scintillator of hadronic calorimeter/ET diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigDisappearingTrackTriggerHypoTool.py b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigDisappearingTrackHypoConfig.py similarity index 93% rename from Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigDisappearingTrackTriggerHypoTool.py rename to Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigDisappearingTrackHypoConfig.py index c315fc5d07351e3346b59f25ead6821404de791a..b2601bf9e3a516c79e1fd8712abda1cfe9a540f3 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigDisappearingTrackTriggerHypoTool.py +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigDisappearingTrackHypoConfig.py @@ -1,22 +1,19 @@ # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from AthenaCommon.Logging import logging -log = logging.getLogger("TrigLongLivedParticlesHypo.TrigDisapperingTrackTriggerHypoTool") from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool +def createTrigDisappearingTrackHypoAlg(name): + # make the Hypo + from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConf import (TrigDisappearingTrackHypoAlg) + # Setup the hypothesis algorithm + theDisTrkHypo = TrigDisappearingTrackHypoAlg(name) + + from TrigEDMConfig.TriggerEDMRun3 import recordable + theDisTrkHypo.DisTrkBDTSel = recordable("HLT_DisTrkBDTSel") -log = logging.getLogger('TrigDisappearingTrackTriggerHypoTool') - -def TrigDisappearingTrackTriggerHypoToolFromDict( chainDict ): - """ Use menu decoded chain dictionary to configure the tool """ - cparts = [i for i in chainDict['chainParts'] if i['signature']=='UnconventionalTracking'] - thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in cparts], []) - - name = chainDict['chainName'] - from AthenaConfiguration.ComponentFactory import CompFactory - tool = CompFactory.TrigDisappearingTrackTriggerHypoTool(name) - + # monioring monTool = GenericMonitoringTool("IM_MonTool"+name) monTool.defineHistogram('category', type='TH1F', path='EXPERT', title="DisTrk Category;DisTrk Category;Nevents", xbins=5, xmin=-0.5, xmax=4.5) # @@ -77,8 +74,25 @@ def TrigDisappearingTrackTriggerHypoToolFromDict( chainDict ): monTool.defineHistogram('pix3_sct1p_refit_chi2ndof',type='TH1F', path='EXPERT', title="Pix3Sct1p refit #chi^{2}/ndof;refit #chi^{2}/ndof;Nevents", xbins=50, xmin=0, xmax=10) monTool.defineHistogram('pix3_sct1p_bdtscore', type='TH1F', path='EXPERT', title="Pix3lSct1p BDT score;BDT score;Nevents", xbins=50, xmin=-1, xmax=1) # - monTool.HistPath = 'disappearingTrackTriggerHypoAlg/'+tool.getName() - tool.MonTool = monTool + monTool.HistPath = 'disappearingTrackHypoAlg' + theDisTrkHypo.MonTool = monTool + + return theDisTrkHypo + + +def TrigDisappearingTrackHypoToolFromDict( chainDict ): + + log = logging.getLogger('TrigDisappearingTrackHypoTool') + + """ Use menu decoded chain dictionary to configure the tool """ + cparts = [i for i in chainDict['chainParts'] if i['signature']=='UnconventionalTracking'] + thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in cparts], []) + + name = chainDict['chainName'] + from AthenaConfiguration.ComponentFactory import CompFactory + tool = CompFactory.TrigDisappearingTrackHypoTool(name) + + # set thresholds strThr = "" @@ -122,7 +136,7 @@ def TrigDisappearingTrackTriggerHypoToolFromDict( chainDict ): return tool -def TrigDisappearingTrackTriggerHypoToolFromName( name, conf ): +def TrigDisappearingTrackHypoToolFromName( name, conf ): """ provides configuration of the hypo tool given the chain name The argument will be replaced by "parsed" chain dict. For now it only serves simplest chain HLT_eXYZ. """ @@ -130,11 +144,4 @@ def TrigDisappearingTrackTriggerHypoToolFromName( name, conf ): decodedDict = dictFromChainName(conf) - return TrigDisappearingTrackTriggerHypoToolFromDict( decodedDict ) - - - -if __name__ == "__main__": - tool = TrigDisappearingTrackTriggerHypoToolFromName("HLT_unconvtrk20_dedx_medium_L1XE50", "HLT_unconvtrk20_dedx_medium_L1XE50") - assert tool, "Not configured simple tool" - log.debug("ALL OK") + return TrigDisappearingTrackHypoToolFromDict( decodedDict ) diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigdEdxTrackTriggerHypoTool.py b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigdEdxTrackHypoConfig.py similarity index 76% rename from Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigdEdxTrackTriggerHypoTool.py rename to Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigdEdxTrackHypoConfig.py index dfcd44cbfd7740570f0e19cd158bfb4d9572ccb5..93e6a7e14bf365a3af8ab301334c04be21fa13ca 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigdEdxTrackTriggerHypoTool.py +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/python/TrigdEdxTrackHypoConfig.py @@ -1,21 +1,20 @@ # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from AthenaCommon.Logging import logging -log = logging.getLogger("TrigLongLivedParticlesHypo.TrigdEdxTrackTriggerHypoTool") from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool +def createTrigdEdxTrackHypoAlg(name): + # make the Hypo + from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConf import TrigdEdxTrackHypoAlg + + # Setup the hypothesis algorithm + thedEdxTrackHypo = TrigdEdxTrackHypoAlg(name) + + from TrigEDMConfig.TriggerEDMRun3 import recordable + thedEdxTrackHypo.HPtdEdxTrk = recordable("HLT_HPtdEdxTrk") -log = logging.getLogger('TrigdEdxTrackTriggerHypoTool') - -def TrigdEdxTrackTriggerHypoToolFromDict( chainDict ): - """ Use menu decoded chain dictionary to configure the tool """ - cparts = [i for i in chainDict['chainParts'] if i['signature']=='UnconventionalTracking'] - thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in cparts], []) - - name = chainDict['chainName'] - from AthenaConfiguration.ComponentFactory import CompFactory - tool = CompFactory.TrigdEdxTrackTriggerHypoTool(name) + # monioring monTool = GenericMonitoringTool("IM_MonTool"+name) monTool.defineHistogram('trackPtGeV', type='TH1F', path='EXPERT', title="Hypo p_{T}^{track};p_{T}^{track} [GeV];Nevents", xbins=50, xmin=0, xmax=100) @@ -24,8 +23,25 @@ def TrigdEdxTrackTriggerHypoToolFromDict( chainDict ): monTool.defineHistogram('trackdEdx', type='TH1F', path='EXPERT', title="Hypo dE/dx (after a0beam cut);dE/dx;Nevents", xbins=50, xmin=0, xmax=10) monTool.defineHistogram('trackNhighdEdxHits', type='TH1F', path='EXPERT', title="Hypo Nr high dE/dx hits (after dEdx cut);N high dE/dx hits;Nevents", xbins=10, xmin=0, xmax=10) - monTool.HistPath = 'dEdxTrackTriggerHypoAlg/'+tool.getName() - tool.MonTool = monTool + monTool.HistPath = 'dEdxTrackHypoAlg' + thedEdxTrackHypo.MonTool = monTool + + return thedEdxTrackHypo + + +def TrigdEdxTrackHypoToolFromDict( chainDict ): + + log = logging.getLogger('TrigdEdxTrackHypoTool') + + """ Use menu decoded chain dictionary to configure the tool """ + cparts = [i for i in chainDict['chainParts'] if i['signature']=='UnconventionalTracking'] + thresholds = sum([ [cpart['threshold']]*int(cpart['multiplicity']) for cpart in cparts], []) + + name = chainDict['chainName'] + from AthenaConfiguration.ComponentFactory import CompFactory + tool = CompFactory.TrigdEdxTrackHypoTool(name) + + # set thresholds strThr = "" @@ -34,7 +50,7 @@ def TrigdEdxTrackTriggerHypoToolFromDict( chainDict ): for THR in thresholds: strThr += str(THR)+", " - log.info("UTT: Threshold Values are: %s",strThr) + log.info("Threshold Values are: %s",strThr) tool.cutTrackPtGeV = thresholds @@ -51,21 +67,21 @@ def TrigdEdxTrackTriggerHypoToolFromDict( chainDict ): trackdEdx.append(1.5) tracka0beam.append(5.0) trackNhighdEdxHits.append(1) - trackHighdEdxDef.append(1.5) + trackHighdEdxDef.append("1p50") elif cpart['IDinfo'] =="tight": log.info("UTT: Tight ID working point is set") trackEta.append(2.5) trackdEdx.append(1.8) tracka0beam.append(1.5) trackNhighdEdxHits.append(2) - trackHighdEdxDef.append(1.8) + trackHighdEdxDef.append("1p80") else: log.info("UTT: Medium ID working point is set") trackEta.append(2.5) trackdEdx.append(1.7) tracka0beam.append(2.5) trackNhighdEdxHits.append(2) - trackHighdEdxDef.append(1.7) + trackHighdEdxDef.append("1p70") tool.cutTrackEta = trackEta tool.cutTrackdEdx = trackdEdx @@ -76,7 +92,7 @@ def TrigdEdxTrackTriggerHypoToolFromDict( chainDict ): return tool -def TrigdEdxTrackTriggerHypoToolFromName( name, conf ): +def TrigdEdxTrackHypoToolFromName( name, conf ): """ provides configuration of the hypo tool given the chain name The argument will be replaced by "parsed" chain dict. For now it only serves simplest chain HLT_eXYZ. """ @@ -84,11 +100,4 @@ def TrigdEdxTrackTriggerHypoToolFromName( name, conf ): decodedDict = dictFromChainName(conf) - return TrigdEdxTrackTriggerHypoToolFromDict( decodedDict ) - - - -if __name__ == "__main__": - tool = TrigdEdxTrackTriggerHypoToolFromName("HLT_unconvtrk20_dedx_medium_L1XE50", "HLT_unconvtrk20_dedx_medium_L1XE50") - assert tool, "Not configured simple tool" - log.debug("ALL OK") + return TrigdEdxTrackHypoToolFromDict( decodedDict ) diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoAlg.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoAlg.cxx new file mode 100644 index 0000000000000000000000000000000000000000..47ef2a61576e7c6b9e33062312322a48b009c535 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoAlg.cxx @@ -0,0 +1,632 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + + * Trigger Hypo Tool, that is aimed at triggering disappearing tracks + * author Kunihiro Nagano <kunihiro.nagano@cern.ch> +*/ +#include "TrigDisappearingTrackHypoAlg.h" +#include "AthViews/ViewHelper.h" +#include "TrigCompositeUtils/TrigCompositeUtils.h" +#include "GaudiKernel/SystemOfUnits.h" +#include "AthenaMonitoringKernel/Monitored.h" +#include "PathResolver/PathResolver.h" + +using TrigCompositeUtils::createAndStore; +using TrigCompositeUtils::DecisionContainer; +using TrigCompositeUtils::DecisionAuxContainer; +using TrigCompositeUtils::DecisionIDContainer; +using TrigCompositeUtils::decisionIDs; +using TrigCompositeUtils::newDecisionIn; +using TrigCompositeUtils::linkToPrevious; +using TrigCompositeUtils::viewString; +using TrigCompositeUtils::featureString; +using TrigCompositeUtils::hypoAlgNodeName; +using TrigCompositeUtils::findLink; +using TrigCompositeUtils::LinkInfo; +using TrigCompositeUtils::Decision; +using TrigCompositeUtils::allFailed; + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +TrigDisappearingTrackHypoAlg::TrigDisappearingTrackHypoAlg( const std::string& name, + ISvcLocator* pSvcLocator ) : + ::HypoBase( name, pSvcLocator ) {} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigDisappearingTrackHypoAlg::initialize() +{ + CHECK( m_hypoTools.retrieve() ); + CHECK( m_DisTrkCandKey.initialize() ); + CHECK( m_DisTrkBDTSelKey.initialize()); + + if ( !m_monTool.empty() ) CHECK( m_monTool.retrieve() ); + + for (size_t slot = 0; slot < SG::getNSlots(); ++slot) { + EventContext dummyContext(/*dummyEventNumber*/0, slot); + + m_tmva_pix4l_sct0_reader.get(dummyContext)->reset( new TMVA::Reader( "!Color:!Silent" )); + m_tmva_pix4l_sct1p_reader.get(dummyContext)->reset(new TMVA::Reader( "!Color:!Silent" )); + m_tmva_pix3l_sct0_reader.get(dummyContext)->reset( new TMVA::Reader( "!Color:!Silent" )); + m_tmva_pix3l_sct1p_reader.get(dummyContext)->reset(new TMVA::Reader( "!Color:!Silent" )); + + // --- declare variables to the reader + // pix4l_sct0 + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("pt", m_tmva_pix4l_sct0_pt.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("z0", m_tmva_pix4l_sct0_z0.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("d0", m_tmva_pix4l_sct0_d0.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("trkiso3_dr01", m_tmva_pix4l_sct0_trkiso3_dr01.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("trkiso3_dr0201", m_tmva_pix4l_sct0_trkiso3_dr0201.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("chi2ndof", m_tmva_pix4l_sct0_chi2ndof.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("chi2ndof_pix", m_tmva_pix4l_sct0_chi2ndof_pix.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("refit_pt", m_tmva_pix4l_sct0_refit_pt.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("n_pix", m_tmva_pix4l_sct0_n_pix.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("refit_ptratio", m_tmva_pix4l_sct0_refit_ptratio.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("refit_chi2ndof", m_tmva_pix4l_sct0_refit_chi2ndof.get(dummyContext)); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).AddVariable("n_bl", m_tmva_pix4l_sct0_n_bl.get(dummyContext)); + + // pix4l_sct1p + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("pt", m_tmva_pix4l_sct1p_pt.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("refit_pt", m_tmva_pix4l_sct1p_refit_pt.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("refit_z0", m_tmva_pix4l_sct1p_refit_z0.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("refit_d0", m_tmva_pix4l_sct1p_refit_d0.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("n_sct", m_tmva_pix4l_sct1p_n_sct.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("refit_ptratio", m_tmva_pix4l_sct1p_refit_ptratio.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("refit_chi2ndof_ratio", m_tmva_pix4l_sct1p_refit_chi2ndof_ratio.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("trkiso3_dr01", m_tmva_pix4l_sct1p_trkiso3_dr01.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("trkiso3_dr0201", m_tmva_pix4l_sct1p_trkiso3_dr0201.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("is_fail", m_tmva_pix4l_sct1p_is_fail.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("chi2ndof_pix", m_tmva_pix4l_sct1p_chi2ndof_pix.get(dummyContext)); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).AddVariable("n_pix", m_tmva_pix4l_sct1p_n_pix.get(dummyContext)); + + // pix3l_sct0 + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("pt", m_tmva_pix3l_sct0_pt.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("z0", m_tmva_pix3l_sct0_z0.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("d0", m_tmva_pix3l_sct0_d0.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("chi2ndof", m_tmva_pix3l_sct0_chi2ndof.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("chi2ndof_pix", m_tmva_pix3l_sct0_chi2ndof_pix.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("trkiso3_dr01", m_tmva_pix3l_sct0_trkiso3_dr01.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("trkiso3_dr0201", m_tmva_pix3l_sct0_trkiso3_dr0201.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("refit_pt", m_tmva_pix3l_sct0_refit_pt.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("refit_z0", m_tmva_pix3l_sct0_refit_z0.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("refit_d0", m_tmva_pix3l_sct0_refit_d0.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("n_pix", m_tmva_pix4l_sct0_n_pix.get(dummyContext)); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).AddVariable("n_bl", m_tmva_pix3l_sct0_n_bl.get(dummyContext)); + + // pix3l_sct1p + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("pt", m_tmva_pix3l_sct1p_pt.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("z0", m_tmva_pix3l_sct1p_z0.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("d0", m_tmva_pix3l_sct1p_d0.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("refit_pt", m_tmva_pix3l_sct1p_refit_pt.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("refit_z0", m_tmva_pix3l_sct1p_refit_z0.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("refit_d0", m_tmva_pix3l_sct1p_refit_d0.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("n_pix", m_tmva_pix3l_sct1p_n_pix.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("n_sct", m_tmva_pix3l_sct1p_n_sct.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("refit_ptratio", m_tmva_pix3l_sct1p_refit_ptratio.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("is_fail", m_tmva_pix3l_sct1p_is_fail.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("n_bl", m_tmva_pix3l_sct1p_n_bl.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("chi2ndof", m_tmva_pix3l_sct1p_chi2ndof.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("trkiso3_dr01", m_tmva_pix3l_sct1p_trkiso3_dr01.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("trkiso3_dr0201", m_tmva_pix3l_sct1p_trkiso3_dr0201.get(dummyContext)); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).AddVariable("refit_chi2ndof", m_tmva_pix3l_sct1p_refit_chi2ndof.get(dummyContext)); + + // --- Book the MVA methods + std::string file; + std::string weightfile; + std::string tuningVer; + const std::string methodName = "BDT method"; + // + tuningVer = "v21a"; + file = "TrigDisappearingTrackTriggerHypo/pix4l_sct0.BDT.weights." + tuningVer + ".xml"; + weightfile = PathResolver::find_calib_file(file.c_str()); + ATH_MSG_INFO( "opening weightfile for Pix4l_SCT0 = " << weightfile ); + (**m_tmva_pix4l_sct0_reader.get(dummyContext)).BookMVA(methodName, weightfile); + // + tuningVer = "v21b"; // "b" only for this category + file = "TrigDisappearingTrackTriggerHypo/pix4l_sct1p.BDT.weights." + tuningVer + ".xml"; + weightfile = PathResolver::find_calib_file(file.c_str()); + ATH_MSG_INFO( "opening weightfile for Pix4l_SCT1p = " << weightfile ); + (**m_tmva_pix4l_sct1p_reader.get(dummyContext)).BookMVA(methodName, weightfile); + // + tuningVer = "v21a"; + file = "TrigDisappearingTrackTriggerHypo/pix3l_sct0.BDT.weights." + tuningVer + ".xml"; + weightfile = PathResolver::find_calib_file(file.c_str()); + ATH_MSG_INFO( "opening weightfile for Pix3l_SCT0 = " << weightfile ); + (**m_tmva_pix3l_sct0_reader.get(dummyContext)).BookMVA(methodName, weightfile); + // + tuningVer = "v21a"; + file = "TrigDisappearingTrackTriggerHypo/pix3l_sct1p.BDT.weights." + tuningVer + ".xml"; + weightfile = PathResolver::find_calib_file(file.c_str()); + ATH_MSG_INFO( "opening weightfile for Pix3l_SCT1p = " << weightfile ); + (**m_tmva_pix3l_sct1p_reader.get(dummyContext)).BookMVA(methodName, weightfile); + } + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigDisappearingTrackHypoAlg::execute( const EventContext& context ) const +{ + // previous decisions + ATH_MSG_DEBUG( "Retrieving pervious decision: \"" << decisionInput().key() << "\"" ); + auto previousDecisionsHandle = SG::makeHandle( decisionInput(), context ); + ATH_CHECK( previousDecisionsHandle.isValid() ); + + ATH_MSG_DEBUG( "Running with " << previousDecisionsHandle->size() << " previous decisions" ); + if( previousDecisionsHandle->size()!=1 ) { + ATH_MSG_ERROR( "Previous decision handle size is not 1. It is" << previousDecisionsHandle->size() ); + return StatusCode::FAILURE; + } + const Decision * previousDecision = previousDecisionsHandle->at(0); + + TrigCompositeUtils::DecisionIDContainer previousDecisionIDs; + TrigCompositeUtils::decisionIDs(previousDecision, previousDecisionIDs); + ATH_MSG_VERBOSE( "IDs of active legs:" ); + for(auto decisionID: previousDecisionIDs) { ATH_MSG_VERBOSE( " " << decisionID ); } + + // new output decisions + ATH_MSG_DEBUG( "Creating new output decision handle" ); + SG::WriteHandle<DecisionContainer> outputHandle = createAndStore(decisionOutput(), context ); + auto outputDecisions = outputHandle.ptr(); + + // input disappearing track objects + auto DisTrkCandHandle = SG::makeHandle(m_DisTrkCandKey, context ); + ATH_CHECK( DisTrkCandHandle.isValid() ); + ATH_MSG_DEBUG( "DisTrkCand handle size: " << DisTrkCandHandle->size() ); + + const xAOD::TrigCompositeContainer * disTrkCandContainer = DisTrkCandHandle.get(); + if( disTrkCandContainer == nullptr ) { + ATH_MSG_ERROR( "ERROR Cannot get DisappearingTrks container" ); + return StatusCode::FAILURE; + } + + // output EDM object + auto DisTrkBDTSelContainer = std::make_unique<xAOD::TrigCompositeContainer>(); + auto DisTrkBDTSelContainerAux = std::make_unique<xAOD::TrigCompositeAuxContainer>(); + DisTrkBDTSelContainer->setStore(DisTrkBDTSelContainerAux.get()); + + xAOD::TrigCompositeContainer* disTrkContainer = DisTrkBDTSelContainer.get(); + + // Prepare inputs to HypoTool + ATH_CHECK( createCandidates(context, disTrkCandContainer, disTrkContainer) ); + + std::vector<TrigDisappearingTrackHypoTool::DisTrkHypoInfo> disTrkHypoInputs; + + for ( auto distrk : *disTrkContainer ) { + Decision* newDecision = TrigCompositeUtils::newDecisionIn( outputDecisions, previousDecision, TrigCompositeUtils::hypoAlgNodeName(), context); + + ElementLink<xAOD::TrigCompositeContainer> distrkEL = ElementLink<xAOD::TrigCompositeContainer>(*outputHandle, distrk->index()); + ATH_CHECK( distrkEL.isValid() ); + + ATH_CHECK( newDecision->setObjectLink<xAOD::TrigCompositeContainer>(TrigCompositeUtils::featureString(), distrkEL) ); + + TrigDisappearingTrackHypoTool::DisTrkHypoInfo hypoInfo{ newDecision, distrk, previousDecisionIDs }; + disTrkHypoInputs.push_back( hypoInfo ); + } + + // Loop over all hypoToolinputs and get their decisions + for ( auto & tool: m_hypoTools ) { + ATH_MSG_VERBOSE( "+++++ Now computing decision for " << tool->name() ); + ATH_CHECK( tool->decide( disTrkHypoInputs ) ); + } + + DecisionContainer::iterator it = outputDecisions->begin(); + while(it != outputDecisions->end()) { + ATH_MSG_VERBOSE( "+++++ outputDecision: " << *it << " +++++" ); + if ( allFailed( *it ) ) { + ATH_MSG_VERBOSE( "---> all failed, erasing" ); + it = outputDecisions->erase(it); + } else { + ATH_MSG_VERBOSE( "---> not all failed" ); + ++it; + } + } + + // record + SG::WriteHandle<xAOD::TrigCompositeContainer> DisTrkBDTSelHandle(m_DisTrkBDTSelKey, context); + ATH_CHECK( DisTrkBDTSelHandle.record( std::move( DisTrkBDTSelContainer ), std::move( DisTrkBDTSelContainerAux ) ) ); + ATH_MSG_VERBOSE( "recorded DisTrkBDTSel object to SG" ); + + // + ATH_CHECK( hypoBaseOutputProcessing(outputHandle) ); + + // + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigDisappearingTrackHypoAlg::createCandidates( const EventContext& context, const xAOD::TrigCompositeContainer* disTrkCandContainer, + xAOD::TrigCompositeContainer* disTrkBDTSelContainer) const +{ + // monitoring + std::vector<int> mnt_category; + auto mon_category = Monitored::Collection("category", mnt_category); + auto monDisTrk = Monitored::Group(m_monTool, mon_category); + + std::vector<float> mnt_cat1_pt; + std::vector<float> mnt_cat1_z0; + std::vector<float> mnt_cat1_d0; + std::vector<float> mnt_cat1_iso01; + std::vector<float> mnt_cat1_iso0201; + std::vector<float> mnt_cat1_chi2ndof; + std::vector<float> mnt_cat1_chi2ndof_pix; + std::vector<float> mnt_cat1_refit_pt; + std::vector<int> mnt_cat1_n_pix; + std::vector<float> mnt_cat1_refit_ptratio; + std::vector<float> mnt_cat1_refit_chi2ndof; + std::vector<int> mnt_cat1_n_bl; + std::vector<float> mnt_cat1_bdtscore; + auto mon_cat1_pt = Monitored::Collection("pix4_sct0_pt", mnt_cat1_pt); + auto mon_cat1_z0 = Monitored::Collection("pix4_sct0_z0", mnt_cat1_z0); + auto mon_cat1_d0 = Monitored::Collection("pix4_sct0_d0", mnt_cat1_d0); + auto mon_cat1_iso01 = Monitored::Collection("pix4_sct0_iso01", mnt_cat1_iso01); + auto mon_cat1_iso0201 = Monitored::Collection("pix4_sct0_iso0201", mnt_cat1_iso0201); + auto mon_cat1_chi2ndof = Monitored::Collection("pix4_sct0_chi2ndof", mnt_cat1_chi2ndof); + auto mon_cat1_chi2ndof_pix = Monitored::Collection("pix4_sct0_chi2ndof_pix", mnt_cat1_chi2ndof_pix); + auto mon_cat1_refit_pt = Monitored::Collection("pix4_sct0_refit_pt", mnt_cat1_refit_pt); + auto mon_cat1_n_pix = Monitored::Collection("pix4_sct0_n_pix", mnt_cat1_n_pix); + auto mon_cat1_refit_ptratio = Monitored::Collection("pix4_sct0_refit_ptratio", mnt_cat1_refit_ptratio); + auto mon_cat1_refit_chi2ndof = Monitored::Collection("pix4_sct0_refit_chi2ndof", mnt_cat1_refit_chi2ndof); + auto mon_cat1_n_bl = Monitored::Collection("pix4_sct0_n_bl", mnt_cat1_n_bl); + auto mon_cat1_bdtscore = Monitored::Collection("pix4_sct0_bdtscore", mnt_cat1_bdtscore); + auto monDisTrkCat1 = Monitored::Group(m_monTool, mon_cat1_pt, mon_cat1_z0, mon_cat1_d0, mon_cat1_iso01, mon_cat1_iso0201, mon_cat1_chi2ndof, + mon_cat1_chi2ndof_pix, mon_cat1_refit_pt, mon_cat1_n_pix, mon_cat1_refit_ptratio, + mon_cat1_refit_chi2ndof, mon_cat1_n_bl, mon_cat1_bdtscore); + // + std::vector<float> mnt_cat2_pt; + std::vector<float> mnt_cat2_refit_pt; + std::vector<float> mnt_cat2_refit_z0; + std::vector<float> mnt_cat2_refit_d0; + std::vector<int> mnt_cat2_n_sct; + std::vector<float> mnt_cat2_refit_ptratio; + std::vector<float> mnt_cat2_refit_chi2ndof_ratio; + std::vector<float> mnt_cat2_iso01; + std::vector<float> mnt_cat2_iso0201; + std::vector<float> mnt_cat2_chi2ndof_pix; + std::vector<int> mnt_cat2_n_pix; + std::vector<float> mnt_cat2_bdtscore; + auto mon_cat2_pt = Monitored::Collection("pix4_sct1p_pt", mnt_cat2_pt); + auto mon_cat2_refit_pt = Monitored::Collection("pix4_sct1p_refit_pt", mnt_cat2_refit_pt); + auto mon_cat2_refit_z0 = Monitored::Collection("pix4_sct1p_refit_z0", mnt_cat2_refit_z0); + auto mon_cat2_refit_d0 = Monitored::Collection("pix4_sct1p_refit_d0", mnt_cat2_refit_d0); + auto mon_cat2_n_sct = Monitored::Collection("pix4_sct1p_n_sct", mnt_cat2_n_sct); + auto mon_cat2_refit_ptratio = Monitored::Collection("pix4_sct1p_refit_ptratio", mnt_cat2_refit_ptratio); + auto mon_cat2_refit_chi2ndof_ratio = Monitored::Collection("pix4_sct1p_refit_chi2ndof_ratio", mnt_cat2_refit_chi2ndof_ratio); + auto mon_cat2_iso01 = Monitored::Collection("pix4_sct1p_iso01", mnt_cat2_iso01); + auto mon_cat2_iso0201 = Monitored::Collection("pix4_sct1p_iso0201", mnt_cat2_iso0201); + auto mon_cat2_chi2ndof_pix = Monitored::Collection("pix4_sct1p_chi2ndof_pix", mnt_cat2_chi2ndof_pix); + auto mon_cat2_n_pix = Monitored::Collection("pix4_sct1p_n_pix", mnt_cat2_n_pix); + auto mon_cat2_bdtscore = Monitored::Collection("pix4_sct1p_bdtscore", mnt_cat2_bdtscore); + auto monDisTrkCat2 = Monitored::Group(m_monTool, mon_cat2_pt, mon_cat2_refit_pt, mon_cat2_refit_z0, mon_cat2_refit_d0, mon_cat2_n_sct, + mon_cat2_refit_ptratio, mon_cat2_refit_chi2ndof_ratio, mon_cat2_iso01, mon_cat2_iso0201, + mon_cat2_chi2ndof_pix, mon_cat2_n_pix, mon_cat2_bdtscore); + // + std::vector<float> mnt_cat3_pt; + std::vector<float> mnt_cat3_z0; + std::vector<float> mnt_cat3_d0; + std::vector<float> mnt_cat3_chi2ndof; + std::vector<float> mnt_cat3_chi2ndof_pix; + std::vector<float> mnt_cat3_iso01; + std::vector<float> mnt_cat3_iso0201; + std::vector<float> mnt_cat3_refit_pt; + std::vector<float> mnt_cat3_refit_z0; + std::vector<float> mnt_cat3_refit_d0; + std::vector<int> mnt_cat3_n_pix; + std::vector<int> mnt_cat3_n_bl; + std::vector<float> mnt_cat3_bdtscore; + auto mon_cat3_pt = Monitored::Collection("pix3_sct0_pt", mnt_cat3_pt); + auto mon_cat3_z0 = Monitored::Collection("pix3_sct0_z0", mnt_cat3_z0); + auto mon_cat3_d0 = Monitored::Collection("pix3_sct0_d0", mnt_cat3_d0); + auto mon_cat3_chi2ndof = Monitored::Collection("pix3_sct0_chi2ndof", mnt_cat3_chi2ndof); + auto mon_cat3_chi2ndof_pix = Monitored::Collection("pix3_sct0_chi2ndof_pix", mnt_cat3_chi2ndof_pix); + auto mon_cat3_iso01 = Monitored::Collection("pix3_sct0_iso01", mnt_cat3_iso01); + auto mon_cat3_iso0201 = Monitored::Collection("pix3_sct0_iso0201", mnt_cat3_iso0201); + auto mon_cat3_refit_pt = Monitored::Collection("pix3_sct0_refit_pt", mnt_cat3_refit_pt); + auto mon_cat3_refit_z0 = Monitored::Collection("pix3_sct0_refit_z0", mnt_cat3_refit_z0); + auto mon_cat3_refit_d0 = Monitored::Collection("pix3_sct0_refit_d0", mnt_cat3_refit_d0); + auto mon_cat3_n_pix = Monitored::Collection("pix3_sct0_n_pix", mnt_cat3_n_pix); + auto mon_cat3_n_bl = Monitored::Collection("pix3_sct0_n_bl", mnt_cat3_n_bl); + auto mon_cat3_bdtscore = Monitored::Collection("pix3_sct0_bdtscore", mnt_cat3_bdtscore); + auto monDisTrkCat3 = Monitored::Group(m_monTool, mon_cat3_pt, mon_cat3_z0, mon_cat3_d0, mon_cat3_chi2ndof, mon_cat3_chi2ndof_pix, + mon_cat3_iso01, mon_cat3_iso0201, mon_cat3_refit_pt, mon_cat3_refit_z0, mon_cat3_refit_d0, + mon_cat3_n_pix, mon_cat3_n_bl, mon_cat3_bdtscore); + // + std::vector<float> mnt_cat4_pt; + std::vector<float> mnt_cat4_z0; + std::vector<float> mnt_cat4_d0; + std::vector<float> mnt_cat4_refit_pt; + std::vector<float> mnt_cat4_refit_z0; + std::vector<float> mnt_cat4_refit_d0; + std::vector<int> mnt_cat4_n_pix; + std::vector<int> mnt_cat4_n_sct; + std::vector<float> mnt_cat4_refit_ptratio; + std::vector<int> mnt_cat4_n_bl; + std::vector<float> mnt_cat4_chi2ndof; + std::vector<float> mnt_cat4_iso01; + std::vector<float> mnt_cat4_iso0201; + std::vector<float> mnt_cat4_refit_chi2ndof; + std::vector<float> mnt_cat4_bdtscore; + auto mon_cat4_pt = Monitored::Collection("pix3_sct1p_pt", mnt_cat4_pt); + auto mon_cat4_z0 = Monitored::Collection("pix3_sct1p_z0", mnt_cat4_z0); + auto mon_cat4_d0 = Monitored::Collection("pix3_sct1p_d0", mnt_cat4_d0); + auto mon_cat4_refit_pt = Monitored::Collection("pix3_sct1p_refit_pt", mnt_cat4_refit_pt); + auto mon_cat4_refit_z0 = Monitored::Collection("pix3_sct1p_refit_z0", mnt_cat4_refit_z0); + auto mon_cat4_refit_d0 = Monitored::Collection("pix3_sct1p_refit_d0", mnt_cat4_refit_d0); + auto mon_cat4_n_pix = Monitored::Collection("pix3_sct1p_n_pix", mnt_cat4_n_pix); + auto mon_cat4_n_sct = Monitored::Collection("pix3_sct1p_n_sct", mnt_cat4_n_sct); + auto mon_cat4_refit_ptratio = Monitored::Collection("pix3_sct1p_refit_ptratio", mnt_cat4_refit_ptratio); + auto mon_cat4_n_bl = Monitored::Collection("pix3_sct1p_n_bl", mnt_cat4_n_bl); + auto mon_cat4_chi2ndof = Monitored::Collection("pix3_sct1p_chi2ndof", mnt_cat4_chi2ndof); + auto mon_cat4_iso01 = Monitored::Collection("pix3_sct1p_iso01", mnt_cat4_iso01); + auto mon_cat4_iso0201 = Monitored::Collection("pix3_sct1p_iso0201", mnt_cat4_iso0201); + auto mon_cat4_refit_chi2ndof = Monitored::Collection("pix3_sct1p_refit_chi2ndof", mnt_cat4_refit_chi2ndof); + auto mon_cat4_bdtscore = Monitored::Collection("pix3_sct1p_bdtscore", mnt_cat4_bdtscore); + auto monDisTrkCat4 = Monitored::Group(m_monTool, mon_cat4_pt, mon_cat4_z0, mon_cat4_d0, mon_cat4_refit_pt, mon_cat4_refit_z0, mon_cat4_refit_d0, + mon_cat4_n_pix, mon_cat4_n_sct, mon_cat4_refit_ptratio, mon_cat4_n_bl, mon_cat4_chi2ndof, + mon_cat4_iso01, mon_cat4_iso0201, mon_cat4_refit_chi2ndof, mon_cat4_bdtscore); + + // + + const std::string prefixIn = "disTrkCand"; + const std::string prefixOut = "disTrk"; + + unsigned int i_cand=0; + + for ( const xAOD::TrigComposite* cand : *disTrkCandContainer ) { + + ATH_MSG_VERBOSE("===== i_cand: " << i_cand++ << " =====" ); + + // category + int category = cand->getDetail<int>(prefixIn+"_category"); + if( category<=0 || category>=5 ) { + ATH_MSG_VERBOSE("category is out of range = " << category); + continue; + } + mnt_category.push_back(category); + + // get values + float pt = cand->getDetail<float>(prefixIn+"_pt"); + float refit_pt = cand->getDetail<float>(prefixIn+"_refit_pt"); + pt /= 1000.0; + refit_pt /= 1000.0; + int is_fail = cand->getDetail<int> (prefixIn+"_is_fail"); + float d0_wrtVtx = cand->getDetail<float>(prefixIn+"_d0_wrtVtx"); + float z0_wrtVtx = cand->getDetail<float>(prefixIn+"_z0_wrtVtx"); + float chi2 = cand->getDetail<float>(prefixIn+"_chi2"); + float ndof = cand->getDetail<float>(prefixIn+"_ndof"); + float chi2ndof = ( std::abs(ndof) > 1e-4 ) ? chi2 / ndof : 20; + int n_hits_pix = cand->getDetail<int> (prefixIn+"_n_hits_pix"); + int n_hits_sct = cand->getDetail<int> (prefixIn+"_n_hits_sct"); + int n_hits_bl = cand->getDetail<int> (prefixIn+"_n_hits_innermost"); + float iso3_dr01 = cand->getDetail<float>(prefixIn+"_iso3_dr01"); + iso3_dr01 /= 1000; + float iso3_dr02 = cand->getDetail<float>(prefixIn+"_iso3_dr02"); + iso3_dr02 /= 1000; + float refit_ptratio = ( std::abs(pt) > 1e-4 ) ? refit_pt / pt : 0; + float refit_d0_wrtVtx = cand->getDetail<float>(prefixIn+"_refit_d0_wrtVtx"); + float refit_z0_wrtVtx = cand->getDetail<float>(prefixIn+"_refit_z0_wrtVtx"); + float refit_chi2 = cand->getDetail<float>(prefixIn+"_refit_chi2"); + float refit_ndof = cand->getDetail<float>(prefixIn+"_refit_ndof"); + float refit_chi2ndof = ( std::abs(refit_ndof) > 1e-4 ) ? refit_chi2 / refit_ndof : 20; + float refit_chi2ndof_ratio = (std::abs(chi2ndof) > 1e-4 ) ? refit_chi2ndof / chi2ndof : 0; + float chi2_pix=0; float ndof_pix=0; + chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_ibl"); + chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix1"); + chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix2"); + chi2_pix += cand->getDetail<float>(prefixIn+"_chi2sum_br_pix3"); + ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_ibl"); + ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix1"); + ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix2"); + ndof_pix += cand->getDetail<float>(prefixIn+"_ndofsum_br_pix3"); + float chi2ndof_pix = ( std::abs(ndof_pix) > 1e-4 ) ? chi2_pix / ndof_pix : 0; + + // BDT score + float bdt_score = 0.0; + if( category==1 ) { + bdt_score = bdt_eval_pix4l_sct0(context, pt, z0_wrtVtx, d0_wrtVtx, iso3_dr01, iso3_dr02-iso3_dr01, chi2ndof, chi2ndof_pix, + refit_pt, n_hits_pix, refit_ptratio, refit_chi2ndof, n_hits_bl); + mnt_cat1_pt.push_back(pt); + mnt_cat1_z0.push_back(z0_wrtVtx); + mnt_cat1_d0.push_back(d0_wrtVtx); + mnt_cat1_iso01.push_back(iso3_dr01); + mnt_cat1_iso0201.push_back(iso3_dr02-iso3_dr01); + mnt_cat1_chi2ndof.push_back(chi2ndof); + mnt_cat1_chi2ndof_pix.push_back(chi2ndof_pix); + mnt_cat1_refit_pt.push_back(refit_pt); + mnt_cat1_n_pix.push_back(n_hits_pix); + mnt_cat1_refit_ptratio.push_back(refit_ptratio); + mnt_cat1_refit_chi2ndof.push_back(refit_chi2ndof); + mnt_cat1_n_bl.push_back(n_hits_bl); + mnt_cat1_bdtscore.push_back(bdt_score); + } + else if( category==2 ) { + bdt_score = bdt_eval_pix4l_sct1p(context, pt, refit_pt, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_sct, refit_ptratio, + refit_chi2ndof_ratio, iso3_dr01, iso3_dr02-iso3_dr01, is_fail, chi2ndof_pix, n_hits_pix); + mnt_cat2_pt.push_back(pt); + mnt_cat2_refit_pt.push_back(refit_pt); + mnt_cat2_refit_z0.push_back(refit_z0_wrtVtx); + mnt_cat2_refit_d0.push_back(refit_d0_wrtVtx); + mnt_cat2_n_sct.push_back(n_hits_sct); + mnt_cat2_refit_ptratio.push_back(refit_ptratio); + mnt_cat2_refit_chi2ndof_ratio.push_back(refit_chi2ndof_ratio); + mnt_cat2_iso01.push_back(iso3_dr01); + mnt_cat2_iso0201.push_back(iso3_dr02-iso3_dr01); + mnt_cat2_chi2ndof_pix.push_back(chi2ndof_pix); + mnt_cat2_n_pix.push_back(n_hits_pix); + mnt_cat2_bdtscore.push_back(bdt_score); + } + else if( category==3 ) { + bdt_score = bdt_eval_pix3l_sct0(context, pt, z0_wrtVtx, d0_wrtVtx, chi2ndof, chi2ndof_pix, iso3_dr01, iso3_dr02-iso3_dr01, + refit_pt, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_bl); + mnt_cat3_pt.push_back(pt); + mnt_cat3_z0.push_back(z0_wrtVtx); + mnt_cat3_d0.push_back(d0_wrtVtx); + mnt_cat3_chi2ndof.push_back(chi2ndof); + mnt_cat3_chi2ndof_pix.push_back(chi2ndof_pix); + mnt_cat3_iso01.push_back(iso3_dr01); + mnt_cat3_iso0201.push_back(iso3_dr02-iso3_dr01); + mnt_cat3_refit_pt.push_back(refit_pt); + mnt_cat3_refit_z0.push_back(refit_z0_wrtVtx); + mnt_cat3_refit_d0.push_back(refit_d0_wrtVtx); + mnt_cat3_n_pix.push_back(n_hits_pix); + mnt_cat3_n_bl.push_back(n_hits_bl); + mnt_cat3_bdtscore.push_back(bdt_score); + } + else if( category==4 ) { + bdt_score = bdt_eval_pix3l_sct1p(context, pt, z0_wrtVtx, d0_wrtVtx, refit_pt, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_sct, + refit_ptratio, is_fail, n_hits_bl, chi2ndof, iso3_dr01, iso3_dr02-iso3_dr01, refit_chi2ndof); + mnt_cat4_pt.push_back(pt); + mnt_cat4_z0.push_back(z0_wrtVtx); + mnt_cat4_d0.push_back(d0_wrtVtx); + mnt_cat4_refit_pt.push_back(refit_pt); + mnt_cat4_refit_z0.push_back(refit_z0_wrtVtx); + mnt_cat4_refit_d0.push_back(refit_d0_wrtVtx); + mnt_cat4_n_pix.push_back(n_hits_pix); + mnt_cat4_n_sct.push_back(n_hits_sct); + mnt_cat4_refit_ptratio.push_back(refit_ptratio); + mnt_cat4_n_bl.push_back(n_hits_bl); + mnt_cat4_chi2ndof.push_back(chi2ndof); + mnt_cat4_iso01.push_back(iso3_dr01); + mnt_cat4_iso0201.push_back(iso3_dr02-iso3_dr01); + mnt_cat4_refit_chi2ndof.push_back(refit_chi2ndof); + mnt_cat4_bdtscore.push_back(bdt_score); + } + ATH_MSG_VERBOSE("BDT score = " << bdt_score); + + // create EDM object + xAOD::TrigComposite *distrk = new xAOD::TrigComposite(); + distrk->makePrivateStore(); + disTrkBDTSelContainer->push_back(distrk); + + distrk->setDetail<int> (prefixOut+"_category", category); + distrk->setDetail<float>(prefixOut+"_pt", pt*1000.0); + float eta = cand->getDetail<float>(prefixIn+"_eta"); + float phi = cand->getDetail<float>(prefixIn+"_phi"); + distrk->setDetail<float>(prefixOut+"_eta", eta); + distrk->setDetail<float>(prefixOut+"_phi", phi); + distrk->setDetail<float>(prefixOut+"_refit_pt", refit_pt*1000.0); + distrk->setDetail<int> (prefixOut+"_is_fail", is_fail); + distrk->setDetail<float>(prefixOut+"_d0_wrtVtx", d0_wrtVtx); + distrk->setDetail<float>(prefixOut+"_z0_wrtVtx", z0_wrtVtx); + distrk->setDetail<float>(prefixOut+"_chi2", chi2); + distrk->setDetail<float>(prefixOut+"_ndof", ndof); + distrk->setDetail<int> (prefixOut+"_n_hits_pix", n_hits_pix); + distrk->setDetail<int> (prefixOut+"_n_hits_sct", n_hits_sct); + distrk->setDetail<int> (prefixOut+"_n_hits_innermost", n_hits_bl); + distrk->setDetail<float>(prefixOut+"_iso3_dr01", iso3_dr01*1000.0); + distrk->setDetail<float>(prefixOut+"_iso3_dr02", iso3_dr02*1000.0); + distrk->setDetail<float>(prefixOut+"_refit_d0_wrtVtx", refit_d0_wrtVtx); + distrk->setDetail<float>(prefixOut+"_refit_z0_wrtVtx", refit_z0_wrtVtx); + distrk->setDetail<float>(prefixOut+"_refit_chi2", refit_chi2); + distrk->setDetail<float>(prefixOut+"_refit_ndof", refit_ndof); + distrk->setDetail<float>(prefixOut+"_chi2ndof_pix", chi2ndof_pix); + distrk->setDetail<float>(prefixOut+"_bdtscore", bdt_score); + + ATH_MSG_VERBOSE("Created a new entry EDM" ); + } + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +inline float TrigDisappearingTrackHypoAlg::BDTinput(float var) const { return ( std::abs(var) < 1e-5 ) ? 1e-5 : var; } + +float TrigDisappearingTrackHypoAlg::bdt_eval_pix4l_sct0 +(const EventContext& context, + float pt, float z0, float d0, float trkiso3_dr01, float trkiso3_dr0201, float chi2ndof, float chi2ndof_pix, + float refit_pt, int n_pix, float refit_ptratio, float refit_chi2ndof, int n_bl) const +{ + *m_tmva_pix4l_sct0_pt.get(context) = BDTinput(pt); + *m_tmva_pix4l_sct0_z0.get(context) = BDTinput(z0); + *m_tmva_pix4l_sct0_d0.get(context) = BDTinput(d0); + *m_tmva_pix4l_sct0_trkiso3_dr01.get(context) = BDTinput(trkiso3_dr01); + *m_tmva_pix4l_sct0_trkiso3_dr0201.get(context) = BDTinput(trkiso3_dr0201); + *m_tmva_pix4l_sct0_chi2ndof.get(context) = BDTinput(chi2ndof); + *m_tmva_pix4l_sct0_chi2ndof_pix.get(context) = BDTinput(chi2ndof_pix); + *m_tmva_pix4l_sct0_refit_pt.get(context) = BDTinput(refit_pt); + *m_tmva_pix4l_sct0_n_pix.get(context) = BDTinput((float)n_pix); + *m_tmva_pix4l_sct0_refit_ptratio.get(context) = BDTinput(refit_ptratio); + *m_tmva_pix4l_sct0_refit_chi2ndof.get(context) = BDTinput(refit_chi2ndof); + *m_tmva_pix4l_sct0_n_bl.get(context) = BDTinput((float)n_bl); + // + return (**m_tmva_pix4l_sct0_reader.get(context)).EvaluateMVA("BDT method"); +} + +float TrigDisappearingTrackHypoAlg::bdt_eval_pix4l_sct1p +(const EventContext& context, + float pt, float refit_pt, float refit_z0, float refit_d0, int n_sct, float refit_ptratio, + float refit_chi2ndof_ratio, float trkiso3_dr01, float trkiso3_dr0201, int is_fail, float chi2ndof_pix, int n_pix) const +{ + *m_tmva_pix4l_sct1p_pt.get(context) = BDTinput(pt); + *m_tmva_pix4l_sct1p_refit_pt.get(context) = BDTinput(refit_pt); + *m_tmva_pix4l_sct1p_refit_z0.get(context) = BDTinput(refit_z0); + *m_tmva_pix4l_sct1p_refit_d0.get(context) = BDTinput(refit_d0); + *m_tmva_pix4l_sct1p_n_sct.get(context) = BDTinput((float)n_sct); + *m_tmva_pix4l_sct1p_refit_ptratio.get(context) = BDTinput(refit_ptratio); + *m_tmva_pix4l_sct1p_refit_chi2ndof_ratio.get(context) = BDTinput(refit_chi2ndof_ratio); + *m_tmva_pix4l_sct1p_trkiso3_dr01.get(context) = BDTinput(trkiso3_dr01); + *m_tmva_pix4l_sct1p_trkiso3_dr0201.get(context) = BDTinput(trkiso3_dr0201); + *m_tmva_pix4l_sct1p_is_fail.get(context) = BDTinput((float)is_fail); + *m_tmva_pix4l_sct1p_chi2ndof_pix.get(context) = BDTinput(chi2ndof_pix); + *m_tmva_pix4l_sct1p_n_pix.get(context) = BDTinput((float)n_pix); + + return (**m_tmva_pix4l_sct1p_reader.get(context)).EvaluateMVA("BDT method"); +} + +float TrigDisappearingTrackHypoAlg::bdt_eval_pix3l_sct0 +(const EventContext& context, + float pt, float z0, float d0, float chi2ndof, float chi2ndof_pix, float trkiso3_dr01, float trkiso3_dr0201, + float refit_pt, float refit_z0, float refit_d0, int n_pix, int n_bl) const +{ + *m_tmva_pix3l_sct0_pt.get(context) = BDTinput(pt); + *m_tmva_pix3l_sct0_z0.get(context) = BDTinput(z0); + *m_tmva_pix3l_sct0_d0.get(context) = BDTinput(d0); + *m_tmva_pix3l_sct0_chi2ndof.get(context) = BDTinput(chi2ndof); + *m_tmva_pix3l_sct0_chi2ndof_pix.get(context) = BDTinput(chi2ndof_pix); + *m_tmva_pix3l_sct0_trkiso3_dr01.get(context) = BDTinput(trkiso3_dr01); + *m_tmva_pix3l_sct0_trkiso3_dr0201.get(context) = BDTinput(trkiso3_dr0201); + *m_tmva_pix3l_sct0_refit_pt.get(context) = BDTinput(refit_pt); + *m_tmva_pix3l_sct0_refit_z0.get(context) = BDTinput(refit_z0); + *m_tmva_pix3l_sct0_refit_d0.get(context) = BDTinput(refit_d0); + *m_tmva_pix3l_sct0_n_pix.get(context) = BDTinput((float)n_pix); + *m_tmva_pix3l_sct0_n_bl.get(context) = BDTinput((float)n_bl); + + return (**m_tmva_pix3l_sct0_reader.get(context)).EvaluateMVA("BDT method"); +} + +float TrigDisappearingTrackHypoAlg::bdt_eval_pix3l_sct1p +(const EventContext& context, + float pt, float z0, float d0, float refit_pt, float refit_z0, float refit_d0, + int n_pix, int n_sct, float refit_ptratio, int is_fail, int n_bl, + float chi2ndof, float trkiso3_dr01, float trkiso3_dr0201, float refit_chi2ndof) const +{ + *m_tmva_pix3l_sct1p_pt.get(context) = BDTinput(pt); + *m_tmva_pix3l_sct1p_z0.get(context) = BDTinput(z0); + *m_tmva_pix3l_sct1p_d0.get(context) = BDTinput(d0); + *m_tmva_pix3l_sct1p_refit_pt.get(context) = BDTinput(refit_pt); + *m_tmva_pix3l_sct1p_refit_z0.get(context) = BDTinput(refit_z0); + *m_tmva_pix3l_sct1p_refit_d0.get(context) = BDTinput(refit_d0); + *m_tmva_pix3l_sct1p_n_pix.get(context) = BDTinput((float)n_pix); + *m_tmva_pix3l_sct1p_n_sct.get(context) = BDTinput((float)n_sct); + *m_tmva_pix3l_sct1p_refit_ptratio.get(context) = BDTinput(refit_ptratio); + *m_tmva_pix3l_sct1p_is_fail.get(context) = BDTinput((float)is_fail); + *m_tmva_pix3l_sct1p_n_bl.get(context) = BDTinput((float)n_bl); + *m_tmva_pix3l_sct1p_chi2ndof.get(context) = BDTinput(chi2ndof); + *m_tmva_pix3l_sct1p_trkiso3_dr01.get(context) = BDTinput(trkiso3_dr01); + *m_tmva_pix3l_sct1p_trkiso3_dr0201.get(context) = BDTinput(trkiso3_dr0201); + *m_tmva_pix3l_sct1p_refit_chi2ndof.get(context) = BDTinput(refit_chi2ndof); + + return (**m_tmva_pix3l_sct1p_reader.get(context)).EvaluateMVA("BDT method"); +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoAlg.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoAlg.h new file mode 100644 index 0000000000000000000000000000000000000000..5eaad82dcb4d11de1d4f322e30186477f0325590 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoAlg.h @@ -0,0 +1,115 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ +#ifndef TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKHYPOALG_H +#define TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKHYPOALG_H + +#include <string> + +#include "Gaudi/Property.h" +#include "DecisionHandling/HypoBase.h" +#include "TrigDisappearingTrackHypoTool.h" +#include "AthenaMonitoringKernel/GenericMonitoringTool.h" +#include "AthenaKernel/SlotSpecificObj.h" +#include "TMVA/Reader.h" + +/** + * @class TrigDisappearingTrackHypoAlg + * @brief Implements Hypo selection on triggering disappearing tracks + * @author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK + **/ + +class TrigDisappearingTrackHypoAlg : public ::HypoBase +{ +public: + + TrigDisappearingTrackHypoAlg( const std::string& name, ISvcLocator* pSvcLocator ); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext& context) const override; + +private: + + ToolHandleArray< TrigDisappearingTrackHypoTool > m_hypoTools {this, "HypoTools", {}, "Tools to perfrom selection"}; + SG::ReadHandleKey< xAOD::TrigCompositeContainer > m_DisTrkCandKey {this, "DisTrkCand", "HLT_DisTrkCand", ""}; + SG::WriteHandleKey<xAOD::TrigCompositeContainer> m_DisTrkBDTSelKey {this, "DisTrkBDTSel","HLT_DisTrkBDTSel", ""}; + + StatusCode createCandidates(const EventContext&, const xAOD::TrigCompositeContainer*, xAOD::TrigCompositeContainer*) const; + + ToolHandle<GenericMonitoringTool> m_monTool{ this, "MonTool", "", "Monitoring tool" }; + + // BDT selection methods + float bdt_eval_pix4l_sct0 (const EventContext&, float, float, float, float, float, float, float, float, int, float, float, int) const; + float bdt_eval_pix4l_sct1p(const EventContext&, float, float, float, float, int, float, float, float, float, int, float, int) const; + float bdt_eval_pix3l_sct0 (const EventContext&, float, float, float, float, float, float, float, float, float, float, int, int) const; + float bdt_eval_pix3l_sct1p(const EventContext&, float, float, float, float, float, float, int, int, float, int, int, float, float, float, float) const; + inline float BDTinput(float) const; + + // TMVA reader + mutable SG::SlotSpecificObj<std::unique_ptr<TMVA::Reader> > m_tmva_pix4l_sct0_reader ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<std::unique_ptr<TMVA::Reader> > m_tmva_pix4l_sct1p_reader ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<std::unique_ptr<TMVA::Reader> > m_tmva_pix3l_sct0_reader ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<std::unique_ptr<TMVA::Reader> > m_tmva_pix3l_sct1p_reader ATLAS_THREAD_SAFE; + + // TMVA variables + // pix4l_sct0 + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_pt ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_z0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_d0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_trkiso3_dr01 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_trkiso3_dr0201 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_chi2ndof ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_chi2ndof_pix ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_refit_pt ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_n_pix ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_refit_ptratio ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_refit_chi2ndof ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct0_n_bl ATLAS_THREAD_SAFE; + + // pix4l_sct1p + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_pt ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_refit_pt ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_refit_z0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_refit_d0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_n_sct ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_refit_ptratio ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_refit_chi2ndof_ratio ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_trkiso3_dr01 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_trkiso3_dr0201 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_is_fail ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_chi2ndof_pix ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix4l_sct1p_n_pix ATLAS_THREAD_SAFE; + + // pix3l_sct0 + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_pt ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_z0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_d0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_chi2ndof ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_chi2ndof_pix ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_trkiso3_dr01 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_trkiso3_dr0201 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_refit_pt ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_refit_z0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_refit_d0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_n_pix ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct0_n_bl ATLAS_THREAD_SAFE; + + // pix3l_sct1p + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_pt ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_z0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_d0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_refit_pt ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_refit_z0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_refit_d0 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_n_pix ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_n_sct ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_refit_ptratio ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_is_fail ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_n_bl ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_chi2ndof ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_trkiso3_dr01 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_trkiso3_dr0201 ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_pix3l_sct1p_refit_chi2ndof ATLAS_THREAD_SAFE; +}; + +#endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKHYPOALG_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoTool.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoTool.cxx new file mode 100644 index 0000000000000000000000000000000000000000..68ca254133fcd667736f5668c740a85f0454bba7 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoTool.cxx @@ -0,0 +1,180 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + + * Trigger Hypo Tool, that is aimed at triggering disappearing track candidates + * author Kunihiro Nagano <kunihiro.nagano@cern.ch> +*/ + +#include "TrigCompositeUtils/TrigCompositeUtils.h" +#include "TrigCompositeUtils/HLTIdentifier.h" +#include "TrigCompositeUtils/Combinators.h" +#include "AthenaMonitoringKernel/Monitored.h" +#include "TrigDisappearingTrackHypoTool.h" +#include "GaudiKernel/PhysicalConstants.h" + +using namespace TrigCompositeUtils; + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +TrigDisappearingTrackHypoTool::TrigDisappearingTrackHypoTool( const std::string& type, + const std::string& name, + const IInterface* parent ) + : AthAlgTool( type, name, parent ), + m_decisionId( HLT::Identifier::fromToolName( name ) ) {} + +TrigDisappearingTrackHypoTool::~TrigDisappearingTrackHypoTool() {} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigDisappearingTrackHypoTool::initialize() +{ + ATH_MSG_INFO( "Initialization completed successfully:" ); + ATH_MSG_INFO( " cutTrackPtGeV = " << m_cutTrackPtGeV ); + ATH_MSG_INFO( "Tool configured for chain/id: " << m_decisionId ); + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigDisappearingTrackHypoTool::decide( std::vector<DisTrkHypoInfo>& toolInputs ) const +{ + size_t numTrigger = m_cutTrackPtGeV.size(); + size_t numDisTrks = toolInputs.size(); + + ATH_MSG_VERBOSE( "Number of DisTrks = " << numDisTrks ); + + if ( numTrigger == 1 ) { + ATH_MSG_VERBOSE( "Applying selection of single for " << m_decisionId ); + return inclusiveSelection(toolInputs); + } + else { + ATH_MSG_VERBOSE( "Applying selection of multiplicity for " << m_decisionId ); + return multiplicitySelection(toolInputs); + } + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigDisappearingTrackHypoTool::inclusiveSelection(std::vector<DisTrkHypoInfo>& toolInputs) const +{ + bool isPassed = false; + unsigned int iDisTrk=0; + for ( auto& input: toolInputs ) { + ATH_MSG_VERBOSE( "--- iDisTrk=" << iDisTrk << " ---" ); + if ( TrigCompositeUtils::passed( m_decisionId.numeric(), input.previousDecisionsIDs ) ) { + if ( decideOnSingleObject( input, 0 )==true ) { + ATH_MSG_VERBOSE( " Passed selection --> adding DecisionID" ); + isPassed = true; + TrigCompositeUtils::addDecisionID(m_decisionId, input.decision); + } + } else { + ATH_MSG_VERBOSE( " Not match DecisionID: " << m_decisionId ); + } + ++iDisTrk; + } + + ATH_MSG_VERBOSE( "Inclusive selection isPassed = " << isPassed ); + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigDisappearingTrackHypoTool::multiplicitySelection(std::vector<DisTrkHypoInfo>& toolInputs) const +{ + HLT::Index2DVec passingSelection( m_cutTrackPtGeV.size() ); + + for ( size_t cutIndex=0; cutIndex < m_cutTrackPtGeV.size(); ++cutIndex ) { + size_t elementIndex{ 0 }; + for ( auto& input: toolInputs ) { + if ( TrigCompositeUtils::passed( m_decisionId.numeric(), input.previousDecisionsIDs ) ) { + if ( decideOnSingleObject( input, cutIndex ) == true ) { + ATH_MSG_VERBOSE( "Pass through selection " << m_decisionId << " : Event[" << elementIndex << "]" ); + passingSelection[cutIndex].push_back( elementIndex ); + } + } + else { + ATH_MSG_VERBOSE( "Not match DecisionID " << m_decisionId ); + } + elementIndex++; + } + // If no object passes the selection, multipul selection should stop. + if ( passingSelection[cutIndex].empty() ) { + ATH_MSG_VERBOSE( "No object passed selection " << cutIndex << " rejecting" ); + return StatusCode::SUCCESS; + } + } + + std::set<size_t> passingIndices; + HLT::elementsInUniqueCombinations( passingSelection, passingIndices ); + + if ( passingIndices.empty() ) { + ATH_MSG_VERBOSE( "No track passed through selection " << m_decisionId ); + return StatusCode::SUCCESS; + } + + for ( auto idx: passingIndices ) { + ATH_MSG_VERBOSE( "track[" << idx << "] passes through Chain/ID " << m_decisionId << " with pT" ); + TrigCompositeUtils::addDecisionID( m_decisionId.numeric(), toolInputs[idx].decision ); + } + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +bool TrigDisappearingTrackHypoTool::decideOnSingleObject( DisTrkHypoInfo& input, size_t cutIndex ) const +{ + // values + const std::string prefix = "disTrk"; + + auto distrk = input.disTrk; + + int category = distrk->getDetail<int> (prefix+"_category"); + float pt = distrk->getDetail<float>(prefix+"_pt"); + float refit_pt = distrk->getDetail<float>(prefix+"_refit_pt"); + float bdt_score = distrk->getDetail<float>(prefix+"_bdtscore"); + pt /= 1000.0; + refit_pt /= 1000.0; + + // selection + bool is_passed = false; + if( category==1 ) { + float bdt_threshold_pix4l_sct0 = m_cutBDTPix4Sct0[cutIndex]; + float pt_threshold_pix4l_sct0 = m_cutTrackPtGeV[cutIndex]; + if( pt >= pt_threshold_pix4l_sct0 && bdt_score >= bdt_threshold_pix4l_sct0 ) is_passed = true; + } + else if( category==2 ) { + float bdt_threshold_pix4l_sct1p = m_cutBDTPix4Sct1p[cutIndex]; + float refit_pt_threshold_pix4l_sct1p = m_cutTrackPtGeV[cutIndex]; + if( refit_pt >= refit_pt_threshold_pix4l_sct1p && bdt_score >= bdt_threshold_pix4l_sct1p ) is_passed = true; + } + else if( category==3 ) { + float bdt_threshold_pix3l_sct0 = m_cutBDTPix3Sct0[cutIndex]; + float pt_threshold_pix3l_sct0 = m_cutTrackPtGeV[cutIndex]; + if( pt >= pt_threshold_pix3l_sct0 && bdt_score >= bdt_threshold_pix3l_sct0 ) is_passed = true; + } + else if( category==4 ) { + float bdt_threshold_pix3l_sct1p = m_cutBDTPix3Sct1p[cutIndex]; + float refit_pt_threshold_pix3l_sct1p = m_cutTrackPtGeV[cutIndex]; + if( refit_pt >= refit_pt_threshold_pix3l_sct1p && bdt_score >= bdt_threshold_pix3l_sct1p ) is_passed = true; + } + else { + ATH_MSG_VERBOSE( " category is out of range = " << category ); + } + ATH_MSG_VERBOSE( " isPassed = " << is_passed << ", cut index / pT / refitPt / BDT score = " << cutIndex << " / " << pt << " / " << refit_pt << " / " << bdt_score); + + // + return is_passed; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoTool.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoTool.h new file mode 100644 index 0000000000000000000000000000000000000000..2a43b834d684fc987a75f0d98d0cface1fcca989 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackHypoTool.h @@ -0,0 +1,56 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ +#ifndef TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKHYPOTOOL_H +#define TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKHYPOTOOL_H + +#include "Gaudi/Property.h" +#include "AthenaBaseComps/AthAlgTool.h" +#include "TrigCompositeUtils/TrigCompositeUtils.h" +#include "xAODTracking/TrackParticlexAODHelpers.h" +#include "xAODTracking/TrackParticleContainer.h" +#include <string> + +/** + * @class TrigDisappearingTrackHypoTool + * @brief Generated the decision for hypo thats triggers disappearing track + * @author Kunihiro Nagano <kunihiro.nagano@cern.ch> + **/ + +class TrigDisappearingTrackHypoTool : virtual public ::AthAlgTool +{ +public: + TrigDisappearingTrackHypoTool( const std::string& type, + const std::string& name, + const IInterface* parent ); + + virtual ~TrigDisappearingTrackHypoTool(); + virtual StatusCode initialize() override; + + struct DisTrkHypoInfo { + TrigCompositeUtils::Decision* decision; + const xAOD::TrigComposite* disTrk; + const TrigCompositeUtils::DecisionIDContainer previousDecisionsIDs; + }; + + /** + * @brief decides upon a collection of tracks + **/ + StatusCode decide( std::vector<DisTrkHypoInfo>& ) const; + +private: + + HLT::Identifier m_decisionId; + Gaudi::Property< std::vector<float> > m_cutTrackPtGeV { this, "cutTrackPtGeV", { float(10.0) }, "Track pT requirement in GeV" }; + Gaudi::Property< std::vector<float> > m_cutBDTPix4Sct0 { this, "cutBDTPix4Sct0", { float(0.05) }, "BDT score thershold for Pix4l_Sct0 category" }; + Gaudi::Property< std::vector<float> > m_cutBDTPix4Sct1p { this, "cutBDTPix4Sct1p",{ float(0.04) }, "BDT score thershold for Pix4l_Sct1p category" }; + Gaudi::Property< std::vector<float> > m_cutBDTPix3Sct0 { this, "cutBDTPix3Sct0", { float(0.05) }, "BDT score thershold for Pix3l_Sct0 category" }; + Gaudi::Property< std::vector<float> > m_cutBDTPix3Sct1p { this, "cutBDTPix3Sct1p",{ float(0.04) }, "BDT score thershold for Pix3l_Sct1p category" }; + + // + StatusCode inclusiveSelection( std::vector<DisTrkHypoInfo>& ) const; + StatusCode multiplicitySelection( std::vector<DisTrkHypoInfo>& ) const; + bool decideOnSingleObject( DisTrkHypoInfo&, size_t ) const; +}; + +#endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKHYPOTOOL_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoAlg.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoAlg.cxx deleted file mode 100644 index bbc55e9f769457c7c365f64ac3b79d9c5c881c2f..0000000000000000000000000000000000000000 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoAlg.cxx +++ /dev/null @@ -1,111 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration - - * Trigger Hypo Tool, that is aimed at triggering large dEdx tracks - * author Kunihiro Nagano <kunihiro.nagano@cern.ch> -*/ -#include "TrigDisappearingTrackTriggerHypoAlg.h" -#include "AthViews/ViewHelper.h" -#include "TrigCompositeUtils/TrigCompositeUtils.h" -#include "GaudiKernel/SystemOfUnits.h" - -using TrigCompositeUtils::createAndStore; -using TrigCompositeUtils::DecisionContainer; -using TrigCompositeUtils::DecisionAuxContainer; -using TrigCompositeUtils::DecisionIDContainer; -using TrigCompositeUtils::decisionIDs; -using TrigCompositeUtils::newDecisionIn; -using TrigCompositeUtils::linkToPrevious; -using TrigCompositeUtils::viewString; -using TrigCompositeUtils::featureString; -using TrigCompositeUtils::hypoAlgNodeName; -using TrigCompositeUtils::findLink; -using TrigCompositeUtils::LinkInfo; -using TrigCompositeUtils::Decision; -using TrigCompositeUtils::allFailed; - -TrigDisappearingTrackTriggerHypoAlg::TrigDisappearingTrackTriggerHypoAlg( const std::string& name, - ISvcLocator* pSvcLocator ) : - ::HypoBase( name, pSvcLocator ) {} - - -StatusCode TrigDisappearingTrackTriggerHypoAlg::initialize() -{ - CHECK( m_hypoTools.retrieve() ); - CHECK( m_DisTrkCandKey.initialize() ); - CHECK( m_DisTrkBDTSelKey.initialize()); - return StatusCode::SUCCESS; -} - -StatusCode TrigDisappearingTrackTriggerHypoAlg::execute( const EventContext& context ) const -{ - ATH_MSG_DEBUG( name() << "..." ); - auto previousDecisionsHandle = SG::makeHandle( decisionInput(), context ); - ATH_CHECK( previousDecisionsHandle.isValid() ); - - // new output decisions - ATH_MSG_DEBUG( "Creating new output decision handle" ); - SG::WriteHandle<DecisionContainer> outputHandle = createAndStore(decisionOutput(), context ); - auto decisions = outputHandle.ptr(); - - // previous decisions - ATH_MSG_DEBUG( "Running with " << previousDecisionsHandle->size() << " previous decisions" ); - if(previousDecisionsHandle->size()!=1) { - ATH_MSG_ERROR( "Previous decision handle size isn't 1. It is" << previousDecisionsHandle->size() ); - return StatusCode::FAILURE; - } - const Decision * previousDecision = previousDecisionsHandle->at(0); - - TrigCompositeUtils::DecisionIDContainer previousDecisionIDs; - TrigCompositeUtils::decisionIDs(previousDecision, previousDecisionIDs); - - // input Disappearing objects - auto DisTrkCandHandle = SG::makeHandle(m_DisTrkCandKey, context ); - ATH_CHECK( DisTrkCandHandle.isValid() ); - ATH_MSG_DEBUG( "DisTrkCand handle size: " << DisTrkCandHandle->size() ); - - const xAOD::TrigCompositeContainer * DisTrkCandContainer = DisTrkCandHandle.get(); - - if( DisTrkCandContainer == nullptr ) { - ATH_MSG_ERROR( "ERROR Cannot get DisappearingTrks container" ); - return StatusCode::FAILURE; - } - - // output EDM object - auto DisTrkBDTSelContainer = std::make_unique<xAOD::TrigCompositeContainer>(); - auto DisTrkBDTSelContainerAux = std::make_unique<xAOD::TrigCompositeAuxContainer>(); - DisTrkBDTSelContainer->setStore(DisTrkBDTSelContainerAux.get()); - - // create decision - auto d = newDecisionIn( decisions , previousDecision, hypoAlgNodeName(), context ); - TrigDisappearingTrackTriggerHypoTool::TrackInfo trkInfo{ d, DisTrkCandContainer, *DisTrkBDTSelContainer, previousDecisionIDs }; - - // Loop over all hypoToolinputs and get their decisions - for ( auto & tool: m_hypoTools ) { - ATH_CHECK( tool->decide( trkInfo ) ); - } - - DecisionContainer::iterator it = decisions->begin(); - bool isPassed = false; - while(it != decisions->end()) { - if (allFailed( *it )) { - it = decisions->erase(it); - } else { - isPassed = true; - ++it; - } - } - - // record link to EDM object if it is passed - if( isPassed ) { - SG::WriteHandle<xAOD::TrigCompositeContainer> DisTrkBDTSelHandle(m_DisTrkBDTSelKey, context); - ATH_CHECK( DisTrkBDTSelHandle.record( std::move( DisTrkBDTSelContainer ), std::move( DisTrkBDTSelContainerAux ) ) ); - ATH_CHECK( d->setObjectLink( featureString(), ElementLink<xAOD::TrigCompositeContainer>( m_DisTrkBDTSelKey.key(), 0) ) ); - } - - ATH_CHECK( hypoBaseOutputProcessing(outputHandle) ); - - // - return StatusCode::SUCCESS; -} - diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoAlg.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoAlg.h deleted file mode 100644 index 52658ca3beccf04691a7c922477eea2f21b38018..0000000000000000000000000000000000000000 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoAlg.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -*/ -#ifndef TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKTRIGGERHYPOALG_H -#define TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKTRIGGERHYPOALG_H - -#include "Gaudi/Property.h" - -#include <string> -#include "TrigDisappearingTrackTriggerHypoTool.h" -#include "DecisionHandling/HypoBase.h" - -/** - * @class TrigDisappearingTrackTriggerHypoAlg - * @brief Implements Hypo selection on triggering large Disappearing tracks - * @author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK - **/ - -class TrigDisappearingTrackTriggerHypoAlg : public ::HypoBase -{ -public: - - TrigDisappearingTrackTriggerHypoAlg( const std::string& name, ISvcLocator* pSvcLocator ); - - virtual StatusCode initialize() override; - virtual StatusCode execute(const EventContext& context) const override; - -private: - ToolHandleArray< TrigDisappearingTrackTriggerHypoTool > m_hypoTools {this, "HypoTools", {}, "Tools to perfrom selection"}; - SG::ReadHandleKey< xAOD::TrigCompositeContainer > m_DisTrkCandKey {this, "DisTrkCand", "HLT_DisTrkCand", ""}; - // - SG::WriteHandleKey<xAOD::TrigCompositeContainer> m_DisTrkBDTSelKey {this, "DisTrkBDTSel","HLT_DisTrkBDTSel", ""}; -}; - -#endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKTRIGGERHYPOALG_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoTool.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoTool.cxx deleted file mode 100644 index 363162f4ba918d2555b576f35f3f8126bfad3011..0000000000000000000000000000000000000000 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoTool.cxx +++ /dev/null @@ -1,594 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration - - * Trigger Hypo Tool, that is aimed at triggering disappearing track candidates - * author Kunihiro Nagano <kunihiro.nagano@cern.ch> -*/ - -#include "TrigCompositeUtils/TrigCompositeUtils.h" -#include "TrigCompositeUtils/HLTIdentifier.h" -#include "TrigCompositeUtils/Combinators.h" -#include "AthenaMonitoringKernel/Monitored.h" -#include "TrigDisappearingTrackTriggerHypoTool.h" -#include "GaudiKernel/PhysicalConstants.h" - -#include "PathResolver/PathResolver.h" - -using namespace TrigCompositeUtils; - -// ------------------------------------------------------------------------------------------------ -// ------------------------------------------------------------------------------------------------ - -TrigDisappearingTrackTriggerHypoTool::TrigDisappearingTrackTriggerHypoTool( const std::string& type, - const std::string& name, - const IInterface* parent ) - : AthAlgTool( type, name, parent ), - m_decisionId( HLT::Identifier::fromToolName( name ) ) {} - -// ------------------------------------------------------------------------------------------------ -// ------------------------------------------------------------------------------------------------ - -TrigDisappearingTrackTriggerHypoTool::~TrigDisappearingTrackTriggerHypoTool() {} - -// ------------------------------------------------------------------------------------------------ -// ------------------------------------------------------------------------------------------------ - -StatusCode TrigDisappearingTrackTriggerHypoTool::initialize() -{ - if ( !m_monTool.empty() ) CHECK( m_monTool.retrieve() ); - - ATH_MSG_INFO( "Initialization completed successfully:" ); - ATH_MSG_INFO( "cutTrackPtGeV = " << m_cutTrackPtGeV ); - ATH_MSG_INFO( "Tool configured for chain/id: " << m_decisionId ); - - TMVA::Reader reader; - m_tmva_pix4l_sct0_reader = new TMVA::Reader( "!Color:!Silent" ); - m_tmva_pix4l_sct1p_reader = new TMVA::Reader( "!Color:!Silent" ); - m_tmva_pix3l_sct0_reader = new TMVA::Reader( "!Color:!Silent" ); - m_tmva_pix3l_sct1p_reader = new TMVA::Reader( "!Color:!Silent" ); - - // --- declare variables to the reader - // pix4l_sct0 - m_tmva_pix4l_sct0_reader->AddVariable("pt", &m_tmva_pix4l_sct0_pt); - m_tmva_pix4l_sct0_reader->AddVariable("z0", &m_tmva_pix4l_sct0_z0); - m_tmva_pix4l_sct0_reader->AddVariable("d0", &m_tmva_pix4l_sct0_d0); - m_tmva_pix4l_sct0_reader->AddVariable("trkiso3_dr01", &m_tmva_pix4l_sct0_trkiso3_dr01); - m_tmva_pix4l_sct0_reader->AddVariable("trkiso3_dr0201", &m_tmva_pix4l_sct0_trkiso3_dr0201); - m_tmva_pix4l_sct0_reader->AddVariable("chi2ndof", &m_tmva_pix4l_sct0_chi2ndof); - m_tmva_pix4l_sct0_reader->AddVariable("chi2ndof_pix", &m_tmva_pix4l_sct0_chi2ndof_pix); - m_tmva_pix4l_sct0_reader->AddVariable("refit_pt", &m_tmva_pix4l_sct0_refit_pt); - m_tmva_pix4l_sct0_reader->AddVariable("n_pix", &m_tmva_pix4l_sct0_n_pix); - m_tmva_pix4l_sct0_reader->AddVariable("refit_ptratio", &m_tmva_pix4l_sct0_refit_ptratio); - m_tmva_pix4l_sct0_reader->AddVariable("refit_chi2ndof", &m_tmva_pix4l_sct0_refit_chi2ndof); - m_tmva_pix4l_sct0_reader->AddVariable("n_bl", &m_tmva_pix4l_sct0_n_bl); - - // pix4l_sct1p - m_tmva_pix4l_sct1p_reader->AddVariable("pt", &m_tmva_pix4l_sct1p_pt); - m_tmva_pix4l_sct1p_reader->AddVariable("refit_pt", &m_tmva_pix4l_sct1p_refit_pt); - m_tmva_pix4l_sct1p_reader->AddVariable("refit_z0", &m_tmva_pix4l_sct1p_refit_z0); - m_tmva_pix4l_sct1p_reader->AddVariable("refit_d0", &m_tmva_pix4l_sct1p_refit_d0); - m_tmva_pix4l_sct1p_reader->AddVariable("n_sct", &m_tmva_pix4l_sct1p_n_sct); - m_tmva_pix4l_sct1p_reader->AddVariable("refit_ptratio", &m_tmva_pix4l_sct1p_refit_ptratio); - m_tmva_pix4l_sct1p_reader->AddVariable("refit_chi2ndof_ratio", &m_tmva_pix4l_sct1p_refit_chi2ndof_ratio); - m_tmva_pix4l_sct1p_reader->AddVariable("trkiso3_dr01", &m_tmva_pix4l_sct1p_trkiso3_dr01); - m_tmva_pix4l_sct1p_reader->AddVariable("trkiso3_dr0201", &m_tmva_pix4l_sct1p_trkiso3_dr0201); - m_tmva_pix4l_sct1p_reader->AddVariable("is_fail", &m_tmva_pix4l_sct1p_is_fail); - m_tmva_pix4l_sct1p_reader->AddVariable("chi2ndof_pix", &m_tmva_pix4l_sct1p_chi2ndof_pix); - m_tmva_pix4l_sct1p_reader->AddVariable("n_pix", &m_tmva_pix4l_sct1p_n_pix); - - // pix3l_sct0 - m_tmva_pix3l_sct0_reader->AddVariable("pt", &m_tmva_pix3l_sct0_pt); - m_tmva_pix3l_sct0_reader->AddVariable("z0", &m_tmva_pix3l_sct0_z0); - m_tmva_pix3l_sct0_reader->AddVariable("d0", &m_tmva_pix3l_sct0_d0); - m_tmva_pix3l_sct0_reader->AddVariable("chi2ndof", &m_tmva_pix3l_sct0_chi2ndof); - m_tmva_pix3l_sct0_reader->AddVariable("chi2ndof_pix", &m_tmva_pix3l_sct0_chi2ndof_pix); - m_tmva_pix3l_sct0_reader->AddVariable("trkiso3_dr01", &m_tmva_pix3l_sct0_trkiso3_dr01); - m_tmva_pix3l_sct0_reader->AddVariable("trkiso3_dr0201", &m_tmva_pix3l_sct0_trkiso3_dr0201); - m_tmva_pix3l_sct0_reader->AddVariable("refit_pt", &m_tmva_pix3l_sct0_refit_pt); - m_tmva_pix3l_sct0_reader->AddVariable("refit_z0", &m_tmva_pix3l_sct0_refit_z0); - m_tmva_pix3l_sct0_reader->AddVariable("refit_d0", &m_tmva_pix3l_sct0_refit_d0); - m_tmva_pix3l_sct0_reader->AddVariable("n_pix", &m_tmva_pix4l_sct0_n_pix); - m_tmva_pix3l_sct0_reader->AddVariable("n_bl", &m_tmva_pix3l_sct0_n_bl); - - // pix3l_sct1p - m_tmva_pix3l_sct1p_reader->AddVariable("pt", &m_tmva_pix3l_sct1p_pt); - m_tmva_pix3l_sct1p_reader->AddVariable("z0", &m_tmva_pix3l_sct1p_z0); - m_tmva_pix3l_sct1p_reader->AddVariable("d0", &m_tmva_pix3l_sct1p_d0); - m_tmva_pix3l_sct1p_reader->AddVariable("refit_pt", &m_tmva_pix3l_sct1p_refit_pt); - m_tmva_pix3l_sct1p_reader->AddVariable("refit_z0", &m_tmva_pix3l_sct1p_refit_z0); - m_tmva_pix3l_sct1p_reader->AddVariable("refit_d0", &m_tmva_pix3l_sct1p_refit_d0); - m_tmva_pix3l_sct1p_reader->AddVariable("n_pix", &m_tmva_pix3l_sct1p_n_pix); - m_tmva_pix3l_sct1p_reader->AddVariable("n_sct", &m_tmva_pix3l_sct1p_n_sct); - m_tmva_pix3l_sct1p_reader->AddVariable("refit_ptratio", &m_tmva_pix3l_sct1p_refit_ptratio); - m_tmva_pix3l_sct1p_reader->AddVariable("is_fail", &m_tmva_pix3l_sct1p_is_fail); - m_tmva_pix3l_sct1p_reader->AddVariable("n_bl", &m_tmva_pix3l_sct1p_n_bl); - m_tmva_pix3l_sct1p_reader->AddVariable("chi2ndof", &m_tmva_pix3l_sct1p_chi2ndof); - m_tmva_pix3l_sct1p_reader->AddVariable("trkiso3_dr01", &m_tmva_pix3l_sct1p_trkiso3_dr01); - m_tmva_pix3l_sct1p_reader->AddVariable("trkiso3_dr0201", &m_tmva_pix3l_sct1p_trkiso3_dr0201); - m_tmva_pix3l_sct1p_reader->AddVariable("refit_chi2ndof", &m_tmva_pix3l_sct1p_refit_chi2ndof); - - // --- Book the MVA methods - std::string file; - std::string weightfile; - std::string tuningVer; - const std::string methodName = "BDT method"; - // - tuningVer = "v21a"; - file = "TrigDisappearingTrackTriggerHypo/pix4l_sct0.BDT.weights." + tuningVer + ".xml"; - weightfile = PathResolver::find_calib_file(file.c_str()); - ATH_MSG_INFO("opening weightfile for Pix4l_SCT0 = " << weightfile); - m_tmva_pix4l_sct0_reader->BookMVA(methodName, weightfile); - // - tuningVer = "v21b"; // "b" only for this category - file = "TrigDisappearingTrackTriggerHypo/pix4l_sct1p.BDT.weights." + tuningVer + ".xml"; - weightfile = PathResolver::find_calib_file(file.c_str()); - ATH_MSG_INFO("opening weightfile for Pix4l_SCT1p = " << weightfile); - m_tmva_pix4l_sct1p_reader->BookMVA(methodName, weightfile); - // - tuningVer = "v21a"; - file = "TrigDisappearingTrackTriggerHypo/pix3l_sct0.BDT.weights." + tuningVer + ".xml"; - weightfile = PathResolver::find_calib_file(file.c_str()); - ATH_MSG_INFO("opening weightfile for Pix3l_SCT0 = " << weightfile); - m_tmva_pix3l_sct0_reader->BookMVA(methodName, weightfile); - // - tuningVer = "v21a"; - file = "TrigDisappearingTrackTriggerHypo/pix3l_sct1p.BDT.weights." + tuningVer + ".xml"; - weightfile = PathResolver::find_calib_file(file.c_str()); - ATH_MSG_INFO("opening weightfile for Pix3l_SCT1p = " << weightfile); - m_tmva_pix3l_sct1p_reader->BookMVA(methodName, weightfile); - - // - return StatusCode::SUCCESS; -} - -// ------------------------------------------------------------------------------------------------ -// ------------------------------------------------------------------------------------------------ - -StatusCode TrigDisappearingTrackTriggerHypoTool::decide( TrackInfo& input ) const -{ - // monitoring - std::vector<int> mnt_category; - auto mon_category = Monitored::Collection("category", mnt_category); - auto monDisTrk = Monitored::Group(m_monTool, mon_category); - - std::vector<float> mnt_cat1_pt; - std::vector<float> mnt_cat1_z0; - std::vector<float> mnt_cat1_d0; - std::vector<float> mnt_cat1_iso01; - std::vector<float> mnt_cat1_iso0201; - std::vector<float> mnt_cat1_chi2ndof; - std::vector<float> mnt_cat1_chi2ndof_pix; - std::vector<float> mnt_cat1_refit_pt; - std::vector<int> mnt_cat1_n_pix; - std::vector<float> mnt_cat1_refit_ptratio; - std::vector<float> mnt_cat1_refit_chi2ndof; - std::vector<int> mnt_cat1_n_bl; - std::vector<float> mnt_cat1_bdtscore; - auto mon_cat1_pt = Monitored::Collection("pix4_sct0_pt", mnt_cat1_pt); - auto mon_cat1_z0 = Monitored::Collection("pix4_sct0_z0", mnt_cat1_z0); - auto mon_cat1_d0 = Monitored::Collection("pix4_sct0_d0", mnt_cat1_d0); - auto mon_cat1_iso01 = Monitored::Collection("pix4_sct0_iso01", mnt_cat1_iso01); - auto mon_cat1_iso0201 = Monitored::Collection("pix4_sct0_iso0201", mnt_cat1_iso0201); - auto mon_cat1_chi2ndof = Monitored::Collection("pix4_sct0_chi2ndof", mnt_cat1_chi2ndof); - auto mon_cat1_chi2ndof_pix = Monitored::Collection("pix4_sct0_chi2ndof_pix", mnt_cat1_chi2ndof_pix); - auto mon_cat1_refit_pt = Monitored::Collection("pix4_sct0_refit_pt", mnt_cat1_refit_pt); - auto mon_cat1_n_pix = Monitored::Collection("pix4_sct0_n_pix", mnt_cat1_n_pix); - auto mon_cat1_refit_ptratio = Monitored::Collection("pix4_sct0_refit_ptratio", mnt_cat1_refit_ptratio); - auto mon_cat1_refit_chi2ndof = Monitored::Collection("pix4_sct0_refit_chi2ndof", mnt_cat1_refit_chi2ndof); - auto mon_cat1_n_bl = Monitored::Collection("pix4_sct0_n_bl", mnt_cat1_n_bl); - auto mon_cat1_bdtscore = Monitored::Collection("pix4_sct0_bdtscore", mnt_cat1_bdtscore); - auto monDisTrkCat1 = Monitored::Group(m_monTool, mon_cat1_pt, mon_cat1_z0, mon_cat1_d0, mon_cat1_iso01, mon_cat1_iso0201, mon_cat1_chi2ndof, - mon_cat1_chi2ndof_pix, mon_cat1_refit_pt, mon_cat1_n_pix, mon_cat1_refit_ptratio, - mon_cat1_refit_chi2ndof, mon_cat1_n_bl, mon_cat1_bdtscore); - // - std::vector<float> mnt_cat2_pt; - std::vector<float> mnt_cat2_refit_pt; - std::vector<float> mnt_cat2_refit_z0; - std::vector<float> mnt_cat2_refit_d0; - std::vector<int> mnt_cat2_n_sct; - std::vector<float> mnt_cat2_refit_ptratio; - std::vector<float> mnt_cat2_refit_chi2ndof_ratio; - std::vector<float> mnt_cat2_iso01; - std::vector<float> mnt_cat2_iso0201; - std::vector<float> mnt_cat2_chi2ndof_pix; - std::vector<int> mnt_cat2_n_pix; - std::vector<float> mnt_cat2_bdtscore; - auto mon_cat2_pt = Monitored::Collection("pix4_sct1p_pt", mnt_cat2_pt); - auto mon_cat2_refit_pt = Monitored::Collection("pix4_sct1p_refit_pt", mnt_cat2_refit_pt); - auto mon_cat2_refit_z0 = Monitored::Collection("pix4_sct1p_refit_z0", mnt_cat2_refit_z0); - auto mon_cat2_refit_d0 = Monitored::Collection("pix4_sct1p_refit_d0", mnt_cat2_refit_d0); - auto mon_cat2_n_sct = Monitored::Collection("pix4_sct1p_n_sct", mnt_cat2_n_sct); - auto mon_cat2_refit_ptratio = Monitored::Collection("pix4_sct1p_refit_ptratio", mnt_cat2_refit_ptratio); - auto mon_cat2_refit_chi2ndof_ratio = Monitored::Collection("pix4_sct1p_refit_chi2ndof_ratio", mnt_cat2_refit_chi2ndof_ratio); - auto mon_cat2_iso01 = Monitored::Collection("pix4_sct1p_iso01", mnt_cat2_iso01); - auto mon_cat2_iso0201 = Monitored::Collection("pix4_sct1p_iso0201", mnt_cat2_iso0201); - auto mon_cat2_chi2ndof_pix = Monitored::Collection("pix4_sct1p_chi2ndof_pix", mnt_cat2_chi2ndof_pix); - auto mon_cat2_n_pix = Monitored::Collection("pix4_sct1p_n_pix", mnt_cat2_n_pix); - auto mon_cat2_bdtscore = Monitored::Collection("pix4_sct1p_bdtscore", mnt_cat2_bdtscore); - auto monDisTrkCat2 = Monitored::Group(m_monTool, mon_cat2_pt, mon_cat2_refit_pt, mon_cat2_refit_z0, mon_cat2_refit_d0, mon_cat2_n_sct, - mon_cat2_refit_ptratio, mon_cat2_refit_chi2ndof_ratio, mon_cat2_iso01, mon_cat2_iso0201, - mon_cat2_chi2ndof_pix, mon_cat2_n_pix, mon_cat2_bdtscore); - // - std::vector<float> mnt_cat3_pt; - std::vector<float> mnt_cat3_z0; - std::vector<float> mnt_cat3_d0; - std::vector<float> mnt_cat3_chi2ndof; - std::vector<float> mnt_cat3_chi2ndof_pix; - std::vector<float> mnt_cat3_iso01; - std::vector<float> mnt_cat3_iso0201; - std::vector<float> mnt_cat3_refit_pt; - std::vector<float> mnt_cat3_refit_z0; - std::vector<float> mnt_cat3_refit_d0; - std::vector<int> mnt_cat3_n_pix; - std::vector<int> mnt_cat3_n_bl; - std::vector<float> mnt_cat3_bdtscore; - auto mon_cat3_pt = Monitored::Collection("pix3_sct0_pt", mnt_cat3_pt); - auto mon_cat3_z0 = Monitored::Collection("pix3_sct0_z0", mnt_cat3_z0); - auto mon_cat3_d0 = Monitored::Collection("pix3_sct0_d0", mnt_cat3_d0); - auto mon_cat3_chi2ndof = Monitored::Collection("pix3_sct0_chi2ndof", mnt_cat3_chi2ndof); - auto mon_cat3_chi2ndof_pix = Monitored::Collection("pix3_sct0_chi2ndof_pix", mnt_cat3_chi2ndof_pix); - auto mon_cat3_iso01 = Monitored::Collection("pix3_sct0_iso01", mnt_cat3_iso01); - auto mon_cat3_iso0201 = Monitored::Collection("pix3_sct0_iso0201", mnt_cat3_iso0201); - auto mon_cat3_refit_pt = Monitored::Collection("pix3_sct0_refit_pt", mnt_cat3_refit_pt); - auto mon_cat3_refit_z0 = Monitored::Collection("pix3_sct0_refit_z0", mnt_cat3_refit_z0); - auto mon_cat3_refit_d0 = Monitored::Collection("pix3_sct0_refit_d0", mnt_cat3_refit_d0); - auto mon_cat3_n_pix = Monitored::Collection("pix3_sct0_n_pix", mnt_cat3_n_pix); - auto mon_cat3_n_bl = Monitored::Collection("pix3_sct0_n_bl", mnt_cat3_n_bl); - auto mon_cat3_bdtscore = Monitored::Collection("pix3_sct0_bdtscore", mnt_cat3_bdtscore); - auto monDisTrkCat3 = Monitored::Group(m_monTool, mon_cat3_pt, mon_cat3_z0, mon_cat3_d0, mon_cat3_chi2ndof, mon_cat3_chi2ndof_pix, - mon_cat3_iso01, mon_cat3_iso0201, mon_cat3_refit_pt, mon_cat3_refit_z0, mon_cat3_refit_d0, - mon_cat3_n_pix, mon_cat3_n_bl, mon_cat3_bdtscore); - // - std::vector<float> mnt_cat4_pt; - std::vector<float> mnt_cat4_z0; - std::vector<float> mnt_cat4_d0; - std::vector<float> mnt_cat4_refit_pt; - std::vector<float> mnt_cat4_refit_z0; - std::vector<float> mnt_cat4_refit_d0; - std::vector<int> mnt_cat4_n_pix; - std::vector<int> mnt_cat4_n_sct; - std::vector<float> mnt_cat4_refit_ptratio; - std::vector<int> mnt_cat4_n_bl; - std::vector<float> mnt_cat4_chi2ndof; - std::vector<float> mnt_cat4_iso01; - std::vector<float> mnt_cat4_iso0201; - std::vector<float> mnt_cat4_refit_chi2ndof; - std::vector<float> mnt_cat4_bdtscore; - auto mon_cat4_pt = Monitored::Collection("pix3_sct1p_pt", mnt_cat4_pt); - auto mon_cat4_z0 = Monitored::Collection("pix3_sct1p_z0", mnt_cat4_z0); - auto mon_cat4_d0 = Monitored::Collection("pix3_sct1p_d0", mnt_cat4_d0); - auto mon_cat4_refit_pt = Monitored::Collection("pix3_sct1p_refit_pt", mnt_cat4_refit_pt); - auto mon_cat4_refit_z0 = Monitored::Collection("pix3_sct1p_refit_z0", mnt_cat4_refit_z0); - auto mon_cat4_refit_d0 = Monitored::Collection("pix3_sct1p_refit_d0", mnt_cat4_refit_d0); - auto mon_cat4_n_pix = Monitored::Collection("pix3_sct1p_n_pix", mnt_cat4_n_pix); - auto mon_cat4_n_sct = Monitored::Collection("pix3_sct1p_n_sct", mnt_cat4_n_sct); - auto mon_cat4_refit_ptratio = Monitored::Collection("pix3_sct1p_refit_ptratio", mnt_cat4_refit_ptratio); - auto mon_cat4_n_bl = Monitored::Collection("pix3_sct1p_n_bl", mnt_cat4_n_bl); - auto mon_cat4_chi2ndof = Monitored::Collection("pix3_sct1p_chi2ndof", mnt_cat4_chi2ndof); - auto mon_cat4_iso01 = Monitored::Collection("pix3_sct1p_iso01", mnt_cat4_iso01); - auto mon_cat4_iso0201 = Monitored::Collection("pix3_sct1p_iso0201", mnt_cat4_iso0201); - auto mon_cat4_refit_chi2ndof = Monitored::Collection("pix3_sct1p_refit_chi2ndof", mnt_cat4_refit_chi2ndof); - auto mon_cat4_bdtscore = Monitored::Collection("pix3_sct1p_bdtscore", mnt_cat4_bdtscore); - auto monDisTrkCat4 = Monitored::Group(m_monTool, mon_cat4_pt, mon_cat4_z0, mon_cat4_d0, mon_cat4_refit_pt, mon_cat4_refit_z0, mon_cat4_refit_d0, - mon_cat4_n_pix, mon_cat4_n_sct, mon_cat4_refit_ptratio, mon_cat4_n_bl, mon_cat4_chi2ndof, - mon_cat4_iso01, mon_cat4_iso0201, mon_cat4_refit_chi2ndof, mon_cat4_bdtscore); - - // loop for each DisTrkCand - const xAOD::TrigCompositeContainer* disTrkCandContainer = input.disTrkCandContainer; - xAOD::TrigCompositeContainer& disTrkBDTSelContainer = input.disTrkBDTSelContainer; - - const int cutIndex = 0; - const std::string prefix = "disTrkCand"; - - float bdt_threshold_pix4l_sct0 = m_cutBDTPix4Sct0[cutIndex]; - float bdt_threshold_pix4l_sct1p = m_cutBDTPix4Sct1p[cutIndex]; - float bdt_threshold_pix3l_sct0 = m_cutBDTPix3Sct0[cutIndex]; - float bdt_threshold_pix3l_sct1p = m_cutBDTPix3Sct1p[cutIndex]; - - // for future, these threshold can be tuned separately for each category - float pt_threshold_pix4l_sct0 = m_cutTrackPtGeV[cutIndex]; - float refit_pt_threshold_pix4l_sct1p = m_cutTrackPtGeV[cutIndex]; - float pt_threshold_pix3l_sct0 = m_cutTrackPtGeV[cutIndex]; - float refit_pt_threshold_pix3l_sct1p = m_cutTrackPtGeV[cutIndex]; - - unsigned int i_cand=0; - unsigned int n_passed_cand=0; - for ( const xAOD::TrigComposite* cand : *disTrkCandContainer ) { - ATH_MSG_DEBUG("UTT: ===== i_cand: " << i_cand++ << " =====" ); - - // category - int category = cand->getDetail<int>(prefix+"_category"); - if( category<=0 || category>=5 ) { - ATH_MSG_DEBUG("UTT: category is out of range = " << category); - continue; - } - - // pt cut - float pt = cand->getDetail<float>(prefix+"_pt"); - float refit_pt = cand->getDetail<float>(prefix+"_refit_pt"); - pt /= 1000; - refit_pt /= 1000; - if( pt < m_cutTrackPtGeV[cutIndex] || refit_pt < m_cutTrackPtGeV[cutIndex] ) { - ATH_MSG_DEBUG("UTT: Fails pt cut, pt / refit_pt = " << pt << " / " << refit_pt); - continue; - } - mnt_category.push_back(category); - - // get values - int is_fail = cand->getDetail<int> (prefix+"_is_fail"); - float d0_wrtVtx = cand->getDetail<float>(prefix+"_d0_wrtVtx"); - float z0_wrtVtx = cand->getDetail<float>(prefix+"_z0_wrtVtx"); - float chi2 = cand->getDetail<float>(prefix+"_chi2"); - float ndof = cand->getDetail<float>(prefix+"_ndof"); - float chi2ndof = ( std::abs(ndof) > 1e-4 ) ? chi2 / ndof : 20; - int n_hits_pix = cand->getDetail<int> (prefix+"_n_hits_pix"); - int n_hits_sct = cand->getDetail<int> (prefix+"_n_hits_sct"); - int n_hits_bl = cand->getDetail<int> (prefix+"_n_hits_innermost"); - float iso3_dr01 = cand->getDetail<float>(prefix+"_iso3_dr01"); - iso3_dr01 /= 1000; - float iso3_dr02 = cand->getDetail<float>(prefix+"_iso3_dr02"); - iso3_dr02 /= 1000; - float refit_ptratio = ( std::abs(pt) > 1e-4 ) ? refit_pt / pt : 0; - float refit_d0_wrtVtx = cand->getDetail<float>(prefix+"_refit_d0_wrtVtx"); - float refit_z0_wrtVtx = cand->getDetail<float>(prefix+"_refit_z0_wrtVtx"); - float refit_chi2 = cand->getDetail<float>(prefix+"_refit_chi2"); - float refit_ndof = cand->getDetail<float>(prefix+"_refit_ndof"); - float refit_chi2ndof = ( std::abs(refit_ndof) > 1e-4 ) ? refit_chi2 / refit_ndof : 20; - float refit_chi2ndof_ratio = (std::abs(chi2ndof) > 1e-4 ) ? refit_chi2ndof / chi2ndof : 0; - float chi2_pix=0; float ndof_pix=0; - chi2_pix += cand->getDetail<float>(prefix+"_chi2sum_br_ibl"); - chi2_pix += cand->getDetail<float>(prefix+"_chi2sum_br_pix1"); - chi2_pix += cand->getDetail<float>(prefix+"_chi2sum_br_pix2"); - chi2_pix += cand->getDetail<float>(prefix+"_chi2sum_br_pix3"); - ndof_pix += cand->getDetail<float>(prefix+"_ndofsum_br_ibl"); - ndof_pix += cand->getDetail<float>(prefix+"_ndofsum_br_pix1"); - ndof_pix += cand->getDetail<float>(prefix+"_ndofsum_br_pix2"); - ndof_pix += cand->getDetail<float>(prefix+"_ndofsum_br_pix3"); - float chi2ndof_pix = ( std::abs(ndof_pix) > 1e-4 ) ? chi2_pix / ndof_pix : 0; - - // BDT score - float bdt_score = 0.0; - if( category==1 ) { - bdt_score = bdt_eval_pix4l_sct0(pt, z0_wrtVtx, d0_wrtVtx, iso3_dr01, iso3_dr02-iso3_dr01, chi2ndof, chi2ndof_pix, - refit_pt, n_hits_pix, refit_ptratio, refit_chi2ndof, n_hits_bl); - mnt_cat1_pt.push_back(pt); - mnt_cat1_z0.push_back(z0_wrtVtx); - mnt_cat1_d0.push_back(d0_wrtVtx); - mnt_cat1_iso01.push_back(iso3_dr01); - mnt_cat1_iso0201.push_back(iso3_dr02-iso3_dr01); - mnt_cat1_chi2ndof.push_back(chi2ndof); - mnt_cat1_chi2ndof_pix.push_back(chi2ndof_pix); - mnt_cat1_refit_pt.push_back(refit_pt); - mnt_cat1_n_pix.push_back(n_hits_pix); - mnt_cat1_refit_ptratio.push_back(refit_ptratio); - mnt_cat1_refit_chi2ndof.push_back(refit_chi2ndof); - mnt_cat1_n_bl.push_back(n_hits_bl); - mnt_cat1_bdtscore.push_back(bdt_score); - } - else if( category==2 ) { - bdt_score = bdt_eval_pix4l_sct1p(pt, refit_pt, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_sct, refit_ptratio, - refit_chi2ndof_ratio, iso3_dr01, iso3_dr02-iso3_dr01, is_fail, chi2ndof_pix, n_hits_pix); - mnt_cat2_pt.push_back(pt); - mnt_cat2_refit_pt.push_back(refit_pt); - mnt_cat2_refit_z0.push_back(refit_z0_wrtVtx); - mnt_cat2_refit_d0.push_back(refit_d0_wrtVtx); - mnt_cat2_n_sct.push_back(n_hits_sct); - mnt_cat2_refit_ptratio.push_back(refit_ptratio); - mnt_cat2_refit_chi2ndof_ratio.push_back(refit_chi2ndof_ratio); - mnt_cat2_iso01.push_back(iso3_dr01); - mnt_cat2_iso0201.push_back(iso3_dr02-iso3_dr01); - mnt_cat2_chi2ndof_pix.push_back(chi2ndof_pix); - mnt_cat2_n_pix.push_back(n_hits_pix); - mnt_cat2_bdtscore.push_back(bdt_score); - } - else if( category==3 ) { - bdt_score = bdt_eval_pix3l_sct0(pt, z0_wrtVtx, d0_wrtVtx, chi2ndof, chi2ndof_pix, iso3_dr01, iso3_dr02-iso3_dr01, - refit_pt, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_bl); - mnt_cat3_pt.push_back(pt); - mnt_cat3_z0.push_back(z0_wrtVtx); - mnt_cat3_d0.push_back(d0_wrtVtx); - mnt_cat3_chi2ndof.push_back(chi2ndof); - mnt_cat3_chi2ndof_pix.push_back(chi2ndof_pix); - mnt_cat3_iso01.push_back(iso3_dr01); - mnt_cat3_iso0201.push_back(iso3_dr02-iso3_dr01); - mnt_cat3_refit_pt.push_back(refit_pt); - mnt_cat3_refit_z0.push_back(refit_z0_wrtVtx); - mnt_cat3_refit_d0.push_back(refit_d0_wrtVtx); - mnt_cat3_n_pix.push_back(n_hits_pix); - mnt_cat3_n_bl.push_back(n_hits_bl); - mnt_cat3_bdtscore.push_back(bdt_score); - } - else if( category==4 ) { - bdt_score = bdt_eval_pix3l_sct1p(pt, z0_wrtVtx, d0_wrtVtx, refit_pt, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_sct, - refit_ptratio, is_fail, n_hits_bl, chi2ndof, iso3_dr01, iso3_dr02-iso3_dr01, refit_chi2ndof); - mnt_cat4_pt.push_back(pt); - mnt_cat4_z0.push_back(z0_wrtVtx); - mnt_cat4_d0.push_back(d0_wrtVtx); - mnt_cat4_refit_pt.push_back(refit_pt); - mnt_cat4_refit_z0.push_back(refit_z0_wrtVtx); - mnt_cat4_refit_d0.push_back(refit_d0_wrtVtx); - mnt_cat4_n_pix.push_back(n_hits_pix); - mnt_cat4_n_sct.push_back(n_hits_sct); - mnt_cat4_refit_ptratio.push_back(refit_ptratio); - mnt_cat4_n_bl.push_back(n_hits_bl); - mnt_cat4_chi2ndof.push_back(chi2ndof); - mnt_cat4_iso01.push_back(iso3_dr01); - mnt_cat4_iso0201.push_back(iso3_dr02-iso3_dr01); - mnt_cat4_refit_chi2ndof.push_back(refit_chi2ndof); - mnt_cat4_bdtscore.push_back(bdt_score); - } - ATH_MSG_DEBUG("UTT: BDT score = " << bdt_score); - - // selection - - bool is_passed = false; - if( category==1 ) { - if( pt >= pt_threshold_pix4l_sct0 && bdt_score >= bdt_threshold_pix4l_sct0 ) is_passed = true; - } - else if( category==2 ) { - if( refit_pt >= refit_pt_threshold_pix4l_sct1p && bdt_score >= bdt_threshold_pix4l_sct1p ) is_passed = true; - } - else if( category==3 ) { - if( pt >= pt_threshold_pix3l_sct0 && bdt_score >= bdt_threshold_pix3l_sct0 ) is_passed = true; - } - else if( category==4 ) { - if( refit_pt >= refit_pt_threshold_pix3l_sct1p && bdt_score >= bdt_threshold_pix3l_sct1p ) is_passed = true; - } - ATH_MSG_DEBUG("UTT: BDT selection isPassed = " << is_passed); - if( ! is_passed ) continue; - - // passed selection - ATH_MSG_DEBUG("UTT: Passed selection" ); - n_passed_cand++; - - // create EDM object - xAOD::TrigComposite *distrk = new xAOD::TrigComposite(); - distrk->makePrivateStore(); - disTrkBDTSelContainer.push_back(distrk); - // - const std::string prefixOut = "disTrk"; - // - distrk->setDetail<int> (prefixOut+"_category", category); - distrk->setDetail<float>(prefixOut+"_pt", pt*1000.0); - float eta = cand->getDetail<float>(prefix+"_eta"); - float phi = cand->getDetail<float>(prefix+"_phi"); - distrk->setDetail<float>(prefixOut+"_eta", eta); - distrk->setDetail<float>(prefixOut+"_phi", phi); - distrk->setDetail<float>(prefixOut+"_refit_pt", refit_pt*1000.0); - distrk->setDetail<int> (prefixOut+"_is_fail", is_fail); - distrk->setDetail<float>(prefixOut+"_d0_wrtVtx", d0_wrtVtx); - distrk->setDetail<float>(prefixOut+"_z0_wrtVtx", z0_wrtVtx); - distrk->setDetail<float>(prefixOut+"_chi2", chi2); - distrk->setDetail<float>(prefixOut+"_ndof", ndof); - distrk->setDetail<int> (prefixOut+"_n_hits_pix", n_hits_pix); - distrk->setDetail<int> (prefixOut+"_n_hits_sct", n_hits_sct); - distrk->setDetail<int> (prefixOut+"_n_hits_innermost", n_hits_bl); - distrk->setDetail<float>(prefixOut+"_iso3_dr01", iso3_dr01*1000.0); - distrk->setDetail<float>(prefixOut+"_iso3_dr02", iso3_dr02*1000.0); - distrk->setDetail<float>(prefixOut+"_refit_d0_wrtVtx", refit_d0_wrtVtx); - distrk->setDetail<float>(prefixOut+"_refit_z0_wrtVtx", refit_z0_wrtVtx); - distrk->setDetail<float>(prefixOut+"_refit_chi2", refit_chi2); - distrk->setDetail<float>(prefixOut+"_refit_ndof", refit_ndof); - distrk->setDetail<float>(prefixOut+"_chi2ndof_pix", chi2ndof_pix); - distrk->setDetail<float>(prefixOut+"_bdtscore", bdt_score); - // - ATH_MSG_DEBUG("UTT: Created a new entry EDM" ); - } - - // - if( n_passed_cand > 0 ) { - addDecisionID( m_decisionId.numeric(), input.decision ); - ATH_MSG_DEBUG("UTT: REGTEST event accepted" ); - return StatusCode::SUCCESS; - } - else { - return StatusCode::SUCCESS; - } -} - -// ------------------------------------------------------------------------------------------------ -// ------------------------------------------------------------------------------------------------ - -inline float TrigDisappearingTrackTriggerHypoTool::BDTinput(float var) const { return ( std::abs(var) < 1e-5 ) ? 1e-5 : var; } - -float TrigDisappearingTrackTriggerHypoTool::bdt_eval_pix4l_sct0 -(float pt, float z0, float d0, float trkiso3_dr01, float trkiso3_dr0201, float chi2ndof, float chi2ndof_pix, - float refit_pt, int n_pix, float refit_ptratio, float refit_chi2ndof, int n_bl) const -{ - m_tmva_pix4l_sct0_pt = BDTinput(pt); - m_tmva_pix4l_sct0_z0 = BDTinput(z0); - m_tmva_pix4l_sct0_d0 = BDTinput(d0); - m_tmva_pix4l_sct0_trkiso3_dr01 = BDTinput(trkiso3_dr01); - m_tmva_pix4l_sct0_trkiso3_dr0201 = BDTinput(trkiso3_dr0201); - m_tmva_pix4l_sct0_chi2ndof = BDTinput(chi2ndof); - m_tmva_pix4l_sct0_chi2ndof_pix = BDTinput(chi2ndof_pix); - m_tmva_pix4l_sct0_refit_pt = BDTinput(refit_pt); - m_tmva_pix4l_sct0_n_pix = BDTinput((float)n_pix); - m_tmva_pix4l_sct0_refit_ptratio = BDTinput(refit_ptratio); - m_tmva_pix4l_sct0_refit_chi2ndof = BDTinput(refit_chi2ndof); - m_tmva_pix4l_sct0_n_bl = BDTinput((float)n_bl); - // - return m_tmva_pix4l_sct0_reader->EvaluateMVA("BDT method"); -} - -float TrigDisappearingTrackTriggerHypoTool::bdt_eval_pix4l_sct1p -(float pt, float refit_pt, float refit_z0, float refit_d0, int n_sct, float refit_ptratio, - float refit_chi2ndof_ratio, float trkiso3_dr01, float trkiso3_dr0201, int is_fail, float chi2ndof_pix, int n_pix) const -{ - m_tmva_pix4l_sct1p_pt = BDTinput(pt); - m_tmva_pix4l_sct1p_refit_pt = BDTinput(refit_pt); - m_tmva_pix4l_sct1p_refit_z0 = BDTinput(refit_z0); - m_tmva_pix4l_sct1p_refit_d0 = BDTinput(refit_d0); - m_tmva_pix4l_sct1p_n_sct = BDTinput((float)n_sct); - m_tmva_pix4l_sct1p_refit_ptratio = BDTinput(refit_ptratio); - m_tmva_pix4l_sct1p_refit_chi2ndof_ratio = BDTinput(refit_chi2ndof_ratio); - m_tmva_pix4l_sct1p_trkiso3_dr01 = BDTinput(trkiso3_dr01); - m_tmva_pix4l_sct1p_trkiso3_dr0201 = BDTinput(trkiso3_dr0201); - m_tmva_pix4l_sct1p_is_fail = BDTinput((float)is_fail); - m_tmva_pix4l_sct1p_chi2ndof_pix = BDTinput(chi2ndof_pix); - m_tmva_pix4l_sct1p_n_pix = BDTinput((float)n_pix); - // - /* - ATH_MSG_INFO("UTT: pt=" << pt); - ATH_MSG_INFO("UTT: refit_pt=" << refit_pt); - ATH_MSG_INFO("UTT: refit_z0=" << refit_z0); - ATH_MSG_INFO("UTT: refit_d0=" << refit_d0); - ATH_MSG_INFO("UTT: n_sct=" << n_sct); - ATH_MSG_INFO("UTT: refit_ptratio=" << refit_ptratio); - ATH_MSG_INFO("UTT: refit_chi2ndof_ratio=" << refit_chi2ndof_ratio); - ATH_MSG_INFO("UTT: trkiso3_dr01=" << trkiso3_dr01); - ATH_MSG_INFO("UTT: trkiso3_dr02dr01=" << trkiso3_dr0201); - ATH_MSG_INFO("UTT: is_fail=" << is_fail); - ATH_MSG_INFO("UTT: chi2ndof_pix=" << chi2ndof_pix); - ATH_MSG_INFO("UTT: n_pix=" << n_pix); - */ - // - return m_tmva_pix4l_sct1p_reader->EvaluateMVA("BDT method"); -} - -float TrigDisappearingTrackTriggerHypoTool::bdt_eval_pix3l_sct0 -(float pt, float z0, float d0, float chi2ndof, float chi2ndof_pix, float trkiso3_dr01, float trkiso3_dr0201, - float refit_pt, float refit_z0, float refit_d0, int n_pix, int n_bl) const -{ - m_tmva_pix3l_sct0_pt = BDTinput(pt); - m_tmva_pix3l_sct0_z0 = BDTinput(z0); - m_tmva_pix3l_sct0_d0 = BDTinput(d0); - m_tmva_pix3l_sct0_chi2ndof = BDTinput(chi2ndof); - m_tmva_pix3l_sct0_chi2ndof_pix = BDTinput(chi2ndof_pix); - m_tmva_pix3l_sct0_trkiso3_dr01 = BDTinput(trkiso3_dr01); - m_tmva_pix3l_sct0_trkiso3_dr0201 = BDTinput(trkiso3_dr0201); - m_tmva_pix3l_sct0_refit_pt = BDTinput(refit_pt); - m_tmva_pix3l_sct0_refit_z0 = BDTinput(refit_z0); - m_tmva_pix3l_sct0_refit_d0 = BDTinput(refit_d0); - m_tmva_pix3l_sct0_n_pix = BDTinput((float)n_pix); - m_tmva_pix3l_sct0_n_bl = BDTinput((float)n_bl); - // - return m_tmva_pix3l_sct0_reader->EvaluateMVA("BDT method"); -} - -float TrigDisappearingTrackTriggerHypoTool::bdt_eval_pix3l_sct1p -(float pt, float z0, float d0, float refit_pt, float refit_z0, float refit_d0, - int n_pix, int n_sct, float refit_ptratio, int is_fail, int n_bl, - float chi2ndof, float trkiso3_dr01, float trkiso3_dr0201, float refit_chi2ndof) const -{ - m_tmva_pix3l_sct1p_pt = BDTinput(pt); - m_tmva_pix3l_sct1p_z0 = BDTinput(z0); - m_tmva_pix3l_sct1p_d0 = BDTinput(d0); - m_tmva_pix3l_sct1p_refit_pt = BDTinput(refit_pt); - m_tmva_pix3l_sct1p_refit_z0 = BDTinput(refit_z0); - m_tmva_pix3l_sct1p_refit_d0 = BDTinput(refit_d0); - m_tmva_pix3l_sct1p_n_pix = BDTinput((float)n_pix); - m_tmva_pix3l_sct1p_n_sct = BDTinput((float)n_sct); - m_tmva_pix3l_sct1p_refit_ptratio = BDTinput(refit_ptratio); - m_tmva_pix3l_sct1p_is_fail = BDTinput((float)is_fail); - m_tmva_pix3l_sct1p_n_bl = BDTinput((float)n_bl); - m_tmva_pix3l_sct1p_chi2ndof = BDTinput(chi2ndof); - m_tmva_pix3l_sct1p_trkiso3_dr01 = BDTinput(trkiso3_dr01); - m_tmva_pix3l_sct1p_trkiso3_dr0201 = BDTinput(trkiso3_dr0201); - m_tmva_pix3l_sct1p_refit_chi2ndof = BDTinput(refit_chi2ndof); - // - return m_tmva_pix3l_sct1p_reader->EvaluateMVA("BDT method"); -} - -// ------------------------------------------------------------------------------------------------ -// ------------------------------------------------------------------------------------------------ diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoTool.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoTool.h deleted file mode 100644 index 640532de87ec0165bc6706bd7f6fcb0f126ee9ab..0000000000000000000000000000000000000000 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigDisappearingTrackTriggerHypoTool.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -*/ -#ifndef TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKTRIGGERHYPOTOOL_H -#define TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKTRIGGERHYPOTOOL_H - -#include "Gaudi/Property.h" -#include "AthenaBaseComps/AthAlgTool.h" -#include "AthenaMonitoringKernel/GenericMonitoringTool.h" -#include "TrigCompositeUtils/TrigCompositeUtils.h" -#include "xAODTracking/TrackParticlexAODHelpers.h" -#include "xAODTracking/TrackParticleContainer.h" -#include <string> - -#include "TMVA/Reader.h" - -/** - * @class TrigDisappearingTrackTriggerHypoTool - * @brief Generated the decision for hypo thats triggers disappearing track - * @author Kunihiro Nagano <kunihiro.nagano@cern.ch> - **/ - -class TrigDisappearingTrackTriggerHypoTool : virtual public ::AthAlgTool -{ -public: - TrigDisappearingTrackTriggerHypoTool( const std::string& type, - const std::string& name, - const IInterface* parent ); - - virtual ~TrigDisappearingTrackTriggerHypoTool(); - virtual StatusCode initialize() override; - - struct TrackInfo { - TrigCompositeUtils::Decision* decision; - const xAOD::TrigCompositeContainer* disTrkCandContainer; - xAOD::TrigCompositeContainer& disTrkBDTSelContainer; - const TrigCompositeUtils::DecisionIDContainer previousDecisionsIDs; - }; - - /** - * @brief decides upon a collection of tracks - **/ - StatusCode decide( TrackInfo& input ) const; - -private: - - HLT::Identifier m_decisionId; - Gaudi::Property< std::vector<float> > m_cutTrackPtGeV { this, "cutTrackPtGeV", { float(10.0) }, "Track pT requirement in GeV" }; - Gaudi::Property< std::vector<float> > m_cutBDTPix4Sct0 { this, "cutBDTPix4Sct0", { float(0.05) }, "BDT score thershold for Pix4l_Sct0 category" }; - Gaudi::Property< std::vector<float> > m_cutBDTPix4Sct1p { this, "cutBDTPix4Sct1p",{ float(0.04) }, "BDT score thershold for Pix4l_Sct1p category" }; - Gaudi::Property< std::vector<float> > m_cutBDTPix3Sct0 { this, "cutBDTPix3Sct0", { float(0.05) }, "BDT score thershold for Pix3l_Sct0 category" }; - Gaudi::Property< std::vector<float> > m_cutBDTPix3Sct1p { this, "cutBDTPix3Sct1p",{ float(0.04) }, "BDT score thershold for Pix3l_Sct1p category" }; - // - ToolHandle<GenericMonitoringTool> m_monTool{ this, "MonTool", "", "Monitoring tool" }; - - // BDT selection methods - float bdt_eval_pix4l_sct0 (float, float, float, float, float, float, float, float, int, float, float, int) const; - float bdt_eval_pix4l_sct1p(float, float, float, float, int, float, float, float, float, int, float, int) const; - float bdt_eval_pix3l_sct0 (float, float, float, float, float, float, float, float, float, float, int, int) const; - float bdt_eval_pix3l_sct1p(float, float, float, float, float, float, int, int, float, int, int, float, float, float, float) const; - inline float BDTinput(float) const; - - // TMVA reader - TMVA::Reader* m_tmva_pix4l_sct0_reader; - TMVA::Reader* m_tmva_pix4l_sct1p_reader; - TMVA::Reader* m_tmva_pix3l_sct0_reader; - TMVA::Reader* m_tmva_pix3l_sct1p_reader; - - // TMVA variables - // pix4l_sct0 - mutable float m_tmva_pix4l_sct0_pt ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_z0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_d0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_trkiso3_dr01 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_trkiso3_dr0201 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_chi2ndof ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_chi2ndof_pix ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_refit_pt ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_n_pix ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_refit_ptratio ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_refit_chi2ndof ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct0_n_bl ATLAS_THREAD_SAFE; - - // pix4l_sct1p - mutable float m_tmva_pix4l_sct1p_pt ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_refit_pt ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_refit_z0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_refit_d0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_n_sct ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_refit_ptratio ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_refit_chi2ndof_ratio ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_trkiso3_dr01 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_trkiso3_dr0201 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_is_fail ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_chi2ndof_pix ATLAS_THREAD_SAFE; - mutable float m_tmva_pix4l_sct1p_n_pix ATLAS_THREAD_SAFE; - - // pix3l_sct0 - mutable float m_tmva_pix3l_sct0_pt ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_z0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_d0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_chi2ndof ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_chi2ndof_pix ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_trkiso3_dr01 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_trkiso3_dr0201 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_refit_pt ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_refit_z0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_refit_d0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_n_pix ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct0_n_bl ATLAS_THREAD_SAFE; - - // pix3l_sct1p - mutable float m_tmva_pix3l_sct1p_pt ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_z0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_d0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_refit_pt ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_refit_z0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_refit_d0 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_n_pix ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_n_sct ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_refit_ptratio ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_is_fail ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_n_bl ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_chi2ndof ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_trkiso3_dr01 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_trkiso3_dr0201 ATLAS_THREAD_SAFE; - mutable float m_tmva_pix3l_sct1p_refit_chi2ndof ATLAS_THREAD_SAFE; -}; - -#endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGDISTRACKTRIGGERHYPOTOOL_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigHitDVHypoAlg.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigHitDVHypoAlg.cxx index dd9f7b15313e3255de4611aeba3986dbcda7f7f1..e7da4addd10f2fa46d808886e4c9cffd97990291 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigHitDVHypoAlg.cxx +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigHitDVHypoAlg.cxx @@ -570,15 +570,15 @@ StatusCode TrigHitDVHypoAlg::calculateBDT(const EventContext& context, ATH_MSG_VERBOSE("nr of quality tracks in jet = " << n_qtrk_injet); // evaluate BDT - (*(const_cast<float*>(m_tmva_n_track_qual.get(context)))) = static_cast<float>(n_qtrk_injet); - (*(const_cast<float*>(m_tmva_ly0_sp_frac.get(context)))) = v_ly_sp_frac[0]; - (*(const_cast<float*>(m_tmva_ly1_sp_frac.get(context)))) = v_ly_sp_frac[1]; - (*(const_cast<float*>(m_tmva_ly2_sp_frac.get(context)))) = v_ly_sp_frac[2]; - (*(const_cast<float*>(m_tmva_ly3_sp_frac.get(context)))) = v_ly_sp_frac[3]; - (*(const_cast<float*>(m_tmva_ly4_sp_frac.get(context)))) = v_ly_sp_frac[4]; - (*(const_cast<float*>(m_tmva_ly5_sp_frac.get(context)))) = v_ly_sp_frac[5]; - (*(const_cast<float*>(m_tmva_ly6_sp_frac.get(context)))) = v_ly_sp_frac[6]; - (*(const_cast<float*>(m_tmva_ly7_sp_frac.get(context)))) = v_ly_sp_frac[7]; + *m_tmva_n_track_qual.get(context) = static_cast<float>(n_qtrk_injet); + *m_tmva_ly0_sp_frac.get(context) = v_ly_sp_frac[0]; + *m_tmva_ly1_sp_frac.get(context) = v_ly_sp_frac[1]; + *m_tmva_ly2_sp_frac.get(context) = v_ly_sp_frac[2]; + *m_tmva_ly3_sp_frac.get(context) = v_ly_sp_frac[3]; + *m_tmva_ly4_sp_frac.get(context) = v_ly_sp_frac[4]; + *m_tmva_ly5_sp_frac.get(context) = v_ly_sp_frac[5]; + *m_tmva_ly6_sp_frac.get(context) = v_ly_sp_frac[6]; + *m_tmva_ly7_sp_frac.get(context) = v_ly_sp_frac[7]; float bdt_score = (**m_tmva_reader.get(context)).EvaluateMVA("BDT method"); // BDT threshold diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigHitDVHypoAlg.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigHitDVHypoAlg.h index 0babfcf61a314b074d8f9116a561f609c228e7f6..a20da90b3612d521ee894bc35e81f67e00b194f5 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigHitDVHypoAlg.h +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigHitDVHypoAlg.h @@ -61,16 +61,16 @@ private: const float&, const int, xAOD::TrigCompositeContainer*, int&) const; // BDT - SG::SlotSpecificObj<std::unique_ptr<TMVA::Reader> > m_tmva_reader ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_n_track_qual ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_ly0_sp_frac ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_ly1_sp_frac ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_ly2_sp_frac ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_ly3_sp_frac ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_ly4_sp_frac ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_ly5_sp_frac ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_ly6_sp_frac ATLAS_THREAD_SAFE; - SG::SlotSpecificObj<float> m_tmva_ly7_sp_frac ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<std::unique_ptr<TMVA::Reader> > m_tmva_reader ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_n_track_qual ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_ly0_sp_frac ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_ly1_sp_frac ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_ly2_sp_frac ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_ly3_sp_frac ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_ly4_sp_frac ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_ly5_sp_frac ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_ly6_sp_frac ATLAS_THREAD_SAFE; + mutable SG::SlotSpecificObj<float> m_tmva_ly7_sp_frac ATLAS_THREAD_SAFE; }; #endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGHITDVHYPOALG_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoAlg.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoAlg.cxx new file mode 100644 index 0000000000000000000000000000000000000000..941b324a18d01fee431bb00d6dec2bc7a4c08646 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoAlg.cxx @@ -0,0 +1,264 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + + * Trigger Hypo Tool, that is aimed at triggering large dEdx tracks + * author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK +*/ +#include "TrigdEdxTrackHypoAlg.h" +#include "AthViews/ViewHelper.h" +#include "TrigCompositeUtils/TrigCompositeUtils.h" +#include "GaudiKernel/SystemOfUnits.h" +#include "AthenaMonitoringKernel/Monitored.h" + +using TrigCompositeUtils::createAndStore; +using TrigCompositeUtils::DecisionContainer; +using TrigCompositeUtils::DecisionAuxContainer; +using TrigCompositeUtils::DecisionIDContainer; +using TrigCompositeUtils::decisionIDs; +using TrigCompositeUtils::newDecisionIn; +using TrigCompositeUtils::linkToPrevious; +using TrigCompositeUtils::viewString; +using TrigCompositeUtils::featureString; +using TrigCompositeUtils::hypoAlgNodeName; +using TrigCompositeUtils::findLink; +using TrigCompositeUtils::LinkInfo; +using TrigCompositeUtils::Decision; +using TrigCompositeUtils::allFailed; + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +TrigdEdxTrackHypoAlg::TrigdEdxTrackHypoAlg( const std::string& name, + ISvcLocator* pSvcLocator ) : + ::HypoBase( name, pSvcLocator ) {} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigdEdxTrackHypoAlg::initialize() +{ + CHECK( m_hypoTools.retrieve() ); + CHECK( m_dEdxTrkKey.initialize() ); + CHECK( m_dEdxHitKey.initialize() ); + CHECK( m_HPtdEdxTrkKey.initialize()); + + if ( !m_monTool.empty() ) CHECK( m_monTool.retrieve() ); + + m_highdEdxHitDefThres.clear(); m_highdEdxHitDefNames.clear(); + m_highdEdxHitDefThres.push_back(1.45); m_highdEdxHitDefNames.push_back("1p45"); + m_highdEdxHitDefThres.push_back(1.50); m_highdEdxHitDefNames.push_back("1p50"); + m_highdEdxHitDefThres.push_back(1.55); m_highdEdxHitDefNames.push_back("1p55"); + m_highdEdxHitDefThres.push_back(1.60); m_highdEdxHitDefNames.push_back("1p60"); + m_highdEdxHitDefThres.push_back(1.65); m_highdEdxHitDefNames.push_back("1p65"); + m_highdEdxHitDefThres.push_back(1.70); m_highdEdxHitDefNames.push_back("1p70"); + m_highdEdxHitDefThres.push_back(1.75); m_highdEdxHitDefNames.push_back("1p75"); + m_highdEdxHitDefThres.push_back(1.80); m_highdEdxHitDefNames.push_back("1p80"); + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigdEdxTrackHypoAlg::execute( const EventContext& context ) const +{ + // previous decisions + ATH_MSG_DEBUG( "Retrieving pervious decision: \"" << decisionInput().key() << "\"" ); + auto previousDecisionsHandle = SG::makeHandle( decisionInput(), context ); + ATH_CHECK( previousDecisionsHandle.isValid() ); + + ATH_MSG_DEBUG( "Running with " << previousDecisionsHandle->size() << " previous decisions" ); + if( previousDecisionsHandle->size()!=1 ) { + ATH_MSG_ERROR( "Previous decision handle size is not 1. It is" << previousDecisionsHandle->size() ); + return StatusCode::FAILURE; + } + const Decision * previousDecision = previousDecisionsHandle->at(0); + + TrigCompositeUtils::DecisionIDContainer previousDecisionIDs; + TrigCompositeUtils::decisionIDs(previousDecision, previousDecisionIDs); + ATH_MSG_VERBOSE( "IDs of active legs:" ); + for(auto decisionID: previousDecisionIDs) { ATH_MSG_VERBOSE( " " << decisionID ); } + + // new output decisions + ATH_MSG_DEBUG( "Creating new output decision handle" ); + SG::WriteHandle<DecisionContainer> outputHandle = createAndStore(decisionOutput(), context ); + auto outputDecisions = outputHandle.ptr(); + + // input objects + + // tracks + auto dEdxTrkHandle = SG::makeHandle(m_dEdxTrkKey, context ); + ATH_CHECK( dEdxTrkHandle.isValid() ); + ATH_MSG_DEBUG( "dEdxTrk handle size: " << dEdxTrkHandle->size() ); + + // hits + auto dEdxHitHandle = SG::makeHandle(m_dEdxHitKey, context ); + ATH_CHECK( dEdxHitHandle.isValid() ); + ATH_MSG_DEBUG( "dEdxHit handle size: " << dEdxHitHandle->size() ); + + const xAOD::TrigCompositeContainer * dEdxTrksContainer = dEdxTrkHandle.get(); + const xAOD::TrigCompositeContainer * dEdxHitsContainer = dEdxHitHandle.get(); + + if( dEdxTrksContainer == nullptr ) { + ATH_MSG_ERROR( "ERROR Cannot get dEdxTrks container"); + return StatusCode::FAILURE; + } + if( dEdxHitsContainer == nullptr ) { + ATH_MSG_ERROR( "ERROR Cannot get dEdxHits container"); + return StatusCode::FAILURE; + } + + // output EDM object + auto HPtdEdxTrkContainer = std::make_unique<xAOD::TrigCompositeContainer>(); + auto HPtdEdxTrkContainerAux = std::make_unique<xAOD::TrigCompositeAuxContainer>(); + HPtdEdxTrkContainer->setStore(HPtdEdxTrkContainerAux.get()); + + xAOD::TrigCompositeContainer* dedxContainer = HPtdEdxTrkContainer.get(); + + // Prepare inputs to HypoTool + int n_cands = 0; + ATH_CHECK( createCandidates(dEdxTrksContainer, dEdxHitsContainer, dedxContainer, n_cands) ); + ATH_MSG_DEBUG( "nr of cands by createCandidates = " << n_cands ); + + std::vector<TrigdEdxTrackHypoTool::dEdxTrkHypoInfo> dEdxTrkHypoInputs; + + for ( auto dedx : *dedxContainer ) { + Decision* newDecision = TrigCompositeUtils::newDecisionIn( outputDecisions, previousDecision, TrigCompositeUtils::hypoAlgNodeName(), context); + + ElementLink<xAOD::TrigCompositeContainer> dedxEL = ElementLink<xAOD::TrigCompositeContainer>(*outputHandle, dedx->index()); + ATH_CHECK( dedxEL.isValid() ); + + ATH_CHECK( newDecision->setObjectLink<xAOD::TrigCompositeContainer>(TrigCompositeUtils::featureString(), dedxEL) ); + + TrigdEdxTrackHypoTool::dEdxTrkHypoInfo hypoInfo{ newDecision, dedx, previousDecisionIDs }; + dEdxTrkHypoInputs.push_back( hypoInfo ); + } + + // monitor + ATH_CHECK( doMonitor(dedxContainer) ); + + // Loop over all hypoToolinputs and get their decisions + for ( auto & tool: m_hypoTools ) { + ATH_MSG_VERBOSE( "+++++ Now computing decision for " << tool->name() ); + ATH_CHECK( tool->decide( dEdxTrkHypoInputs ) ); + } + + DecisionContainer::iterator it = outputDecisions->begin(); + while(it != outputDecisions->end()) { + ATH_MSG_VERBOSE( "+++++ outputDecision: " << *it << " +++++" ); + if ( allFailed( *it ) ) { + ATH_MSG_VERBOSE( "---> all failed, erasing" ); + it = outputDecisions->erase(it); + } else { + ATH_MSG_VERBOSE( "---> not all failed" ); + ++it; + } + } + + // record + SG::WriteHandle<xAOD::TrigCompositeContainer> HPtdEdxTrkHandle(m_HPtdEdxTrkKey, context); + ATH_CHECK( HPtdEdxTrkHandle.record( std::move( HPtdEdxTrkContainer ), std::move( HPtdEdxTrkContainerAux ) ) ); + ATH_MSG_VERBOSE( "recorded HPtdEdxTrk object to SG" ); + + // + ATH_CHECK( hypoBaseOutputProcessing(outputHandle) ); + + // + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigdEdxTrackHypoAlg::doMonitor(const xAOD::TrigCompositeContainer* dedxContainer ) const +{ + auto monTrackPtGeV = Monitored::Scalar( "trackPtGeV", -999. ); + auto monTrackEta = Monitored::Scalar( "trackEta", -999. ); + auto monTracka0beam = Monitored::Scalar( "tracka0beam", -999. ); + auto monTrackdEdx = Monitored::Scalar( "trackdEdx", -999. ); + auto monTrackNhighdEdxHits = Monitored::Scalar( "trackNhighdEdxHits", -999. ); + auto monitorIt = Monitored::Group( m_monTool, monTrackdEdx, monTrackPtGeV, monTrackEta, monTracka0beam, monTrackNhighdEdxHits ); + + for ( const xAOD::TrigComposite* trk : *dedxContainer ) { + float trackPt = trk->getDetail<float>("HPtdEdxTrk_pt"); + float trackEta = trk->getDetail<float>("HPtdEdxTrk_eta"); + float tracka0beam = trk->getDetail<float>("HPtdEdxTrk_a0beam"); + float trackdEdx = trk->getDetail<float>("HPtdEdxTrk_dedx"); + int trackNhighdEdxHits = (int)trk->getDetail<int16_t>("HPtdEdxTrk_n_hdedx_hits_1p70"); + monTrackPtGeV = trackPt / 1000.0; + monTrackEta = trackEta; + monTracka0beam = tracka0beam; + monTrackdEdx = trackdEdx; + monTrackNhighdEdxHits = trackNhighdEdxHits; + } + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigdEdxTrackHypoAlg::createCandidates( const xAOD::TrigCompositeContainer* trksContainer, const xAOD::TrigCompositeContainer* hitsContainer, + xAOD::TrigCompositeContainer* dedxContainer, int& n_trks) const +{ + n_trks = 0; + + for ( const xAOD::TrigComposite* trk : *trksContainer ) { + + ATH_MSG_VERBOSE("+++++ i_trk: " << n_trks << " +++++"); + + float trackPt = trk->getDetail<float>("dEdxTrk_pt"); + float trackEta = trk->getDetail<float>("dEdxTrk_eta"); + float trackPhi = trk->getDetail<float>("dEdxTrk_phi"); + float tracka0beam = trk->getDetail<float>("dEdxTrk_a0beam"); + float trackdEdx = trk->getDetail<float>("dEdxTrk_dedx"); + int trackId = trk->getDetail<int> ("dEdxTrk_id"); + ATH_MSG_VERBOSE( "track pt / eta / a0beam / dEdx / Id = " << trackPt << " / " << trackEta << " / " << tracka0beam << " / " << trackdEdx << " / " << trackId ); + + std::vector<int16_t> n_hdedx_hits; + for(unsigned int idef=0; idef<m_highdEdxHitDefThres.size(); ++idef) { n_hdedx_hits.push_back(0); } + + for ( const xAOD::TrigComposite* hit : *hitsContainer ) { + int id = hit->getDetail<int>("dEdxHit_trkid"); + if( id != trackId ) continue; + float dedx = hit->getDetail<float>("dEdxHit_dedx"); + for(unsigned int idef=0; idef<m_highdEdxHitDefThres.size(); ++idef) { + if( dedx >= m_highdEdxHitDefThres[idef] ) n_hdedx_hits[idef]++; + } + } + for(unsigned int idef=0; idef<m_highdEdxHitDefThres.size(); ++idef) { + ATH_MSG_VERBOSE( m_highdEdxHitDefNames[idef] << ", thres=" << m_highdEdxHitDefThres[idef] << ": nr of high dEdx hits=" << n_hdedx_hits[idef] ); + } + + int16_t n_hits_innermost = (int16_t)trk->getDetail<int>("dEdxTrk_n_hits_innermost"); + int16_t n_hits_inner = (int16_t)trk->getDetail<int>("dEdxTrk_n_hits_inner"); + int16_t n_hits_pix = (int16_t)trk->getDetail<int>("dEdxTrk_n_hits_pix"); + int16_t n_hits_sct = (int16_t)trk->getDetail<int>("dEdxTrk_n_hits_sct"); + + // create EDM object + ++n_trks; + xAOD::TrigComposite *dedx = new xAOD::TrigComposite(); + dedx->makePrivateStore(); + dedxContainer->push_back(dedx); + + dedx->setDetail<float>("HPtdEdxTrk_pt", trackPt); + dedx->setDetail<float>("HPtdEdxTrk_eta", trackEta); + dedx->setDetail<float>("HPtdEdxTrk_phi", trackPhi); + dedx->setDetail<float>("HPtdEdxTrk_a0beam",tracka0beam); + dedx->setDetail<float>("HPtdEdxTrk_dedx", trackdEdx); + for(unsigned int idef=0; idef<m_highdEdxHitDefThres.size(); ++idef) { + std::string name = "HPtdEdxTrk_n_hdedx_hits_" + m_highdEdxHitDefNames[idef]; + dedx->setDetail<int16_t>(name, n_hdedx_hits[idef]); + } + dedx->setDetail<int16_t>("HPtdEdxTrk_n_hits_innermost", n_hits_innermost); + dedx->setDetail<int16_t>("HPtdEdxTrk_n_hits_inner", n_hits_inner); + dedx->setDetail<int16_t>("HPtdEdxTrk_n_hits_pix", n_hits_pix); + dedx->setDetail<int16_t>("HPtdEdxTrk_n_hits_sct", n_hits_sct); + } + + // + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoAlg.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoAlg.h new file mode 100644 index 0000000000000000000000000000000000000000..485bacdf141dc51e502f0858e79db3bacd0be5fb --- /dev/null +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoAlg.h @@ -0,0 +1,46 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ +#ifndef TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKHYPOALG_H +#define TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKHYPOALG_H + +#include <string> + +#include "Gaudi/Property.h" +#include "DecisionHandling/HypoBase.h" +#include "TrigdEdxTrackHypoTool.h" +#include "AthenaMonitoringKernel/GenericMonitoringTool.h" + +/** + * @class TrigdEdxTrackHypoAlg + * @brief Implements Hypo selection on triggering large dEdx tracks + * @author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK + **/ + +class TrigdEdxTrackHypoAlg : public ::HypoBase +{ +public: + + TrigdEdxTrackHypoAlg( const std::string& name, ISvcLocator* pSvcLocator ); + + virtual StatusCode initialize() override; + virtual StatusCode execute(const EventContext& context) const override; + +private: + + ToolHandleArray< TrigdEdxTrackHypoTool > m_hypoTools {this, "HypoTools", {}, "Tools to perfrom selection"}; + + SG::ReadHandleKey< xAOD::TrigCompositeContainer > m_dEdxTrkKey {this, "dEdxTrk", "HLT_dEdxTrk", ""}; + SG::ReadHandleKey< xAOD::TrigCompositeContainer> m_dEdxHitKey {this, "dEdxHit", "HLT_dEdxHit", ""}; + SG::WriteHandleKey<xAOD::TrigCompositeContainer> m_HPtdEdxTrkKey {this, "HPtdEdxTrk", "HLT_HPtdEdxTrk", ""}; + + StatusCode createCandidates(const xAOD::TrigCompositeContainer*, const xAOD::TrigCompositeContainer*, xAOD::TrigCompositeContainer*, int&) const; + + ToolHandle<GenericMonitoringTool> m_monTool{ this, "MonTool", "", "Monitoring tool" }; + StatusCode doMonitor(const xAOD::TrigCompositeContainer*) const; + + std::vector<float> m_highdEdxHitDefThres; + std::vector<std::string> m_highdEdxHitDefNames; +}; + +#endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKHYPOALG_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoTool.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoTool.cxx new file mode 100644 index 0000000000000000000000000000000000000000..601b0078ba10a807dfb0ffb63f435ebcbe9fc6fc --- /dev/null +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoTool.cxx @@ -0,0 +1,177 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + + * Trigger Hypo Tool, that is aimed at triggering large dEdx tracks + * author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK +*/ + +#include "TrigCompositeUtils/TrigCompositeUtils.h" +#include "TrigCompositeUtils/HLTIdentifier.h" +#include "TrigCompositeUtils/Combinators.h" +#include "AthenaMonitoringKernel/Monitored.h" +#include "TrigdEdxTrackHypoTool.h" +#include "GaudiKernel/PhysicalConstants.h" + +using namespace TrigCompositeUtils; + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +TrigdEdxTrackHypoTool::TrigdEdxTrackHypoTool( const std::string& type, + const std::string& name, + const IInterface* parent ) + : AthAlgTool( type, name, parent ), + m_decisionId( HLT::Identifier::fromToolName( name ) ) {} + +TrigdEdxTrackHypoTool::~TrigdEdxTrackHypoTool() {} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigdEdxTrackHypoTool::initialize() +{ + ATH_MSG_INFO( "Initialization completed successfully:" ); + ATH_MSG_INFO( " cutTrackPtGeV = " << m_cutTrackPtGeV) ; + ATH_MSG_INFO( " cutTrackEta = " << m_cutTrackEta ); + ATH_MSG_INFO( " cutTrackdEdx = " << m_cutTrackdEdx ); + ATH_MSG_INFO( " cutTrackNhighdEdxHits = " << m_cutTrackNhighdEdxHits ); + ATH_MSG_INFO( " cutTrackHighdEdxDef = " << m_cutTrackHighdEdxDef ); + ATH_MSG_INFO( "Tool configured for chain/id: " << m_decisionId ); + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigdEdxTrackHypoTool::decide( std::vector<dEdxTrkHypoInfo>& toolInputs ) const +{ + size_t numTrigger = m_cutTrackPtGeV.size(); + size_t numdEdxTrks = toolInputs.size(); + + ATH_MSG_VERBOSE( "Number of dEdxTrks = " << numdEdxTrks ); + + if ( numTrigger == 1 ) { + ATH_MSG_VERBOSE( "Applying selection of single for " << m_decisionId ); + return inclusiveSelection(toolInputs); + } + else { + ATH_MSG_VERBOSE( "Applying selection of multiplicity for " << m_decisionId ); + return multiplicitySelection(toolInputs); + } + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigdEdxTrackHypoTool::inclusiveSelection(std::vector<dEdxTrkHypoInfo>& toolInputs) const +{ + bool isPassed = false; + unsigned int idEdxTrk=0; + for ( auto& input: toolInputs ) { + ATH_MSG_VERBOSE( "--- idEdxTrk=" << idEdxTrk << " ---"); + if ( TrigCompositeUtils::passed( m_decisionId.numeric(), input.previousDecisionsIDs ) ) { + if ( decideOnSingleObject( input, 0 )==true ) { + ATH_MSG_VERBOSE( " Passed selection --> adding DecisionID"); + isPassed = true; + TrigCompositeUtils::addDecisionID(m_decisionId, input.decision); + } + } else { + ATH_MSG_VERBOSE( " Not match DecisionID: " << m_decisionId ); + } + ++idEdxTrk; + } + + ATH_MSG_VERBOSE( "Inclusive selection isPassed = " << isPassed); + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +StatusCode TrigdEdxTrackHypoTool::multiplicitySelection(std::vector<dEdxTrkHypoInfo>& toolInputs) const +{ + HLT::Index2DVec passingSelection( m_cutTrackPtGeV.size() ); + + for ( size_t cutIndex=0; cutIndex < m_cutTrackPtGeV.size(); ++cutIndex ) { + size_t elementIndex{ 0 }; + for ( auto& input: toolInputs ) { + if ( TrigCompositeUtils::passed( m_decisionId.numeric(), input.previousDecisionsIDs ) ) { + if ( decideOnSingleObject( input, cutIndex ) == true ) { + ATH_MSG_VERBOSE( "Pass through selection " << m_decisionId << " : Event[" << elementIndex << "]" ); + passingSelection[cutIndex].push_back( elementIndex ); + } + } + else { + ATH_MSG_VERBOSE( "Not match DecisionID " << m_decisionId ); + } + elementIndex++; + } + // If no object passes the selection, multipul selection should stop. + if ( passingSelection[cutIndex].empty() ) { + ATH_MSG_VERBOSE( "No object passed selection " << cutIndex << " rejecting" ); + return StatusCode::SUCCESS; + } + } + + std::set<size_t> passingIndices; + HLT::elementsInUniqueCombinations( passingSelection, passingIndices ); + + if ( passingIndices.empty() ) { + ATH_MSG_VERBOSE( "No track passed through selection " << m_decisionId ); + return StatusCode::SUCCESS; + } + + for ( auto idx: passingIndices ) { + ATH_MSG_VERBOSE( "track[" << idx << "] passes through Chain/ID " << m_decisionId << " with pT" ); + TrigCompositeUtils::addDecisionID( m_decisionId.numeric(), toolInputs[idx].decision ); + } + + return StatusCode::SUCCESS; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ + +bool TrigdEdxTrackHypoTool::decideOnSingleObject( dEdxTrkHypoInfo& input, size_t cutIndex ) const +{ + const xAOD::TrigComposite* trk = input.dedxTrk; + + // pT cut + float trackPt = trk->getDetail<float>("HPtdEdxTrk_pt"); + float trackPtGeV = trackPt / 1000.0; + float ptThreshold = m_cutTrackPtGeV[cutIndex]; + if( trackPtGeV < ptThreshold ) return false; + + // eta cut + float trackEta = trk->getDetail<float>("HPtdEdxTrk_eta"); + float etaThreshold = m_cutTrackEta[cutIndex]; + if( std::abs(trackEta) > etaThreshold ) return false; + + // a0beam cut + float tracka0beam = trk->getDetail<float>("HPtdEdxTrk_a0beam"); + float a0Threshold = m_cutTracka0beam[cutIndex]; + if( std::abs(tracka0beam) > a0Threshold ) return false; + + // dEdx cut + float trackdEdx = trk->getDetail<float>("HPtdEdxTrk_dedx"); + float dedxThreshold = m_cutTrackdEdx[cutIndex]; + if( trackdEdx < dedxThreshold ) return false; + + // nr of high dEdx hits + std::string name = "HPtdEdxTrk_n_hdedx_hits_" + m_cutTrackHighdEdxDef[cutIndex]; + if( ! trk->hasDetail<int16_t>(name) ) ATH_MSG_ERROR( "HPtdEdxTrk container does not have entry for " << name ); + int n_hdedx_hits = (int)trk->getDetail<int16_t>(name); + int n_hdedx_hits_threshold = m_cutTrackNhighdEdxHits[cutIndex]; + if( n_hdedx_hits < n_hdedx_hits_threshold ) return false; + + // + ATH_MSG_VERBOSE( " Selected, cut index / pT / eta / a0 / dEdx / n high dEdx hits = " << cutIndex << " / " << trackPtGeV << " / " << trackEta << " / " << tracka0beam << " / " << trackdEdx << " / " << n_hdedx_hits); + + return true; +} + +// ------------------------------------------------------------------------------------------------ +// ------------------------------------------------------------------------------------------------ diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoTool.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoTool.h new file mode 100644 index 0000000000000000000000000000000000000000..6ff744238ee22ad339722b10818a0505ade35524 --- /dev/null +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackHypoTool.h @@ -0,0 +1,57 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ +#ifndef TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKHYPOTOOL_H +#define TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKHYPOTOOL_H + +#include "Gaudi/Property.h" +#include "AthenaBaseComps/AthAlgTool.h" +#include "TrigCompositeUtils/TrigCompositeUtils.h" +#include "xAODTracking/TrackParticlexAODHelpers.h" +#include "xAODTracking/TrackParticleContainer.h" +#include <string> + +/** + * @class TrigdEdxTrackHypoTool + * @brief Generated the decision for hypo thats triggers on high pt isolated tracks + * @author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK + **/ + +class TrigdEdxTrackHypoTool : virtual public ::AthAlgTool +{ +public: + TrigdEdxTrackHypoTool( const std::string& type, + const std::string& name, + const IInterface* parent ); + + virtual ~TrigdEdxTrackHypoTool(); + virtual StatusCode initialize() override; + + struct dEdxTrkHypoInfo { + TrigCompositeUtils::Decision* decision; + const xAOD::TrigComposite* dedxTrk; + const TrigCompositeUtils::DecisionIDContainer previousDecisionsIDs; + }; + + /** + * @brief decides upon a collection of tracks + **/ + StatusCode decide( std::vector<dEdxTrkHypoInfo>& ) const; + +private: + + HLT::Identifier m_decisionId; + Gaudi::Property< std::vector<float> > m_cutTrackPtGeV { this, "cutTrackPtGeV", { float(20.0) }, "Track pT requirement in GeV" }; + Gaudi::Property< std::vector<float> > m_cutTrackEta { this, "cutTrackEta", { float(2.5) }, "Track Eta requirement" }; + Gaudi::Property< std::vector<float> > m_cutTracka0beam { this, "cutTracka0beam", { float(2.5) }, "Track a0beam requirement" }; + Gaudi::Property< std::vector<float> > m_cutTrackdEdx { this, "cutTrackdEdx", { float(1.7) }, "Track dE/dx requirement" }; + Gaudi::Property< std::vector<int> > m_cutTrackNhighdEdxHits { this, "cutTrackNhighdEdxHits", { int(2) }, "N high dEdx of pixel hits requirement" }; + Gaudi::Property< std::vector<std::string> > m_cutTrackHighdEdxDef { this, "cutTrackHighdEdxDef", { std::string("1p70") }, "Definition / threshold of high dEdx hits" }; + + // + StatusCode inclusiveSelection(std::vector<dEdxTrkHypoInfo>& ) const; + StatusCode multiplicitySelection(std::vector<dEdxTrkHypoInfo>& ) const; + bool decideOnSingleObject( dEdxTrkHypoInfo&, size_t ) const; +}; + +#endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKHYPOTOOL_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoAlg.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoAlg.cxx deleted file mode 100644 index f866a267a84698e0f81b1c683294004c6aa15bdd..0000000000000000000000000000000000000000 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoAlg.cxx +++ /dev/null @@ -1,122 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration - - * Trigger Hypo Tool, that is aimed at triggering large dEdx tracks - * author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK -*/ -#include "TrigdEdxTrackTriggerHypoAlg.h" -#include "AthViews/ViewHelper.h" -#include "TrigCompositeUtils/TrigCompositeUtils.h" -#include "GaudiKernel/SystemOfUnits.h" - -using TrigCompositeUtils::createAndStore; -using TrigCompositeUtils::DecisionContainer; -using TrigCompositeUtils::DecisionAuxContainer; -using TrigCompositeUtils::DecisionIDContainer; -using TrigCompositeUtils::decisionIDs; -using TrigCompositeUtils::newDecisionIn; -using TrigCompositeUtils::linkToPrevious; -using TrigCompositeUtils::viewString; -using TrigCompositeUtils::featureString; -using TrigCompositeUtils::hypoAlgNodeName; -using TrigCompositeUtils::findLink; -using TrigCompositeUtils::LinkInfo; -using TrigCompositeUtils::Decision; -using TrigCompositeUtils::allFailed; - -TrigdEdxTrackTriggerHypoAlg::TrigdEdxTrackTriggerHypoAlg( const std::string& name, - ISvcLocator* pSvcLocator ) : - ::HypoBase( name, pSvcLocator ) {} - - -StatusCode TrigdEdxTrackTriggerHypoAlg::initialize() -{ - CHECK( m_hypoTools.retrieve() ); - CHECK( m_dEdxTrkKey.initialize() ); - CHECK( m_dEdxHitKey.initialize() ); - CHECK( m_HPtdEdxTrkKey.initialize()); - return StatusCode::SUCCESS; -} - -StatusCode TrigdEdxTrackTriggerHypoAlg::execute( const EventContext& context ) const -{ - const std::string header = "UTT: "; - - ATH_MSG_DEBUG( header << name() << "..." ); - auto previousDecisionsHandle = SG::makeHandle( decisionInput(), context ); - ATH_CHECK( previousDecisionsHandle.isValid() ); - - // new output decisions - ATH_MSG_DEBUG( header << "Creating new output decision handle" ); - SG::WriteHandle<DecisionContainer> outputHandle = createAndStore(decisionOutput(), context ); - auto decisions = outputHandle.ptr(); - - // previous decisions - ATH_MSG_DEBUG( header << "Running with " << previousDecisionsHandle->size() << " previous decisions" ); - if(previousDecisionsHandle->size()!=1) { - ATH_MSG_ERROR( header << "Previous decision handle size isn't 1. It is" << previousDecisionsHandle->size() ); - return StatusCode::FAILURE; - } - const Decision * previousDecision = previousDecisionsHandle->at(0); - - TrigCompositeUtils::DecisionIDContainer previousDecisionIDs; - TrigCompositeUtils::decisionIDs(previousDecision, previousDecisionIDs); - - // input dEdx objects - auto dEdxTrkHandle = SG::makeHandle(m_dEdxTrkKey, context ); - ATH_CHECK( dEdxTrkHandle.isValid() ); - ATH_MSG_DEBUG( header << "dEdxTrk handle size: " << dEdxTrkHandle->size() ); - - auto dEdxHitHandle = SG::makeHandle(m_dEdxHitKey, context ); - ATH_CHECK( dEdxHitHandle.isValid() ); - ATH_MSG_DEBUG( header << "dEdxHit handle size: " << dEdxHitHandle->size() ); - - const xAOD::TrigCompositeContainer * dEdxTrksContainer = dEdxTrkHandle.get(); - const xAOD::TrigCompositeContainer * dEdxHitsContainer = dEdxHitHandle.get(); - - if( dEdxTrksContainer == nullptr ) { - ATH_MSG_ERROR( header << "ERROR Cannot get dEdxTrks container"); - return StatusCode::FAILURE; - } - if( dEdxHitsContainer == nullptr ) { - ATH_MSG_ERROR( header << "ERROR Cannot get dEdxHits container"); - return StatusCode::FAILURE; - } - - // output EDM object - auto HPtdEdxTrkContainer = std::make_unique<xAOD::TrigCompositeContainer>(); - auto HPtdEdxTrkContainerAux = std::make_unique<xAOD::TrigCompositeAuxContainer>(); - HPtdEdxTrkContainer->setStore(HPtdEdxTrkContainerAux.get()); - - // create decision - auto d = newDecisionIn( decisions , previousDecision, hypoAlgNodeName(), context ); - TrigdEdxTrackTriggerHypoTool::TrackInfo trkInfo{ d, dEdxTrksContainer, dEdxHitsContainer, *HPtdEdxTrkContainer, previousDecisionIDs }; - - // Loop over all hypoToolinputs and get their decisions - for ( auto & tool: m_hypoTools ) { - ATH_CHECK( tool->decide( trkInfo ) ); - } - - DecisionContainer::iterator it = decisions->begin(); - bool isPassed = false; - while(it != decisions->end()) { - if (allFailed( *it )) { - it = decisions->erase(it); - } else { - isPassed = true; - ++it; - } - } - - // record link to EDM object if it is passed - if( isPassed ) { - SG::WriteHandle<xAOD::TrigCompositeContainer> HPtdEdxTrkHandle(m_HPtdEdxTrkKey, context); - ATH_CHECK( HPtdEdxTrkHandle.record( std::move( HPtdEdxTrkContainer ), std::move( HPtdEdxTrkContainerAux ) ) ); - ATH_CHECK( d->setObjectLink( featureString(), ElementLink<xAOD::TrigCompositeContainer>( m_HPtdEdxTrkKey.key(), 0) ) ); - } - - ATH_CHECK( hypoBaseOutputProcessing(outputHandle) ); - - // - return StatusCode::SUCCESS; -} diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoAlg.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoAlg.h deleted file mode 100644 index eceecebe0abd6bf10ed6d86308bd06589b23a377..0000000000000000000000000000000000000000 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoAlg.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -*/ -#ifndef TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKTRIGGERHYPOALG_H -#define TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKTRIGGERHYPOALG_H - -#include "Gaudi/Property.h" - -#include <string> -#include "TrigdEdxTrackTriggerHypoTool.h" -#include "DecisionHandling/HypoBase.h" - -/** - * @class TrigdEdxTrackTriggerHypoAlg - * @brief Implements Hypo selection on triggering large dEdx tracks - * @author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK - **/ - -class TrigdEdxTrackTriggerHypoAlg : public ::HypoBase -{ -public: - - TrigdEdxTrackTriggerHypoAlg( const std::string& name, ISvcLocator* pSvcLocator ); - - virtual StatusCode initialize() override; - virtual StatusCode execute(const EventContext& context) const override; - -private: - ToolHandleArray< TrigdEdxTrackTriggerHypoTool > m_hypoTools {this, "HypoTools", {}, "Tools to perfrom selection"}; - SG::ReadHandleKey< xAOD::TrigCompositeContainer > m_dEdxTrkKey {this, "dEdxTrk", "HLT_dEdxTrk", ""}; - SG::ReadHandleKey< xAOD::TrigCompositeContainer> m_dEdxHitKey {this, "dEdxHit", "HLT_dEdxHit", ""}; - SG::WriteHandleKey<xAOD::TrigCompositeContainer> m_HPtdEdxTrkKey {this, "HPtdEdxTrk", "HLT_HPtdEdxTrk", ""}; -}; - -#endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKTRIGGERHYPOALG_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoTool.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoTool.cxx deleted file mode 100644 index 702ceb8a3dfe68f135c7ad949b46daf2197f1e18..0000000000000000000000000000000000000000 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoTool.cxx +++ /dev/null @@ -1,149 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration - - * Trigger Hypo Tool, that is aimed at triggering large dEdx tracks - * author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK -*/ - -#include "TrigCompositeUtils/TrigCompositeUtils.h" -#include "TrigCompositeUtils/HLTIdentifier.h" -#include "TrigCompositeUtils/Combinators.h" -#include "AthenaMonitoringKernel/Monitored.h" -#include "TrigdEdxTrackTriggerHypoTool.h" -#include "GaudiKernel/PhysicalConstants.h" - -using namespace TrigCompositeUtils; - -TrigdEdxTrackTriggerHypoTool::TrigdEdxTrackTriggerHypoTool( const std::string& type, - const std::string& name, - const IInterface* parent ) - : AthAlgTool( type, name, parent ), - m_decisionId( HLT::Identifier::fromToolName( name ) ) {} - -StatusCode TrigdEdxTrackTriggerHypoTool::initialize() -{ - if ( !m_monTool.empty() ) CHECK( m_monTool.retrieve() ); - - ATH_MSG_INFO("Initialization completed successfully:"); - ATH_MSG_INFO("cutTrackPtGeV = " << m_cutTrackPtGeV); - ATH_MSG_INFO("cutTrackEta = " << m_cutTrackEta); - ATH_MSG_INFO("cutTrackdEdx = " << m_cutTrackdEdx); - ATH_MSG_INFO("cutTrackNhighdEdxHits = " << m_cutTrackNhighdEdxHits); - ATH_MSG_INFO("cutTrackHighdEdxDef = " << m_cutTrackHighdEdxDef); - ATH_MSG_INFO("Tool configured for chain/id: " << m_decisionId); - - return StatusCode::SUCCESS; -} - -TrigdEdxTrackTriggerHypoTool::~TrigdEdxTrackTriggerHypoTool() {} - -StatusCode TrigdEdxTrackTriggerHypoTool::decide( TrackInfo& input ) const -{ - auto monTrackPtGeV = Monitored::Scalar( "trackPtGeV", -999. ); - auto monTrackEta = Monitored::Scalar( "trackEta", -999. ); - auto monTracka0beam = Monitored::Scalar( "tracka0beam", -999. ); - auto monTrackdEdx = Monitored::Scalar( "trackdEdx", -999. ); - auto monTrackNhighdEdxHits = Monitored::Scalar( "trackNhighdEdxHits", -999. ); - auto monitorIt = Monitored::Group( m_monTool, monTrackdEdx, monTrackPtGeV, monTrackEta, monTracka0beam, monTrackNhighdEdxHits ); - - const xAOD::TrigCompositeContainer* trksContainer = input.trksContainer; - const xAOD::TrigCompositeContainer* hitsContainer = input.hitsContainer; - xAOD::TrigCompositeContainer& dedxContainer = input.dedxContainer; - - const int cutIndex = 0; - - unsigned int i_trk=0; - unsigned int n_passed_trk=0; - for ( const xAOD::TrigComposite* trk : *trksContainer ) { - ATH_MSG_DEBUG("+++++ i_trk: " << i_trk++ << " +++++"); - - // values - float trackPt = trk->getDetail<float>("dEdxTrk_pt"); - float trackEta = trk->getDetail<float>("dEdxTrk_eta"); - float tracka0beam = trk->getDetail<float>("dEdxTrk_a0beam"); - float trackdEdx = trk->getDetail<float>("dEdxTrk_dedx"); - int trackId = trk->getDetail<int> ("dEdxTrk_id"); - ATH_MSG_DEBUG("track pt / eta / a0beam / dEdx / Id = " << trackPt << " / " << trackEta << " / " << tracka0beam << " / " << trackdEdx << " / " << trackId ); - - // pT cut - float trackPtGeV = trackPt / 1000.0; - monTrackPtGeV = trackPtGeV; - if( trackPtGeV < m_cutTrackPtGeV[cutIndex] ) { - ATH_MSG_DEBUG("Fails pt cut in GeV: " << trackPtGeV << " < " << m_cutTrackPtGeV[cutIndex] ); - continue; - } - - // eta cut - monTrackEta = trackEta; - if( std::abs(trackEta) > m_cutTrackEta[cutIndex] ) { - ATH_MSG_DEBUG("Fails eta cut: " << trackEta << " < " << m_cutTrackEta[cutIndex] ); - continue; - } - - // a0beam cut - monTracka0beam = tracka0beam; - if( std::abs(tracka0beam) > m_cutTracka0beam[cutIndex] ) { - ATH_MSG_DEBUG("Fails a0beam cut: " << tracka0beam << " < " << m_cutTracka0beam[cutIndex] ); - continue; - } - - // dEdx cut - monTrackdEdx = trackdEdx; - if( trackdEdx < m_cutTrackdEdx[cutIndex] ) { - ATH_MSG_DEBUG("Fails dEdx cut: " << trackdEdx << " < " << m_cutTrackdEdx[cutIndex] ); - continue; - } - - // nr of high dEdx hits cut - int n_hdedx_hits = 0; - ATH_MSG_DEBUG("looping hits for trackId=" << trackId); - for ( const xAOD::TrigComposite* hit : *hitsContainer ) { - int id = hit->getDetail<int>("dEdxHit_trkid"); - if( id != trackId ) continue; - float dedx = hit->getDetail<float>("dEdxHit_dedx"); - ATH_MSG_DEBUG("... dEdx = " << dedx); - if( dedx < m_cutTrackHighdEdxDef[cutIndex] ) continue; - n_hdedx_hits++; - } - monTrackNhighdEdxHits = n_hdedx_hits; - if( n_hdedx_hits < m_cutTrackNhighdEdxHits[cutIndex] ) { - ATH_MSG_DEBUG("Fails nr of high dEdx hits cut" << n_hdedx_hits << " < " << m_cutTrackNhighdEdxHits[cutIndex] ); - continue; - } - - // passed selection - ATH_MSG_DEBUG("Passed selection"); - n_passed_trk++; - - // create EDM object - xAOD::TrigComposite *dedx = new xAOD::TrigComposite(); - dedx->makePrivateStore(); - dedxContainer.push_back(dedx); - float trackPhi = trk->getDetail<float>("dEdxTrk_phi"); - int n_hits_innermost = trk->getDetail<int> ("dEdxTrk_n_hits_innermost"); - int n_hits_inner = trk->getDetail<int> ("dEdxTrk_n_hits_inner"); - int n_hits_pix = trk->getDetail<int> ("dEdxTrk_n_hits_pix"); - int n_hits_sct = trk->getDetail<int> ("dEdxTrk_n_hits_sct"); - dedx->setDetail<float>("HPtdEdxTrk_pt", trackPt); - dedx->setDetail<float>("HPtdEdxTrk_eta", trackEta); - dedx->setDetail<float>("HPtdEdxTrk_phi", trackPhi); - dedx->setDetail<float>("HPtdEdxTrk_dedx", trackdEdx); - dedx->setDetail<int> ("HPtdEdxTrk_n_hdedx_hits", n_hdedx_hits); - dedx->setDetail<float>("HPtdEdxTrk_a0beam", tracka0beam); - dedx->setDetail<int> ("HPtdEdxTrk_n_hits_innermost", n_hits_innermost); - dedx->setDetail<int> ("HPtdEdxTrk_n_hits_inner", n_hits_inner); - dedx->setDetail<int> ("HPtdEdxTrk_n_hits_pix", n_hits_pix); - dedx->setDetail<int> ("HPtdEdxTrk_n_hits_sct", n_hits_sct); - ATH_MSG_DEBUG("Created a new entry EDM"); - } - - // - if( n_passed_trk > 0 ) { - addDecisionID( m_decisionId.numeric(), input.decision ); - ATH_MSG_DEBUG("REGTEST event accepted"); - return StatusCode::SUCCESS; - } - else { - return StatusCode::SUCCESS; - } -} diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoTool.h b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoTool.h deleted file mode 100644 index 8a3ce90031141fd818e8c491c48a681c8260bcd3..0000000000000000000000000000000000000000 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/TrigdEdxTrackTriggerHypoTool.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -*/ -#ifndef TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKTRIGGERHYPOTOOL_H -#define TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKTRIGGERHYPOTOOL_H - -#include "Gaudi/Property.h" -#include "AthenaBaseComps/AthAlgTool.h" -#include "AthenaMonitoringKernel/GenericMonitoringTool.h" -#include "TrigCompositeUtils/TrigCompositeUtils.h" -#include "xAODTracking/TrackParticlexAODHelpers.h" -#include "xAODTracking/TrackParticleContainer.h" -#include <string> - -/** - * @class TrigdEdxTrackTriggerHypoTool - * @brief Generated the decision for hypo thats triggers on high pt isolated tracks - * @author Kunihiro Nagano <kunihiro.nagano@cern.ch> - KEK - **/ - -class TrigdEdxTrackTriggerHypoTool : virtual public ::AthAlgTool -{ -public: - TrigdEdxTrackTriggerHypoTool( const std::string& type, - const std::string& name, - const IInterface* parent ); - - virtual ~TrigdEdxTrackTriggerHypoTool(); - virtual StatusCode initialize() override; - - struct TrackInfo { - TrigCompositeUtils::Decision* decision; - const xAOD::TrigCompositeContainer* trksContainer; - const xAOD::TrigCompositeContainer* hitsContainer; - xAOD::TrigCompositeContainer& dedxContainer; - const TrigCompositeUtils::DecisionIDContainer previousDecisionsIDs; - }; - - /** - * @brief decides upon a collection of tracks - **/ - StatusCode decide( TrackInfo& input ) const; - -private: - HLT::Identifier m_decisionId; - Gaudi::Property< std::vector<float> > m_cutTrackPtGeV { this, "cutTrackPtGeV", { float(20.0) }, "Track pT requirement in GeV" }; - Gaudi::Property< std::vector<float> > m_cutTrackEta { this, "cutTrackEta", { float(2.5) }, "Track Eta requirement" }; - Gaudi::Property< std::vector<float> > m_cutTracka0beam { this, "cutTracka0beam", { float(2.5) }, "Track a0beam requirement" }; - Gaudi::Property< std::vector<float> > m_cutTrackdEdx { this, "cutTrackdEdx", { float(1.7) }, "Track dE/dx requirement" }; - Gaudi::Property< std::vector<int> > m_cutTrackNhighdEdxHits{ this, "cutTrackNhighdEdxHits", { int(2) }, "N high dEdx of pixel hits requirement" }; - Gaudi::Property< std::vector<float> > m_cutTrackHighdEdxDef { this, "cutTrackHighdEdxDef", { float(1.7) }, "Definition / threshold of high dEdx hits" }; - - ToolHandle<GenericMonitoringTool> m_monTool{ this, "MonTool", "", "Monitoring tool" }; -}; - -#endif //> !TRIGLONGLIVEDPARTICLESHYPO_TRIGDEDXTRACKTRIGGERHYPOTOOL_H diff --git a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/components/TrigLongLivedParticlesHypo_entries.cxx b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/components/TrigLongLivedParticlesHypo_entries.cxx index f73444f60c8f15f924207370c9b459e4c76245de..e2a3d5f207eedd892b49fe2b6e72620a16391c13 100644 --- a/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/components/TrigLongLivedParticlesHypo_entries.cxx +++ b/Trigger/TrigHypothesis/TrigLongLivedParticlesHypo/src/components/TrigLongLivedParticlesHypo_entries.cxx @@ -2,19 +2,19 @@ #include "../FastTrackFinderLRTHypoAlg.h" #include "../TrigIsoHPtTrackTriggerHypoAlg.h" #include "../TrigIsoHPtTrackTriggerHypoTool.h" -#include "../TrigdEdxTrackTriggerHypoAlg.h" -#include "../TrigdEdxTrackTriggerHypoTool.h" +#include "../TrigdEdxTrackHypoAlg.h" +#include "../TrigdEdxTrackHypoTool.h" #include "../TrigHitDVHypoAlg.h" #include "../TrigHitDVHypoTool.h" -#include "../TrigDisappearingTrackTriggerHypoAlg.h" -#include "../TrigDisappearingTrackTriggerHypoTool.h" +#include "../TrigDisappearingTrackHypoAlg.h" +#include "../TrigDisappearingTrackHypoTool.h" -DECLARE_COMPONENT( TrigDisappearingTrackTriggerHypoAlg ) -DECLARE_COMPONENT( TrigDisappearingTrackTriggerHypoTool ) +DECLARE_COMPONENT( TrigDisappearingTrackHypoAlg ) +DECLARE_COMPONENT( TrigDisappearingTrackHypoTool ) DECLARE_COMPONENT( TrigHitDVHypoAlg ) DECLARE_COMPONENT( TrigHitDVHypoTool ) -DECLARE_COMPONENT( TrigdEdxTrackTriggerHypoAlg ) -DECLARE_COMPONENT( TrigdEdxTrackTriggerHypoTool ) +DECLARE_COMPONENT( TrigdEdxTrackHypoAlg ) +DECLARE_COMPONENT( TrigdEdxTrackHypoTool ) DECLARE_COMPONENT( TrigIsoHPtTrackTriggerHypoAlg ) DECLARE_COMPONENT( TrigIsoHPtTrackTriggerHypoTool ) DECLARE_COMPONENT( FastTrackFinderLRTHypoTool ) diff --git a/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigMufastHypoTool.cxx b/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigMufastHypoTool.cxx index 602d47ce93aa70f0168e75fcac792631c02249d9..bbe0ab8541cb3722a4ac75836fbf087e4504f24a 100644 --- a/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigMufastHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigMufastHypoTool.cxx @@ -364,7 +364,7 @@ StatusCode TrigMufastHypoTool::multiplicitySelection(std::vector<TrigMufastHypoT return setOfClusters.size() == comb.size(); }; - HLT::elementsInUniqueCombinations( passingSelection, passingIndices, notFromSameRoI ); + HLT::elementsInUniqueCombinations( passingSelection, passingIndices, std::move(notFromSameRoI) ); } else { HLT::elementsInUniqueCombinations( passingSelection, passingIndices ); diff --git a/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigMuonEFHypoTool.cxx b/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigMuonEFHypoTool.cxx index 391345173287a1e31889635fcab7cf2e7edb8de7..d2953b1144e4e93765b34e2389d57f03ffce6898 100644 --- a/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigMuonEFHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigMuonEFHypoTool.cxx @@ -267,7 +267,7 @@ StatusCode TrigMuonEFHypoTool::multiplicitySelection(std::vector<MuonEFInfo>& to return setOfMuons.size()==comb.size(); }; - HLT::elementsInUniqueCombinations(passingSelection, passingIndices, notFromSameRoI); + HLT::elementsInUniqueCombinations(passingSelection, passingIndices, std::move(notFromSameRoI)); } else{ HLT::elementsInUniqueCombinations(passingSelection, passingIndices); diff --git a/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigmuCombHypoTool.cxx b/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigmuCombHypoTool.cxx index a6d1a8e144d3c94bca6be04cf579d661a8861f93..5c885abb3361e8eea1562e284d50453db8b3498a 100644 --- a/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigmuCombHypoTool.cxx +++ b/Trigger/TrigHypothesis/TrigMuonHypo/src/TrigmuCombHypoTool.cxx @@ -331,7 +331,7 @@ StatusCode TrigmuCombHypoTool::multiplicitySelection(std::vector<TrigmuCombHypoT return setOfClusters.size() == comb.size(); }; - HLT::elementsInUniqueCombinations( passingSelection, passingIndices, notFromSameRoI ); + HLT::elementsInUniqueCombinations( passingSelection, passingIndices, std::move(notFromSameRoI) ); } else { HLT::elementsInUniqueCombinations( passingSelection, passingIndices ); diff --git a/Trigger/TrigMonitoring/TrigBphysMonitoring/src/HLTXAODBphysMonTool.cxx b/Trigger/TrigMonitoring/TrigBphysMonitoring/src/HLTXAODBphysMonTool.cxx index 39334cb49962227fe20381b9532f188fc1465bc8..e568a33a69f37717880a211aaf649f654b79287e 100644 --- a/Trigger/TrigMonitoring/TrigBphysMonitoring/src/HLTXAODBphysMonTool.cxx +++ b/Trigger/TrigMonitoring/TrigBphysMonitoring/src/HLTXAODBphysMonTool.cxx @@ -336,7 +336,7 @@ StatusCode HLTXAODBphysMonTool::fill() ATH_MSG_DEBUG ("fill... "); // Check HLTResult - if(getTDT()->ExperimentalAndExpertMethods()->isHLTTruncated()){ + if(getTDT()->ExperimentalAndExpertMethods().isHLTTruncated()){ ATH_MSG_WARNING("HLTResult truncated, skip event"); return StatusCode::SUCCESS; //return false; diff --git a/Trigger/TrigMonitoring/TrigCostMonitor/src/TrigCostSvc.cxx b/Trigger/TrigMonitoring/TrigCostMonitor/src/TrigCostSvc.cxx index 1a316357bddd966b313c7285ffb4ec05208b1856..234d228b99cf7beb1ee083ecfc9ed85eceed5632 100644 --- a/Trigger/TrigMonitoring/TrigCostMonitor/src/TrigCostSvc.cxx +++ b/Trigger/TrigMonitoring/TrigCostMonitor/src/TrigCostSvc.cxx @@ -2,8 +2,7 @@ Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ -#include "GaudiKernel/ConcurrencyFlags.h" - +#include "AthenaKernel/SlotSpecificObj.h" #include "TrigConfHLTUtils/HLTUtils.h" #include "TrigCostSvc.h" @@ -39,7 +38,7 @@ TrigCostSvc::~TrigCostSvc() { StatusCode TrigCostSvc::initialize() { ATH_MSG_DEBUG("TrigCostSvc initialize()"); - m_eventSlots = Gaudi::Concurrency::ConcurrencyFlags::numConcurrentEvents(); + m_eventSlots = SG::getNSlots(); // TODO Remove this when the configuration is correctly propagated in config-then-run jobs if (!m_eventSlots) { ATH_MSG_WARNING("numConcurrentEvents() == 0. This is a misconfiguration, probably coming from running from pickle. " diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py index 5412d3095cd61ede047ceef484e168f1ad15d4d1..7aea6893125b417214306992a7008270e95c9de4 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py @@ -14,9 +14,22 @@ from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.ComponentFactory import CompFactory as CfgMgr + if 'DQMonFlags' not in dir(): from AthenaMonitoring.DQMonFlags import DQMonFlags as dqflags +# +def treat_list_of_chains_by_name( list_of_chains, part_name=None): + if part_name: + final_list = [] + for chain in list_of_chains: + if part_name in chain: + final_list.append(chain) + return final_list + else: + return list_of_chains + + class TrigEgammaMonAlgBuilder: @@ -37,11 +50,6 @@ class TrigEgammaMonAlgBuilder: tpList = [] jpsiList = [] - # Monitoring algorithms - zeeMonAlg = None - jpsieeMonAlg = None - elMonAlg = None - phMonAlg = None isemnames = ["tight", "medium", "loose"] lhnames = ["lhtight", "lhmedium", "lhloose","lhvloose"] @@ -97,7 +105,9 @@ class TrigEgammaMonAlgBuilder: - + # + # Configure everything + # def configure(self): self.setProperties() self.configureMonitor() @@ -159,8 +169,9 @@ class TrigEgammaMonAlgBuilder: if self.pp_mode: self.electronList = monitoring_electron - self.photonList = monitoring_photon + self.photonList = monitoring_photon self.tpList = monitoringTP_electron + self.tagItems = [] # monitoring_tags elif self.mc_mode: self.electronList = validation_electron + validation_Zee self.photonList = validation_photon @@ -268,9 +279,10 @@ class TrigEgammaMonAlgBuilder: if self.activate_zee: - - self.__logger.info( "Creating the Zee monitor algorithm...") - self.zeeMonAlg = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorTagAndProbeAlgorithm, "TrigEgammaMonitorTagAndProbeAlgorithm_Zee" ) + tpList = treat_list_of_chains_by_name(self.tpList, 'lh') # Only LH chains + tagItems = treat_list_of_chains_by_name(self.tagItems, 'lh') # Only LH chains + self.__logger.info( "Creating the Zee monitor algorithm LH only...") + self.zeeMonAlg = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorTagAndProbeAlgorithm, "TrigEgammaMonitorTagAndProbeAlgorithm_Zee_LH" ) self.zeeMonAlg.Analysis='Zee' self.zeeMonAlg.MatchTool = EgammaMatchTool self.zeeMonAlg.TPTrigger=False @@ -280,7 +292,7 @@ class TrigEgammaMonAlgBuilder: self.zeeMonAlg.DNNResultNames=self.dnnnames self.zeeMonAlg.ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector] self.zeeMonAlg.ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector,VeryLooseLHSelector] - self.zeeMonAlg.ElectronDNNSelectorTool =[LooseDNNElectronSelector,MediumDNNElectronSelector,TightDNNElectronSelector] + self.zeeMonAlg.ElectronDNNSelectorTool =[TightDNNElectronSelector,MediumDNNElectronSelector,LooseDNNElectronSelector] self.zeeMonAlg.ZeeLowerMass=80 self.zeeMonAlg.ZeeUpperMass=100 self.zeeMonAlg.OfflineTagMinEt=25 @@ -288,15 +300,47 @@ class TrigEgammaMonAlgBuilder: self.zeeMonAlg.OfflineProbeSelector='lhloose' self.zeeMonAlg.OppositeCharge=True self.zeeMonAlg.RemoveCrack=False - self.zeeMonAlg.TagTriggerList=self.tagItems - self.zeeMonAlg.TriggerList=self.tpList + self.zeeMonAlg.TagTriggerList=tagItems + self.zeeMonAlg.TriggerList=tpList self.zeeMonAlg.DetailedHistograms=self.detailedHistograms - if self.emulator: - self.zeeMonAlg.DoEmulation = True + self.zeeMonAlg.DoEmulation = False + + + # Separated TaP tool configuration + tpList = treat_list_of_chains_by_name(self.tpList, 'dnn') # get only dnn chains + tagItems = treat_list_of_chains_by_name(self.tagItems, 'dnn') + self.__logger.info( "Creating the Zee monitor algorithm DNN only...") + self.zeeMonAlg_dnn = self.helper.addAlgorithm( CompFactory.TrigEgammaMonitorTagAndProbeAlgorithm, "TrigEgammaMonitorTagAndProbeAlgorithm_Zee_DNN" ) + self.zeeMonAlg_dnn.Analysis='Zee_DNN' + self.zeeMonAlg_dnn.MatchTool = EgammaMatchTool + self.zeeMonAlg_dnn.TPTrigger=False + self.zeeMonAlg_dnn.ElectronKey = 'Electrons' + self.zeeMonAlg_dnn.isEMResultNames=self.isemnames + self.zeeMonAlg_dnn.LHResultNames=self.lhnames + self.zeeMonAlg_dnn.DNNResultNames=self.dnnnames + self.zeeMonAlg_dnn.ElectronIsEMSelector =[TightElectronSelector,MediumElectronSelector,LooseElectronSelector] + self.zeeMonAlg_dnn.ElectronLikelihoodTool =[TightLHSelector,MediumLHSelector,LooseLHSelector,VeryLooseLHSelector] + self.zeeMonAlg_dnn.ElectronDNNSelectorTool =[TightDNNElectronSelector,MediumDNNElectronSelector,LooseDNNElectronSelector] + self.zeeMonAlg_dnn.ZeeLowerMass=80 + self.zeeMonAlg_dnn.ZeeUpperMass=100 + self.zeeMonAlg_dnn.OfflineTagMinEt=25 + self.zeeMonAlg_dnn.OfflineTagSelector='dnntight' + self.zeeMonAlg_dnn.OfflineProbeSelector='dnnloose' + self.zeeMonAlg_dnn.OppositeCharge=True + self.zeeMonAlg_dnn.RemoveCrack=False + self.zeeMonAlg_dnn.TagTriggerList=tagItems + self.zeeMonAlg_dnn.TriggerList=tpList + self.zeeMonAlg_dnn.DetailedHistograms=self.detailedHistograms + self.zeeMonAlg_dnn.DoEmulation = False + + if self.emulator: # turn on emulator self.emulator.TriggerList += self.tpList + self.zeeMonAlg.DoEmulation = True self.zeeMonAlg.EmulationTool = self.emulator.core() - else: - self.zeeMonAlg.DoEmulation = False + self.zeeMonAlg_dnn.DoEmulation = True + self.zeeMonAlg_dnn.EmulationTool = self.emulator.core() + + if self.activate_jpsiee: @@ -375,22 +419,32 @@ class TrigEgammaMonAlgBuilder: def configureHistograms(self): + + self.setBinning() + + if self.activate_zee: - if self.activate_zee and self.zeeMonAlg: - self.setBinning() + # LH plots self.bookEvent( self.zeeMonAlg, self.zeeMonAlg.Analysis , True) triggers = self.zeeMonAlg.TriggerList; triggers.extend( self.zeeMonAlg.TagTriggerList ) self.bookExpertHistograms( self.zeeMonAlg, triggers ) - if self.activate_jpsiee and self.jpsieeMonAlg: + + # dnn plots + self.bookEvent( self.zeeMonAlg_dnn, self.zeeMonAlg_dnn.Analysis , True) + triggers = self.zeeMonAlg_dnn.TriggerList; triggers.extend( self.zeeMonAlg_dnn.TagTriggerList ) + self.bookExpertHistograms( self.zeeMonAlg_dnn, triggers ) + + if self.activate_jpsiee: self.setBinning(True) self.bookEvent( self.jpsieeMonAlg, self.jpsieeMonAlg.Analysis, True ) triggers = self.jpsieeMonAlg.TriggerList; triggers.extend( self.jpsieeMonAlg.TagTriggerList ) self.bookExpertHistograms( self.jpsieeMonAlg, triggers ) + # back to default bin configuration self.setBinning() - if self.activate_electron and self.elMonAlg: + if self.activate_electron: self.bookExpertHistograms( self.elMonAlg, self.elMonAlg.TriggerList ) - if self.activate_photon and self.phMonAlg: + if self.activate_photon: self.bookExpertHistograms( self.phMonAlg, self.phMonAlg.TriggerList ) # If we've already defined the group, return the object already defined diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx index 7ab325cd54b62e2a42083fd378eac7f550a8a860..d31fab222aa72932daf93551d92ac04cb4b68ee7 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorBaseAlgorithm.cxx @@ -32,15 +32,9 @@ StatusCode TrigEgammaMonitorBaseAlgorithm::initialize() ATH_CHECK(m_electronLHTool.retrieve()); ATH_CHECK(m_electronDNNTool.retrieve()); - m_trigdec->ExperimentalAndExpertMethods()->enable(); - - - - for(const auto& cut:m_trigLevel) + for(const auto& cut:m_trigLevel) m_accept.addCut(cut,cut); - - return StatusCode::SUCCESS; } @@ -787,7 +781,7 @@ std::string TrigEgammaMonitorBaseAlgorithm::getProbePid(const std::string& pidty std::string TrigEgammaMonitorBaseAlgorithm::getL1Item(const std::string& trigger) const{ - const auto *trig_conf = m_trigdec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(trigger); + const auto *trig_conf = m_trigdec->ExperimentalAndExpertMethods().getChainConfigurationDetails(trigger); std::string L1_seed = ""; if(trig_conf != nullptr){ ATH_MSG_DEBUG("TrigConf available"); diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorElectronAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorElectronAlgorithm.cxx index dcb4673076202b2fbef205d9b1eba5d91cf2b36d..5a7875483fc34437f355e125595590e50c9fa0df 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorElectronAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorElectronAlgorithm.cxx @@ -43,7 +43,7 @@ StatusCode TrigEgammaMonitorElectronAlgorithm::fillHistograms( const EventContex ATH_MSG_DEBUG("Executing TrigEgammaMonitorElectronAlgorithm"); - if(tdt()->ExperimentalAndExpertMethods()->isHLTTruncated()){ + if(tdt()->ExperimentalAndExpertMethods().isHLTTruncated()){ ATH_MSG_WARNING("HLTResult truncated, skip trigger analysis"); return StatusCode::SUCCESS; } diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorPhotonAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorPhotonAlgorithm.cxx index c35940275017db30440dd04f5d9e6cd444a2008f..123d946fb31c25c58bb9f4860bc30750906c9a2f 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorPhotonAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorPhotonAlgorithm.cxx @@ -46,7 +46,7 @@ StatusCode TrigEgammaMonitorPhotonAlgorithm::fillHistograms( const EventContext& ATH_MSG_DEBUG("Executing TrigEgammaMonitorPhotonAlgorithm"); - if(tdt()->ExperimentalAndExpertMethods()->isHLTTruncated()){ + if(tdt()->ExperimentalAndExpertMethods().isHLTTruncated()){ ATH_MSG_WARNING("HLTResult truncated, skip trigger analysis"); return StatusCode::SUCCESS; } diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorTagAndProbeAlgorithm.cxx b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorTagAndProbeAlgorithm.cxx index 3ae6677ad8b5e1c0926926fa7775cc4b22eaac7f..b13003523240dbe7f4b8427814724aa61864bc71 100644 --- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorTagAndProbeAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/src/TrigEgammaMonitorTagAndProbeAlgorithm.cxx @@ -83,7 +83,7 @@ StatusCode TrigEgammaMonitorTagAndProbeAlgorithm::fillHistograms( const EventCon // Check HLTResult - if(tdt()->ExperimentalAndExpertMethods()->isHLTTruncated()){ + if(tdt()->ExperimentalAndExpertMethods().isHLTTruncated()){ ATH_MSG_WARNING("HLTResult truncated, skip trigger analysis"); return StatusCode::SUCCESS; } diff --git a/Trigger/TrigMonitoring/TrigHLTMonitoring/src/IHLTMonTool.cxx b/Trigger/TrigMonitoring/TrigHLTMonitoring/src/IHLTMonTool.cxx index ebb6f0553d7781fb11d376da4751202d64577b04..fd1e9fdd8f59a8fdd7bac6b9fa2affc59514444a 100755 --- a/Trigger/TrigMonitoring/TrigHLTMonitoring/src/IHLTMonTool.cxx +++ b/Trigger/TrigMonitoring/TrigHLTMonitoring/src/IHLTMonTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "AthenaMonitoring/AthenaMonManager.h" @@ -65,9 +65,6 @@ StatusCode IHLTMonTool::initialize() { // retrieve the trigger decision tool ATH_CHECK( m_tdthandle.retrieve() ); - // After retrieve enable Expert methods - getTDT()->ExperimentalAndExpertMethods()->enable(); - ATH_CHECK( m_storeGate.retrieve() ); ATH_CHECK( m_inputMetaStore.retrieve() ); @@ -659,7 +656,7 @@ StatusCode IHLTMonTool::fillHistograms() { ATH_MSG_DEBUG("Running fill() for " << name()); // Require non-truncated HLTResult - if(getTDT()->ExperimentalAndExpertMethods()->isHLTTruncated()) { + if(getTDT()->ExperimentalAndExpertMethods().isHLTTruncated()) { ATH_MSG_WARNING("HLTResult truncated, skip HLT T0 monitoring for this event"); } else { diff --git a/Trigger/TrigMonitoring/TrigJetMonitoring/python/TrigJetMonitorAlgorithm.py b/Trigger/TrigMonitoring/TrigJetMonitoring/python/TrigJetMonitorAlgorithm.py index 7250098cb4b6b268c9516bb877e037dd082bb613..fa0bc3f7cd2301fe0a2a4a76e9a6056bb6c043a5 100644 --- a/Trigger/TrigMonitoring/TrigJetMonitoring/python/TrigJetMonitorAlgorithm.py +++ b/Trigger/TrigMonitoring/TrigJetMonitoring/python/TrigJetMonitorAlgorithm.py @@ -184,7 +184,7 @@ def getHTBinning(chain,binwidth): threshold = parts[1].split('_')[0] if 'XX' in threshold: threshold = threshold.split('XX')[0] - xmin = int(threshold) + xmin = int(0.9 * int(threshold)) # xmin to make the threshold visible xmax = xmin + 500 xbins = int((xmax-xmin)/binwidth)-1 return xbins, xmin, xmax diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/src/HLTMETMonTool.cxx b/Trigger/TrigMonitoring/TrigMETMonitoring/src/HLTMETMonTool.cxx index 6698004576e26d1302b1e96a1b8803cce635041a..cee4c5a8a300260ff8adfa6110137453eeb6ec50 100644 --- a/Trigger/TrigMonitoring/TrigMETMonitoring/src/HLTMETMonTool.cxx +++ b/Trigger/TrigMonitoring/TrigMETMonitoring/src/HLTMETMonTool.cxx @@ -489,7 +489,7 @@ StatusCode HLTMETMonTool::fillMETHist() { StatusCode sc = StatusCode::SUCCESS; // Check HLTResult - if(getTDT()->ExperimentalAndExpertMethods()->isHLTTruncated()){ + if(getTDT()->ExperimentalAndExpertMethods().isHLTTruncated()){ ATH_MSG_WARNING("HLTResult truncated, skip event"); return sc; } diff --git a/Trigger/TrigMonitoring/TrigMuonMonitoring/TrigMuonMonitoring/HLTMuonMonTool.h b/Trigger/TrigMonitoring/TrigMuonMonitoring/TrigMuonMonitoring/HLTMuonMonTool.h index 89f5a390ff8e4e82276173f3fd1c135014f7a287..24a94452b4c84005e18a00cd4ff0a321480d93d9 100755 --- a/Trigger/TrigMonitoring/TrigMuonMonitoring/TrigMuonMonitoring/HLTMuonMonTool.h +++ b/Trigger/TrigMonitoring/TrigMuonMonitoring/TrigMuonMonitoring/HLTMuonMonTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @file HLTMuonMonTool.h @@ -71,7 +71,6 @@ class HLTMuonMonTool : public IHLTMonTool private: //== common ActiveStoreSvc* m_activeStore; - Trig::ExpertMethods* m_ExpertMethods; //init() for each HLT Algorithm StatusCode initL2MuonSADQA(); diff --git a/Trigger/TrigMonitoring/TrigMuonMonitoring/src/CommonMon.cxx b/Trigger/TrigMonitoring/TrigMuonMonitoring/src/CommonMon.cxx index 7fa937a5b60858f70156586c2c2531c6f4501812..e855de40f7b23bab15cba990399ddf34f935b7e4 100644 --- a/Trigger/TrigMonitoring/TrigMuonMonitoring/src/CommonMon.cxx +++ b/Trigger/TrigMonitoring/TrigMuonMonitoring/src/CommonMon.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @Afile HLTMuonMonTool.cxx @@ -1957,7 +1957,7 @@ StatusCode HLTMuonMonTool::fillChainDQA_MSonly(const std::string& chainName, con monalg = "_MuonEFMS"; wrtalg = "_L2MuonSA"; std::string monalg2 = "_MuonEFSA"; - const HLT::Chain* chainDetail = m_ExpertMethods->getChainDetails( chainName); + const HLT::Chain* chainDetail = getTDT()->ExperimentalAndExpertMethods().getChainDetails( chainName); const TrigConf::HLTChain* configChain = 0; if (chainDetail) { @@ -3016,8 +3016,7 @@ StatusCode HLTMuonMonTool::fillChainDQA_generic(const std::string& chainName, co wrtalg = "_MuComb"; std::string monalg3 = "_EFmuon"; - //const HLT::Chain* chainDetail = m_ExpertMethods->getChainDetails("EF_" + chainName); // sept25 - const HLT::Chain* chainDetail = m_ExpertMethods->getChainDetails(chainName); // sept25 + const HLT::Chain* chainDetail = getTDT()->ExperimentalAndExpertMethods().getChainDetails(chainName); const TrigConf::HLTChain* configChain = 0; if (chainDetail) { configChain = chainDetail->getConfigChain(); diff --git a/Trigger/TrigMonitoring/TrigMuonMonitoring/src/HLTMuonMonTool.cxx b/Trigger/TrigMonitoring/TrigMuonMonitoring/src/HLTMuonMonTool.cxx index dfff2edc3d60d4d06d865e1d5864409ed8f67d93..bb5f009ed9bbeb0645bb2a7107528e7589ff7cf7 100755 --- a/Trigger/TrigMonitoring/TrigMuonMonitoring/src/HLTMuonMonTool.cxx +++ b/Trigger/TrigMonitoring/TrigMuonMonitoring/src/HLTMuonMonTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ /** @Afile HLTMuonMonTool.cxx @@ -45,7 +45,6 @@ HLTMuonMonTool::HLTMuonMonTool(const std::string & type, const IInterface* parent) //initialization of common parameters :IHLTMonTool(type, name, parent), - m_ExpertMethods(0), m_nullstr("null"), // yy added m_bunchTool("Trig::TrigConfBunchCrossingTool/BunchCrossingTool") // m_muonSelectorTool("Rec::MuonSelectorTool") // YY added -> removed @@ -188,10 +187,6 @@ StatusCode HLTMuonMonTool::init() */ - m_ExpertMethods = getTDT()->ExperimentalAndExpertMethods(); - if (m_ExpertMethods) m_ExpertMethods->enable(); - else ATH_MSG_ERROR("No expert Methods for Trigger Descision Tool are found!"); - // chainAnalysis chains // Generic (EFsuper etc.) @@ -1127,12 +1122,11 @@ StatusCode HLTMuonMonTool::proc() const HLT::TriggerElement* HLTMuonMonTool :: getDirectSuccessorHypoTEForL2(const HLT::TriggerElement *te, std::string step, std::string chainname){ - //m_ExpertMethods->enable(); std::string hyponame = ""; if(step=="L2MuonSA") hyponame = m_hypomapL2SA[chainname]; if(step=="L2muComb") hyponame = m_hypomapL2CB[chainname]; const HLT::TriggerElement *hypote = NULL; - std::vector<HLT::TriggerElement*> TEsuccessors = m_ExpertMethods->getNavigation()->getDirectSuccessors(te); + std::vector<HLT::TriggerElement*> TEsuccessors = getTDT()->ExperimentalAndExpertMethods().getNavigation()->getDirectSuccessors(te); for(auto te2 : TEsuccessors){ ATH_MSG_VERBOSE("[" << chainname <<"] ::TE2: " << te2->getId() << " " << Trig::getTEName(*te2) ); if(Trig::getTEName(*te2)==hyponame){ diff --git a/Trigger/TrigMonitoring/TrigMuonMonitoring/src/MuZTPMon.cxx b/Trigger/TrigMonitoring/TrigMuonMonitoring/src/MuZTPMon.cxx index 0e5551526b2fcfdfc2d51121f6af8be7f9e704a3..6c1c601b2a6b21b89dfea56518362422008c7214 100644 --- a/Trigger/TrigMonitoring/TrigMuonMonitoring/src/MuZTPMon.cxx +++ b/Trigger/TrigMonitoring/TrigMuonMonitoring/src/MuZTPMon.cxx @@ -285,7 +285,7 @@ StatusCode HLTMuonMonTool::fillMuZTPDQA() chainname += itmap->first; if (getTDT()->getNavigationFormat() == "TriggerElement") { // code for legacy run-2 - const TrigConf::HLTChain* chain = getTDT()->ExperimentalAndExpertMethods()->getChainConfigurationDetails(chainname); + const TrigConf::HLTChain* chain = getTDT()->ExperimentalAndExpertMethods().getChainConfigurationDetails(chainname); if(chain) { diff --git a/Trigger/TrigMonitoring/TrigSteerMonitor/src/DecisionCollectorTool.cxx b/Trigger/TrigMonitoring/TrigSteerMonitor/src/DecisionCollectorTool.cxx index b6eec36d30502948f7bf64839af35cf6b6b26028..cc53160da5f9699787688f13b556b891f6c4eb74 100644 --- a/Trigger/TrigMonitoring/TrigSteerMonitor/src/DecisionCollectorTool.cxx +++ b/Trigger/TrigMonitoring/TrigSteerMonitor/src/DecisionCollectorTool.cxx @@ -16,7 +16,7 @@ StatusCode DecisionCollectorTool::initialize() { } void DecisionCollectorTool::getSequencesPerEvent( std::set<std::string>& output ) const { - for (auto decisionKey: m_decisionsKey) { + for (const auto& decisionKey: m_decisionsKey) { auto handle = SG::makeHandle( decisionKey ); if ( handle.isValid() ) { output.insert(decisionKey.key()); @@ -25,13 +25,13 @@ void DecisionCollectorTool::getSequencesPerEvent( std::set<std::string>& output } void DecisionCollectorTool::getSequencesNames( std::set<std::string>& output ) const { - for (auto decisionKey: m_decisionsKey) { + for (const auto& decisionKey: m_decisionsKey) { output.insert(decisionKey.key()); } } void DecisionCollectorTool::getDecisions( std::vector<TrigCompositeUtils::DecisionID>& output ) const { - for (auto decisionKey: m_decisionsKey ) { + for (const auto& decisionKey: m_decisionsKey ) { auto handle = SG::makeHandle( decisionKey ); if ( handle.isValid() ) { for ( const TrigCompositeUtils::Decision* d : *handle.cptr() ) { diff --git a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoni.cxx b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoni.cxx index 5af9ea161136adf1449dd00b609e06123334062e..7f643c198ebb754bfd0163b5883796eea00d0626 100644 --- a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoni.cxx +++ b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoni.cxx @@ -607,7 +607,7 @@ TrigSignatureMoni::RateHistogram::~RateHistogram(){ } StatusCode TrigSignatureMoni::RateHistogram::init( const std::string& histoName, const std::string& histoTitle, - const int x, const int y, const std::string& registerPath, ServiceHandle<ITHistSvc> histSvc ){ + const int x, const int y, const std::string& registerPath, const ServiceHandle<ITHistSvc>& histSvc ){ std::unique_ptr<TH2> h = std::make_unique<TH2F>(histoName.c_str(), histoTitle.c_str(), x, 1, x + 1, y, 1, y + 1); ATH_CHECK( histSvc->regShared( registerPath.c_str(), std::move(h), m_histogram)); @@ -642,7 +642,7 @@ void TrigSignatureMoni::RateHistogram::startTimer(unsigned int duration, unsigne void TrigSignatureMoni::RateHistogram::stopTimer() { if (m_timer) { - m_timer.reset(); + m_timer->stop(); time_t t = time(0); unsigned int interval; unsigned int duration = m_timeDivider->forcePassed(t, interval); diff --git a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoni.h b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoni.h index 1296c0865de5691a95385350f5b9628e6e7ac4f4..368363aa6043036384131ee401a99dc2bd1a88c2 100644 --- a/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoni.h +++ b/Trigger/TrigMonitoring/TrigSteerMonitor/src/TrigSignatureMoni.h @@ -53,7 +53,7 @@ class TrigSignatureMoni : public extends<AthReentrantAlgorithm, IIncidentListene // Initialize rate histogram and create buffer StatusCode init( const std::string& histoName, const std::string& histoTitle, - const int x, const int y, const std::string& registerPath, ServiceHandle<ITHistSvc> histSvc ); + const int x, const int y, const std::string& registerPath, const ServiceHandle<ITHistSvc>& histSvc ); // Get the histogram LockedHandle<TH2>& getHistogram ATLAS_NOT_CONST_THREAD_SAFE () const; diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx index d46821b65eadc3fdb8bcf4c2d53b296b397a61fe..04ac91cffbc1886460943fbc7d2aaff96803f363 100644 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool.cxx @@ -295,7 +295,7 @@ StatusCode HLTTauMonTool::fill() { // skip HLTResult truncated events - // if(getTDT()->ExperimentalAndExpertMethods()->isHLTTruncated()){ + // if(getTDT()->ExperimentalAndExpertMethods().isHLTTruncated()){ // ATH_MSG_WARNING("HLTResult truncated, skip event"); // return StatusCode::SUCCESS; // } diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_emulation.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_emulation.cxx index 868db39db1c7a93040cdae29bb616bb658038ba2..95e8a9a7003ec963a424d8b75e163a262b0ca19c 100644 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_emulation.cxx +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/HLTTauMonTool_emulation.cxx @@ -19,7 +19,7 @@ std::string HLTTauMonTool::LowerChain(const std::string& hlt_item){ const std::string& lower_chain( hlt_chain->lower_chain_name() ); l1_chain = lower_chain; }else{ - const auto *trig_conf = getTDT()->ExperimentalAndExpertMethods()->getChainConfigurationDetails(hlt_item); + const auto *trig_conf = getTDT()->ExperimentalAndExpertMethods().getChainConfigurationDetails(hlt_item); if(trig_conf != nullptr){ ATH_MSG_DEBUG("TrigConf is available"); l1_chain = trig_conf->lower_chain_name(); //L1 trigger seed diff --git a/Trigger/TrigMonitoring/TrigTauMonitoring/src/TrigTauMonitorAlgorithm.cxx b/Trigger/TrigMonitoring/TrigTauMonitoring/src/TrigTauMonitorAlgorithm.cxx index 1cc32120db576e165633762b74a38c4d2313cbe7..343a7f8fd529ccebdd72d1fff2ffb9ff9d0b8511 100644 --- a/Trigger/TrigMonitoring/TrigTauMonitoring/src/TrigTauMonitorAlgorithm.cxx +++ b/Trigger/TrigMonitoring/TrigTauMonitoring/src/TrigTauMonitorAlgorithm.cxx @@ -48,7 +48,7 @@ StatusCode TrigTauMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co ATH_MSG_DEBUG("Executing TrigTauMonitorAlgorithm"); - if(m_trigDecTool->ExperimentalAndExpertMethods()->isHLTTruncated()){ + if(m_trigDecTool->ExperimentalAndExpertMethods().isHLTTruncated()){ ATH_MSG_WARNING("HLTResult truncated, skip trigger analysis"); return StatusCode::SUCCESS; } diff --git a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx index cd9a3bce1169b211c8595564df4985b1ca105462..57d776ca4fc61876d47579d2bd3f4f377a08db1c 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/ComboHypo.cxx @@ -26,7 +26,7 @@ StatusCode ComboHypo::initialize() { ATH_CHECK( m_inputs.initialize() ); ATH_CHECK( m_inputs.size() == m_outputs.size() ); ATH_MSG_INFO( "with these inputs: "); - for (auto inp:m_inputs){ + for (const auto& inp:m_inputs){ ATH_MSG_INFO("-- "<< inp.key()); } @@ -40,8 +40,9 @@ StatusCode ComboHypo::initialize() { // find max inputs size auto maxMultEl = std::max_element( m_multiplicitiesReqMap.begin(), m_multiplicitiesReqMap.end(), - []( Combo::MultiplicityReqMap::value_type a, Combo::MultiplicityReqMap::value_type b ){ return a.second.size() < b.second.size(); } - ); + []( const Combo::MultiplicityReqMap::value_type& a, const Combo::MultiplicityReqMap::value_type& b ){ + return a.second.size() < b.second.size(); + }); const size_t maxMult = maxMultEl->second.size(); @@ -229,7 +230,7 @@ StatusCode ComboHypo::execute(const EventContext& context ) const { // Finally, the same behaviour may also be triggered by the HypoAlg adding an an int32_t decoration called "noCombo" with value 1 // to the Decision Object. - for (const ElementLink<DecisionContainer> dEL : it->second){ + for (const ElementLink<DecisionContainer>& dEL : it->second){ uint32_t featureKey = 0, roiKey = 0; // The container hash of the DecisionObject's most-recent feature, and its initial ROI uint16_t featureIndex = 0, roiIndex = 0; // The container index of the DecisionObject's most-recent feature, and its initial ROI bool roiIsFullscan = false; // Will be set to true if the DecisionObject's initial ROI is flagged as FullScan @@ -509,7 +510,7 @@ StatusCode ComboHypo::fillDecisionsMap( Combo::LegDecisionsMap & dmap, const Ev ATH_MSG_DEBUG("leg ["<<legCount<<"]: "); const ElementLinkVector<DecisionContainer>& decisions = entry.second; ATH_MSG_DEBUG(" ++++ " << HLT::Identifier( entry.first ) <<" Number Decisions: "<< decisions.size()); - for (const ElementLink<DecisionContainer> d : decisions){ + for (const ElementLink<DecisionContainer>& d : decisions){ ATH_MSG_DEBUG(" Decision: (ContainerKey:"<<d.dataID()<<", DecisionElementIndex:"<<d.index()<<")"); } legCount++; diff --git a/Trigger/TrigSteer/DecisionHandling/src/ComboHypoToolBase.cxx b/Trigger/TrigSteer/DecisionHandling/src/ComboHypoToolBase.cxx index 1a97e3ac2cb22dd8d29938798dc2a03925d1caff..2ef980bba9aceef2788f0a6a2606f23ea946aca7 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/ComboHypoToolBase.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/ComboHypoToolBase.cxx @@ -192,7 +192,7 @@ StatusCode ComboHypoToolBase::selectLegs(const Combo::LegDecisionsMap& IDCombMap const Combo::LegDecisionsMap::const_iterator it = IDCombMap.find(legIdentifier.numeric()); if (it != IDCombMap.end()) { - for (const ElementLink<DecisionContainer> el : it->second) { + for (const ElementLink<DecisionContainer>& el : it->second) { decisionObjectsOnLeg.emplace_back(legIdentifier, el); } } @@ -205,7 +205,7 @@ StatusCode ComboHypoToolBase::selectLegs(const Combo::LegDecisionsMap& IDCombMap size_t count = 0; for (const auto& leg : legDecisions) { ATH_MSG_DEBUG("Leg " << count++ << " --"); - for (auto dEL : leg) { + for (const auto& dEL : leg) { ATH_MSG_DEBUG("-- " << HLT::Identifier(dEL.first) << " container:" << dEL.second.dataID() << ", index:" << dEL.second.index()); } } diff --git a/Trigger/TrigSteer/DecisionHandling/src/DumpDecisions.cxx b/Trigger/TrigSteer/DecisionHandling/src/DumpDecisions.cxx index 67d192f71792e110b68f5e1a85eb4e5ee6730e3a..3a704bffa1eee663ae08507a2aa8942f22f03fe5 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/DumpDecisions.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/DumpDecisions.cxx @@ -34,7 +34,7 @@ StatusCode DumpDecisions::execute(const EventContext &ctx) const { using namespace TrigCompositeUtils; - for (auto key : m_decisionKeys) + for (const auto& key : m_decisionKeys) { auto decisionInput = SG::makeHandle(key, ctx); if (not decisionInput.isValid()) diff --git a/Trigger/TrigSteer/DecisionHandling/src/HypoBase.cxx b/Trigger/TrigSteer/DecisionHandling/src/HypoBase.cxx index 2c586871882692db62d2ea50096984fc334f8268..7761ac9a0cdd2dc4ad225c0c11b305e157919610 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/HypoBase.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/HypoBase.cxx @@ -112,7 +112,7 @@ StatusCode HypoBase::recursiveValidateGraph(const ElementLink<DecisionContainer> // Continue upstream const ElementLinkVector<DecisionContainer> seeds = (*dEL)->objectCollectionLinks<DecisionContainer>(seedString()); - for (const ElementLink<DecisionContainer> seed : seeds) { + for (const ElementLink<DecisionContainer>& seed : seeds) { if (fullyExploredFrom.count( (*seed) ) == 1) { continue; // Already fully explored from this seed and up } @@ -186,7 +186,7 @@ StatusCode HypoBase::validateParentLinking(const ElementLink<DecisionContainer>& return StatusCode::FAILURE; } - for (const ElementLink<DecisionContainer> seed : seeds) { + for (const ElementLink<DecisionContainer>& seed : seeds) { if (expectedParentsPtr->count( (*seed)->name() ) == 0) { printErrorHeader(dEL, msg); msg << MSG::ERROR << "! Invalid linking from node with name '" << name << "' to one with name '"<< (*seed)->name() << "'." << endmsg; @@ -258,7 +258,7 @@ StatusCode HypoBase::validateLogicalFlow(const ElementLink<DecisionContainer>& d for (const DecisionID id : decisionIDSet) { // For each chain that I'm passing, check how many of my parents were also passing the chain size_t parentsWithDecision = 0; - for (const ElementLink<DecisionContainer> seed : seeds) { + for (const ElementLink<DecisionContainer>& seed : seeds) { if ( not seed.isValid() ) { msg << MSG::ERROR << "Invalid seed element link in recursiveValidateGraph" << endmsg; return StatusCode::FAILURE; @@ -288,7 +288,7 @@ StatusCode HypoBase::validateLogicalFlow(const ElementLink<DecisionContainer>& d msg << MSG::ERROR << "! This Decision object is not respecting logical flow of DecisionIDs for chain: " << HLT::Identifier( id ) << endmsg; msg << MSG::ERROR << "! This chain's DecisionID can not be found in any parents of this Decision object:" << endmsg; size_t seed_n = 0; - for (const ElementLink<DecisionContainer> seed : seeds) { + for (const ElementLink<DecisionContainer>& seed : seeds) { msg << MSG::ERROR << "! Index:" << (*seed)->index() << " from collection:" << seed.dataID() << endmsg; msg << MSG::ERROR << "! " << **seed << endmsg; DecisionIDContainer objDecisions; @@ -313,7 +313,7 @@ StatusCode HypoBase::validateLogicalFlow(const ElementLink<DecisionContainer>& d msg << MSG::ERROR << "! As this Decision object represents the output of a HypoAlg, it must respect logical flow on all " << seeds.size() << " of its parent(s):" << endmsg; size_t seed_n = 0; - for (const ElementLink<DecisionContainer> seed : seeds) { + for (const ElementLink<DecisionContainer>& seed : seeds) { msg << MSG::ERROR << "! Index:" << (*seed)->index() << " from collection:" << seed.dataID() << endmsg; msg << MSG::ERROR << "! " << **seed << endmsg; DecisionIDContainer objDecisions; diff --git a/Trigger/TrigSteer/DecisionHandling/src/InputMakerBase.cxx b/Trigger/TrigSteer/DecisionHandling/src/InputMakerBase.cxx index 413f3b57bd4e45bae75009f55eab2fb4d010147a..76a628aa8674c6f528e892fea80a7546c4a87034 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/InputMakerBase.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/InputMakerBase.cxx @@ -43,7 +43,7 @@ StatusCode InputMakerBase::decisionInputToOutput(const EventContext& context, SG ATH_CHECK( outputHandle.isValid() ); TrigCompositeUtils::DecisionContainer* outDecisions = outputHandle.ptr(); - for ( auto inputKey: decisionInputs() ) { + for ( const auto& inputKey: decisionInputs() ) { auto inputHandle = SG::makeHandle( inputKey, context ); if( not inputHandle.isValid() ) { @@ -148,7 +148,7 @@ size_t InputMakerBase::matchDecision(const DecisionContainer* outDecisions, cons void InputMakerBase::debugPrintOut(const EventContext& context, SG::WriteHandle<TrigCompositeUtils::DecisionContainer>& outputHandle) const{ size_t validInput=0; - for ( auto inputKey: decisionInputs() ) { + for ( const auto& inputKey: decisionInputs() ) { auto inputHandle = SG::makeHandle( inputKey, context ); ATH_MSG_DEBUG(" " << inputKey.key() << " " << (inputHandle.isValid()? "valid": "not valid" ) ); if (inputHandle.isValid()) { diff --git a/Trigger/TrigSteer/DecisionHandling/src/TestHypoTool.cxx b/Trigger/TrigSteer/DecisionHandling/src/TestHypoTool.cxx index e8306a9a7b2597f1716b8192abc4b62344b00cd2..efec693c102f4051429d438af00644d58be52936 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/TestHypoTool.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/TestHypoTool.cxx @@ -37,7 +37,7 @@ namespace HLTTest { //get previous decisions ElementLinkVector<DecisionContainer> inputLinks = getLinkToPrevious(d); ATH_MSG_DEBUG("Decision "<< counter <<": Got "<<inputLinks.size()<<" input decisions"); - for (const auto previousDecisions: inputLinks){ + for (const auto& previousDecisions: inputLinks){ TrigCompositeUtils::DecisionIDContainer objDecisions; TrigCompositeUtils::decisionIDs( *previousDecisions, objDecisions ); diff --git a/Trigger/TrigSteer/DecisionHandling/src/TestInputMaker.cxx b/Trigger/TrigSteer/DecisionHandling/src/TestInputMaker.cxx index d50e2a4ab93962f0e729e2631e2b4559de1ba651..98bb57228a0d5582431b1404efbac6a2109a1c43 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/TestInputMaker.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/TestInputMaker.cxx @@ -62,7 +62,7 @@ namespace HLTTest { for (const auto outputDecision : *outputHandle){ const ElementLinkVector<DecisionContainer> inputLinks = getLinkToPrevious(outputDecision); ATH_MSG_DEBUG("Element "<< count << " has " << inputLinks.size() <<" previous links"); - for (const auto input: inputLinks){ + for (const auto& input: inputLinks){ ATH_MSG_DEBUG( " -- Got seed link to input "<<input.dataID() <<" and index "<< input.index() ); const Decision* inputDecision = *input; const auto roiELInfo = TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>( inputDecision, m_roisLink.value()); diff --git a/Trigger/TrigSteer/DecisionHandling/src/TestRecoAlg.cxx b/Trigger/TrigSteer/DecisionHandling/src/TestRecoAlg.cxx index d29cceb2c5bb59db50631943aae7ba3e8a32d91a..c615b570ef82b95f073f0023be607d1034c3877c 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/TestRecoAlg.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/TestRecoAlg.cxx @@ -49,11 +49,11 @@ namespace HLTTest { Split_t objects; Event_t event; split( line, ';', objects ); - for ( auto obj: objects ) { + for ( const auto& obj: objects ) { Obj_t object; Split_t properties; split( obj, ',', properties ); - for ( auto prop: properties ) { + for ( const auto& prop: properties ) { Split_t keyval; split( prop, ':', keyval ); if ( keyval.size() != 2 ) { @@ -111,7 +111,7 @@ namespace HLTTest { xobj->setObjectLink( "initialRoI", roiLink );// this is used by the HypoAlg ATH_MSG_DEBUG( "Reconstructed object" ); - for ( auto prop : object ) { + for ( const auto& prop : object ) { xobj->setDetail( prop.first, prop.second ); ATH_MSG_DEBUG( " " << prop.first << " : " << prop.second ); } diff --git a/Trigger/TrigSteer/DecisionHandling/src/ViewCreatorFetchFromViewROITool.cxx b/Trigger/TrigSteer/DecisionHandling/src/ViewCreatorFetchFromViewROITool.cxx index 8dca7a6ed7386b28905f2908e5d6ee863dc71a1b..cb0ede7c4a6812d3634c53d7e361b7efeaa79873 100644 --- a/Trigger/TrigSteer/DecisionHandling/src/ViewCreatorFetchFromViewROITool.cxx +++ b/Trigger/TrigSteer/DecisionHandling/src/ViewCreatorFetchFromViewROITool.cxx @@ -31,7 +31,7 @@ StatusCode ViewCreatorFetchFromViewROITool::attachROILinks(TrigCompositeUtils::D // Look for a specific View, keyed by the View's SG key const std::vector<LinkInfo<ViewContainer>> myViews = findLinks<ViewContainer>(outputDecision, viewString(), TrigDefs::allFeaturesOfType); bool found = false; - for(LinkInfo<ViewContainer> v : myViews){ + for(const LinkInfo<ViewContainer>& v : myViews){ if(v.link.dataID() == m_viewToFetchFrom){ found = true; viewToFetchFrom = v; diff --git a/Trigger/TrigSteer/TrigCompositeUtils/Root/Combinations.cxx b/Trigger/TrigSteer/TrigCompositeUtils/Root/Combinations.cxx index 8bb00d74e20400544406a8a7eba8f670e776465d..258b5275819df60561325f5a14bd89752a0a062d 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/Root/Combinations.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/Root/Combinations.cxx @@ -58,11 +58,22 @@ namespace TrigCompositeUtils m_legFeatures.push_back(features); } + void Combinations::addLeg(std::size_t multiplicity, VecLInfo_t&& features) + { + m_legMultiplicities.push_back(multiplicity); + m_legFeatures.push_back(std::move(features)); + } + void Combinations::addLeg(const VecLInfo_t &features) { addLeg(1, features); } + void Combinations::addLeg(VecLInfo_t&& features) + { + addLeg(1, std::move(features)); + } + IPartCombItr Combinations::begin() const { // Build up the constructor arguments diff --git a/Trigger/TrigSteer/TrigCompositeUtils/Root/Combinators.cxx b/Trigger/TrigSteer/TrigCompositeUtils/Root/Combinators.cxx index d8554736e071bfcf28db2a1d904aca6d5d430bb0..66b06dcbe073f7ff43be53dcaf30c15963c3d246 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/Root/Combinators.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/Root/Combinators.cxx @@ -126,7 +126,7 @@ void NestedUniqueCombinationGenerator::cache() { namespace { - void combMaker( const Index2DVec& indices, std::function<void (const Index1DVec&) > handle, std::function<bool (const Index1DVec&) > filter, size_t rank=0, Index1DVec combination={} ) { + void combMaker( const Index2DVec& indices, std::function<void (const Index1DVec&) >&& handle, std::function<bool (const Index1DVec&) >&& filter, size_t rank=0, Index1DVec combination={} ) { for ( auto position: indices[rank] ) { // found an element matching to this combination @@ -143,7 +143,7 @@ namespace { if ( filter( combination ) ) handle( combination ); } else { - combMaker( indices, handle, filter, rank+1, combination); + combMaker( indices, std::move(handle), std::move(filter), rank+1, combination); } } } @@ -151,17 +151,13 @@ namespace { } namespace HLT { - void elementsInUniqueCombinations( const Index2DVec& indices, std::set<size_t>& participants, std::function<bool(const Index1DVec&)> filter ) { + void elementsInUniqueCombinations( const Index2DVec& indices, std::set<size_t>& participants, std::function<bool(const Index1DVec&)>&& filter ) { auto handle = [&](const Index1DVec& combination ) { for ( auto el: combination ) participants.insert(participants.begin(), el); }; - combMaker( indices, handle, filter ); + combMaker( indices, std::move(handle), std::move(filter) ); } - void findUniqueCombinations( const Index2DVec& indices, std::vector<std::vector<size_t> >& combinations, std::function<bool(const Index1DVec&)> filter ) { + void findUniqueCombinations( const Index2DVec& indices, std::vector<std::vector<size_t> >& combinations, std::function<bool(const Index1DVec&)>&& filter ) { auto handle = [&](const Index1DVec& combination ) { combinations.push_back( combination ); }; - combMaker( indices, handle, filter ); + combMaker( indices, std::move(handle), std::move(filter) ); } } - - - - diff --git a/Trigger/TrigSteer/TrigCompositeUtils/Root/IPartCombItr.cxx b/Trigger/TrigSteer/TrigCompositeUtils/Root/IPartCombItr.cxx index c49333ae1c96abf1109321522314e28a0cdad35d..0be78bf3005697fbca6e27a9d67ec9c753d98362 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/Root/IPartCombItr.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/Root/IPartCombItr.cxx @@ -62,8 +62,8 @@ namespace TrigCompositeUtils IPartCombItr::IPartCombItr( const std::vector<std::tuple<std::size_t, LInfoItr_t, LInfoItr_t>> &pieces, - const std::function<bool(const VecLInfo_t &)> filter) - : m_filter(filter) + std::function<bool(const VecLInfo_t &)> filter) + : m_filter(std::move(filter)) { m_itrs.reserve(pieces.size()); auto currentItr = std::back_inserter(m_current); @@ -94,8 +94,8 @@ namespace TrigCompositeUtils { } - IPartCombItr::IPartCombItr(const std::function<bool(const VecLInfo_t &)> filter) - : m_filter(filter) {} + IPartCombItr::IPartCombItr(std::function<bool(const VecLInfo_t &)> filter) + : m_filter(std::move(filter)) {} IPartCombItr::IPartCombItr(FilterType filter) : m_filter(getFilter(filter)) {} diff --git a/Trigger/TrigSteer/TrigCompositeUtils/Root/TrigCompositeUtilsRoot.cxx b/Trigger/TrigSteer/TrigCompositeUtils/Root/TrigCompositeUtilsRoot.cxx index 229bfb7f4e37c83e3fe09ca16cde83d60236999b..a834f764f3d3b61dea7989d532fe3f1ef7d2283a 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/Root/TrigCompositeUtilsRoot.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/Root/TrigCompositeUtilsRoot.cxx @@ -210,7 +210,7 @@ namespace TrigCompositeUtils { if ( hasLinkToPrevious(start) ) { const ElementLinkVector<DecisionContainer> seeds = getLinkToPrevious(start); - for (const ElementLink<DecisionContainer> seedEL : seeds) { + for (const ElementLink<DecisionContainer>& seedEL : seeds) { const Decision* result = find( *seedEL, filter ); if (result) return result; } @@ -237,7 +237,7 @@ namespace TrigCompositeUtils { } std::vector<const Decision*> getRejectedDecisionNodes(asg::EventStoreType* eventStore, - const DecisionIDContainer ids, + const DecisionIDContainer& ids, const std::set<std::string>& keysToIgnore) { std::vector<const Decision*> output; @@ -334,7 +334,7 @@ namespace TrigCompositeUtils { const Decision* comingFrom, NavGraph& navGraph, std::set<const Decision*>& fullyExploredFrom, - const DecisionIDContainer ids, + const DecisionIDContainer& ids, const bool enforceDecisionOnNode) { // Does this Decision satisfy the chain requirement? @@ -356,7 +356,7 @@ namespace TrigCompositeUtils { // Continue to the path(s) by looking at this Decision object's seed(s) if ( hasLinkToPrevious(node) ) { // Do the recursion - for ( ElementLink<DecisionContainer> seed : getLinkToPrevious(node)) { + for ( const ElementLink<DecisionContainer>& seed : getLinkToPrevious(node)) { const Decision* seedDecision = *(seed); // Dereference ElementLink // Sending true as final parameter for enforceDecisionOnStartNode as we are recursing away from the supplied start node recursiveGetDecisionsInternal(seedDecision, node, navGraph, fullyExploredFrom, ids, /*enforceDecisionOnNode*/ true); @@ -371,7 +371,7 @@ namespace TrigCompositeUtils { void recursiveGetDecisions(const Decision* start, NavGraph& navGraph, - const DecisionIDContainer ids, + const DecisionIDContainer& ids, const bool enforceDecisionOnStartNode) { std::set<const Decision*> fullyExploredFrom; @@ -483,7 +483,7 @@ namespace TrigCompositeUtils { return true; } // If not Early Exit, then recurse - for (const ElementLink<DecisionContainer> seed : getLinkToPrevious(start)) { + for (const ElementLink<DecisionContainer>& seed : getLinkToPrevious(start)) { #if TRIGCOMPUTILS_ENABLE_EARLY_EXIT == 1 if (fullyExploredFrom != nullptr) { // We only need to recursively explore back from each node in the graph once. @@ -730,12 +730,12 @@ namespace TrigCompositeUtils { } - std::string dump( const Decision* tc, std::function< std::string( const Decision* )> printerFnc ) { + std::string dump( const Decision* tc, const std::function< std::string( const Decision* )>& printerFnc ) { std::string ret; ret += printerFnc( tc ); if ( hasLinkToPrevious(tc) ) { const ElementLinkVector<DecisionContainer> seeds = getLinkToPrevious(tc); - for (const ElementLink<DecisionContainer> seedEL : seeds) { + for (const ElementLink<DecisionContainer>& seedEL : seeds) { ret += " -> " + dump( *seedEL, printerFnc ); } } diff --git a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/Combinations.h b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/Combinations.h index 272087cf2413b0ef8b2e076cb13ad6e067306e7a..d5a91d9df1e4dbee58806979be9796b05dab1539 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/Combinations.h +++ b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/Combinations.h @@ -39,7 +39,9 @@ namespace TrigCompositeUtils std::size_t size() const; void addLeg(std::size_t multiplicity, const VecLInfo_t &features); + void addLeg(std::size_t multiplicity, VecLInfo_t&& features); void addLeg(const VecLInfo_t &features); + void addLeg(VecLInfo_t&& features); IPartCombItr begin() const; IPartCombItr end() const; diff --git a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/Combinators.h b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/Combinators.h index 18060f1b4061c0cddc80ed9ceca240781d8432d9..6aed5467d22318cf28d9a86f8aa395e5b9fa06e1 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/Combinators.h +++ b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/Combinators.h @@ -139,14 +139,14 @@ namespace HLT { typedef std::vector<size_t> Index1DVec; typedef std::vector< Index1DVec > Index2DVec; - void elementsInUniqueCombinations( const Index2DVec& indices, std::set<size_t>& participants, std::function<bool(const Index1DVec&)> filter = [](const Index1DVec&){ return true; } ); + void elementsInUniqueCombinations( const Index2DVec& indices, std::set<size_t>& participants, std::function<bool(const Index1DVec&)>&& filter = [](const Index1DVec&){ return true; } ); /** * @brief Creates unique combinations of elements * @arg combinations - all calid combinations * For desciption @see elementsInUnuqueCombinations, this method is different as it exposes all combinations formed **/ - void findUniqueCombinations( const Index2DVec& indices, std::vector<std::vector<size_t> >& combinations, std::function<bool(const Index1DVec&)> filter = [](const Index1DVec&){ return true; } ); + void findUniqueCombinations( const Index2DVec& indices, std::vector<std::vector<size_t> >& combinations, std::function<bool(const Index1DVec&)>&& filter = [](const Index1DVec&){ return true; } ); diff --git a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/IPartCombItr.h b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/IPartCombItr.h index e83de44e3eeff96adac487ba4cbac148af58cbb3..26d61d7db656d04586b8d7202f6166ada3684173 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/IPartCombItr.h +++ b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/IPartCombItr.h @@ -60,7 +60,7 @@ namespace TrigCompositeUtils */ IPartCombItr( const std::vector<std::tuple<std::size_t, LInfoItr_t, LInfoItr_t>> &pieces, - const std::function<bool(const VecLInfo_t &)> filter); + std::function<bool(const VecLInfo_t &)> filter); /** * @brief The direct constructor @@ -76,7 +76,7 @@ namespace TrigCompositeUtils FilterType filter = FilterType::UniqueObjects); /// Base case constructor for the variadic constructors - IPartCombItr(const std::function<bool(const VecLInfo_t &)> filter); + IPartCombItr(std::function<bool(const VecLInfo_t &)> filter); /// Base case constructor for the variadict constructors IPartCombItr(FilterType filter = FilterType::UniqueObjects); diff --git a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/TrigCompositeUtils.h b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/TrigCompositeUtils.h index ebfc1deb553a94411367e950002b5cff14c39240..4a679615795501517630ad8f53a820dc1400b85e 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/TrigCompositeUtils.h +++ b/Trigger/TrigSteer/TrigCompositeUtils/TrigCompositeUtils/TrigCompositeUtils.h @@ -291,7 +291,7 @@ namespace TrigCompositeUtils { * @return Vector of Decision nodes whose attached feature failed the trigger chain logic for chain with DecisionID id **/ std::vector<const Decision*> getRejectedDecisionNodes(asg::EventStoreType* eventStore, - const DecisionIDContainer ids = {}, + const DecisionIDContainer& ids = {}, const std::set<std::string>& keysToIgnore = std::set<std::string>()); @@ -306,7 +306,7 @@ namespace TrigCompositeUtils { **/ void recursiveGetDecisions(const Decision* node, NavGraph& navGraph, - const DecisionIDContainer ids = {}, + const DecisionIDContainer& ids = {}, const bool enforceDecisionOnStartNode = true); @@ -320,7 +320,7 @@ namespace TrigCompositeUtils { const Decision* comingFrom, NavGraph& navGraph, std::set<const Decision*>& fullyExploredFrom, - const DecisionIDContainer ids, + const DecisionIDContainer& ids, const bool enforceDecisionOnNode); @@ -614,7 +614,7 @@ namespace TrigCompositeUtils { * Prints the Decision object including the linked seeds * @warnign expensive call **/ - std::string dump( const Decision* tc, std::function< std::string( const Decision* )> printerFnc ); + std::string dump( const Decision* tc, const std::function< std::string( const Decision* )>& printerFnc ); } diff --git a/Trigger/TrigSteer/TrigCompositeUtils/test/ChainNameParser_test.cxx b/Trigger/TrigSteer/TrigCompositeUtils/test/ChainNameParser_test.cxx index 44948e2ced149e1640792a8c59c3df7ea3872a27..c49693824648d303824af0756c84248b75f721e2 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/test/ChainNameParser_test.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/test/ChainNameParser_test.cxx @@ -9,7 +9,7 @@ namespace std { template<typename T> std::ostream& operator<<(std::ostream& o, const std::vector<T>& v) { - for ( auto el : v ) + for ( const auto& el : v ) o << el << " "; return o; } diff --git a/Trigger/TrigSteer/TrigCompositeUtils/test/Combinators_test.cxx b/Trigger/TrigSteer/TrigCompositeUtils/test/Combinators_test.cxx index 0735baa11cca5985a703b2c33092b042ee95b5d7..d2011f9bbf1064a6589f4f3aced5f01c924f5739 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/test/Combinators_test.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/test/Combinators_test.cxx @@ -196,7 +196,7 @@ void checkElementsIn(const Index2DVec& inp, const Index1DVec& exp, std::function<bool(const Index1DVec&)> filter = [](const Index1DVec&){ return true; } ) { std::cout << "\n"; std::set<size_t> part; - elementsInUniqueCombinations(inp, part, filter); + elementsInUniqueCombinations(inp, part, std::move(filter)); for ( auto& v: inp ) { @@ -221,14 +221,14 @@ void checkCombinations(const Index2DVec& inp, const Index2DVec& exp ) { Index2DVec allCombs; findUniqueCombinations(inp, allCombs); - for ( auto& v: inp ) { - for ( auto el: v ) + for ( const auto& v: inp ) { + for ( const size_t el: v ) std::cout << " " << el; std::cout << " | "; } std::cout << ".... result is: > "; - for ( auto comb: allCombs ) { - for ( auto el: comb ) + for ( const auto& comb: allCombs ) { + for ( const size_t el: comb ) std::cout << " " << el; std::cout << " | "; } diff --git a/Trigger/TrigSteer/TrigCompositeUtils/test/KFromNItr_test.cxx b/Trigger/TrigSteer/TrigCompositeUtils/test/KFromNItr_test.cxx index 857643c3d5782c2e866092ce3b4c13e770c0a450..9f52ecdd9d73ce2f090ad20fd2866ffc69623289 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/test/KFromNItr_test.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/test/KFromNItr_test.cxx @@ -22,7 +22,7 @@ namespace printable_vector (const std::vector<T>& v) : std::vector<T>(v) {} }; - printable_vector<printable_vector<std::size_t>> allCombos(KFromNItr itr) + printable_vector<printable_vector<std::size_t>> allCombos(const KFromNItr& itr) { printable_vector<printable_vector<std::size_t>> ret; std::copy(itr, KFromNItr(), std::back_inserter(ret)); diff --git a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerEDMAuxAccessors.h b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerEDMAuxAccessors.h index 794b34f6a8566ec1676a1b3ec5e1899c9ec4a20f..451f09a28d7c38f722061006cc322b093c4c5c38 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerEDMAuxAccessors.h +++ b/Trigger/TrigSteer/TrigOutputHandling/TrigOutputHandling/TriggerEDMAuxAccessors.h @@ -21,8 +21,7 @@ constexpr auto initAccessors(U... names) { auto boolAccessors = initAccessors<bool>( "hasGenericRoiError", "hasGenericDaqError", "hasCrcTobError", "hasCrcFibreError", - "hasCrcDaqError", "hasRoibDaqDifference", "hasRoibCtpDifference", "hasDaqCtpDifference", - "hitDVSP_isPix","hitDVSP_isSct"); + "hasCrcDaqError", "hasRoibDaqDifference", "hasRoibCtpDifference", "hasDaqCtpDifference"); auto charAccessors = initAccessors<char>( "IP2D_isDefaults", "IP3D_isDefaults", "SV1_isDefaults", "rnnip_isDefaults", @@ -39,15 +38,12 @@ auto intAccessors = initAccessors<int>( "nCells", "sctSP", "sctSPBarrel", "sctSPEndcapA", "sctSPEndcapC", "zfinder_tool", - "hitDVTrk_id","hitDVTrk_n_hits_innermost","hitDVTrk_n_hits_pix","hitDVTrk_n_hits_sct", "hitDV_seed_type","hitDV_n_track_qual", "dEdxTrk_id","dEdxTrk_dedx_n_usedhits", "dEdxTrk_n_hits_innermost","dEdxTrk_n_hits_inner","dEdxTrk_n_hits_pix","dEdxTrk_n_hits_sct", "dEdxHit_trkid","dEdxHit_iblovfl","dEdxHit_loc","dEdxHit_layer", - "HPtdEdxTrk_dedx_n_usedhits","HPtdEdxTrk_n_hits_innermost", - "HPtdEdxTrk_n_hits_inner","HPtdEdxTrk_n_hits_pix","HPtdEdxTrk_n_hits_sct", "disTrk_category","disTrk_is_fail","disTrk_n_hits_pix","disTrk_n_hits_sct","disTrk_n_hits_innermost", - "disTrkCand_category","disTrkCand_n_hits_innermost","disTrkCand_n_hits_inner","disTrkCand_n_hits_pix","disTrkCand_n_hits_sct", + "disTrkCand_category","disTrkCand_is_fail","disTrkCand_n_hits_innermost","disTrkCand_n_hits_inner","disTrkCand_n_hits_pix","disTrkCand_n_hits_sct", "disTrkCand_n_brhits_ibl","disTrkCand_n_brhits_pix1","disTrkCand_n_brhits_pix2","disTrkCand_n_brhits_pix3", "disTrkCand_n_brhits_sct1","disTrkCand_n_brhits_sct2","disTrkCand_n_brhits_sct3","disTrkCand_n_brhits_sct4", "disTrkCand_n_brhits_good_ibl","disTrkCand_n_brhits_good_pix1","disTrkCand_n_brhits_good_pix2","disTrkCand_n_brhits_good_pix3", @@ -58,7 +54,10 @@ auto intAccessors = initAccessors<int>( "disTrkCand_refit_n_brhits_good_ibl","disTrkCand_refit_n_brhits_good_pix1","disTrkCand_refit_n_brhits_good_pix2","disTrkCand_refit_n_brhits_good_pix3", "disTrkCand_refit_n_brhits_good_sct1","disTrkCand_refit_n_brhits_good_sct2","disTrkCand_refit_n_brhits_good_sct3","disTrkCand_refit_n_brhits_good_sct4"); -auto int16Accessors = initAccessors<int16_t>("view", "hitDVSP_layer", "hitDVSP_usedTrkId"); +auto int16Accessors = initAccessors<int16_t>("view", + "HPtdEdxTrk_n_hdedx_hits_1p45","HPtdEdxTrk_n_hdedx_hits_1p50","HPtdEdxTrk_n_hdedx_hits_1p55","HPtdEdxTrk_n_hdedx_hits_1p60", + "HPtdEdxTrk_n_hdedx_hits_1p65","HPtdEdxTrk_n_hdedx_hits_1p70","HPtdEdxTrk_n_hdedx_hits_1p75","HPtdEdxTrk_n_hdedx_hits_1p80", + "HPtdEdxTrk_n_hits_innermost","HPtdEdxTrk_n_hits_inner","HPtdEdxTrk_n_hits_pix","HPtdEdxTrk_n_hits_sct"); auto int32Accessors = initAccessors<int32_t>("roi"); @@ -102,8 +101,6 @@ auto floatAccessors = initAccessors<float>( "btagIp_d0", "btagIp_d0Uncertainty", "btagIp_z0SinTheta", "btagIp_z0SinThetaUncertainty", "EOverP", "RErr", "etConeCore", "muonScore", "ptCone20", "trackIso", "trkPtFraction", "zfinder_vtx_z", "zfinder_vtx_weight", "caloIso", "calE", "calEta", "calPhi", - "hitDVTrk_pt","hitDVTrk_eta","hitDVTrk_phi","hitDVTrk_a0beam", - "hitDVSP_eta","hitDVSP_r","hitDVSP_phi", "hitDV_seed_pt","hitDV_seed_eta","hitDV_seed_phi","hitDV_ly0_sp_frac","hitDV_ly1_sp_frac","hitDV_ly2_sp_frac", "hitDV_ly3_sp_frac","hitDV_ly4_sp_frac","hitDV_ly5_sp_frac","hitDV_ly6_sp_frac","hitDV_ly7_sp_frac","hitDV_bdt_score", "dEdxTrk_pt","dEdxTrk_eta","dEdxTrk_phi","dEdxTrk_dedx","dEdxTrk_a0beam", diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx index 010b65cab3fb5eb29426fa5b25971cd6db969641..c887f593d15a1663b9ddc8147e8dbc58c015f82d 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/TriggerBitsMakerTool.cxx @@ -144,13 +144,13 @@ StatusCode TriggerBitsMakerTool::fill( HLT::HLTResultMT& resultToFill, const Eve } if ( msgLvl( MSG::DEBUG ) ) { - const boost::dynamic_bitset<uint32_t> passRawBits = resultToFill.getHltPassRawBits(); + const boost::dynamic_bitset<uint32_t>& passRawBits = resultToFill.getHltPassRawBits(); std::vector<uint32_t> bitsTemp(passRawBits.num_blocks()); boost::to_block_range(passRawBits, bitsTemp.begin()); ATH_MSG_VERBOSE("HLT result now has " << bitsTemp.size() << " words with HLT pass raw bits:"); for (const auto& w : bitsTemp) ATH_MSG_VERBOSE("0x" << MSG::hex << w << MSG::dec); // - const boost::dynamic_bitset<uint32_t> prescaleBits = resultToFill.getHltPrescaledBits(); + const boost::dynamic_bitset<uint32_t>& prescaleBits = resultToFill.getHltPrescaledBits(); boost::to_block_range(prescaleBits, bitsTemp.begin()); ATH_MSG_VERBOSE("HLT result now has " << bitsTemp.size() << " words with HLT prescale bits:"); for (const auto& w : bitsTemp) ATH_MSG_VERBOSE("0x" << MSG::hex << w << MSG::dec); diff --git a/Trigger/TrigSteer/TrigOutputHandling/test/schema_evolution_test.cxx b/Trigger/TrigSteer/TrigOutputHandling/test/schema_evolution_test.cxx index 7ce24babd56163b875a3476afd8bb232a3a01ace..b6ac97c9269e571b8f6e8aaaf65ca472a22d320f 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/test/schema_evolution_test.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/test/schema_evolution_test.cxx @@ -51,7 +51,7 @@ StatusCode tester( TriggerEDMSerialiserTool* ser) { auto status = ser->serialiseContainer( (void*)em, interfaceAddress, serialisedData ); VALUE( status ) EXPECTED( StatusCode::SUCCESS ); - const EventContext ctx = Gaudi::Hive::currentContext(); + const EventContext& ctx = Gaudi::Hive::currentContext(); SGImplSvc* evtStore = static_cast<SGImplSvc*>(Atlas::getExtendedEventContext(ctx).proxy()); status = ser->serialisexAODAuxContainer( (void*)emAux, auxAddress, serialisedData, evtStore ); diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/FEXAlgoSpaceDefs.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/FEXAlgoSpaceDefs.h index 2571b0f7dec89eea9d00ac6c8627c1326293c8e4..948eb236338a93aad25ad8568b7a81eaf40f6b70 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/FEXAlgoSpaceDefs.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/FEXAlgoSpaceDefs.h @@ -39,7 +39,11 @@ namespace LVL1 { //Eta space for core and overlaps, EM only constexpr static int jFEX_algoSpace_A_lowerEM_eta = 0; - constexpr static int jFEX_algoSpace_A_upperEM_eta = 32; + constexpr static int jFEX_algoSpace_A_upperEM_eta = 33; + + //Eta space for core and overlaps, FCAL 2 and 3 + constexpr static int jFEX_algoSpace_A_lowerFCAL_eta = 33; + constexpr static int jFEX_algoSpace_A_upperFCAL_eta = 45; //C side (jFEX module 0): //there are more values on the C side as the matrix cannot be flipped in the bitwise framework. @@ -53,9 +57,13 @@ namespace LVL1 { constexpr static int jFEX_algoSpace_C_FCAL_end_eta = 24; //Eta space for core and overlaps, EM only - constexpr static int jFEX_algoSpace_C_lowerEM_eta = 13; + constexpr static int jFEX_algoSpace_C_lowerEM_eta = 12; constexpr static int jFEX_algoSpace_C_upperEM_eta = 45; - + + //Eta space for core and overlaps, FCAL 2 and 3 + constexpr static int jFEX_algoSpace_C_lowerFCAL_eta = 0; + constexpr static int jFEX_algoSpace_C_upperFCAL_eta = 12; + //Phi space breakdown constexpr static int jFEX_algoSpace_EMB_start_phi = 8; constexpr static int jFEX_algoSpace_EMB_end_phi = 24; diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/eTowerContainer.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/eTowerContainer.h index 384c9bbc27c771f8d3ba817e2d2c04ee316380cf..abfcc899678a15476a2361d9adf49328d6830953 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/eTowerContainer.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/eTowerContainer.h @@ -27,6 +27,8 @@ #include "CxxUtils/CachedValue.h" #include "AthLinks/tools/findInContainer.h" +#include <unordered_map> + namespace LVL1 { class eTowerContainer : public DataVector<LVL1::eTower> @@ -74,7 +76,7 @@ class eTowerContainer : public DataVector<LVL1::eTower> IMessageSvc* msgSvc() const; //* @brief Keeps track of the towerID of each eTower associated to each MAP index *. - std::map<int,int> m_map_towerID_containerIndex; + std::unordered_map<int,int> m_map_towerID_containerIndex; }; } diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardJetsAlgo.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardJetsAlgo.h index 25d328cac7e2a2deccd8f7c049fdc4b35afa549a..8bad30e5569d25ad6ffae130878fc8fadc170599 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardJetsAlgo.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardJetsAlgo.h @@ -41,7 +41,7 @@ namespace LVL1 { virtual StatusCode safetyTest() override; - virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) override; + virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex, int fpga) override; //virtual int realValue(int ID, int eta) override; virtual float globalPhi(int nphi, int neta) override; virtual float globalEta(int nphi, int neta) override; @@ -58,10 +58,17 @@ namespace LVL1 { private: SG::ReadHandleKey<LVL1::jTowerContainer> m_jFEXForwardJetsAlgo_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "Input container for jTowers"}; int m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]; - bool m_storeEnergyRingTTIDs; std::map<int,std::vector<int> > m_map_Etvalues; int m_lowerEM_eta; int m_upperEM_eta; + int m_jfex; + int m_fpga; + + + //This flag determines if the TT ID which are in the first and second energy rings are stored + //in the jFEXForwardJetsInfo class. It is set to false to reduce quantity data stored in class + bool m_storeEnergyRingTTIDs = false; + }; }//end of namespace #endif diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardJetsInfo.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardJetsInfo.h index 5b3d0e2a25800d6ce8e3032ec9189227315d5d6b..c8ebd2c0368e65a5aac28d67d84d817fc892bf1c 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardJetsInfo.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardJetsInfo.h @@ -22,57 +22,64 @@ #include "StoreGate/StoreGateSvc.h" namespace LVL1 { - class jFEXForwardJetsInfo{ +class jFEXForwardJetsInfo { - public: - void setCentreTTID(int TT_ID); - int getCentreTTID(); + public: + void setCentreTTID(int TT_ID); + int getCentreTTID(); - void setCentreTTEta(float centreTTEta); - float getCentreTTEta(); + void setCentreTTEta(float centreTTEta); + float getCentreTTEta(); - void setCentreTTPhi(float centreTTPhi); - float getCentreTTPhi(); + void setCentreTTPhi(float centreTTPhi); + float getCentreTTPhi(); - void setCentreLocalTTEta(float centreLocalTTEta); - float getCentreLocalTTEta(); - void setCentreLocalTTPhi(float centreLocalTTPhi); - float getCentreLocalTTPhi(); + void setCentreLocalTTEta(float centreLocalTTEta); + float getCentreLocalTTEta(); + void setCentreLocalTTPhi(float centreLocalTTPhi); + float getCentreLocalTTPhi(); - void includeTTinSeed(int TT_ID); - std::vector<int> getTTinSeed(); + void includeTTinSeed(int TT_ID); + std::vector<int> getTTinSeed(); - void addToSeedET(int seed_ET); - int getSeedET(); + void addToSeedET(int seed_ET); + int getSeedET(); - void addToFirstEnergyRingET(int firstER_ET); - int getFirstEnergyRingET(); + void addToFirstEnergyRingET(int firstER_ET); + int getFirstEnergyRingET(); - void includeTTIDinFirstER(int firstER_TTID); - std::vector<int> getTTIDinFirstER(); + void includeTTIDinFirstER(int firstER_TTID); + std::vector<int> getTTIDinFirstER(); - void addToSecondEnergyRingET(int secondER_ET); - int getSecondEnergyRingET(); + void addToSecondEnergyRingET(int secondER_ET); + int getSecondEnergyRingET(); - void includeTTIDinSecondER(int secondER_TTID); - std::vector<int> getTTIDinSecondER(); - - private: - int m_centre_TTID; - float m_centreTTPhi; - float m_centreTTEta; + void includeTTIDinSecondER(int secondER_TTID); + std::vector<int> getTTIDinSecondER(); - int m_centreLocalTTPhi; - int m_centreLocalTTEta; + void includeTTinSearchWindow(int TT_ID); + std::vector<int> getTTinSearchWindow(); + void addToSearchWindowET(int seed_ET); + int getSearchWindowET(); - int m_seed_ET =0; - int m_firstEnergyRing_ET =0; - int m_secondEnergyRing_ET =0; - std::vector<int> m_TTsInSeed ={}; - std::vector<int> m_firstEnergyRing_TTIDs = {}; - std::vector<int> m_secondEnergyRing_TTIDs = {}; + private: + int m_centre_TTID; + float m_centreTTPhi; + float m_centreTTEta; - }; + int m_centreLocalTTPhi; + int m_centreLocalTTEta; + + int m_seed_ET =0; + int m_SearchWindow_ET =0; + int m_firstEnergyRing_ET =0; + int m_secondEnergyRing_ET =0; + std::vector<int> m_TTsInSeed = {}; + std::vector<int> m_TTsInSearchWindow = {}; + std::vector<int> m_firstEnergyRing_TTIDs = {}; + std::vector<int> m_secondEnergyRing_TTIDs = {}; + +}; diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXLargeRJetAlgo.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXLargeRJetAlgo.h index d7b1cb158f0e056b63726c249fcf4e5fd4fe2016..d1f30ab637503c429ffef1080c312c6850ecc3ea 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXLargeRJetAlgo.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXLargeRJetAlgo.h @@ -43,7 +43,7 @@ namespace LVL1 { virtual void setupCluster(int inputTable[15][15]) override; virtual unsigned int getRingET() override; virtual unsigned int getLargeClusterET(unsigned int smallClusterET, unsigned int largeRingET) override; - virtual std::unique_ptr<jFEXLargeRJetTOB> getLargeRJetTOBs() override; + virtual std::unique_ptr<jFEXLargeRJetTOB> getLargeRJetTOBs(int smallClusterET,int TTID) override; virtual void setFPGAEnergy(std::map<int,std::vector<int> > et_map) override; protected: diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerContainer.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerContainer.h index ce00fdf89a90efe3dbecbfc8bc7da2faa9ff2c2f..5ce2bd346f0bbf02122a8abbf48409065ac19028 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerContainer.h +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerContainer.h @@ -27,6 +27,8 @@ #include "CxxUtils/CachedValue.h" #include "AthLinks/tools/findInContainer.h" +#include <unordered_map> + namespace LVL1 { class jTowerContainer : public DataVector<LVL1::jTower> @@ -74,7 +76,7 @@ class jTowerContainer : public DataVector<LVL1::jTower> IMessageSvc* msgSvc() const; //* @brief Keeps track of the towerID of each jTower associated to each MAP index *. - std::map<int,int> m_map_towerID_containerIndex; + std::unordered_map<int,int> m_map_towerID_containerIndex; }; } diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/eFEXDriverJobOptions.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/eFEXDriverJobOptions.py index c7ed18412192e086306429c25ae9db4fba28f185..7486373d6c14e2edfcd130114f141a9088712935 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/eFEXDriverJobOptions.py +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/eFEXDriverJobOptions.py @@ -49,6 +49,7 @@ DetFlags.detdescr.Calo_setOn() include("RecExCond/AllDet_detDescr.py") # menu with default configuration for testing +from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper from AthenaConfiguration.AllConfigFlags import ConfigFlags from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg CAtoGlobalWrapper(L1ConfigSvcCfg,ConfigFlags) diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py index d43efae7ba91a5c1f68ae407db9bdccaeb70f80d..d8ae561dd781ea50d14e3e12b1705851476754cf 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXDriverJobOptions.py @@ -1,23 +1,9 @@ -#jps.AthenaCommonFlags.AccessMode = "POOLAccess" # use POOL read mode because reading calocells -#svcMgr.EventSelector.InputCollections = jps.AthenaCommonFlags.FilesInput() from AthenaCommon.GlobalFlags import globalflags import AthenaPoolCnvSvc.ReadAthenaPool if type(theApp).__name__ == "fakeAppMgr": theApp.initialize() #this line cuts off pathena when joboption parsing ... since all outputs now declared -#from RecExConfig import AutoConfiguration -#AutoConfiguration.ConfigureSimulationOrRealData() -#AutoConfiguration.ConfigureGeo() -#AutoConfiguration.ConfigureConditionsTag() -#from AthenaCommon.DetFlags import DetFlags -#DetFlags.detdescr.all_setOff() -#DetFlags.detdescr.Calo_setOn() -#include("RecExCond/AllDet_detDescr.py") - -#include( "CaloConditions/CaloConditions_jobOptions.py" ) include( "LArDetDescr/LArDetDescr_joboptions.py" ) - - include( "RegistrationServices/IOVRegistrationSvc_jobOptions.py" ) IOVBeginRun = IOVRunNumberMin @@ -49,6 +35,7 @@ DetFlags.detdescr.Calo_setOn() include("RecExCond/AllDet_detDescr.py") # menu with default configuration for testing +from AthenaConfiguration.ComponentAccumulator import CAtoGlobalWrapper from AthenaConfiguration.AllConfigFlags import ConfigFlags from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg CAtoGlobalWrapper(L1ConfigSvcCfg,ConfigFlags) @@ -66,6 +53,7 @@ StreamAOD.ItemList+=["xAOD::jFexSRJetRoIContainer#*"] StreamAOD.ItemList+=["xAOD::jFexSRJetRoIAuxContainer#*"] StreamAOD.ItemList+=["xAOD::jFexLRJetRoIContainer#*"] StreamAOD.ItemList+=["xAOD::jFexLRJetRoIAuxContainer#*"] +StreamAOD.ItemList+=["xAOD::TriggerTowerContainer#*"] StreamAOD.ItemList+=["xAOD::jFexTauRoIContainer#*"] StreamAOD.ItemList+=["xAOD::jFexTauRoIAuxContainer#*"] StreamAOD.ItemList+=["xAOD::jFexSumETRoIContainer#*"] @@ -73,62 +61,14 @@ StreamAOD.ItemList+=["xAOD::jFexSumETRoIAuxContainer#*"] StreamAOD.ItemList+=["xAOD::jFexMETRoIContainer#*"] StreamAOD.ItemList+=["xAOD::jFexMETRoIAuxContainer#*"] - -# a random selection of containers/keys from parsing checkSG output from original MC, ignoring Aux and removing those -# that seemed to give a crash -# Generic event info -StreamAOD.ItemList+=["xAOD::EventInfo#*"] -StreamAOD.ItemList+=["xAOD::EventAuxInfo#*"] -StreamAOD.ItemList+=["xAOD::EventShape#Kt4EMTopoOriginEventShape"] -StreamAOD.ItemList+=["xAOD::EventShapeAuxInfo#Kt4EMTopoOriginEventShapeAux."] - #Physics Objects -StreamAOD.ItemList+=["xAOD::JetContainer#AntiKt4EMTopoJets"] -StreamAOD.ItemList+=["xAOD::JetAuxContainer#AntiKt4EMTopoJetsAux."] -StreamAOD.ItemList+=["xAOD::MuonContainer#Muons"] -StreamAOD.ItemList+=["xAOD::MuonAuxContainer#MuonsAux."] +StreamAOD.ItemList+=["xAOD::JetContainer#*"] +StreamAOD.ItemList+=["xAOD::JetAuxContainer#*"] StreamAOD.ItemList+=["xAOD::ElectronContainer#Electrons"] StreamAOD.ItemList+=["xAOD::ElectronAuxContainer#ElectronsAux."] -StreamAOD.ItemList+=["xAOD::PhotonContainer#Photons"] -StreamAOD.ItemList+=["xAOD::PhotonAuxContainer#PhotonsAux."] StreamAOD.ItemList+=["xAOD::TauJetContainer#TauJets"] StreamAOD.ItemList+=["xAOD::TauJetAuxContainer#TauJetsAux.-VertexedClusters."] -StreamAOD.ItemList+=["xAOD::MissingETContainer#MET_Reference_AntiKt4EMTopo"] -StreamAOD.ItemList+=["xAOD::MissingETAuxContainer#MET_Reference_AntiKt4EMTopoAux.-ConstitObjectLinks.-ConstitObjectWeights"] -StreamAOD.ItemList+=["xAOD::VertexContainer#PrimaryVertices"] -StreamAOD.ItemList+=["xAOD::VertexAuxContainer#PrimaryVerticesAux.-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"] -StreamAOD.ItemList+=["xAOD::MissingETAssociationMap#METAssoc_AntiKt4EMTopo"] -StreamAOD.ItemList+=["xAOD::MissingETAuxAssociationMap#METAssoc_AntiKt4EMTopoAux."] -StreamAOD.ItemList+=["xAOD::MissingETContainer#MET_Core_AntiKt4EMTopo"] -StreamAOD.ItemList+=["xAOD::MissingETAuxContainer#MET_Core_AntiKt4EMTopoAux.name.mpx.mpy.sumet.source"] -StreamAOD.ItemList+=["xAOD::MissingETContainer#MET_Track"] -StreamAOD.ItemList+=["xAOD::MissingETAuxContainer#MET_TrackAux.name.mpx.mpy"] - - - -StreamAOD.ItemList+=["xAOD::MissingETComponentMap#METMap_Truth"] -StreamAOD.ItemList+=["xAOD::EmTauRoIContainer#LVL1EmTauRoIs"] -StreamAOD.ItemList+=["xAOD::EmTauRoIAuxContainer#LVL1EmTauRoIsAux."] -StreamAOD.ItemList+=["xAOD::EnergySumRoI#LVL1EnergySumRoI"] -StreamAOD.ItemList+=["xAOD::EnergySumRoIAuxInfo#LVL1EnergySumRoIAux."] -StreamAOD.ItemList+=["xAOD::JetRoIContainer#LVL1JetRoIs"] -StreamAOD.ItemList+=["xAOD::JetRoIAuxContainer#LVL1JetRoIsAux."] - - -StreamAOD.ItemList+=["xAOD::TruthParticleContainer#*"] -StreamAOD.ItemList+=["xAOD::TruthParticleAuxContainer#TruthParticlesAux.-caloExtension"] -StreamAOD.ItemList+=["xAOD::TruthVertexContainer#*"] -StreamAOD.ItemList+=["xAOD::TruthVertexAuxContainer#*"] -StreamAOD.ItemList+=["xAOD::TruthEventContainer#*"] -StreamAOD.ItemList+=["xAOD::TruthEventAuxContainer#*"] - -StreamAOD.ItemList+=["TileCellContainer#MBTSContainer"] -StreamAOD.ItemList+=["xAOD::TrigDecision#xTrigDecision"] -StreamAOD.ItemList+=["xAOD::TrigNavigation#TrigNavigation"] -StreamAOD.ItemList+=["xAOD::TrigConfKeys#TrigConfKeys"] -StreamAOD.ItemList+=["HLT::HLTResult#HLTResult_HLT"] -StreamAOD.ItemList+=["xAOD::TrigDecisionAuxInfo#xTrigDecisionAux."] -StreamAOD.ItemList+=["xAOD::TrigNavigationAuxInfo#TrigNavigationAux."] + diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eTowerContainer.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eTowerContainer.cxx index fa33867d63a1c01999f1a5821eecf6a43041a17f..e67927a06de78d4b2fa9b2774c16d67f1f3a7c2a 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eTowerContainer.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/eTowerContainer.cxx @@ -29,24 +29,24 @@ void eTowerContainer::print() const { } -const LVL1::eTower * eTowerContainer::findTower(int towerID) const -{ - int container_index = -1; - container_index = m_map_towerID_containerIndex.find(towerID)->second; - if(container_index >= 0){ +const LVL1::eTower * eTowerContainer::findTower(int towerID) const{ + const auto it = m_map_towerID_containerIndex.find(towerID); + + const int container_index = it->second; + if (container_index < 0) { + return nullptr; + } return (*this)[container_index]; - } - return nullptr; } -LVL1::eTower * eTowerContainer::findTower(int towerID) -{ - int container_index = -1; - container_index = m_map_towerID_containerIndex.find(towerID)->second; - if(container_index >= 0){ +LVL1::eTower * eTowerContainer::findTower(int towerID){ + const auto it = m_map_towerID_containerIndex.find(towerID); + + const int container_index = it->second; + if (container_index < 0) { + return nullptr; + } return (*this)[container_index]; - } - return nullptr; } void eTowerContainer::clearContainerMap() diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx index 0a243a7d02e2857899276295d5950cf32f84b32e..77c101030bbb31c83cd0a183f7b90cd7b7aab479 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx @@ -93,77 +93,73 @@ void jFEXFPGA::reset() { StatusCode jFEXFPGA::execute() { - SG::ReadHandle<jTowerContainer> jk_jFEXFPGA_jTowerContainer(m_jFEXFPGA_jTowerContainerKey/*,ctx*/); - if(!jk_jFEXFPGA_jTowerContainer.isValid()) { - ATH_MSG_FATAL("Could not retrieve jk_jFEXFPGA_jTowerContainer " << m_jFEXFPGA_jTowerContainerKey.key() ); - return StatusCode::FAILURE; - } - jFEXOutputCollection* jFEXOutputs = nullptr; - ATH_CHECK( evtStore()->retrieve(jFEXOutputs, "jFEXOutputCollection") ); + SG::ReadHandle<jTowerContainer> jk_jFEXFPGA_jTowerContainer(m_jFEXFPGA_jTowerContainerKey/*,ctx*/); + if(!jk_jFEXFPGA_jTowerContainer.isValid()) { + ATH_MSG_FATAL("Could not retrieve jk_jFEXFPGA_jTowerContainer " << m_jFEXFPGA_jTowerContainerKey.key() ); + return StatusCode::FAILURE; + } + jFEXOutputCollection* jFEXOutputs = nullptr; + ATH_CHECK( evtStore()->retrieve(jFEXOutputs, "jFEXOutputCollection") ); - - //ATH_CHECK( m_jFEXPileupAndNoiseTool.retrieve()); ATH_CHECK( m_jFEXPileupAndNoiseTool->safetyTest()); - ATH_CHECK( m_jFEXPileupAndNoiseTool->reset()); - if(m_jfexid == 0 || m_jfexid == 5){ + ATH_CHECK( m_jFEXPileupAndNoiseTool->reset()); + if(m_jfexid == 0 || m_jfexid == 5) { m_jFEXPileupAndNoiseTool->setup(m_jTowersIDs_Wide); + //return StatusCode::SUCCESS; } - else{ + else { + //return StatusCode::SUCCESS; m_jFEXPileupAndNoiseTool->setup(m_jTowersIDs_Thin); - - + + } //Calculating and sustracting pileup std::vector<int> pileup_rho; pileup_rho = m_jFEXPileupAndNoiseTool->CalculatePileup(); - jFEXOutputs->addValue_pileup("pileup_FPGAid" , m_id); - jFEXOutputs->addValue_pileup("pileup_jFEXid" , m_jfexid); - jFEXOutputs->addValue_pileup("pileup_rho_EM" , pileup_rho[0]); + jFEXOutputs->addValue_pileup("pileup_FPGAid", m_id); + jFEXOutputs->addValue_pileup("pileup_jFEXid", m_jfexid); + jFEXOutputs->addValue_pileup("pileup_rho_EM", pileup_rho[0]); jFEXOutputs->addValue_pileup("pileup_rho_HAD1", pileup_rho[1]); jFEXOutputs->addValue_pileup("pileup_rho_HAD2", pileup_rho[2]); jFEXOutputs->addValue_pileup("pileup_rho_HAD3", pileup_rho[3]); jFEXOutputs->addValue_pileup("pileup_rho_FCAL", pileup_rho[4]); jFEXOutputs->fill_pileup(); - - + //Applying pileup sustraction in jet or met independently - this sets the flags to true in m_jFEXPileupAndNoiseTool // now masked -> no pileup applied. - //m_jFEXPileupAndNoiseTool->ApplyPileupJets(); + //m_jFEXPileupAndNoiseTool->ApplyPileupJets(); //m_jFEXPileupAndNoiseTool->ApplyPileupMet(); - - //Getting the values + //Getting the values m_map_HAD_Etvalues_FPGA = m_jFEXPileupAndNoiseTool->Get_HAD_Et_values(); m_map_EM_Etvalues_FPGA = m_jFEXPileupAndNoiseTool->Get_EM_Et_values(); m_map_Etvalues_FPGA = m_jFEXPileupAndNoiseTool->GetEt_values(); - - if(m_id==0 || m_id==2){ - //ATH_CHECK( m_jFEXsumETAlgoTool.retrieve()); + + if(m_id==0 || m_id==2) { ATH_CHECK( m_jFEXsumETAlgoTool->safetyTest()); - ATH_CHECK( m_jFEXsumETAlgoTool->reset()); - //ATH_CHECK( m_jFEXmetAlgoTool.retrieve()); + ATH_CHECK( m_jFEXsumETAlgoTool->reset()); ATH_CHECK( m_jFEXmetAlgoTool->safetyTest()); - ATH_CHECK( m_jFEXmetAlgoTool->reset()); + ATH_CHECK( m_jFEXmetAlgoTool->reset()); m_jFEXsumETAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); m_jFEXmetAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); - - if(m_jfexid > 0 && m_jfexid < 5){ - + + if(m_jfexid > 0 && m_jfexid < 5) { + //-----------------jFEXsumETAlgo----------------- m_jFEXsumETAlgoTool->setup(m_jTowersIDs_Thin); m_jFEXsumETAlgoTool->buildBarrelSumET(); //The number 3 below is arbitrary, NEEDS TO BE CHANGED with the numbers from the Trigger Menu (future MR) m_sumET_tobwords.push_back(formSumETTOB(m_jFEXsumETAlgoTool->getETlowerEta(3),m_jFEXsumETAlgoTool->getETupperEta(3))); - - //-----------------jFEXmetAlgo----------------- - m_jFEXmetAlgoTool->setup(m_jTowersIDs_Thin); + + //-----------------jFEXmetAlgo----------------- + m_jFEXmetAlgoTool->setup(m_jTowersIDs_Thin); m_jFEXmetAlgoTool->buildBarrelmet(); m_Met_tobwords.push_back(formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(),m_jFEXmetAlgoTool->GetMetYComponent())); } - else if(m_jfexid == 0 ){ + else if(m_jfexid == 0 ) { int flipped_jTowersIDs [FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width] = {{0}}; int max_phi_it = FEXAlgoSpaceDefs::jFEX_algoSpace_height-1; int max_eta_it = FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width-1; - for(int mphi = 0; mphi <= max_phi_it; mphi++) { + for(int mphi = 0; mphi <= max_phi_it; mphi++) { for(int meta = 0; meta <= max_eta_it; meta++) { flipped_jTowersIDs[mphi][meta]=m_jTowersIDs_Wide[mphi][max_eta_it-meta]; } @@ -173,351 +169,318 @@ StatusCode jFEXFPGA::execute() { m_jFEXsumETAlgoTool->buildFWDSumET(); //The number 3 below is arbitrary, NEEDS TO BE CHANGED with the numbers from the Trigger Menu (future MR) m_sumET_tobwords.push_back(formSumETTOB(m_jFEXsumETAlgoTool->getETlowerEta(3),m_jFEXsumETAlgoTool->getETupperEta(3))); - - //-----------------jFEXmetAlgo----------------- + + //-----------------jFEXmetAlgo----------------- m_jFEXmetAlgoTool->setup(flipped_jTowersIDs); m_jFEXmetAlgoTool->buildFWDmet(); m_Met_tobwords.push_back(formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(),m_jFEXmetAlgoTool->GetMetYComponent())); } - else if(m_jfexid == 5){ + else if(m_jfexid == 5) { //-----------------jFEXsumETAlgo----------------- m_jFEXsumETAlgoTool->setup(m_jTowersIDs_Wide); m_jFEXsumETAlgoTool->buildFWDSumET(); //The number 3 below is arbitrary, NEEDS TO BE CHANGED with the numbers from the Trigger Menu (future MR) m_sumET_tobwords.push_back(formSumETTOB(m_jFEXsumETAlgoTool->getETlowerEta(3),m_jFEXsumETAlgoTool->getETupperEta(3))); - - //-----------------jFEXmetAlgo----------------- + + //-----------------jFEXmetAlgo----------------- m_jFEXmetAlgoTool->setup(m_jTowersIDs_Wide); m_jFEXmetAlgoTool->buildFWDmet(); m_Met_tobwords.push_back(formMetTOB(m_jFEXmetAlgoTool->GetMetXComponent(),m_jFEXmetAlgoTool->GetMetYComponent())); } } - - //-----------jFEXSmallRJet & Large R Jet Algo----------------- - ATH_MSG_DEBUG("==== jFEXSmallRJetAlgo ========"); - - //Central region algorithms - if(m_jfexid > 0 && m_jfexid < 5){ - for(int mphi = 8; mphi < FEXAlgoSpaceDefs::jFEX_algoSpace_height -8; mphi++) { - for(int meta = 8; meta < FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width -8; meta++) { - - //create search window including towerIDs required for seeding. - int SRJet_SearchWindow[7][7] = {{0}}; - for(int i = -3 ; i <4; i++){ - for(int j = -3; j <4; j++){ - SRJet_SearchWindow[3 + i][3 + j] = m_jTowersIDs_Thin[mphi + i][meta +j]; - } - } - int largeRCluster_IDs[15][15]= {{0}}; - for(int i = -7; i< 8; i++ ) { - for(int j = -7; j< 8; j++) { - largeRCluster_IDs[7 +i][7 +j] = m_jTowersIDs_Thin[mphi + i][meta +j]; - } - } - - //remove corners from large ET ring - for(int i =4; i <8; i++) { - if( i != 7) { - largeRCluster_IDs[7 +i][14] = 0; - largeRCluster_IDs[7 +i][0] = 0; - largeRCluster_IDs[7 -i][14] = 0; - largeRCluster_IDs[7 -i][0] = 0; - } + //-----------jFEXSmallRJet & Large R Jet Algo----------------- + ATH_MSG_DEBUG("==== jFEXSmallRJetAlgo ========"); + + //Central region algorithms + if(m_jfexid > 0 && m_jfexid < 5) { + for(int mphi = 8; mphi < FEXAlgoSpaceDefs::jFEX_algoSpace_height -8; mphi++) { + for(int meta = 8; meta < FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width -8; meta++) { + + //create search window including towerIDs required for seeding. + int SRJet_SearchWindow[7][7] = {{0}}; + int largeRCluster_IDs[15][15]= {{0}}; + + + for(int i = -7; i< 8; i++ ) { + for(int j = -7; j< 8; j++) { + + if(std::abs(i)<4 && std::abs(j)<4) { + SRJet_SearchWindow[3 + i][3 + j] = m_jTowersIDs_Thin[mphi + i][meta +j]; + } + uint deltaR = std::sqrt(std::pow(i,2)+std::pow(j,2)); + if(deltaR>=4 && deltaR<8) { + largeRCluster_IDs[7 +i][7 +j] = m_jTowersIDs_Thin[mphi + i][meta +j]; + } + + } + } + + m_jFEXSmallRJetAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); + m_jFEXLargeRJetAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); + m_jFEXSmallRJetAlgoTool->setup(SRJet_SearchWindow); + m_jFEXLargeRJetAlgoTool->setupCluster(largeRCluster_IDs); + m_jFEXSmallRJetAlgoTool->buildSeeds(); + bool SRJet_LM = m_jFEXSmallRJetAlgoTool->isSeedLocalMaxima(); + jFEXOutputs->addValue_smallRJet("smallRJet_isCentralTowerSeed", SRJet_LM); + int smallClusterET = m_jFEXSmallRJetAlgoTool->getSmallClusterET(); + //These are plots of the central TT for each 5x5 search window. + jFEXOutputs->addValue_smallRJet("smallRJet_ET", m_jFEXSmallRJetAlgoTool->getTTowerET(m_jTowersIDs_Thin[mphi][meta])); + jFEXOutputs->addValue_smallRJet("smallRJet_phi",m_jFEXSmallRJetAlgoTool->getRealPhi(m_jTowersIDs_Thin[mphi][meta])); + jFEXOutputs->addValue_smallRJet("smallRJet_eta",m_jFEXSmallRJetAlgoTool->getRealEta(m_jTowersIDs_Thin[mphi][meta])); + + jFEXOutputs->addValue_smallRJet("smallRJet_clusterET", smallClusterET); + + if(!SRJet_LM) { + continue; + } + std::unique_ptr<jFEXSmallRJetTOB> tmp_SRJet_tob = m_jFEXSmallRJetAlgoTool->getSmallRJetTOBs(); + + bool check = m_jFEXSmallRJetAlgoTool->checkDisplacedLM(); + //to check if Local Maxima is displaced. + int meta_LM = meta; + int mphi_LM = mphi; + if(check && SRJet_LM) { + meta_LM = meta -1; + mphi_LM = mphi -1; + + } - largeRCluster_IDs[14][7 +i] = 0; - largeRCluster_IDs[14][7 -i] = 0; - largeRCluster_IDs[0][7 +i] = 0; - largeRCluster_IDs[0][7 -i] = 0; - largeRCluster_IDs[13][13] = 0; - largeRCluster_IDs[1][1] = 0; - largeRCluster_IDs[13][1] = 0; - largeRCluster_IDs[1][13] = 0; - } - - //this prevents adding ET from small RT ring - for(int i = -3; i< 4; i++) { - for(int j = -3; j<4 ; j++) { - if(!(i == 3 && j == -3) || !(i == -3 && j == 3) || !(i == 3 && j == 3) || !(i == -3 && j == -3)) { - largeRCluster_IDs[7 +i][7 +j] = 0; - } + bool SR_TOB_saturated = false; + if (smallClusterET/200. > 0x7ff) SR_TOB_saturated = true; + + // for plotting variables in TOBS- internal check: + jFEXOutputs->addValue_smallRJet("smallRJetTOB_eta", tmp_SRJet_tob->setEta(meta_LM)-8); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_phi", tmp_SRJet_tob->setPhi(mphi_LM)-8); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_ET", tmp_SRJet_tob->setET(smallClusterET/200)); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_sat", tmp_SRJet_tob->setSat(SR_TOB_saturated)); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_jfexID", m_jfexid); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_fpgaID", m_id); + + uint32_t SRJet_tobword = formSmallRJetTOB(mphi_LM, meta_LM); + m_SRJet_tobwords.push_back(SRJet_tobword); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_word",SRJet_tobword); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_jfexID", m_jfexid); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_fpgaID", m_id); + + jFEXOutputs->fill_smallRJet(); + + ATH_MSG_DEBUG("==== jFEXLargeRJetAlgo ========"); + //LargeRJetAlgo is here as SmallRJetlocalMaxima is a requirement + unsigned int largeClusterET = m_jFEXLargeRJetAlgoTool->getLargeClusterET(smallClusterET,m_jFEXLargeRJetAlgoTool->getRingET()); + std::unique_ptr<jFEXLargeRJetTOB> tmp_LRJet_tob = m_jFEXLargeRJetAlgoTool->getLargeRJetTOBs(smallClusterET,m_jFEXSmallRJetAlgoTool->getTTIDcentre()); + unsigned int LR_TOB_saturated = 0; + if (largeClusterET/200. > 0x1fff) LR_TOB_saturated = 1; + + jFEXOutputs->addValue_largeRJet("largeRJet_ET", largeClusterET); + jFEXOutputs->addValue_largeRJet("largeRJet_phi", m_jFEXSmallRJetAlgoTool->getRealPhi(m_jTowersIDs_Thin[mphi][meta])); + jFEXOutputs->addValue_largeRJet("largeRJet_eta", m_jFEXSmallRJetAlgoTool->getRealEta(m_jTowersIDs_Thin[mphi][meta])); + + jFEXOutputs->addValue_largeRJet("largeRJetTOB_ET",tmp_LRJet_tob->setET(largeClusterET/200)); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_eta",tmp_SRJet_tob->setEta(meta)); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_phi",tmp_SRJet_tob->setPhi(mphi)); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_sat",tmp_LRJet_tob->setSat(LR_TOB_saturated)); + jFEXOutputs->fill_largeRJet(); + uint32_t LRJet_tobword = formLargeRJetTOB(mphi, meta); + if ( LRJet_tobword != 0 ) m_LRJet_tobwords.push_back(LRJet_tobword); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_word", LRJet_tobword); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_jfexID", m_jfexid); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_fpgaID", m_id); + } } - } - m_jFEXSmallRJetAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); - m_jFEXLargeRJetAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); - m_jFEXSmallRJetAlgoTool->setup(SRJet_SearchWindow); - m_jFEXLargeRJetAlgoTool->setupCluster(largeRCluster_IDs); - m_jFEXSmallRJetAlgoTool->buildSeeds(); - bool SRJet_LM = m_jFEXSmallRJetAlgoTool->isSeedLocalMaxima(); - - jFEXOutputs->addValue_smallRJet("smallRJet_isCentralTowerSeed", SRJet_LM); - - int smallClusterET = m_jFEXSmallRJetAlgoTool->getSmallClusterET(); - //These are plots of the central TT for each 5x5 search window. - jFEXOutputs->addValue_smallRJet("smallRJet_ET", m_jFEXSmallRJetAlgoTool->getTTowerET(m_jTowersIDs_Thin[mphi][meta])); - jFEXOutputs->addValue_smallRJet("smallRJet_phi",m_jFEXSmallRJetAlgoTool->getRealPhi(m_jTowersIDs_Thin[mphi][meta])); - jFEXOutputs->addValue_smallRJet("smallRJet_eta",m_jFEXSmallRJetAlgoTool->getRealEta(m_jTowersIDs_Thin[mphi][meta])); - - jFEXOutputs->addValue_smallRJet("smallRJet_clusterET", smallClusterET); - - if(!SRJet_LM){continue;} - std::unique_ptr<jFEXSmallRJetTOB> tmp_SRJet_tob = m_jFEXSmallRJetAlgoTool->getSmallRJetTOBs(); - - bool isLMdisplaced = m_jFEXSmallRJetAlgoTool->checkDisplacedLM(); - if(isLMdisplaced && (meta == 8 || mphi == 8) ){ - continue; // avoiding edges in the core FPGA, cannot be displaced to the overlap. will be identified in the next FPGA - } - //to check if Local Maxima is displaced. - int meta_LM = meta; - int mphi_LM = mphi; - if(isLMdisplaced ){ - meta_LM = meta -1; - mphi_LM = mphi -1; - } - - bool SR_TOB_saturated = false; - if (smallClusterET/200. > 0x7ff) SR_TOB_saturated = true; - - // for plotting variables in TOBS- internal check: - jFEXOutputs->addValue_smallRJet("smallRJetTOB_eta", tmp_SRJet_tob->setEta(meta_LM)-8); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_phi", tmp_SRJet_tob->setPhi(mphi_LM)-8); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_ET", tmp_SRJet_tob->setET(smallClusterET/200)); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_sat", tmp_SRJet_tob->setSat(SR_TOB_saturated)); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_jfexID", m_jfexid); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_fpgaID", m_id); - - uint32_t SRJet_tobword = formSmallRJetTOB(mphi_LM, meta_LM); - m_SRJet_tobwords.push_back(SRJet_tobword); - - jFEXOutputs->addValue_smallRJet("smallRJetTOB_word",SRJet_tobword); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_jfexID", m_jfexid); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_fpgaID", m_id); - - jFEXOutputs->fill_smallRJet(); - - ATH_MSG_DEBUG("==== jFEXLargeRJetAlgo ========"); - //LargeRJetAlgo is here as SmallRJetlocalMaxima is a requirement - unsigned int largeClusterET = m_jFEXLargeRJetAlgoTool->getLargeClusterET(m_jFEXSmallRJetAlgoTool->getSmallClusterET(),m_jFEXLargeRJetAlgoTool->getRingET()); - std::unique_ptr<jFEXLargeRJetTOB> tmp_LRJet_tob = m_jFEXLargeRJetAlgoTool->getLargeRJetTOBs(); - unsigned int LR_TOB_saturated = 0; - if (largeClusterET/200. > 0x1fff) LR_TOB_saturated = 1; - - jFEXOutputs->addValue_largeRJet("largeRJet_ET", largeClusterET); - jFEXOutputs->addValue_largeRJet("largeRJet_phi", m_jFEXSmallRJetAlgoTool->getRealPhi(m_jTowersIDs_Thin[mphi][meta])); - jFEXOutputs->addValue_largeRJet("largeRJet_eta", m_jFEXSmallRJetAlgoTool->getRealEta(m_jTowersIDs_Thin[mphi][meta])); - - jFEXOutputs->addValue_largeRJet("largeRJetTOB_ET",tmp_LRJet_tob->setET(largeClusterET/200)); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_eta",tmp_SRJet_tob->setEta(meta)); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_phi",tmp_SRJet_tob->setPhi(mphi)); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_sat",tmp_LRJet_tob->setSat(LR_TOB_saturated)); - jFEXOutputs->fill_largeRJet(); - uint32_t LRJet_tobword = formLargeRJetTOB(mphi, meta); - if ( LRJet_tobword != 0 ) m_LRJet_tobwords.push_back(LRJet_tobword); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_word", LRJet_tobword); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_jfexID", m_jfexid); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_fpgaID", m_id); - } - } -} //end of if statement for checking if in central jfex modules -jFEXOutputs->fill_smallRJet(); -jFEXOutputs->fill_largeRJet(); -//**********Forward Jets*********************** + } //end of if statement for checking if in central jfex modules + jFEXOutputs->fill_smallRJet(); + jFEXOutputs->fill_largeRJet(); + //**********Forward Jets*********************** -//FCAL region algorithm -if(m_jfexid ==0 || m_jfexid ==5){ + //FCAL region algorithm + if(m_jfexid ==0 || m_jfexid ==5) { + ATH_CHECK(m_jFEXForwardJetsAlgoTool->initialize()); + ATH_CHECK(m_jFEXForwardJetsAlgoTool->safetyTest()); + m_jFEXForwardJetsAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); + m_jFEXForwardJetsAlgoTool->setup(m_jTowersIDs_Wide,m_jfexid,m_id); - ATH_CHECK(m_jFEXForwardJetsAlgoTool->initialize()); - ATH_CHECK(m_jFEXForwardJetsAlgoTool->safetyTest()); - m_jFEXForwardJetsAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); - m_jFEXForwardJetsAlgoTool->setup(m_jTowersIDs_Wide); + m_FCALJets = m_jFEXForwardJetsAlgoTool->calculateJetETs(); - m_FCALJets = m_jFEXForwardJetsAlgoTool->calculateJetETs(); + for(std::map<int, jFEXForwardJetsInfo>::iterator it = m_FCALJets.begin(); it!=(m_FCALJets.end()); ++it) { - for(std::map<int, jFEXForwardJetsInfo>::iterator it = m_FCALJets.begin(); it!=(m_FCALJets.end()); ++it){ - - jFEXForwardJetsInfo FCALJets = it->second; - - int iphi = FCALJets.getCentreLocalTTPhi(); - int ieta = FCALJets.getCentreLocalTTEta(); - - float centre_eta = std::round(FCALJets.getCentreTTEta()*10); - float centre_phi = std::round(FCALJets.getCentreTTPhi()*10); - int output_centre_eta = static_cast<int> (centre_eta); - int output_centre_phi = static_cast<int> (centre_phi); + jFEXForwardJetsInfo FCALJets = it->second; + int iphi = FCALJets.getCentreLocalTTPhi(); + int ieta = FCALJets.getCentreLocalTTEta(); - m_SRJetET = FCALJets.getSeedET() + FCALJets.getFirstEnergyRingET(); - m_LRJetET = m_SRJetET + FCALJets.getSecondEnergyRingET(); + float centre_eta = std::round(FCALJets.getCentreTTEta()*10); + float centre_phi = std::round(FCALJets.getCentreTTPhi()*10); + int output_centre_eta = static_cast<int> (centre_eta); + int output_centre_phi = static_cast<int> (centre_phi); - uint32_t SRFCAL_Jet_tobword = formSmallRJetTOB(iphi, ieta); - if ( SRFCAL_Jet_tobword != 0 ) m_SRJet_tobwords.push_back(SRFCAL_Jet_tobword); + m_SRJetET = FCALJets.getSeedET() + FCALJets.getFirstEnergyRingET(); + m_LRJetET = m_SRJetET + FCALJets.getSecondEnergyRingET(); + uint32_t SRFCAL_Jet_tobword = formSmallRJetTOB(iphi, ieta); + if ( SRFCAL_Jet_tobword != 0 ) m_SRJet_tobwords.push_back(SRFCAL_Jet_tobword); - uint32_t LRFCAL_Jet_tobword = formLargeRJetTOB(iphi, ieta); - if ( LRFCAL_Jet_tobword != 0 ) m_LRJet_tobwords.push_back(LRFCAL_Jet_tobword); + uint32_t LRFCAL_Jet_tobword = formLargeRJetTOB(iphi, ieta); + if ( LRFCAL_Jet_tobword != 0 ) m_LRJet_tobwords.push_back(LRFCAL_Jet_tobword); - int SRFCAL_TOB_saturated = 0; - if (m_SRJetET/200. > 0x7ff) SRFCAL_TOB_saturated = 1; + int SRFCAL_TOB_saturated = 0; + if (m_SRJetET/200. > 0x7ff) SRFCAL_TOB_saturated = 1; - unsigned int LRFCAL_TOB_saturated = 0; - if (m_LRJetET/200. > 0x1fff) LRFCAL_TOB_saturated = 1; - - jFEXOutputs->addValue_smallRJet("smallRJet_phi", output_centre_phi); - jFEXOutputs->addValue_smallRJet("smallRJet_eta", output_centre_eta); - jFEXOutputs->addValue_smallRJet("smallRJet_clusterET", m_SRJetET); - jFEXOutputs->addValue_smallRJet("smallRJet_sat", SRFCAL_TOB_saturated); - jFEXOutputs->addValue_smallRJet("smallRJet_isCentralTowerSeed",true); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_jfexID", m_jfexid); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_fpgaID", m_id); - - if(m_jfexid == 0){ - jFEXOutputs->addValue_smallRJet("smallRJetTOB_eta", 37-ieta); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_eta", 37-ieta); - } + unsigned int LRFCAL_TOB_saturated = 0; + if (m_LRJetET/200. > 0x1fff) LRFCAL_TOB_saturated = 1; + jFEXOutputs->addValue_smallRJet("smallRJet_phi", output_centre_phi); + jFEXOutputs->addValue_smallRJet("smallRJet_eta", output_centre_eta); + jFEXOutputs->addValue_smallRJet("smallRJet_clusterET", m_SRJetET); + jFEXOutputs->addValue_smallRJet("smallRJet_sat", SRFCAL_TOB_saturated); + jFEXOutputs->addValue_smallRJet("smallRJet_isCentralTowerSeed",true); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_jfexID", m_jfexid); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_fpgaID", m_id); + if(m_jfexid == 0) { + jFEXOutputs->addValue_smallRJet("smallRJetTOB_eta", 36-ieta); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_eta", 36-ieta); + } - if(m_jfexid == 5){ - jFEXOutputs->addValue_smallRJet("smallRJetTOB_eta", ieta-8); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_eta", ieta-8); - } - - if(iphi >=FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_start_phi && iphi< FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_end_phi){ - jFEXOutputs->addValue_smallRJet("smallRJetTOB_phi", iphi-8); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_phi", iphi-8); - } + if(m_jfexid == 5) { + jFEXOutputs->addValue_smallRJet("smallRJetTOB_eta", ieta-8); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_eta", ieta-8); + } - if(iphi >=FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_start_phi && iphi< FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_end_phi){ - jFEXOutputs->addValue_smallRJet("smallRJetTOB_phi", iphi-4); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_phi", iphi-4); - } + if(iphi >=FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_start_phi && iphi< FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_end_phi) { + jFEXOutputs->addValue_smallRJet("smallRJetTOB_phi", iphi-8); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_phi", iphi-8); + } - if(iphi >=FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_start_phi && iphi< FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_end_phi){ - jFEXOutputs->addValue_smallRJet("smallRJetTOB_phi", iphi-2); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_phi", iphi-2); - } + if(iphi >=FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_start_phi && iphi< FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_end_phi) { + jFEXOutputs->addValue_smallRJet("smallRJetTOB_phi", iphi-4); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_phi", iphi-4); + } - jFEXOutputs->addValue_smallRJet("smallRJetTOB_ET", m_SRJetET/200); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_sat", SRFCAL_TOB_saturated); - - jFEXOutputs->addValue_smallRJet("smallRJetTOB_word", SRFCAL_Jet_tobword); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_jfexID", m_jfexid); - jFEXOutputs->addValue_smallRJet("smallRJetTOB_fpgaID", m_id); + if(iphi >=FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_start_phi && iphi< FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_end_phi) { + jFEXOutputs->addValue_smallRJet("smallRJetTOB_phi", iphi-2); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_phi", iphi-2); + } + jFEXOutputs->addValue_smallRJet("smallRJetTOB_ET", m_SRJetET/200); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_sat", SRFCAL_TOB_saturated); - //Output Collection for Large R Jet - jFEXOutputs->addValue_largeRJet("largeRJet_ET", m_LRJetET); - jFEXOutputs->addValue_largeRJet("largeRJet_phi", output_centre_phi); - jFEXOutputs->addValue_largeRJet("largeRJet_eta", output_centre_eta); - jFEXOutputs->addValue_largeRJet("largeRJet_sat", LRFCAL_TOB_saturated); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_word", SRFCAL_Jet_tobword); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_jfexID", m_jfexid); + jFEXOutputs->addValue_smallRJet("smallRJetTOB_fpgaID", m_id); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_ET", m_LRJetET/200); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_sat",LRFCAL_TOB_saturated); + //Output Collection for Large R Jet + jFEXOutputs->addValue_largeRJet("largeRJet_ET", m_LRJetET); + jFEXOutputs->addValue_largeRJet("largeRJet_phi", output_centre_phi); + jFEXOutputs->addValue_largeRJet("largeRJet_eta", output_centre_eta); + jFEXOutputs->addValue_largeRJet("largeRJet_sat", LRFCAL_TOB_saturated); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_word", LRFCAL_Jet_tobword); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_jfexID", m_jfexid); - jFEXOutputs->addValue_largeRJet("largeRJetTOB_fpgaID", m_id); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_ET", m_LRJetET/200); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_sat",LRFCAL_TOB_saturated); - } + jFEXOutputs->addValue_largeRJet("largeRJetTOB_word", LRFCAL_Jet_tobword); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_jfexID", m_jfexid); + jFEXOutputs->addValue_largeRJet("largeRJetTOB_fpgaID", m_id); - jFEXOutputs->fill_smallRJet(); - jFEXOutputs->fill_largeRJet(); + } + jFEXOutputs->fill_smallRJet(); + jFEXOutputs->fill_largeRJet(); -} //end of if statement for checking if in central jfex modules -//******************************** TAU ********************************************** + } //end of if statement for checking if in central jfex modules + //******************************** TAU ********************************************** - memset(m_jTowersIDs, 0, sizeof(m_jTowersIDs[0][0]) * FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width); // Reseting m_jTowersIDs array with 0 + memset(m_jTowersIDs, 0, sizeof(m_jTowersIDs[0][0]) * FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width); // Reseting m_jTowersIDs array with 0 - int max_meta=16; - if(m_jfexid ==0){ - - for(int i=0;i<FEXAlgoSpaceDefs::jFEX_algoSpace_height;i++){ - for(int j=28;j<(FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width-6);j++){ //lower values of j (j<28) are the Fcals not entering in the jFEX tau range - m_jTowersIDs[i][j-28+8]=m_jTowersIDs_Wide[i][j]; // second argument in m_jTowersIDs is to center the FPGA core area in te same region as the central FPGAs - } + int max_meta=16; + if(m_jfexid ==0) { + + for(int i=0; i<FEXAlgoSpaceDefs::jFEX_algoSpace_height; i++) { + for(int j=28; j<(FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width-6); j++) { //lower values of j (j<28) are the Fcals not entering in the jFEX tau range + m_jTowersIDs[i][j-28+8]=m_jTowersIDs_Wide[i][j]; // second argument in m_jTowersIDs is to center the FPGA core area in te same region as the central FPGAs + } + } + max_meta++; // increase max of eta because te core module has one more TT to be considered } - max_meta++; // increase max of eta because te core module has one more TT to be considered - } - else if(m_jfexid ==5 ){ - - // Filling m_jTowersIDs with the m_jTowersIDs_Wide ID values up to 2.5 eta - for(int i=0;i<FEXAlgoSpaceDefs::jFEX_algoSpace_height;i++){ - for(int j=4;j<17;j++){//higher values of j (j>16) are the Fcals not entering in the jFEX tau range - m_jTowersIDs[i][j]=m_jTowersIDs_Wide[i][j]; - } + else if(m_jfexid ==5 ) { + + // Filling m_jTowersIDs with the m_jTowersIDs_Wide ID values up to 2.5 eta + for(int i=0; i<FEXAlgoSpaceDefs::jFEX_algoSpace_height; i++) { + for(int j=4; j<17; j++) { //higher values of j (j>16) are the Fcals not entering in the jFEX tau range + m_jTowersIDs[i][j]=m_jTowersIDs_Wide[i][j]; + } + } + max_meta++; // increase max of eta because te core module has one more TT to be considered } - max_meta++; // increase max of eta because te core module has one more TT to be considered - } - else{ - //For Module 1,2,3,4 (central modules) the m_jTowersIDs array is m_jTowersIDs_Thin - std::copy(&m_jTowersIDs_Thin[0][0], &m_jTowersIDs_Thin[0][0] + FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width, &m_jTowersIDs[0][0]); - } - ATH_MSG_DEBUG("============================ jFEXtauAlgo ============================"); - for(int mphi = 8; mphi < 24; mphi++) { - for(int meta = 8; meta < max_meta; meta++) { - - int TT_seed_ID[3][3]={{0}}; - int TT_searchWindow_ID[5][5]={{0}}; - int TT_First_ETring[36]={0}; - int First_ETring_it = 0; - - for(int i = -3; i< 4; i++ ) { - for(int j = -3; j< 4; j++) { - if(sqrt(pow(i,2)+pow(j,2))<3){ - TT_searchWindow_ID[i+2][j+2] = m_jTowersIDs[mphi +i][meta +j]; // Search window for the tau algo used for the LocalMaxima studies - } - - if(sqrt(pow(i,2)+pow(j,2))<2){ - TT_seed_ID[i+1][j+1] = m_jTowersIDs[mphi +i][meta +j]; // Seed 0.3x0.3 in phi-eta plane - } - else if(sqrt(pow(i,2)+pow(j,2))<4){ - TT_First_ETring[First_ETring_it]= m_jTowersIDs[mphi +i][meta +j]; // First energy ring, will be used as tau ISO - ++First_ETring_it; - - } - } - } - - ATH_CHECK( m_jFEXtauAlgoTool.retrieve()); - ATH_CHECK( m_jFEXtauAlgoTool->safetyTest()); - m_jFEXtauAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); - m_jFEXtauAlgoTool->setup(TT_searchWindow_ID,TT_seed_ID); - m_jFEXtauAlgoTool->buildSeeds(); - bool is_tau_LocalMax = m_jFEXtauAlgoTool->isSeedLocalMaxima(); - m_jFEXtauAlgoTool->setFirstEtRing(TT_First_ETring); - - jFEXOutputs->addValue_tau("tau_ET", m_jFEXtauAlgoTool->getTTowerET(m_jTowersIDs[mphi][meta])); - jFEXOutputs->addValue_tau("tau_clusterET", m_jFEXtauAlgoTool->getClusterEt()); - jFEXOutputs->addValue_tau("tau_eta",std::abs(m_jFEXtauAlgoTool->getRealEta(m_jTowersIDs[mphi][meta]))) ; - jFEXOutputs->addValue_tau("tau_phi",m_jFEXtauAlgoTool->getRealPhi(m_jTowersIDs[mphi][meta])) ; - jFEXOutputs->addValue_tau("tau_realeta",m_jFEXtauAlgoTool->getRealEta(m_jTowersIDs[mphi][meta])) ; - jFEXOutputs->addValue_tau("tau_ISO",m_jFEXtauAlgoTool->getFirstEtRing()) ; - jFEXOutputs->addValue_tau("tau_TT_ID",TT_seed_ID[1][1]) ; - jFEXOutputs->addValue_tau("tau_isLocalMax",is_tau_LocalMax) ; - jFEXOutputs->addValue_tau("tau_jFEXid",m_jfexid) ; - jFEXOutputs->addValue_tau("tau_FPGAid",m_id) ; - - uint32_t tobword = formTauTOB(mphi, meta); - if ( is_tau_LocalMax ){ - m_tau_tobwords.push_back(tobword); - } - - std::unique_ptr<jFEXtauTOB> tmp_tob = m_jFEXtauAlgoTool->getTauTOBs(mphi, meta); - // for plotting variables in TOBS- internal check: - jFEXOutputs->addValue_tau("tau_TOB_word" ,tobword); - jFEXOutputs->addValue_tau("tau_TOB_ET" ,tmp_tob->GetET()); - jFEXOutputs->addValue_tau("tau_TOB_eta",tmp_tob->GetEta()); - jFEXOutputs->addValue_tau("tau_TOB_phi",tmp_tob->GetPhi()); - jFEXOutputs->addValue_tau("tau_TOB_ISO" ,tmp_tob->GetIso()); - jFEXOutputs->addValue_tau("tau_TOB_Sat" ,tmp_tob->GetSat()); - - jFEXOutputs->fill_tau(); - + else { + //For Module 1,2,3,4 (central modules) the m_jTowersIDs array is m_jTowersIDs_Thin + std::copy(&m_jTowersIDs_Thin[0][0], &m_jTowersIDs_Thin[0][0] + FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width, &m_jTowersIDs[0][0]); } - } + ATH_MSG_DEBUG("============================ jFEXtauAlgo ============================"); + for(int mphi = 8; mphi < 24; mphi++) { + for(int meta = 8; meta < max_meta; meta++) { + + int TT_seed_ID[3][3]= {{0}}; + int TT_searchWindow_ID[5][5]= {{0}}; + int TT_First_ETring[36]= {0}; + int First_ETring_it = 0; + + for(int i = -3; i< 4; i++ ) { + for(int j = -3; j< 4; j++) { + int DeltaR = std::sqrt(std::pow(i,2)+std::pow(j,2)); + if(DeltaR<3) { + TT_searchWindow_ID[i+2][j+2] = m_jTowersIDs[mphi +i][meta +j]; // Search window for the tau algo used for the LocalMaxima studies + } + + if(DeltaR<2) { + TT_seed_ID[i+1][j+1] = m_jTowersIDs[mphi +i][meta +j]; // Seed 0.3x0.3 in phi-eta plane + } + else if(DeltaR<4) { + TT_First_ETring[First_ETring_it]= m_jTowersIDs[mphi +i][meta +j]; // First energy ring, will be used as tau ISO + ++First_ETring_it; + + } + } + } + ATH_CHECK( m_jFEXtauAlgoTool.retrieve()); + ATH_CHECK( m_jFEXtauAlgoTool->safetyTest()); + m_jFEXtauAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA); + m_jFEXtauAlgoTool->setup(TT_searchWindow_ID,TT_seed_ID); + m_jFEXtauAlgoTool->buildSeeds(); + bool is_tau_LocalMax = m_jFEXtauAlgoTool->isSeedLocalMaxima(); + m_jFEXtauAlgoTool->setFirstEtRing(TT_First_ETring); + + jFEXOutputs->addValue_tau("tau_ET", m_jFEXtauAlgoTool->getTTowerET(m_jTowersIDs[mphi][meta])); + jFEXOutputs->addValue_tau("tau_clusterET", m_jFEXtauAlgoTool->getClusterEt()); + jFEXOutputs->addValue_tau("tau_eta",std::abs(m_jFEXtauAlgoTool->getRealEta(m_jTowersIDs[mphi][meta]))) ; + jFEXOutputs->addValue_tau("tau_phi",m_jFEXtauAlgoTool->getRealPhi(m_jTowersIDs[mphi][meta])) ; + jFEXOutputs->addValue_tau("tau_realeta",m_jFEXtauAlgoTool->getRealEta(m_jTowersIDs[mphi][meta])) ; + jFEXOutputs->addValue_tau("tau_ISO",m_jFEXtauAlgoTool->getFirstEtRing()) ; + jFEXOutputs->addValue_tau("tau_TT_ID",TT_seed_ID[1][1]) ; + jFEXOutputs->addValue_tau("tau_isLocalMax",is_tau_LocalMax) ; + jFEXOutputs->addValue_tau("tau_jFEXid",m_jfexid) ; + jFEXOutputs->addValue_tau("tau_FPGAid",m_id) ; + + uint32_t tobword = formTauTOB(mphi, meta); + if ( is_tau_LocalMax ) { + m_tau_tobwords.push_back(tobword); + } - return StatusCode::SUCCESS; + std::unique_ptr<jFEXtauTOB> tmp_tob = m_jFEXtauAlgoTool->getTauTOBs(mphi, meta); + // for plotting variables in TOBS- internal check: + jFEXOutputs->addValue_tau("tau_TOB_word",tobword); + jFEXOutputs->addValue_tau("tau_TOB_ET",tmp_tob->GetET()); + jFEXOutputs->addValue_tau("tau_TOB_eta",tmp_tob->GetEta()); + jFEXOutputs->addValue_tau("tau_TOB_phi",tmp_tob->GetPhi()); + jFEXOutputs->addValue_tau("tau_TOB_ISO",tmp_tob->GetIso()); + jFEXOutputs->addValue_tau("tau_TOB_Sat",tmp_tob->GetSat()); + + jFEXOutputs->fill_tau(); + + } + } + + return StatusCode::SUCCESS; } //end of the execute function void jFEXFPGA::SetTowersAndCells_SG(int tmp_jTowersIDs_subset[][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]){ @@ -635,10 +598,12 @@ uint32_t jFEXFPGA::formSmallRJetTOB(int &iphi, int &ieta) //create basic tobword with 32 bits tobWord = tobWord + (eta<<27) + (phi << 23) + (jFEXSmallRJetTOBEt << 12) + (Res<<1) + (Sat); ATH_MSG_DEBUG("tobword smallRJet with et, phi, eta, res and sat : " << std::bitset<32>(tobWord) ); - // Retrieve the L1 menu configuration + //Retrieve the L1 menu configuration SG::ReadHandle<TrigConf::L1Menu> l1Menu (m_l1MenuKey/*, ctx*/); auto & thr_jJ = l1Menu->thrExtraInfo().jJ(); - unsigned int minEtThreshold = thr_jJ.ptMinToTopoSmallMeV()/jFEXETResolution; + unsigned int minEtThreshold = thr_jJ.ptMinToTopoMeV()/jFEXETResolution; + + //unsigned int minEtThreshold = 60; if (jFEXSmallRJetTOBEt < minEtThreshold) return 0; else return tobWord; } @@ -689,6 +654,7 @@ uint32_t jFEXFPGA::formLargeRJetTOB(int &iphi, int &ieta) } } + jFEXLargeRJetTOBEt = et/jFEXETResolution; if (jFEXLargeRJetTOBEt > 0x1fff){ jFEXLargeRJetTOBEt = 0x1fff; //0x1fff is 13 bits @@ -701,8 +667,9 @@ uint32_t jFEXFPGA::formLargeRJetTOB(int &iphi, int &ieta) // Retrieve the L1 menu configuration SG::ReadHandle<TrigConf::L1Menu> l1Menu (m_l1MenuKey/*, ctx*/); auto & thr_jJ = l1Menu->thrExtraInfo().jJ(); - unsigned int minEtThreshold = thr_jJ.ptMinToTopoLargeMeV()/jFEXETResolution; - + unsigned int minEtThreshold = thr_jJ.ptMinToTopoMeV()/jFEXETResolution; + + //unsigned int minEtThreshold = 60; if (jFEXLargeRJetTOBEt < minEtThreshold) return 0; else return tobWord; } @@ -732,16 +699,11 @@ uint32_t jFEXFPGA::formTauTOB(int & iphi, int &ieta ) ATH_MSG_DEBUG("tobword tau with eta, phi, et, iso and sat : " << std::bitset<32>(tobWord) ); - //arbitary et threshold to not overflow the TOBs - - /***************** NEEDS TO BE IMPLEMENTED IN THE FUTURE (JIRA TICKED OPENED) *****************/ // Retrieve the L1 menu configuration - //SG::ReadHandle<TrigConf::L1Menu> l1Menu (m_l1MenuKey/*, ctx*/); - //auto & thr_jTAU = l1Menu->thrExtraInfo().jTAU(); - //unsigned int minEtThreshold = thr_jTAU.ptMinToTopo()/jFEXETResolution; - - //arbitary et threshold to not overflow the TOBs - unsigned int minEtThreshold = 100; + SG::ReadHandle<TrigConf::L1Menu> l1Menu (m_l1MenuKey/*, ctx*/); + auto & thr_jTAU = l1Menu->thrExtraInfo().jTAU(); + unsigned int minEtThreshold = thr_jTAU.ptMinToTopoMeV()/jFEXETResolution; + if (et < minEtThreshold) return 0; else return tobWord; diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardJetsAlgo.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardJetsAlgo.cxx index 0b356848cc8ce3cecc475f4fd86e9e992049af59..99f02273652c689de9817bd217eed1d9b9c81157 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardJetsAlgo.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardJetsAlgo.cxx @@ -43,52 +43,62 @@ StatusCode LVL1::jFEXForwardJetsAlgo::initialize() } //calls container for TT -StatusCode LVL1::jFEXForwardJetsAlgo::safetyTest(){ +StatusCode LVL1::jFEXForwardJetsAlgo::safetyTest() { - SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey); + SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey); - if(! jk_jFEXForwardJetsAlgo_jTowerContainer.isValid()){ - ATH_MSG_FATAL("Could not retrieve jk_jFEXForwardJetsAlgo_jTowerContainer " << m_jFEXForwardJetsAlgo_jTowerContainerKey.key()); + if(! jk_jFEXForwardJetsAlgo_jTowerContainer.isValid()) { + ATH_MSG_FATAL("Could not retrieve jk_jFEXForwardJetsAlgo_jTowerContainer " << m_jFEXForwardJetsAlgo_jTowerContainerKey.key()); - return StatusCode::FAILURE; - } - - return StatusCode::SUCCESS; + return StatusCode::FAILURE; + } + + return StatusCode::SUCCESS; } -void LVL1::jFEXForwardJetsAlgo::setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) { - std::copy(&inputTable[0][0], &inputTable[0][0] + (FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width), &m_jFEXalgoTowerID[0][0]); +void LVL1::jFEXForwardJetsAlgo::setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex, int fpga) { + std::copy(&inputTable[0][0], &inputTable[0][0] + (FEXAlgoSpaceDefs::jFEX_algoSpace_height*FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width), &m_jFEXalgoTowerID[0][0]); + m_jfex=jfex; + m_fpga=fpga; } //Gets geometric global centre Phi coord of the TT float LVL1::jFEXForwardJetsAlgo::globalPhi(int nphi, int neta) { + int TTID = m_jFEXalgoTowerID[nphi][neta]; + if(TTID == 0) { + return 999; + } - SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); - float phi = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(m_jFEXalgoTowerID[nphi][neta])->centrePhi(); - return phi; + SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); + float phi = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(TTID)->centrePhi(); + return phi; } //Gets geometric global centre Eta coord of the TT float LVL1::jFEXForwardJetsAlgo::globalEta(int nphi, int neta) { + int TTID = m_jFEXalgoTowerID[nphi][neta]; + if(TTID == 0) { + return 999; + } - SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); - float eta = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(m_jFEXalgoTowerID[nphi][neta])->centreEta(); - return eta; + SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); + float eta = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(TTID)->centreEta(); + return eta; } //Gets Phi of the TT unsigned int LVL1::jFEXForwardJetsAlgo::localPhi(int nphi, int neta) { - SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); - unsigned int phi = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(m_jFEXalgoTowerID[nphi][neta])->phi(); - return phi; + SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); + unsigned int phi = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(m_jFEXalgoTowerID[nphi][neta])->phi(); + return phi; } //Gets Eta of the TT unsigned int LVL1::jFEXForwardJetsAlgo::localEta(int nphi, int neta) { - SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); - unsigned int eta = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(m_jFEXalgoTowerID[nphi][neta])->eta(); - return eta; + SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); + unsigned int eta = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(m_jFEXalgoTowerID[nphi][neta])->eta(); + return eta; } //Return ET of TT. Should be FCAL 0 + 1 + 2 //maybe check this @@ -96,213 +106,278 @@ unsigned int LVL1::jFEXForwardJetsAlgo::getTTowerET(int nphi, int neta ) { unsigned int TTID = m_jFEXalgoTowerID[nphi][neta]; if(TTID == 0) { return 0; - } - + } + if(m_map_Etvalues.find(TTID) != m_map_Etvalues.end()) { return m_map_Etvalues[TTID][0]; } - + //we shouldn't arrive here - return 0; + return 0; } -std::map<int, jFEXForwardJetsInfo> LVL1::jFEXForwardJetsAlgo::FcalJetsTowerIDLists(){ - - std::map<int, jFEXForwardJetsInfo> FCALJetTowerIDLists; - static constexpr float TT_Size = M_PI/32; - - //This flag determines if the TT ID which are in the first and second energy rings are stored - //in the jFEXForwardJetsInfo class. It is set to false to reduce quantity data stored in class - m_storeEnergyRingTTIDs = false; - - std::vector<int> lower_centre_neta; - std::vector<int> upper_centre_neta; - m_lowerEM_eta = 0; - m_upperEM_eta = 0; - - //STEP 1: check if we are in module 0 or 5 and assign corrrect eta FEXAlgoSpace parameters - if(m_jFEXalgoTowerID[31][0] == 0){ - //Module 0 - lower_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_start_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_start_eta}); - upper_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_end_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta,FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta }); - m_lowerEM_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_C_lowerEM_eta; - m_upperEM_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_C_upperEM_eta; - } - - else{ - //Module 5 - lower_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMB_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta}); - upper_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_end_eta}); - - m_lowerEM_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_A_lowerEM_eta; - m_upperEM_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_A_upperEM_eta; +std::map<int, jFEXForwardJetsInfo> LVL1::jFEXForwardJetsAlgo::FcalJetsTowerIDLists() { - } - - //STEP 2: define phi FEXAlgoSpace parameters - std::vector<int> lower_centre_nphi{FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_start_phi, FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_start_phi, FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_start_phi}; - std::vector<int> upper_centre_nphi{FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_end_phi, FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_end_phi, FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_end_phi}; + std::map<int, jFEXForwardJetsInfo> FCALJetTowerIDLists; - //STEP 3: loop over different EM/FCAL0 eta phi core fpga regions. These are potential central trigger towers for jets - for(int myCounter = 0; myCounter<3; myCounter++){ - for(int centre_nphi = lower_centre_nphi[myCounter]; centre_nphi < upper_centre_nphi[myCounter]; centre_nphi++) { - for(int centre_neta = lower_centre_neta[myCounter]; centre_neta < upper_centre_neta[myCounter]; centre_neta++) { + std::vector<int> lower_centre_neta; + std::vector<int> upper_centre_neta; + m_lowerEM_eta = 0; + m_upperEM_eta = 0; - //STEP 4: define TTID which will be the key for class in map - int myTTIDKey = m_jFEXalgoTowerID[centre_nphi][centre_neta]; + //STEP 1: check if we are in module 0 or 5 and assign corrrect eta FEXAlgoSpace parameters + if(m_jfex == 0) { + //Module 0 + lower_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_start_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_start_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_start_eta}); + upper_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMB_end_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_C_EMIE_end_eta,FEXAlgoSpaceDefs::jFEX_algoSpace_C_FCAL_end_eta }); + m_lowerEM_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_C_lowerEM_eta; + m_upperEM_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_C_upperEM_eta; + } + else { + //Module 5 + lower_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMB_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta}); + upper_centre_neta.assign({FEXAlgoSpaceDefs::jFEX_algoSpace_A_EMIE_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_start_eta, FEXAlgoSpaceDefs::jFEX_algoSpace_A_FCAL_end_eta}); - //STEP 5: ignore when tower ID is zero. - if(myTTIDKey == 0){continue;} + m_lowerEM_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_A_lowerEM_eta; + m_upperEM_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_A_upperEM_eta; - //STEP 6: define class - jFEXForwardJetsInfo TriggerTowerInformation; + } - //STEP 7: fill local eta phi coords - TriggerTowerInformation.setCentreLocalTTPhi(centre_nphi); - TriggerTowerInformation.setCentreLocalTTEta(centre_neta); - - float centreTT_phi = globalPhi(centre_nphi, centre_neta); - float centreTT_eta = globalEta(centre_nphi, centre_neta); - TriggerTowerInformation.setCentreTTPhi(centreTT_phi); - TriggerTowerInformation.setCentreTTEta(centreTT_eta); - //TriggerTowerInformation.includeTTinSeed(m_jFEXalgoTowerID[centre_nphi][centre_neta]); - TriggerTowerInformation.addToSeedET(getTTowerET(centreTT_phi, centreTT_eta)); - //STEP 8: loop over all FCAL0 TTIDs and fill TT IDs for seed and calculate seed energy - for(int nphi = 0; nphi < 32; nphi++) { - for(int neta = m_lowerEM_eta; neta < m_upperEM_eta; neta++) { - if(((nphi == centre_nphi) && (neta == centre_neta)) ||(m_jFEXalgoTowerID[nphi][neta])==0 ){continue;} - float TT_phi = globalPhi(nphi, neta); - float TT_eta = globalEta(nphi, neta); - float R = sqrt(pow((centreTT_eta - TT_eta),2) + pow((centreTT_phi - TT_phi),2)); - - if((R > 0) && (R <( 2 * TT_Size))){ - //STEP 9: fill TTID in seed - TriggerTowerInformation.includeTTinSeed(m_jFEXalgoTowerID[nphi][neta]); - //STEP 10: add ET value to seed - TriggerTowerInformation.addToSeedET(getTTowerET(nphi, neta)); - } - } - } - //STEP 11: Store filled class into map, with central TT ID as Key - FCALJetTowerIDLists[myTTIDKey] = TriggerTowerInformation; - }//end of centre_nphi loop - }//end of centre_mphi loop - }//end of myCounter loop - return FCALJetTowerIDLists; + //STEP 2: define phi FEXAlgoSpace parameters + std::vector<int> lower_centre_nphi{FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_start_phi, FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_start_phi, FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_start_phi}; + std::vector<int> upper_centre_nphi{FEXAlgoSpaceDefs::jFEX_algoSpace_EMB_end_phi, FEXAlgoSpaceDefs::jFEX_algoSpace_EMIE_end_phi, FEXAlgoSpaceDefs::jFEX_algoSpace_FCAL_end_phi}; + + //STEP 3: loop over different EM/FCAL0 eta phi core fpga regions. These are potential central trigger towers for jets + for(int myCounter = 0; myCounter<3; myCounter++) { + for(int centre_nphi = lower_centre_nphi[myCounter]; centre_nphi < upper_centre_nphi[myCounter]; centre_nphi++) { + for(int centre_neta = lower_centre_neta[myCounter]; centre_neta < upper_centre_neta[myCounter]; centre_neta++) { + + //STEP 4: define TTID which will be the key for class in map + int myTTIDKey = m_jFEXalgoTowerID[centre_nphi][centre_neta]; + + //STEP 5: ignore when tower ID is zero. Should not happend though + if(myTTIDKey == 0) { + continue; + } + + //STEP 6: define class + jFEXForwardJetsInfo TriggerTowerInformation; + + //STEP 7: fill local eta phi coords + TriggerTowerInformation.setCentreLocalTTPhi(centre_nphi); + TriggerTowerInformation.setCentreLocalTTEta(centre_neta); + + float centreTT_phi = globalPhi(centre_nphi, centre_neta); + float centreTT_eta = globalEta(centre_nphi, centre_neta); + TriggerTowerInformation.setCentreTTPhi(centreTT_phi); + TriggerTowerInformation.setCentreTTEta(centreTT_eta); + TriggerTowerInformation.includeTTinSeed(m_jFEXalgoTowerID[centre_nphi][centre_neta]); + TriggerTowerInformation.addToSeedET(getTTowerET(centreTT_phi, centreTT_eta)); + TriggerTowerInformation.includeTTinSearchWindow(m_jFEXalgoTowerID[centre_nphi][centre_neta]); + TriggerTowerInformation.addToSearchWindowET(getTTowerET(centreTT_phi, centreTT_eta)); + + //STEP 8: loop over all FCAL0 TTIDs and fill TT IDs for seed and calculate seed energy + for(int nphi = 0; nphi < FEXAlgoSpaceDefs::jFEX_algoSpace_height; nphi++) { + for(int neta = m_lowerEM_eta; neta < m_upperEM_eta; neta++) { + + if(m_jFEXalgoTowerID[centre_nphi][centre_neta]==m_jFEXalgoTowerID[nphi][neta] || m_jFEXalgoTowerID[nphi][neta]==0 ) { + continue; + } + float TT_phi = globalPhi(nphi, neta); + if(m_fpga==0 || m_fpga==3) { //This corrects the overlap of FPGA 0 with FPGA 3 and viceversa + if(m_fpga==0) { + if(TT_phi>M_PI){ + TT_phi = TT_phi-6.4; + } + } + else { + if(TT_phi<M_PI){ + TT_phi = TT_phi+6.4; + } + } + } + float TT_eta = globalEta(nphi, neta); + int DeltaR = std::round(std::sqrt(std::pow((centreTT_eta - TT_eta),2) + std::pow((centreTT_phi - TT_phi),2))*100); // cast float to int to avoid misbehaviours + if(DeltaR < 20 ) { + //STEP 9.0: fill TTID in seed + TriggerTowerInformation.includeTTinSeed(m_jFEXalgoTowerID[nphi][neta]); + //STEP 10.0: add ET value to seed + TriggerTowerInformation.addToSeedET(getTTowerET(nphi, neta)); + } + else if(DeltaR < 40 ) { + TriggerTowerInformation.addToFirstEnergyRingET(getTTowerET(nphi, neta)); + if(m_storeEnergyRingTTIDs) { + TriggerTowerInformation.includeTTIDinFirstER(m_jFEXalgoTowerID[nphi][neta]); + } + } + else if(DeltaR < 80){ + TriggerTowerInformation.addToSecondEnergyRingET(getTTowerET(nphi, neta)); + if(m_storeEnergyRingTTIDs) { + TriggerTowerInformation.includeTTIDinSecondER(m_jFEXalgoTowerID[nphi][neta]); + } + } + + + if(DeltaR < 30 ) { + //STEP 9.1: fill TTID in search window + TriggerTowerInformation.includeTTinSearchWindow(m_jFEXalgoTowerID[nphi][neta]); + //STEP 10.1: add ET value to seed + TriggerTowerInformation.addToSearchWindowET(getTTowerET(nphi, neta)); + } + } + } + //STEP 11: Store filled class into map, with central TT ID as Key + FCALJetTowerIDLists[myTTIDKey] = TriggerTowerInformation; + }//end of centre_neta loop + }//end of centre_nphi loop + }//end of myCounter loop + return FCALJetTowerIDLists; } -std::map<int, jFEXForwardJetsInfo> LVL1::jFEXForwardJetsAlgo::isSeedLocalMaxima(){ - std::vector<int> localMaximas; - std::map<int, jFEXForwardJetsInfo> localMaximaLists = FcalJetsTowerIDLists(); - - size_t isLocalMaxima = 0; - int totalLM = 0; - for(std::map<int, jFEXForwardJetsInfo>::iterator it = localMaximaLists.begin(); it != (localMaximaLists.end()); ++it) - { - isLocalMaxima = 0; - int myTTKey = it->first; +std::map<int, jFEXForwardJetsInfo> LVL1::jFEXForwardJetsAlgo::isSeedLocalMaxima() { + //std::vector<int> localMaximas; + std::map<int, jFEXForwardJetsInfo> localMaximaCandidates = FcalJetsTowerIDLists(); + std::map<int, jFEXForwardJetsInfo> localMaximaList ; + SG::ReadHandle<jTowerContainer> my_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); - jFEXForwardJetsInfo myFCALJetInfoClass = it ->second; - //Local maxima check takes place here - SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey/*,ctx*/); - float centre_phi = myFCALJetInfoClass.getCentreTTPhi(); - float centre_eta = myFCALJetInfoClass.getCentreTTEta(); - int centre_energy = myFCALJetInfoClass.getSeedET(); - - std::vector<int> TTinSeed = myFCALJetInfoClass.getTTinSeed(); - for (std::size_t i = 0, max = TTinSeed.size(); i != max; ++i){ - float seed_phi = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(TTinSeed[i])->centrePhi(); - float seed_eta = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(TTinSeed[i])->centreEta(); - - float delta_phi = seed_phi - centre_phi; - float delta_eta = seed_eta - centre_eta; - - static constexpr float TT_Size = M_PI/32; - int seed_energy = 0; - //here is where the extra values are being created. - if(localMaximaLists.count(TTinSeed[i])==1 ){//&& (localMaximaLists[TTinSeed[i]].getSeedET()==0)) { - seed_energy = localMaximaLists[TTinSeed[i]].getSeedET(); - } - - else if(localMaximaLists.count(TTinSeed[i])==0){ - for(int nphi = 0; nphi < 32; nphi++) { - for(int neta = m_lowerEM_eta; neta < m_upperEM_eta; neta++) { - SG::ReadHandle<jTowerContainer> jk_jFEXForwardJetsAlgo_jTowerContainer(m_jFEXForwardJetsAlgo_jTowerContainerKey); - float centre_seed_eta = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(TTinSeed[i])->centreEta(); - float centre_seed_phi = jk_jFEXForwardJetsAlgo_jTowerContainer->findTower(TTinSeed[i])->centrePhi(); - - seed_energy += getTTowerET(centre_seed_phi, centre_seed_phi); - - if((TTinSeed[i] == m_jFEXalgoTowerID[nphi][neta]) ||(m_jFEXalgoTowerID[nphi][neta])==0 ){continue;} - float TT_phi = globalPhi(nphi, neta); - float TT_eta = globalEta(nphi, neta); - float R = sqrt(pow((centre_seed_eta - TT_eta),2) + pow((centre_seed_phi - TT_phi),2)); - if((R > 0) && (R <( 2 * TT_Size))){ - seed_energy += getTTowerET(nphi, neta); + size_t isLocalMaxima = 0; + + for (std::pair<int, jFEXForwardJetsInfo> element : localMaximaCandidates){ + + int myTTKey = element.first; + jFEXForwardJetsInfo myFCALJetInfoClass = element.second; + + //Local maxima check takes place here + isLocalMaxima = 0; + float centre_phi = myFCALJetInfoClass.getCentreTTPhi(); + float centre_eta = myFCALJetInfoClass.getCentreTTEta(); + int centre_energy = myFCALJetInfoClass.getSeedET(); + + const std::vector<int> TTinSW = myFCALJetInfoClass.getTTinSearchWindow(); + for (const int iTTinSW : TTinSW) { + if(iTTinSW == myTTKey) continue; + const LVL1::jTower* seed_tower = my_jTowerContainer->findTower(iTTinSW); + float seed_phi = seed_tower->centrePhi(); + float seed_eta = seed_tower->centreEta(); + + int delta_phi = std::round((seed_phi - centre_phi)*100); + int delta_eta = std::round((seed_eta - centre_eta)*100); + + int seed_energy = 0; + + //get the seed Et for iTTinSW, and check if it is a Local Maxima + if(localMaximaCandidates.count(iTTinSW)==1 ){ + seed_energy = localMaximaCandidates[iTTinSW].getSeedET(); + } + else{ + for(int nphi = 0; nphi < FEXAlgoSpaceDefs::jFEX_algoSpace_height; nphi++) { + for(int neta = m_lowerEM_eta; neta < m_upperEM_eta; neta++) { + + if(m_jFEXalgoTowerID[nphi][neta]==0 ) { + continue; + } + float TT_phi = globalPhi(nphi, neta); + if(m_fpga==0 || m_fpga==3) { //This corrects the overlap of FPGA 0 with FPGA 3 and viceversa + if(m_fpga==0) { + if(TT_phi>M_PI){ + TT_phi = TT_phi-6.4; + } + } + else { + if(TT_phi<M_PI){ + TT_phi = TT_phi+6.4; + } + } + } + float TT_eta = globalEta(nphi, neta); + int DeltaR = std::round(std::sqrt(std::pow((seed_eta - TT_eta),2) + std::pow((seed_phi - TT_phi),2))*100); // cast float to int to avoid misbehaviours + if(DeltaR < 20 ) { + seed_energy+=getTTowerET(nphi, neta); + } + } + } + } + + if( (delta_eta + delta_phi) < 0 || ((delta_eta + delta_phi) == 0 && delta_eta < 0) ) { + if(centre_energy >= seed_energy) { + isLocalMaxima++; + } + } + else { + if(centre_energy > seed_energy) { + isLocalMaxima++; + } } - } } - } - if( ((delta_eta + delta_phi) < 0) || ((delta_eta + delta_phi == 0) && (delta_eta < 0)) ) - { - if(centre_energy >= seed_energy){isLocalMaxima++;} - } - else - { - if(centre_energy > seed_energy){isLocalMaxima++;} - } - } - //if it is a local maxima, here we save the TT ID - if((isLocalMaxima == TTinSeed.size()) &&(isLocalMaxima !=0)){localMaximas.push_back(myTTKey); totalLM++;} - } - - //now with a list of localmaxima centre TT IDs, we can remove all the other not LM keys and jfexforward jet classes from the map - for(std::map<int, jFEXForwardJetsInfo>::iterator it = localMaximaLists.begin(); it !=localMaximaLists.end(); ++it) - { - std::vector<int>::iterator itr; - itr = std::find(localMaximas.begin(), localMaximas.end(), it->first); - if(itr !=localMaximas.end()) - {continue;} - else{ - localMaximaLists.erase(it->first); + //if it is a local maxima, here we save the TT ID + if((isLocalMaxima == TTinSW.size()-1) && (isLocalMaxima !=0)) { + localMaximaList[myTTKey] = myFCALJetInfoClass; + } } - } - return localMaximaLists; + return localMaximaList; } -std::map<int, jFEXForwardJetsInfo> LVL1::jFEXForwardJetsAlgo::calculateJetETs(){ - std::map<int, jFEXForwardJetsInfo> localMaximas = isSeedLocalMaxima(); - static constexpr float TT_Size = M_PI/32; - //here we loop over all trigger towers, fcal 0 1 2 and calculate energy of TT which lays in the 0.4 - //and 0.8 radius to be stored. - for(std::map<int, jFEXForwardJetsInfo>::iterator it = localMaximas.begin(); it !=localMaximas.end(); ++it){ - int key = it->first; - float centreTT_phi = localMaximas[key].getCentreTTPhi(); - float centreTT_eta = localMaximas[key].getCentreTTEta(); - for(int nphi = 0; nphi < FEXAlgoSpaceDefs::jFEX_algoSpace_height; nphi++) { - for(int neta = 0; neta < FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width; neta++) { - - if (m_jFEXalgoTowerID[nphi][neta] == it->first) {continue;} - float TT_phi = globalPhi(nphi, neta); - float TT_eta = globalEta(nphi, neta); - float R = sqrt(pow((centreTT_eta - TT_eta),2) + pow((centreTT_phi - TT_phi),2)); - - if((R> (2 * TT_Size)) && (R< (4 * TT_Size))){ - localMaximas[it->first].addToFirstEnergyRingET(getTTowerET(nphi, neta)); - if(m_storeEnergyRingTTIDs){localMaximas[it->first].includeTTIDinFirstER(m_jFEXalgoTowerID[nphi][neta]);} - } - - if((R> (4 * TT_Size)) && (R< (8 * TT_Size))){ - localMaximas[it->first].addToSecondEnergyRingET(getTTowerET(nphi, neta)); - if(m_storeEnergyRingTTIDs){localMaximas[it->first].includeTTIDinSecondER(m_jFEXalgoTowerID[nphi][neta]);} + +std::map<int, jFEXForwardJetsInfo> LVL1::jFEXForwardJetsAlgo::calculateJetETs() { + + // setting the lower/upper eta range for the FCAL 2 and 3 since they are not added in the seed information yet + int lowerFCAL_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_C_lowerFCAL_eta; + int upperFCAL_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_C_upperFCAL_eta; + if(m_jfex == 5) { + //Module 5 + lowerFCAL_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_A_lowerFCAL_eta; + upperFCAL_eta = FEXAlgoSpaceDefs::jFEX_algoSpace_A_upperFCAL_eta; + } + // Adding the FCAL 2 and 3 TT in the seed, 1st and 2nd energy rings + std::map<int, jFEXForwardJetsInfo> localMaximas = isSeedLocalMaxima(); + for(std::pair<int, jFEXForwardJetsInfo> element : localMaximas) { + jFEXForwardJetsInfo myFCALJetInfoClass = element.second; + + float centreTT_phi = myFCALJetInfoClass.getCentreTTPhi(); + float centreTT_eta = myFCALJetInfoClass.getCentreTTEta(); + for(int nphi = 0; nphi < 8; nphi++) { + for(int neta = lowerFCAL_eta; neta < upperFCAL_eta; neta++) { + + float TT_phi = globalPhi(nphi, neta); + float TT_eta = globalEta(nphi, neta); + + if(m_fpga==0 || m_fpga==3) { //This corrects the overlap of FPGA 0 with FPGA 3 and viceversa + if(m_fpga==0) { + if(TT_phi>M_PI) { + TT_phi = TT_phi-6.4; + } + } + else { + if(TT_phi<M_PI) { + TT_phi = TT_phi+6.4; + } + } + } + int DeltaR = std::round(std::sqrt(std::pow((centreTT_eta - TT_eta),2) + std::pow((centreTT_phi - TT_phi),2))*100); // cast float to int to avoid misbehaviours + if(DeltaR < 20 ) { + myFCALJetInfoClass.addToSeedET(getTTowerET(nphi, neta)); + myFCALJetInfoClass.includeTTinSeed(m_jFEXalgoTowerID[nphi][neta]); + } + else if(DeltaR < 40 ) { + myFCALJetInfoClass.addToFirstEnergyRingET(getTTowerET(nphi, neta)); + if(m_storeEnergyRingTTIDs) { + myFCALJetInfoClass.includeTTIDinFirstER(m_jFEXalgoTowerID[nphi][neta]); + } + } + else if(DeltaR < 80) { + myFCALJetInfoClass.addToSecondEnergyRingET(getTTowerET(nphi, neta)); + if(m_storeEnergyRingTTIDs) { + myFCALJetInfoClass.includeTTIDinSecondER(m_jFEXalgoTowerID[nphi][neta]); + } + } + } } - - } + } - } - return localMaximas; + //Returning the complite information + return localMaximas; } diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardJetsInfo.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardJetsInfo.cxx index a0015c87b1b6a32fb67aff95bae1c579ad89ae64..62aa87ac80b03f61770e417c9a1737cc3f6ae349 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardJetsInfo.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardJetsInfo.cxx @@ -99,7 +99,6 @@ std::vector<int> LVL1::jFEXForwardJetsInfo::getTTIDinFirstER() return m_firstEnergyRing_TTIDs; } - void LVL1::jFEXForwardJetsInfo::includeTTIDinSecondER(int secondER_TTID) { m_secondEnergyRing_TTIDs.push_back(secondER_TTID); @@ -119,4 +118,19 @@ int LVL1::jFEXForwardJetsInfo::getSecondEnergyRingET() return m_secondEnergyRing_ET; } +void LVL1::jFEXForwardJetsInfo::includeTTinSearchWindow(int TT_ID){ + m_TTsInSearchWindow.push_back(TT_ID); +} + +std::vector<int> LVL1::jFEXForwardJetsInfo::getTTinSearchWindow(){ + return m_TTsInSearchWindow; +} + +void LVL1::jFEXForwardJetsInfo::addToSearchWindowET(int et){ + m_SearchWindow_ET += et; +} + +int LVL1::jFEXForwardJetsInfo::getSearchWindowET(){ + return m_SearchWindow_ET; +} diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXLargeRJetAlgo.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXLargeRJetAlgo.cxx index 6523ee0b475757658137539d0b7bb963711b7109..145498a7b05afcdcd2fd14bc29c3256f862397ca 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXLargeRJetAlgo.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXLargeRJetAlgo.cxx @@ -73,13 +73,13 @@ unsigned int LVL1::jFEXLargeRJetAlgo::getLargeClusterET(unsigned int smallCluste return largeClusterET; } -std::unique_ptr<jFEXLargeRJetTOB> LVL1::jFEXLargeRJetAlgo::getLargeRJetTOBs(){ +std::unique_ptr<jFEXLargeRJetTOB> LVL1::jFEXLargeRJetAlgo::getLargeRJetTOBs(int smallClusterET,int TTID){ std::unique_ptr<jFEXLargeRJetTOB> tob = std::make_unique<jFEXLargeRJetTOB>(); - unsigned int et = getLargeClusterET(m_jFEXSmallRJetAlgoTool->getSmallClusterET(),getRingET()); + unsigned int et = getLargeClusterET(smallClusterET,getRingET()); tob->setET(et); - tob->setPhi(m_jFEXSmallRJetAlgoTool->getRealPhi(m_jFEXSmallRJetAlgoTool->getTTIDcentre())/10.); - tob->setEta(m_jFEXSmallRJetAlgoTool->getRealEta(m_jFEXSmallRJetAlgoTool->getTTIDcentre())/10.); + tob->setPhi(m_jFEXSmallRJetAlgoTool->getRealPhi(TTID)/10.); + tob->setEta(m_jFEXSmallRJetAlgoTool->getRealEta(TTID)/10.); tob->setRes(0); tob->setSat(0); diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSmallRJetAlgo.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSmallRJetAlgo.cxx index e23fe643b8c48e72088d96be9fe3730a9d468cae..bed53bb829871206549b28ea045c04f7c7b00d0a 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSmallRJetAlgo.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSmallRJetAlgo.cxx @@ -114,13 +114,15 @@ void LVL1::jFEXSmallRJetAlgo::buildSeeds() for(int meta = 1; meta< 6; meta++) { int et_tmp = 0; int seedTotalET = 0; - for(int ieta = -1; ieta < 2; ieta++) { - for(int iphi = -1; iphi < 2; iphi++) { - et_tmp = getTTowerET(m_jFEXalgoTowerID[meta + ieta][mphi + iphi]); + for(int iphi = -1; iphi < 2; iphi++) { + for(int ieta = -1; ieta < 2; ieta++) { + //for that TT, build the seed + //here we sum TT ET to calculate seed + et_tmp = getTTowerET(m_jFEXalgoTowerID[mphi + iphi][meta + ieta]); seedTotalET += et_tmp; } } - m_jFEXalgoSearchWindowSeedET[meta -1][mphi -1] = seedTotalET; + m_jFEXalgoSearchWindowSeedET[mphi -1][meta -1] = seedTotalET; } } @@ -133,41 +135,43 @@ void LVL1::jFEXSmallRJetAlgo::buildSeeds() //check if central TT is a local maxima -bool LVL1::jFEXSmallRJetAlgo::isSeedLocalMaxima() -{ +bool LVL1::jFEXSmallRJetAlgo::isSeedLocalMaxima() { + + if(m_seedSet == false) { ATH_MSG_DEBUG("Local Maxima not checked due to seed not calculated."); } - if(m_seedSet == true) { - - //here put the 24 conditions to determine if the [2][2] TT seed is a local maxima. + else { + //here put the 24 conditions to determine if the TT seed is a local maxima. int central_seed = m_jFEXalgoSearchWindowSeedET[2][2]; - for (int ieta = 0; ieta < 5; ieta++) { - for (int iphi = 0; iphi < 5; iphi++) { + for (int iphi = 0; iphi < 5; iphi++) { + for (int ieta = 0; ieta < 5; ieta++) { //avoid comparing central seed to itself - if ((ieta == 2) && (iphi == 2)) { + if ((ieta == 2) && (iphi == 2)) { continue; } //strictly less than central if( (iphi >= ieta) && !(ieta == 3 && iphi == 3) && !(ieta == 4 && iphi == 4) ) { - if(central_seed<m_jFEXalgoSearchWindowSeedET[ieta][iphi]) { + if(central_seed<m_jFEXalgoSearchWindowSeedET[iphi][ieta]) { return false; } } //less than or equal to central if((ieta > iphi) || (ieta == 3 && iphi == 3) || (ieta == 4 && iphi == 4)) { - if(central_seed<= m_jFEXalgoSearchWindowSeedET[ieta][iphi]) { + if(central_seed<= m_jFEXalgoSearchWindowSeedET[iphi][ieta]) { return false; - } - } + } + } } - } + } } - + return true; } + + bool LVL1::jFEXSmallRJetAlgo::checkDisplacedLM() { return m_LMDisplaced; @@ -175,31 +179,22 @@ bool LVL1::jFEXSmallRJetAlgo::checkDisplacedLM() //in this clustering func, the central TT in jet is the parameters -unsigned int LVL1::jFEXSmallRJetAlgo::getSmallClusterET(){ - - - //first summing search window (25 TTs) - unsigned int searchWindowET = 0; - for(int neta = 0; neta< 7; neta++){ - for(int nphi = 0; nphi< 7; nphi++){ - searchWindowET += getTTowerET(m_jFEXalgoTowerID[neta][nphi]); +unsigned int LVL1::jFEXSmallRJetAlgo::getSmallClusterET() { + + int SRJetClusterET = 0; + for(int nphi = -3; nphi< 4; nphi++) { + for(int neta = -3; neta< 4; neta++) { + + int DeltaRSquared = std::pow(nphi,2)+std::pow(neta,2); + if(DeltaRSquared < 16) { + SRJetClusterET += getTTowerET(m_jFEXalgoTowerID[3+nphi][3+neta]); + } + } } - } - - //corners removed in 7x7 window to obtain SmallRJetCluser ET; - int cornersET = 0; - - cornersET += getTTowerET(m_jFEXalgoTowerID[0][0]); - cornersET += getTTowerET(m_jFEXalgoTowerID[6][6]); - cornersET += getTTowerET(m_jFEXalgoTowerID[0][6]); - cornersET += getTTowerET(m_jFEXalgoTowerID[6][0]); - - //SR Jet Energy cluster - int SRJetClusterET = searchWindowET + cornersET; - - return SRJetClusterET; + return SRJetClusterET; } + unsigned int LVL1::jFEXSmallRJetAlgo::getSmallETRing(){ int SmallETRing = getSmallClusterET() - m_jFEXalgoSearchWindowSeedET[3][3]; return SmallETRing; diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx index 4495a6b9d9b0ad5dd345ce5a2ddb4fc34c244fd2..72268f2f4883911c176d6854ddccd0169c628738 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx @@ -254,13 +254,15 @@ namespace LVL1 { } } - ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); - for (int thisRow=rows-1; thisRow>=0; thisRow--) { + if (msgLvl(MSG::DEBUG)) { + ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); + for (int thisRow=rows-1; thisRow>=0; thisRow--) { for (int thisCol=0; thisCol<cols; thisCol++) { int tmptowerid = tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol]; if(tmptowerid == 0 ) continue; - const float tmptowereta = this_jTowerContainer->findTower(tmptowerid)->eta(); - const float tmptowerphi = this_jTowerContainer->findTower(tmptowerid)->phi(); + const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid); + const float tmptowereta = tmptower->eta(); + const float tmptowerphi = tmptower->phi(); if(thisCol != cols-1) { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowerphi << "][" << tmptowereta << "]) "); } @@ -268,6 +270,7 @@ namespace LVL1 { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) |"); } } + } } m_jFEXSimTool->init(thisJFEX); ATH_CHECK(m_jFEXSimTool->ExecuteForwardASide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL)); @@ -344,13 +347,16 @@ namespace LVL1 { } } - ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); - for (int thisRow=rows-1; thisRow>=0; thisRow--) { + + if (msgLvl(MSG::DEBUG)) { + ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); + for (int thisRow=rows-1; thisRow>=0; thisRow--) { for (int thisCol=0; thisCol<cols; thisCol++) { int tmptowerid = tmp_jTowersIDs_subset_1[thisRow][thisCol]; if(tmptowerid == 0) continue; - const float tmptowereta = this_jTowerContainer->findTower(tmptowerid)->eta(); - const float tmptowerphi = this_jTowerContainer->findTower(tmptowerid)->phi(); + const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid); + const float tmptowereta = tmptower->eta(); + const float tmptowerphi = tmptower->phi(); if(thisCol != cols-1) { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowerphi << "][" << tmptowereta << "]) "); } @@ -358,6 +364,7 @@ namespace LVL1 { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) |"); } } + } } m_jFEXSimTool->init(thisJFEX); ATH_CHECK(m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_1)); @@ -455,17 +462,15 @@ namespace LVL1 { } } - - - - - ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); - for (int thisRow=rows-1; thisRow>=0; thisRow--) { + if (msgLvl(MSG::DEBUG)) { + ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); + for (int thisRow=rows-1; thisRow>=0; thisRow--) { for (int thisCol=0; thisCol<cols; thisCol++) { int tmptowerid = tmp_jTowersIDs_subset_2[thisRow][thisCol]; if(tmptowerid == 0) continue; - const float tmptowereta = this_jTowerContainer->findTower(tmptowerid)->eta(); - const float tmptowerphi = this_jTowerContainer->findTower(tmptowerid)->phi(); + const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid); + const float tmptowereta = tmptower->eta(); + const float tmptowerphi = tmptower->phi(); if(thisCol != cols-1) { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) "); } @@ -473,6 +478,7 @@ namespace LVL1 { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) |"); } } + } } //tool use instead @@ -571,13 +577,15 @@ namespace LVL1 { } - ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); - for (int thisRow=rows-1; thisRow>=0; thisRow--) { + if (msgLvl(MSG::DEBUG)) { + ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); + for (int thisRow=rows-1; thisRow>=0; thisRow--) { for (int thisCol=0; thisCol<cols; thisCol++) { int tmptowerid = tmp_jTowersIDs_subset_3[thisRow][thisCol]; if(tmptowerid == 0) continue; - const float tmptowereta = this_jTowerContainer->findTower(tmptowerid)->eta(); - const float tmptowerphi = this_jTowerContainer->findTower(tmptowerid)->phi(); + const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid); + const float tmptowereta = tmptower->eta(); + const float tmptowerphi = tmptower->phi(); if(thisCol != cols-1) { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) "); } @@ -585,6 +593,7 @@ namespace LVL1 { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) |"); } } + } } //tool use instead @@ -658,13 +667,15 @@ namespace LVL1 { } } - ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); - for (int thisRow=rows-1; thisRow>=0; thisRow--) { + if (msgLvl(MSG::DEBUG)) { + ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); + for (int thisRow=rows-1; thisRow>=0; thisRow--) { for (int thisCol=0; thisCol<cols; thisCol++) { int tmptowerid = tmp_jTowersIDs_subset_4[thisRow][thisCol]; if(tmptowerid == 0) continue; - const float tmptowereta = this_jTowerContainer->findTower(tmptowerid)->eta(); - const float tmptowerphi = this_jTowerContainer->findTower(tmptowerid)->phi(); + const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid); + const float tmptowereta = tmptower->eta(); + const float tmptowerphi = tmptower->phi(); if(thisCol != cols-1) { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) "); } @@ -672,6 +683,7 @@ namespace LVL1 { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) |"); } } + } } //tool use instead @@ -811,13 +823,15 @@ namespace LVL1 { } //--- - ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); - for (int thisRow=rows-1; thisRow>=0; thisRow--) { + if (msgLvl(MSG::DEBUG)) { + ATH_MSG_DEBUG("CONTENTS OF jFEX " << thisJFEX << " :"); + for (int thisRow=rows-1; thisRow>=0; thisRow--) { for (int thisCol=0; thisCol<cols; thisCol++) { int tmptowerid = tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol]; if(tmptowerid == 0) continue; - const float tmptowereta = this_jTowerContainer->findTower(tmptowerid)->eta(); - const float tmptowerphi = this_jTowerContainer->findTower(tmptowerid)->phi(); + const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid); + const float tmptowereta = tmptower->eta(); + const float tmptowerphi = tmptower->phi(); if(thisCol != cols-1) { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowerphi << "][" << tmptowereta << "]) "); } @@ -825,6 +839,7 @@ namespace LVL1 { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) |"); } } + } } m_jFEXSimTool->init(thisJFEX); diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerBuilder.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerBuilder.cxx index 2197ebcfab022af159fe17c5f2b40a4bc22488c1..d3c694061c4755b4d21336e56efcc405ede2a7e8 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerBuilder.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerBuilder.cxx @@ -28,29 +28,23 @@ namespace LVL1 { -jTowerBuilder::jTowerBuilder(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent) -{ - declareInterface<IjTowerBuilder>(this); +jTowerBuilder::jTowerBuilder(const std::string& type,const std::string& name,const IInterface* parent): AthAlgTool(type,name,parent) { + declareInterface<IjTowerBuilder>(this); } -void jTowerBuilder::init(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) -{ - - execute(jTowerContainerRaw); +void jTowerBuilder::init(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) { + execute(jTowerContainerRaw); } -void jTowerBuilder::reset() -{ +void jTowerBuilder::reset() { } -void jTowerBuilder::execute(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) -{ +void jTowerBuilder::execute(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) { BuildAllTowers(jTowerContainerRaw); } @@ -64,138 +58,132 @@ void jTowerBuilder::execute(std::unique_ptr<jTowerContainer> & jTowerContainerRa // Left Hadronic Endcap ID Tower = 11100000 + X --> These are just Layer 5 of Endcap Towers. They will never be generated as standalone jTowers. // Right Haronic Endcap ID Tower = 22200000 + X --> These are just Layer 5 of Endcap Towers. They will never be generated as standalone jTowers. - void jTowerBuilder::BuildEMBjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const -{ - static constexpr float TT_Size_eta = 0.1; - static constexpr float TT_Size_phi = M_PI/32; - // Regions 0 only. Region 1 is 'transition region'. - for (int ieta = 0; ieta < 14; ++ieta) { // loop over 14 eta steps (ignoring last step as it is transition region) - float centre_eta = (TT_Size_eta*ieta) + (0.5*TT_Size_eta); - for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps - int key_eta = ieta; - float centre_phi = (TT_Size_phi*iphi) + (0.5*TT_Size_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 100000, -1, -1*centre_eta, centre_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 200000, 1, centre_eta, centre_phi); +void jTowerBuilder::BuildEMBjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const { + // Regions 0 only. Region 1 is 'transition region'. + for (int ieta = 0; ieta < 14; ++ieta) { // loop over 14 eta steps (ignoring last step as it is transition region) + float centre_eta = (0.1*ieta) + (0.05) ; + for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps + int key_eta = ieta; + float centre_phi = (0.1*iphi) + (0.05) ; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 100000, -1, -1*centre_eta, centre_phi); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 200000, 1, centre_eta, centre_phi); + } } - } } -void jTowerBuilder::BuildTRANSjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const -{ - static constexpr float TT_Size = M_PI/32; - int TRANS_MODIFIER = 14; - int tmpVal = TRANS_MODIFIER; - - for (int ieta = tmpVal; ieta < tmpVal + 1; ieta++){ // loop over eta steps - float centre_eta = (0.1*ieta) + (0.05); - for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps - int key_eta = ieta; - float centre_phi = (TT_Size*iphi) + (0.5*TT_Size); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 300000, -1,-1*centre_eta, centre_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 400000, 1,centre_eta, centre_phi); +void jTowerBuilder::BuildTRANSjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const { + int TRANS_MODIFIER = 14; + int tmpVal = TRANS_MODIFIER; + + for (int ieta = tmpVal; ieta < tmpVal + 1; ieta++) { // loop over eta steps + float centre_eta = (0.1*ieta) + (0.05); + for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps + int key_eta = ieta; + //float centre_phi = (TT_Size*iphi) + (0.5*TT_Size); + float centre_phi = (0.1*iphi) + (0.05) ; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 300000, -1,-1*centre_eta, centre_phi); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 400000, 1, centre_eta, centre_phi); + } } - } } -void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const -{ - static constexpr float TT_Size = M_PI/32; - // Region 1 - int EME_MODIFIER = 15; - int tmpVal = EME_MODIFIER; - - for (int ieta = tmpVal; ieta < tmpVal + 3; ++ieta){ // loop over eta steps - float centre_eta =(0.1*ieta) + (0.05) ; - for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps - int key_eta = ieta; - float centre_phi = (TT_Size*iphi) + (0.5*TT_Size); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1, -1*centre_eta, centre_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1, centre_eta, centre_phi); +void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const { + // Region 1 + int EME_MODIFIER = 15; + int tmpVal = EME_MODIFIER; + + for (int ieta = tmpVal; ieta < tmpVal + 3; ++ieta) { // loop over eta steps + float centre_eta =(0.1*ieta) + (0.05) ; + for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps + int key_eta = ieta; + float centre_phi = (0.1*iphi) + (0.05) ; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1, -1*centre_eta, centre_phi); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1, centre_eta, centre_phi); + } + EME_MODIFIER++; } - EME_MODIFIER++; - } - // Region 2 - tmpVal = EME_MODIFIER; - for (int ieta = tmpVal; ieta < tmpVal + 2; ++ieta){ // loop over eta steps - float centre_eta = (0.1*ieta) + (0.05); - for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps - int key_eta = ieta; - float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ; - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1,-1*centre_eta, centre_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1,centre_eta, centre_phi); + // Region 2 + tmpVal = EME_MODIFIER; + for (int ieta = tmpVal; ieta < tmpVal + 2; ++ieta) { // loop over eta steps + float centre_eta = (0.1*ieta) + (0.05); + for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps + int key_eta = ieta; + //float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ; + float centre_phi = (0.1*iphi) + (0.05) ; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1,-1*centre_eta, centre_phi); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1, centre_eta, centre_phi); + } + EME_MODIFIER++; } - EME_MODIFIER++; - } - // Region 3 - tmpVal = EME_MODIFIER; - for (int ieta = tmpVal; ieta < tmpVal + 4; ++ieta){ // loop over eta steps - float centre_eta= (0.1*ieta) + (0.05) ; - for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps - int key_eta = ieta; - float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ; - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1,-1*centre_eta, centre_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1,centre_eta, centre_phi); + // Region 3 + tmpVal = EME_MODIFIER; + for (int ieta = tmpVal; ieta < tmpVal + 4; ++ieta) { // loop over eta steps + float centre_eta= (0.1*ieta) + (0.05) ; + for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps + int key_eta = ieta; + //float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ; + float centre_phi = (0.1*iphi) + (0.05) ; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1,-1*centre_eta, centre_phi); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1, centre_eta, centre_phi); + } + EME_MODIFIER++; } - EME_MODIFIER++; - } - // Region 4 - tmpVal = EME_MODIFIER; - for (int ieta = tmpVal; ieta < tmpVal + 1; ++ieta){ // loop over eta steps - float centre_eta = (0.1*ieta) + (0.05); - for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps - int key_eta = ieta; - float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ; - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1, -1*centre_eta, centre_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1, centre_eta, centre_phi); + // Region 4 + tmpVal = EME_MODIFIER; + for (int ieta = tmpVal; ieta < tmpVal + 1; ++ieta) { // loop over eta steps + float centre_eta = (0.1*ieta) + (0.05); + for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps + int key_eta = ieta; + //float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ; + float centre_phi = (0.1*iphi) + (0.05) ; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1, -1*centre_eta, centre_phi); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1, centre_eta, centre_phi); + } + EME_MODIFIER++; } - EME_MODIFIER++; - } } // EMIE = Electromagnetic Inner ECAL - i.e. the forward ECAL region at high eta - void jTowerBuilder::BuildEMIEjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const - { - static constexpr float TT_Size = M_PI/32; +void jTowerBuilder::BuildEMIEjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const { int EMIE_MODIFIER = 25; int tmpVal = EMIE_MODIFIER; + float phi_width = 2.0; int cellCountEta = 0; - for (int ieta = tmpVal; ieta < tmpVal + 3; ++ieta){ // loop over eta steps (there are 3 here, 2.5-2.7, 2.7-2.9, 2.9-3.1) - cellCountEta++; - float centre_eta =(0.1*ieta) + (0.1*cellCountEta) ; - for (int iphi = 0; iphi < 32; ++iphi){ // loop over 32 phi steps - int key_eta = ieta; - float centre_phi = (2*TT_Size*iphi) + (2*0.5*TT_Size); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*7*/500000, -1, -1*centre_eta, centre_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*8*/600000, 1,centre_eta, centre_phi); - } - EMIE_MODIFIER++; + for (int ieta = tmpVal; ieta < tmpVal + 3; ++ieta) { // loop over eta steps (there are 3 here, 2.5-2.7, 2.7-2.9, 2.9-3.1) + cellCountEta++; + float centre_eta =(0.1*ieta) + (0.1*cellCountEta) ; + for (int iphi = 0; iphi < 32; ++iphi) { // loop over 32 phi steps + int key_eta = ieta; + float centre_phi = (2*iphi+phi_width/2.0)/10.0; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*7*/500000, -1, -1*centre_eta, centre_phi); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*8*/600000, 1, centre_eta, centre_phi); + } + EMIE_MODIFIER++; } - - tmpVal = EMIE_MODIFIER; - for (int ieta = tmpVal; ieta < tmpVal + 1; ++ieta){ // loop over eta steps (there are 1 here, 3.1-3.2) - float centre_eta = (0.1*ieta + 0.3) + (0.05); - for (int iphi = 0; iphi < 32; ++iphi){ // loop over 32 phi steps - int key_eta = ieta; - float centre_phi = (2*TT_Size*iphi) + (2*0.5*TT_Size); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*7*/500000, -1, -1*centre_eta, centre_phi); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*8*/600000, 1,centre_eta, centre_phi); - } - EMIE_MODIFIER++; + + tmpVal = EMIE_MODIFIER; + for (int ieta = tmpVal; ieta < tmpVal + 1; ++ieta) { // loop over eta steps (there are 1 here, 3.1-3.2) + float centre_eta = (0.1*ieta + 0.3) + (0.05); + for (int iphi = 0; iphi < 32; ++iphi) { // loop over 32 phi steps + int key_eta = ieta; + float centre_phi = (2*iphi+phi_width/2.0)/10.0; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*7*/500000, -1, -1*centre_eta, centre_phi); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*8*/600000, 1, centre_eta, centre_phi); + } + EMIE_MODIFIER++; } - } +} - void jTowerBuilder::BuildFCALjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const - { - static constexpr float TT_Size = M_PI/32; +void jTowerBuilder::BuildFCALjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const { int FCAL_MODIFIER = 29; // there's 0.1 overlap with EMIE here in eta, but in counting we pretend it's the next one along. int tmpVal = FCAL_MODIFIER; @@ -212,61 +200,63 @@ void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerCon // FCAL 2 Region [NOT SPECIFIED IN MC] has 4 supercells in 3.2 < eta < 4.48, and 16 supercells in phi. Supercells are 0.32 x 0.4. posneg +-2 //FCAL0 - float eta_base = 3.2; - float eta_width =1.4 * TT_Size; //0.14; - float phi_base = 0.0; - float phi_width = 4*TT_Size;//0.4; + float eta_width = 1.4; + float phi_width = 4.0; int cellCountEta = 0; int FCAL0_INITIAL = FCAL_MODIFIER; - for (int ieta = tmpVal; ieta < tmpVal + 12; ++ieta){ // loop over eta steps (there are 12 here in varying positions for FCAL0) - int key_eta = ieta - FCAL0_INITIAL; - cellCountEta++; - float centre_eta = eta_base + (cellCountEta * eta_width) - (eta_width);// * 0.5); - for (int iphi = 0; iphi < 16; ++iphi){ // loop over 16 phi steps - float centre_phi = phi_base + ((iphi+1) * phi_width) - (phi_width * 0.5); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 700000, -1, -1*centre_eta, centre_phi, 0); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 800000, 1, centre_eta, centre_phi, 0); - } - FCAL_MODIFIER++; + std::vector<int> TT_etapos{31,33,34,36,37,39,40,42,43,45,46,48}; // Eta position of each supercell, need to be change for the real coords. Future MR + for (int ieta = tmpVal; ieta < tmpVal + 12; ++ieta) { // loop over eta steps (there are 12 here in varying positions for FCAL0) + int key_eta = ieta - FCAL0_INITIAL; + float centre_eta = (TT_etapos[cellCountEta]+eta_width/2)/10.0; + cellCountEta++; + + for (int iphi = 0; iphi < 16; ++iphi) { // loop over 16 phi steps + float centre_phi = (4*iphi+phi_width/2.0)/10.0; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 700000, -1, -1*centre_eta, centre_phi, 0); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 800000, 1, centre_eta, centre_phi, 0); + } + FCAL_MODIFIER++; } - + //FCAL1 - eta_width = 1.6 * TT_Size;//0.16; + eta_width = 1.6; cellCountEta = 0; tmpVal = FCAL_MODIFIER; + TT_etapos = {31,33,35,37,39,41,43,44};// Eta position of each supercell, need to be change for the real coords. Future MR int FCAL1_INITIAL = FCAL_MODIFIER; - for (int ieta = tmpVal; ieta < tmpVal + 8; ++ieta){ // loop over eta steps (there are 8 here in varying positions for FCAL1) - int key_eta = ieta - FCAL1_INITIAL; - cellCountEta++; - float centre_eta = eta_base + (cellCountEta * eta_width) - (eta_width * 0.5); - for (int iphi = 0; iphi < 16; ++iphi){ // loop over 16 phi steps - float centre_phi = phi_base + ((iphi+1) * phi_width) - (phi_width * 0.5);; - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 900000, -1,-1*centre_eta, centre_phi, 1); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1000000, 1, centre_eta, centre_phi, 1); - } - FCAL_MODIFIER++; + for (int ieta = tmpVal; ieta < tmpVal + 8; ++ieta) { // loop over eta steps (there are 8 here in varying positions for FCAL1) + int key_eta = ieta - FCAL1_INITIAL; + float centre_eta = (TT_etapos[cellCountEta]+eta_width/2)/10.0; + cellCountEta++; + for (int iphi = 0; iphi < 16; ++iphi) { // loop over 16 phi steps + float centre_phi = (4*iphi+phi_width/2.0)/10.0; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 900000, -1, -1*centre_eta, centre_phi, 1); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1000000, 1, centre_eta, centre_phi, 1); + } + FCAL_MODIFIER++; } - - + + //FCAL2 - eta_width = 3.2 * TT_Size; //0.32; + eta_width = 3.2; cellCountEta = 0; tmpVal = FCAL_MODIFIER; + TT_etapos = {31,34,37,41};// Eta position of each supercell, need to be change for the real coords. Future MR int FCAL2_INITIAL = FCAL_MODIFIER; - for (int ieta = tmpVal; ieta < tmpVal + 4; ++ieta){ // loop over eta steps (there are 4 here in varying positions for FCAL2) - int key_eta = ieta - FCAL2_INITIAL; - cellCountEta++; - float centre_eta = eta_base + (cellCountEta * eta_width) - (eta_width * 0.5); - for (int iphi = 0; iphi < 16; ++iphi){ // loop over 16 phi steps - float centre_phi = phi_base + ((iphi+1) * phi_width) - (phi_width * 0.5); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1100000, -1, -1*centre_eta, centre_phi, 2); - BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1200000, 1, centre_eta, centre_phi, 2); - } - FCAL_MODIFIER++; + for (int ieta = tmpVal; ieta < tmpVal + 4; ++ieta) { // loop over eta steps (there are 4 here in varying positions for FCAL2) + int key_eta = ieta - FCAL2_INITIAL; + float centre_eta = (TT_etapos[cellCountEta]+eta_width/2)/10.0; + cellCountEta++; + for (int iphi = 0; iphi < 16; ++iphi) { // loop over 16 phi steps + float centre_phi = (4*iphi+phi_width/2.0)/10.0; + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1100000, -1, -1*centre_eta, centre_phi, 2); + BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1200000, 1, centre_eta, centre_phi, 2); + } + FCAL_MODIFIER++; } - - } + +} @@ -298,28 +288,18 @@ void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerCon } //================================================================================================================================================================= - void jTowerBuilder::BuildSingleTower(std::unique_ptr<jTowerContainer> & jTowerContainerRaw,float eta, float phi, int key_eta, float keybase, int posneg, float centre_eta, float centre_phi, int fcal_layer) const -{ +void jTowerBuilder::BuildSingleTower(std::unique_ptr<jTowerContainer> & jTowerContainerRaw,float eta, float phi, int key_eta, float keybase, int posneg, float centre_eta, float centre_phi, int fcal_layer) const { - if(centre_eta == 0.0){ - centre_eta = eta + 0.05; - } - if(centre_phi == 0.0){ - centre_phi = phi + 0.05; - } - - jTowerContainerRaw->push_back(eta, phi, key_eta, keybase, posneg, centre_eta, centre_phi, fcal_layer); + jTowerContainerRaw->push_back(eta, phi, key_eta, keybase, posneg, centre_eta, centre_phi, fcal_layer); } -void jTowerBuilder::BuildAllTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const -{ -// BuildSingleTower(jTowerContainerRaw, 0.0, 0.0, 0, -1.0, 0, 0.0, 0.0, 0); - BuildEMBjTowers(jTowerContainerRaw); - BuildTRANSjTowers(jTowerContainerRaw); - BuildEMEjTowers(jTowerContainerRaw); - BuildEMIEjTowers(jTowerContainerRaw); - BuildFCALjTowers(jTowerContainerRaw); +void jTowerBuilder::BuildAllTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const { + BuildEMBjTowers(jTowerContainerRaw); + BuildTRANSjTowers(jTowerContainerRaw); + BuildEMEjTowers(jTowerContainerRaw); + BuildEMIEjTowers(jTowerContainerRaw); + BuildFCALjTowers(jTowerContainerRaw); } diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerContainer.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerContainer.cxx index bd3c8a1dae68f41ad6cf4d7d25bedd1817da2085..1ef457df1e4062f2c537e34bac0db52e1742c002 100644 --- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerContainer.cxx +++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerContainer.cxx @@ -31,36 +31,24 @@ void jTowerContainer::print() const { const LVL1::jTower * jTowerContainer::findTower(int towerID) const { - int container_index = -1; - container_index = m_map_towerID_containerIndex.find(towerID)->second; + const auto it = m_map_towerID_containerIndex.find(towerID); - //should be written like this - if(m_map_towerID_containerIndex.find(towerID) != m_map_towerID_containerIndex.end()){ - if(container_index >= 0) { - return (*this)[container_index]; - } + const int container_index = it->second; + if (container_index < 0) { + return nullptr; } - if(container_index >= 0) { - return (*this)[container_index]; - } - return nullptr; + return (*this)[container_index]; } LVL1::jTower * jTowerContainer::findTower(int towerID) { - int container_index = -1; - container_index = m_map_towerID_containerIndex.find(towerID)->second; + const auto it = m_map_towerID_containerIndex.find(towerID); - //should be written like this - if(m_map_towerID_containerIndex.find(towerID) != m_map_towerID_containerIndex.end()){ - if(container_index >= 0) { - return (*this)[container_index]; - } - } - if(container_index >= 0) { - return (*this)[container_index]; + const int container_index = it->second; + if (container_index < 0) { + return nullptr; } - return nullptr; + return (*this)[container_index]; } void jTowerContainer::clearContainerMap() diff --git a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXForwardJetsAlgo.h b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXForwardJetsAlgo.h index 295c3030580fafc639573d0d83aaf24466b4aff6..2e0f2972b68c6fcec6a8281733a8fadf2b25976a 100644 --- a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXForwardJetsAlgo.h +++ b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXForwardJetsAlgo.h @@ -25,7 +25,7 @@ namespace LVL1{ public: static const InterfaceID& interfaceID ( ) ; virtual StatusCode safetyTest() = 0; - virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) = 0; + virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int, int) = 0; // virtual float testfakePhi() =0; virtual float globalPhi(int , int ) =0; diff --git a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXLargeRJetAlgo.h b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXLargeRJetAlgo.h index 46cca3d2811ad3ff0eac2a7200f1ea476783a8fc..9543341db992f1e1673463987d94d3f43827babf 100644 --- a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXLargeRJetAlgo.h +++ b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXLargeRJetAlgo.h @@ -26,7 +26,7 @@ namespace LVL1{ virtual void setupCluster(int inputTable[15][15]) = 0; virtual unsigned int getRingET() = 0; virtual unsigned int getLargeClusterET(unsigned int smallClusterET, unsigned int largeRingET) = 0; - virtual std::unique_ptr<jFEXLargeRJetTOB> getLargeRJetTOBs() = 0; + virtual std::unique_ptr<jFEXLargeRJetTOB> getLargeRJetTOBs(int smallClusterET,int TTID) = 0; virtual void setFPGAEnergy(std::map<int,std::vector<int> > et_map) =0; private: diff --git a/Trigger/TrigT1/L1Topo/L1TopoSimulation/python/L1TopoSimulationConfig.py b/Trigger/TrigT1/L1Topo/L1TopoSimulation/python/L1TopoSimulationConfig.py index ead29f180e1b425b0f0a499eff4c544d851d68e0..3c57e1132d3c14c61c254f7c16b2eeceb042e7ab 100644 --- a/Trigger/TrigT1/L1Topo/L1TopoSimulation/python/L1TopoSimulationConfig.py +++ b/Trigger/TrigT1/L1Topo/L1TopoSimulation/python/L1TopoSimulationConfig.py @@ -45,8 +45,8 @@ def L1LegacyTopoSimulationCfg(flags): if flags.Trigger.enableL1MuonPhase1: muProvider = CompFactory.LVL1.MuonInputProvider("MuonInputProvider", ROIBResultLocation = "", #disable input from RoIBResult - MuctpiSimTool = muctpiTool, - MuonEncoding = 1 if flags.Input.isMC else 0) + MuonROILocation = "", + MuonEncoding = 1) else: muProvider = CompFactory.LVL1.MuonInputProviderLegacy("MuonInputProviderLegacy", ROIBResultLocation = "", #disable input from RoIBResult @@ -78,7 +78,8 @@ def L1TopoSimulationCfg(flags): if flags.Trigger.enableL1MuonPhase1: muProvider = CompFactory.LVL1.MuonInputProvider("MuonInputProvider", ROIBResultLocation = "", #disable input from RoIBResult - MuonEncoding = 1 if flags.Input.isMC else 0) + MuonROILocation = "", + MuonEncoding = 1) else: #Grab the MUCTPI tool from TrigT1Muctpi.TrigT1MuctpiConfig import L1MuctpiToolRDOCfg diff --git a/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx b/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx index d3ea514a8c5108793f0f680328ed57bb05eec522..8aca40f482fca625950a3a8d9a5856a8142f5dcc 100644 --- a/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx +++ b/Trigger/TrigT1/TrigT1CTP/src/CTPSimulation.cxx @@ -142,7 +142,7 @@ LVL1CTP::CTPSimulation::createMultiplicityHist(const std::string & type, unsigne { "te", {"TE"} }, { "xs", {"XS"} }, { "em", {"EM", "eEM"} }, - { "tau", {"TAU", "eTAU"} } + { "tau", {"TAU", "eTAU", "jTAU", "cTAU"} } }; std::vector<TrigConf::L1Threshold> thrV; for( const std::string & t : typeMapping[type] ) { @@ -165,7 +165,7 @@ LVL1CTP::CTPSimulation::setMultiplicityHistLabels(const TrigConf::L1Menu& l1menu { "te", {"TE"} }, { "xs", {"XS"} }, { "em", {"EM", "eEM"} }, - { "tau", {"TAU", "eTAU"} } + { "tau", {"TAU", "eTAU", "jTAU", "cTAU"} } }; std::vector<TrigConf::L1Threshold> thrV; for( const std::string & t : typeMapping[type] ) { @@ -1012,7 +1012,7 @@ LVL1CTP::CTPSimulation::calculateMultiplicity( const TrigConf::L1Threshold & con multiplicity = calculateMuonMultiplicity( confThr, l1menu, context ); } else if ( confThr.type() == "TOPO" ) { multiplicity = calculateTopoMultiplicity( confThr, l1menu, context ); - } else if ( confThr.type()[0] == 'e' || confThr.type()[0] == 'j' || confThr.type()[0] == 'g' ){ + } else if ( confThr.type()[0] == 'e' || confThr.type()[0] == 'c' || confThr.type()[0] == 'j' || confThr.type()[0] == 'g' ){ multiplicity = calculateTopoOptMultiplicity( confThr, l1menu, context ); //ATH_MSG_INFO("confThr.type() " << confThr.type() << " " << "mult:" << multiplicity); } @@ -1147,7 +1147,7 @@ LVL1CTP::CTPSimulation::finalize() { { // run 3 thresholds auto hist = * get2DHist( "/multi/all/R3Mult" ); - std::vector<std::string> thrHists = { "em/eEM", "muon/MU", "tau/eTAU", "jet/jJ", "jet/gJ", "xe/gXE", "xe/jXE" }; + std::vector<std::string> thrHists = { "em/eEM", "muon/MU", "tau/eTAU", "tau/jTAU", "tau/cTAU", "jet/jJ", "jet/gJ", "xe/gXE", "xe/jXE" }; for(const std::string & histpath : thrHists) { auto h = * get2DHist( "/multi/" + histpath + "Mult" ); auto xaxis = h->GetXaxis(); diff --git a/Trigger/TrigT1/TrigT1CaloFexPerf/src/JGTowerBuilder.cxx b/Trigger/TrigT1/TrigT1CaloFexPerf/src/JGTowerBuilder.cxx index 769808012d631d3b7256df2021d45ca7a9c31f0d..9309c92aa24404f6e62fbf2a241c71e1e22feade 100644 --- a/Trigger/TrigT1/TrigT1CaloFexPerf/src/JGTowerBuilder.cxx +++ b/Trigger/TrigT1/TrigT1CaloFexPerf/src/JGTowerBuilder.cxx @@ -143,14 +143,15 @@ namespace LVL1 tileEt += cell->e() * cell->sinTh(); } else - for (const xAOD::TriggerTower *triggerTower : *triggerTowers) - if ( - triggerTower->sampling() == 1 && - std::abs(triggerTower->eta()) < 1.5 && + for (const xAOD::TriggerTower *triggerTower : *triggerTowers) { + if (std::abs(triggerTower->eta()) < 1.5) { + if (triggerTower->sampling() == 1 && towerHelper.inBox(triggerTower->eta(), triggerTower->phi())) tileEt += 500 * triggerTower->cpET(); + } + } + } } - } float towerEt = LArEt + tileEt; if (towerEt < m_minTowerEt) towerEt = 0; diff --git a/Trigger/TrigT1/TrigT1EventAthenaPool/share/jobOptions_ReadLVL1_Pool.py b/Trigger/TrigT1/TrigT1EventAthenaPool/share/jobOptions_ReadLVL1_Pool.py deleted file mode 100755 index 67b9390b850b17cf022c1d47cb0d07d6615c7c3f..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/TrigT1EventAthenaPool/share/jobOptions_ReadLVL1_Pool.py +++ /dev/null @@ -1,60 +0,0 @@ -#-------------------------------------------------------------- -# Load POOL support -#-------------------------------------------------------------- -include( "AthenaPoolCnvSvc/ReadAthenaPool_jobOptions.py" ) - -# DetDescr -include( "TDRDetDescrAthenaRoot/TDRDetDescrAthenaRoot_jobOptions.py" ) - -theApp.Dlls += [ "TrigT1Muctpi" ] -theApp.Dlls += [ "TrigT1RoIB" ] -# Algs -theApp.Dlls += [ "CBNT_Athena", "CBNT_Utils" ] -theApp.TopAlg += [ "CBNT_Athena/CBNT_LVL1" ] -CBNT_LVL1 = Algorithm( "CBNT_LVL1" ) -CBNT_LVL1.members = [ - "ReadMuCTPI_RDO", - "ReadRoIBResult" -] -ReadMuCTPI_RDO = Algorithm( "ReadMuCTPI_RDO" ) -ReadMuCTPI_RDO.NtupleLocID = "/FILE1/MUCTPI/200" -ReadReadRoIBResult = Algorithm( "ReadReadRoIBResult" ) -ReadReadRoIBResult.NtupleLocID = "/FILE1/ROIB/201" - -# Define input -EventSelector = Service( "EventSelector" ) -EventSelector.InputCollections = [ "LVL1Pool.root" ] - -# Converters: -include( "EventAthenaPool/EventAthenaPool_joboptions.py" ) -include( "TrigT1EventAthenaPool/TrigT1EventAthenaPool_joboptions.py" ) - -#-------------------------------------------------------------- -# Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -#-------------------------------------------------------------- -MessageSvc.OutputLevel = 2 -# switch down Svc output level -StoreGateSvc = Service( "StoreGateSvc" ) -StoreGateSvc.OutputLevel = 2 -ClassIDSvc = Service( "ClassIDSvc" ) -ClassIDSvc.OutputLevel = 4 -DllClassManager = Algorithm( "DllClassManager" ) -DllClassManager.OutputLevel = 4 -#-------------------------------------------------------------- -# Event related parameters -#-------------------------------------------------------------- -# Number of events to be processed (default is 10) -theApp.EvtMax = 1000000 -#-------------------------------------------------------------- -# Algorithms Private Options -#-------------------------------------------------------------- -#--------------------------------------------------------------- -# Ntuple service output -#--------------------------------------------------------------- -theApp.Dlls += [ "RootHistCnv" ] -theApp.HistogramPersistency = "ROOT" -NTupleSvc = Service( "NTupleSvc" ) -NTupleSvc.Output = [ "FILE1 DATAFILE='lvl1POOL_R.root' OPT='NEW'" ] -# Histogram output, if any. -HistogramPersistencySvc = Service( "HistogramPersistencySvc" ) -HistogramPersistencySvc.OutputFile = "histo.hbook" diff --git a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx index f5f601a6eaf4bba2a436c4cb6dd282f8cb3709fb..742af38fb83a4dc79bc026a3054ee4d0cf546b45 100644 --- a/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx +++ b/Trigger/TrigT1/TrigT1Monitoring/src/CalorimeterL1CaloMon.cxx @@ -755,8 +755,6 @@ StatusCode CalorimeterL1CaloMon::fillHistograms() double phi = (*ttIterator)->phi(); const int layer = (*ttIterator)->layer(); const xAOD::TriggerTower_v2* tt = *ttIterator; - std::vector<float> CaloEnergyLayers; - std::vector<float> CaloETLayers; em_caloE = 0; had_caloE = 0; @@ -775,21 +773,18 @@ StatusCode CalorimeterL1CaloMon::fillHistograms() em_L1CaloE = int(tt->jepET()); em_L1CaloE_CP = int(0.5*(tt->cpET())); // CP scale hardcoded for now, but this should be updated to be taken automatically - // Get Calo ET - CaloEnergyLayers = tt->auxdataConst< std::vector<float> > ("CaloCellEnergyByLayer"); - CaloETLayers = tt->auxdataConst< std::vector<float> > ("CaloCellETByLayer"); if (absEta < 3.2) { - if ( tt->isAvailable< std::vector<float> > ("CaloCellEnergyByLayer") ) { - for (std::vector<float>::iterator it = CaloEnergyLayers.begin(); it != CaloEnergyLayers.end(); it++) { - em_caloE += *it; + if ( tt->isAvailable< std::vector<float> > ("CaloCellEnergyByLayer") ) { + for (float e : tt->auxdataConst< std::vector<float> > ("CaloCellEnergyByLayer")) { + em_caloE += e; } em_caloE = em_caloE / cosh(eta); } } else { // FCal: need to use different method due to large variation in cell eta if ( tt->isAvailable< std::vector<float> > ("CaloCellETByLayer") ) { - for (std::vector<float>::iterator it = CaloETLayers.begin(); it != CaloETLayers.end(); it++) { - em_caloE += *it; + for (float et : tt->auxdataConst< std::vector<float> > ("CaloCellETByLayer")) { + em_caloE += et; } } } @@ -965,21 +960,17 @@ StatusCode CalorimeterL1CaloMon::fillHistograms() had_L1CaloE = int(tt->jepET()); had_L1CaloE_CP = int(0.5*(tt->cpET())); // CP scale hardcoded for now, but this should be updated to be taken automatically - // Get Calo ET - CaloEnergyLayers = tt->auxdataConst< std::vector<float> > ("CaloCellEnergyByLayer"); - CaloETLayers = tt->auxdataConst< std::vector<float> > ("CaloCellETByLayer"); - if (absEta < 3.2) { if ( tt->isAvailable< std::vector<float> > ("CaloCellEnergyByLayer") ) { - for (std::vector<float>::iterator it = CaloEnergyLayers.begin(); it != CaloEnergyLayers.end(); it++) { - had_caloE += *it; + for (float e : tt->auxdataConst< std::vector<float> > ("CaloCellEnergyByLayer")) { + had_caloE += e; } had_caloE = had_caloE / cosh(eta); } } else { // FCal: need to use different method due to large variation in cell eta if ( tt->isAvailable< std::vector<float> > ("CaloCellETByLayer") ) { - for (std::vector<float>::iterator it = CaloETLayers.begin(); it != CaloETLayers.end(); it++) { - had_caloE += *it; + for (float et : tt->auxdataConst< std::vector<float> > ("CaloCellETByLayer")) { + had_caloE += et; } } } diff --git a/Trigger/TrigT1/TrigT1MuctpiPhase1/python/TrigT1MuctpiPhase1Config.py b/Trigger/TrigT1/TrigT1MuctpiPhase1/python/TrigT1MuctpiPhase1Config.py index 4cb39a94750de39bbb90b34dbbd393869e9fc099..a81f6d47b9e3fc32addf25459901ecb7d99d2e2d 100644 --- a/Trigger/TrigT1/TrigT1MuctpiPhase1/python/TrigT1MuctpiPhase1Config.py +++ b/Trigger/TrigT1/TrigT1MuctpiPhase1/python/TrigT1MuctpiPhase1Config.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaCommon.Logging import logging @@ -35,13 +35,12 @@ def MUCTPI_AthToolCfg(name): # Decide which LUT to use, based on which run we are simulating: tool.LUTXMLFile = "TrigConfMuctpi/overlapRun3_20201214.xml" - logger.info( "Configuring MuCTPI simulation with configuration file:" ) - logger.info( " "+tool.LUTXMLFile ) + logger.info( "Configuring MuCTPI simulation with configuration file: %s", tool.LUTXMLFile ) return tool -def MUCTPI_AthAlgCfg(name): +def MUCTPI_AthAlgCfg(flags): acc = ComponentAccumulator() alg = CompFactory.getComp("LVL1MUCTPIPHASE1::MUCTPI_AthAlg")(name="MUCTPI_AthAlg") alg.MUCTPI_AthTool = MUCTPI_AthToolCfg(name="MUCTPI_AthTool") diff --git a/Trigger/TrigT1/TrigT1MuctpiPhase1/src/MuonSectorProcessor.cxx b/Trigger/TrigT1/TrigT1MuctpiPhase1/src/MuonSectorProcessor.cxx index 76c6589f9e2d88154220308fcdf990f7f7eb317a..b15829078011b002592d66a5f195ecda22ceda12 100644 --- a/Trigger/TrigT1/TrigT1MuctpiPhase1/src/MuonSectorProcessor.cxx +++ b/Trigger/TrigT1/TrigT1MuctpiPhase1/src/MuonSectorProcessor.cxx @@ -300,6 +300,9 @@ namespace LVL1MUCTPIPHASE1 { int ptword = sectorData->pt(icand); if (ptword < 0) continue; + // initializing veto flag for the latter removal step + sectorData->veto(icand,0); + for(auto rr : m_overlapHelper->relevant_regions(m_side,sectorName,roiID,isec)) { // for the barrel-barrel overlap removal, only the muons having the phi-overlap flag are considered @@ -317,6 +320,7 @@ namespace LVL1MUCTPIPHASE1 { unsigned i_notRemove = 0; int ptMax = 0; for (unsigned i=0;i<candidate_vector.second.size();i++){ + if( candidate_vector.second[i].first->veto(candidate_vector.second[i].second)==1 ) continue; // skipping already-flagged candidate int pt = candidate_vector.second[i].first->pt(candidate_vector.second[i].second); if(pt > ptMax){ ptMax = pt; @@ -327,6 +331,7 @@ namespace LVL1MUCTPIPHASE1 { //for each candidate except the highest pt, mark them for removal for (unsigned i=0;i<candidate_vector.second.size();i++) { + if( candidate_vector.second[i].first->veto(candidate_vector.second[i].second)==1 ) continue; // skipping already-flagged candidate candidate_vector.second[i].first->veto(candidate_vector.second[i].second, (i==i_notRemove)?0:1 ); } } diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/src/MMLoadVariables.cxx b/Trigger/TrigT1/TrigT1NSWSimTools/src/MMLoadVariables.cxx index af71007d3a77d0ab768ccfa8ce48f8e5a378922b..87569d3664fa2b756db4edfeea3e429beda364f8 100644 --- a/Trigger/TrigT1/TrigT1NSWSimTools/src/MMLoadVariables.cxx +++ b/Trigger/TrigT1/TrigT1NSWSimTools/src/MMLoadVariables.cxx @@ -86,12 +86,12 @@ MMLoadVariables::MMLoadVariables(StoreGateSvc* evtStore, const MuonGM::MuonDetec #endif const HepMC::FourVector momentum = particle->momentum(); int k=trackRecordCollection->size(); //number of mu - if(particle->barcode() < 1e06 && std::abs(particle->pdg_id())==13){ + if(HepMC::barcode(particle) < 1e06 && std::abs(particle->pdg_id())==13){ thePart.SetCoordinates(momentum.perp(),momentum.eta(),momentum.phi(),momentum.e()); for(const auto & mit : *trackRecordCollection ) { const CLHEP::Hep3Vector mumomentum = mit.GetMomentum(); const CLHEP::Hep3Vector muposition = mit.GetPosition(); - if(k>0 && j<k && particle->barcode()==mit.GetBarCode()) { + if(k>0 && j<k && HepMC::barcode(particle)==mit.GetBarCode()) { pdg_tmp = HepMC::barcode(particle); phiEntry_tmp = mumomentum.getPhi(); etaEntry_tmp = mumomentum.getEta(); @@ -115,7 +115,7 @@ MMLoadVariables::MMLoadVariables(StoreGateSvc* evtStore, const MuonGM::MuonDetec } j++; - if(thePart.Pt() > 0. && particle->barcode() < 1e06){ + if(thePart.Pt() > 0. && HepMC::barcode(particle) < 1e06){ bool addIt = true; for(unsigned int ipart=0; ipart < truthParticles.size(); ipart++){ if( std::abs(thePart.Pt()-truthParticles[ipart].Pt()) < 0.001 || diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/CMakeLists.txt b/Trigger/TrigT1/TrigT1ResultByteStream/CMakeLists.txt index 2fe1f120756e0537a6ebdb12d972a1304de2732b..cfec0c744e1c2d2665b8a79b1bc7f136cf235e5d 100644 --- a/Trigger/TrigT1/TrigT1ResultByteStream/CMakeLists.txt +++ b/Trigger/TrigT1/TrigT1ResultByteStream/CMakeLists.txt @@ -17,7 +17,7 @@ atlas_add_component( TrigT1ResultByteStream src/*.cxx src/components/*.cxx INCLUDE_DIRS ${TDAQ-COMMON_INCLUDE_DIRS} - LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AthenaBaseComps AthenaKernel ByteStreamCnvSvcBaseLib ByteStreamData GaudiKernel L1TopoRDO StoreGateLib TrigConfInterfaces TrigConfL1Data TrigT1Interfaces TrigT1Result TrigT1ResultByteStreamLib xAODTrigger ) + LINK_LIBRARIES ${TDAQ-COMMON_LIBRARIES} AthenaBaseComps AthenaKernel ByteStreamCnvSvcBaseLib ByteStreamData GaudiKernel L1TopoRDO StoreGateLib TrigConfData TrigT1Interfaces TrigT1Result TrigT1ResultByteStreamLib xAODTrigger ) # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx index 80288da57f627b9bb9258ff2bf4d182ef84df4de..3707b05a5e59f6123eb1a4a671d8073b996eb3ed 100755 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.cxx @@ -7,11 +7,7 @@ // Trigger include(s): #include "TrigT1Interfaces/RecMuonRoI.h" #include "TrigT1Result/MuCTPI_RIO.h" -#include "TrigConfL1Data/TriggerThreshold.h" -#include "TrigConfL1Data/L1DataDef.h" -#include "TrigConfL1Data/CTPConfig.h" -#include "TrigConfL1Data/Menu.h" -#include "TrigConfL1Data/TriggerItem.h" +#include "TrigConfData/L1Menu.h" // Local include(s): #include "RecMuCTPIByteStreamTool.h" @@ -62,13 +58,6 @@ StatusCode RecMuCTPIByteStreamTool::initialize() { ATH_MSG_DEBUG("Connected to TGC RecMuonRoISvc"); } - sc = m_configSvc.retrieve(); - if ( sc.isFailure() ) { - ATH_MSG_ERROR("Couldn't connect to Lvl1ConfigSvc."); - } else { - ATH_MSG_DEBUG("Connected to Lvl1ConfigSvc"); - } - return StatusCode::SUCCESS; } @@ -82,18 +71,10 @@ StatusCode RecMuCTPIByteStreamTool::convert( const ROBF* rob, MuCTPI_RIO*& resul ATH_MSG_DEBUG("executing convert() from ROBFragment to RIO"); - // - // config retrieval via Lvl1ConfigSvc - // - std::vector<TrigConf::TriggerThreshold*> muonConfig; - if ( m_configSvc.isSet() ) { - std::vector<TrigConf::TriggerThreshold*> thresholds = m_configSvc->ctpConfig()->menu().thresholdVector(); - for (std::vector<TrigConf::TriggerThreshold*>::const_iterator it = thresholds.begin(); - it != thresholds.end(); ++it) { - if ( (*it)->type() == TrigConf::L1DataDef::muonType() ) muonConfig.push_back(*it); - } - } - + // L1Menu + const TrigConf::L1Menu * l1menu = nullptr; + ATH_CHECK( detStore()->retrieve(l1menu) ); + // Source ID of MIROD const uint32_t miRodId = m_srcIdMap.getRodID(); @@ -196,7 +177,7 @@ StatusCode RecMuCTPIByteStreamTool::convert( const ROBF* rob, MuCTPI_RIO*& resul // reconstruct LVL1::RecMuonRoI thisRoI( roiWord, m_rpcRoITool.isSet() ? m_rpcRoITool.operator->() : 0, - m_tgcRoITool.isSet() ? m_tgcRoITool.operator->() : 0, &muonConfig ); + m_tgcRoITool.isSet() ? m_tgcRoITool.operator->() : 0, l1menu ); uint16_t pTVal = thisRoI.getThresholdValue(); uint16_t pTNumber = thisRoI.getThresholdNumber(); diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.h b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.h index 0b89900ef35e280e7f664001cec6f826a413a4bb..1620cdbca10b9ba0c64bf64536f86e93ac9677ba 100644 --- a/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.h +++ b/Trigger/TrigT1/TrigT1ResultByteStream/src/RecMuCTPIByteStreamTool.h @@ -13,7 +13,6 @@ // Trigger include(s): #include "TrigT1Interfaces/ITrigT1MuonRecRoiTool.h" -#include "TrigConfInterfaces/ILVL1ConfigSvc.h" // Local include(s): #include "MuCTPISrcIdMap.h" @@ -63,9 +62,6 @@ private: ToolHandle<LVL1::ITrigT1MuonRecRoiTool> m_tgcRoITool { this, "TGCRecRoiSvc", "LVL1::TrigT1TGCRecRoiTool/TrigT1TGCRecRoiTool", "TGC RoI reconstruction tool" }; - ServiceHandle<TrigConf::ILVL1ConfigSvc> m_configSvc { - this, "LVL1ConfigSvc", "TrigConf::LVL1ConfigSvc/LVL1ConfigSvc", "LVL1 Config Service" - }; }; // class RecMuCTPIByteStreamTool diff --git a/Trigger/TrigTools/IDScanZFinder/python/ZFinderAlgConfig.py b/Trigger/TrigTools/IDScanZFinder/python/ZFinderAlgConfig.py index 95e98ad5549a4a2732cc76f20314ef3fbb228959..7c6ac294309211ae4ca95ec818ecc83d2bc80e01 100644 --- a/Trigger/TrigTools/IDScanZFinder/python/ZFinderAlgConfig.py +++ b/Trigger/TrigTools/IDScanZFinder/python/ZFinderAlgConfig.py @@ -6,22 +6,22 @@ from IDScanZFinder.IDScanZFinderConf import TrigZFinder MinBiasZFinderAlg = TrigZFinderAlg("TrigZFinderAlg", vertexKey=recordable("HLT_vtx_z")) MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("default")] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike", TripletMode=1, TripletDZ=1, PhiBinSize=0.1, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike1", TripletMode=1, TripletDZ=1, PhiBinSize=0.05, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike2", TripletMode=1, TripletDZ=1, PhiBinSize=0.02, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike3", TripletMode=1, TripletDZ=1, PhiBinSize=0.01, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike4", TripletMode=1, TripletDZ=0.5, PhiBinSize=0.1, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike5", TripletMode=1, TripletDZ=0.5, PhiBinSize=0.05, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike6", TripletMode=1, TripletDZ=0.5, PhiBinSize=0.02, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike7", TripletMode=1, TripletDZ=0.5, PhiBinSize=0.01, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike8", TripletMode=1, TripletDZ=1.5, PhiBinSize=0.1, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike9", TripletMode=1, TripletDZ=1.5, PhiBinSize=0.05, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike10", TripletMode=1, TripletDZ=1.5, PhiBinSize=0.02, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike11", TripletMode=1, TripletDZ=1.5, PhiBinSize=0.01, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike12", TripletMode=1, TripletDZ=2, PhiBinSize=0.1, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike13", TripletMode=1, TripletDZ=2, PhiBinSize=0.05, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike14", TripletMode=1, TripletDZ=2, PhiBinSize=0.02, UseOnlyPixels=True, MaxLayer=3)] -MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike15", TripletMode=1, TripletDZ=2, PhiBinSize=0.01, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike", TripletMode=1, TripletDZ=1, ForcePhiBinSize =True, PhiBinSize=0.1, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike1", TripletMode=1, TripletDZ=1, ForcePhiBinSize =True, PhiBinSize=0.05, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike2", TripletMode=1, TripletDZ=1, ForcePhiBinSize =True, PhiBinSize=0.02, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike3", TripletMode=1, TripletDZ=1, ForcePhiBinSize =True, PhiBinSize=0.01, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike4", TripletMode=1, TripletDZ=0.5, ForcePhiBinSize =True, PhiBinSize=0.1, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike5", TripletMode=1, TripletDZ=0.5, ForcePhiBinSize =True, PhiBinSize=0.05, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike6", TripletMode=1, TripletDZ=0.5, ForcePhiBinSize =True, PhiBinSize=0.02, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike7", TripletMode=1, TripletDZ=0.5, ForcePhiBinSize =True, PhiBinSize=0.01, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike8", TripletMode=1, TripletDZ=1.5, ForcePhiBinSize =True, PhiBinSize=0.1, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike9", TripletMode=1, TripletDZ=1.5, ForcePhiBinSize =True, PhiBinSize=0.05, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike10", TripletMode=1, TripletDZ=1.5, ForcePhiBinSize =True, PhiBinSize=0.02, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike11", TripletMode=1, TripletDZ=1.5, ForcePhiBinSize =True, PhiBinSize=0.01, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike12", TripletMode=1, TripletDZ=2, ForcePhiBinSize =True, PhiBinSize=0.1, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike13", TripletMode=1, TripletDZ=2, ForcePhiBinSize =True, PhiBinSize=0.05, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike14", TripletMode=1, TripletDZ=2, ForcePhiBinSize =True, PhiBinSize=0.02, UseOnlyPixels=True, MaxLayer=3)] +MinBiasZFinderAlg.ZFinderTools += [TrigZFinder("BeamSpotLike15", TripletMode=1, TripletDZ=2, ForcePhiBinSize =True, PhiBinSize=0.01, UseOnlyPixels=True, MaxLayer=3)] from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool diff --git a/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinder.cxx b/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinder.cxx index 3b3a27f101ca376556f79212e68a81e61b51986c..1ff46d87c99ed9ae1a496d2beba618b95e347709 100755 --- a/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinder.cxx +++ b/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinder.cxx @@ -68,7 +68,7 @@ StatusCode IDScanZFinder::initialize() /// NB: These only have to go here, because they need to write to the msgsvc, and because /// is rubbish, we can't pass in a pointer to a (non-athena) sub algorithm. - if ( m_phiBinSize < ZFinder_MinPhiSliceSize ){ + if ( m_phiBinSize < ZFinder_MinPhiSliceSize and ! m_forcePhiBinSize ){ ATH_MSG_WARNING("Requested PhiBinSize of " << m_phiBinSize << " degrees is smaller than the minimum allowed (" << ZFinder_MinPhiSliceSize << " degrees). Set to the minimum value."); diff --git a/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinderInternal.h b/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinderInternal.h index 9d608fe54b19bd9c32aeb92bcb1497f0230adc5e..ae1f2949c85830db7dac3f7f22449ae3a68de03b 100644 --- a/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinderInternal.h +++ b/Trigger/TrigTools/IDScanZFinder/src/IDScanZFinderInternal.h @@ -100,7 +100,8 @@ protected: // data members double m_invPhiSliceSize; // the inverse size of the phi slices long m_NumPhiSlices; // the number of phi slices, given the width of the RoI - double m_phiBinSize; // the size of the phi slices + double m_phiBinSize; // the size of the phi slices + bool m_forcePhiBinSize; // forces the phi bin size to be be used as configured even if below reasonable limit double m_usedphiBinSize; // the size of the phi slices double m_ROIphiWidth; // the phi width of the ROI double m_usedROIphiWidth; // the phi width of the ROI @@ -174,6 +175,7 @@ IDScanZFinderInternal<SpacePoint>::IDScanZFinderInternal( const std::string& typ m_Name = name; m_phiBinSize = 0.2 ; + m_forcePhiBinSize = false ; m_usedphiBinSize = m_phiBinSize ; m_pixOnly = false ; m_ROIphiWidth = 0.2 ; @@ -234,7 +236,7 @@ void IDScanZFinderInternal<SpacePoint>::initializeInternal(long maxLayers, long // from IDScanZFinder::initialize m_usedphiBinSize = m_phiBinSize; - if ( m_usedphiBinSize < ZFinder_MinPhiSliceSize ) m_usedphiBinSize = ZFinder_MinPhiSliceSize; + if ( m_usedphiBinSize < ZFinder_MinPhiSliceSize and ! m_forcePhiBinSize) m_usedphiBinSize = ZFinder_MinPhiSliceSize; if ( m_dphideta > 0 ) m_dphideta *= -m_dphideta; m_invPhiSliceSize = 180./(M_PI*m_usedphiBinSize); diff --git a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinder.cxx b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinder.cxx index 216fa629c16f1fdb3aefd1e524730a512a388c00..1e807574d4ea05c521d0df01aa4c52cd8a25fee8 100755 --- a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinder.cxx +++ b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinder.cxx @@ -33,6 +33,7 @@ TrigZFinder::TrigZFinder( const std::string& type, const std::string& name, cons // std::cout << "ZFinder::ZFinder() version " << name << " " << type << "\tTrigZFinder-00-00-62"<< std::endl; declareProperty( "PhiBinSize", m_phiBinSize = 0.2 ); + declareProperty( "ForcePhiBinSize", m_forcePhiBinSize = false ); declareProperty( "UseOnlyPixels", m_pixOnly = false ); declareProperty( "MinZBinSize", m_minZBinSize = 0.2 ); declareProperty( "nFirstLayers", m_nFirstLayers = 3 ); @@ -76,7 +77,7 @@ StatusCode TrigZFinder::initialize() /// NB: These only have to go here, because they need to write to the msgsvc, and because /// is rubbish, we can't pass in a pointer to a (non-athena) sub algorithm. - if ( m_phiBinSize < ZFinder_MinPhiSliceSize ){ + if ( m_phiBinSize < ZFinder_MinPhiSliceSize and ! m_forcePhiBinSize ){ ATH_MSG_WARNING("Requested PhiBinSize of " << m_phiBinSize << " degrees is smaller than the minimum allowed (" << ZFinder_MinPhiSliceSize << " degrees). Set to the minimum value."); diff --git a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.cxx b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.cxx index c5d948b4edb8a436780749f124c11e5b862aa991..ac74bb46e346e374f6f7b9e75f6f72592cbe52b1 100644 --- a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.cxx +++ b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.cxx @@ -96,7 +96,7 @@ void TrigZFinderInternal::initializeInternal(long maxLayers, long lastBarrel ) // from TrigZFinder::initialize m_usedphiBinSize = m_phiBinSize; - if ( m_usedphiBinSize < ZFinder_MinPhiSliceSize ) m_usedphiBinSize = ZFinder_MinPhiSliceSize; + if ( m_usedphiBinSize < ZFinder_MinPhiSliceSize and ! m_forcePhiBinSize) m_usedphiBinSize = ZFinder_MinPhiSliceSize; if ( m_dphideta > 0 ) m_dphideta *= -m_dphideta; m_invPhiSliceSize = 180./(M_PI*m_usedphiBinSize); diff --git a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.h b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.h index 8c3f70481277434d738b9e33007e9337ce81f407..346d37ff4b11e1ba78d4ed8e236a92a0dac13878 100644 --- a/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.h +++ b/Trigger/TrigTools/IDScanZFinder/src/TrigZFinderInternal.h @@ -91,6 +91,7 @@ protected: // data members long m_NumPhiSlices = 0L; // the number of phi slices, given the width of the RoI double m_phiBinSize; // the size of the phi slices + bool m_forcePhiBinSize; // respect the config of phi bin even if below reasonable threshold double m_usedphiBinSize; // the size of the phi slices double m_ROIphiWidth; // the phi width of the ROI double m_usedROIphiWidth; // the phi width of the ROI diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref index ea6b84ed7d0c2750c5bc2e253d7ace7f4beefbbf..897758612a16ccec080d715836d0830988fab339 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref @@ -24,7 +24,7 @@ HLT_10j40_pf_ftf_presel7j35_L14J15: 0: 3 stepFeatures: 0: 3 -HLT_2e12_lhloose_mu10_L12EM8VH_MU10: +HLT_2e12_lhloose_mu10_L12EM8VH_MU8F: eventCount: 0 stepCounts: 0: 1 @@ -79,7 +79,7 @@ HLT_2e5_lhvloose_bBeeM6000_L12EM3: 2: 20 3: 15 4: 5 -HLT_2g10_loose_mu20_L1MU20: +HLT_2g10_loose_mu20_L1MU14FCH: eventCount: 0 stepCounts: 0: 5 @@ -171,13 +171,13 @@ HLT_2g50_tight_L1EM7_EMPTY: eventCount: 0 HLT_2g50_tight_L1EM7_UNPAIRED_ISO: eventCount: 0 -HLT_2j100_L1CEP-CJ50: +HLT_2j100_L1CEP-CjJ50: eventCount: 0 -HLT_2j100_L1CEP-CJ60: +HLT_2j100_L1CEP-CjJ60: eventCount: 0 -HLT_2j120_mb_afprec_afpdijet_L1CEP-CJ50: +HLT_2j120_mb_afprec_afpdijet_L1CEP-CjJ50: eventCount: 0 -HLT_2j135_mb_afprec_afpdijet_L1CEP-CJ60: +HLT_2j135_mb_afprec_afpdijet_L1CEP-CjJ60: eventCount: 0 HLT_2j20_mb_afprec_afpdijet_L1RD0_FILLED: eventCount: 0 @@ -349,19 +349,6 @@ HLT_2j55_0eta290_020jvt_pf_ftf_bdl1r60_2j55_pf_ftf_0eta320_L14J15p0ETA25: 0: 18 1: 33 2: 2 -HLT_2mu10_bJpsimumu_L12MU10: - eventCount: 0 - stepCounts: - 0: 2 - 1: 1 - 2: 1 - 3: 1 - stepFeatures: - 0: 4 - 1: 3 - 2: 2 - 3: 2 - 4: 2 HLT_2mu10_bJpsimumu_L12MU8F: eventCount: 0 stepCounts: @@ -375,19 +362,6 @@ HLT_2mu10_bJpsimumu_L12MU8F: 2: 2 3: 2 4: 2 -HLT_2mu10_bUpsimumu_L12MU10: - eventCount: 0 - stepCounts: - 0: 2 - 1: 1 - 2: 1 - 3: 1 - stepFeatures: - 0: 4 - 1: 3 - 2: 2 - 3: 2 - 4: 2 HLT_2mu10_bUpsimumu_L12MU8F: eventCount: 0 stepCounts: @@ -401,20 +375,10 @@ HLT_2mu10_bUpsimumu_L12MU8F: 2: 2 3: 2 4: 2 -HLT_2mu10_l2mt_L1MU10: +HLT_2mu10_l2mt_L1MU10BOM: + eventCount: 0 +HLT_2mu10_l2mt_L1MU8F: eventCount: 0 -HLT_2mu14_L12MU10: - eventCount: 1 - stepCounts: - 0: 2 - 1: 1 - 2: 1 - 3: 1 - stepFeatures: - 0: 4 - 1: 2 - 2: 2 - 3: 2 HLT_2mu14_L12MU8F: eventCount: 1 stepCounts: @@ -427,19 +391,7 @@ HLT_2mu14_L12MU8F: 1: 2 2: 2 3: 2 -HLT_2mu14_l2io_L12MU10: - eventCount: 1 - stepCounts: - 0: 2 - 1: 1 - 2: 1 - 3: 1 - stepFeatures: - 0: 4 - 1: 2 - 2: 2 - 3: 2 -HLT_2mu15_L12MU10: +HLT_2mu14_l2io_L12MU8F: eventCount: 1 stepCounts: 0: 2 @@ -463,7 +415,7 @@ HLT_2mu15_L12MU8F: 1: 2 2: 2 3: 2 -HLT_2mu4_L12MU4: +HLT_2mu4_L12MU3V: eventCount: 3 stepCounts: 0: 4 @@ -475,11 +427,11 @@ HLT_2mu4_L12MU4: 1: 6 2: 10 3: 8 -HLT_2mu4_bBmumu_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bBmumu_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bBmumux_BcmumuDsloose_L12MU4: +HLT_2mu4_bBmumux_BcmumuDsloose_L12MU3V: eventCount: 0 stepCounts: 0: 4 @@ -492,7 +444,7 @@ HLT_2mu4_bBmumux_BcmumuDsloose_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_bBmumux_BcmumuPi_L12MU4: +HLT_2mu4_bBmumux_BcmumuPi_L12MU3V: eventCount: 0 stepCounts: 0: 4 @@ -505,7 +457,7 @@ HLT_2mu4_bBmumux_BcmumuPi_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_bBmumux_BdmumuKst_L12MU4: +HLT_2mu4_bBmumux_BdmumuKst_L12MU3V: eventCount: 1 stepCounts: 0: 4 @@ -519,7 +471,7 @@ HLT_2mu4_bBmumux_BdmumuKst_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_bBmumux_BpmumuKp_L12MU4: +HLT_2mu4_bBmumux_BpmumuKp_L12MU3V: eventCount: 1 stepCounts: 0: 4 @@ -533,9 +485,9 @@ HLT_2mu4_bBmumux_BpmumuKp_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bBmumux_BsmumuPhi_L12MU4: +HLT_2mu4_bBmumux_BsmumuPhi_L12MU3V: eventCount: 0 stepCounts: 0: 4 @@ -548,9 +500,9 @@ HLT_2mu4_bBmumux_BsmumuPhi_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bBmumux_LbPqKm_L12MU4: +HLT_2mu4_bBmumux_LbPqKm_L12MU3V: eventCount: 0 stepCounts: 0: 4 @@ -563,7 +515,7 @@ HLT_2mu4_bBmumux_LbPqKm_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_bDimu_L12MU4: +HLT_2mu4_bDimu_L12MU3V: eventCount: 1 stepCounts: 0: 4 @@ -577,7 +529,7 @@ HLT_2mu4_bDimu_L12MU4: 2: 10 3: 8 4: 8 -HLT_2mu4_bJpsimumu_L12MU4: +HLT_2mu4_bJpsimumu_L12MU3V: eventCount: 1 stepCounts: 0: 4 @@ -591,9 +543,9 @@ HLT_2mu4_bJpsimumu_L12MU4: 2: 10 3: 8 4: 8 -HLT_2mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bUpsimumu_L12MU4: +HLT_2mu4_bUpsimumu_L12MU3V: eventCount: 0 stepCounts: 0: 4 @@ -606,7 +558,7 @@ HLT_2mu4_bUpsimumu_L12MU4: 2: 10 3: 8 4: 8 -HLT_2mu4_muonqual_L12MU4: +HLT_2mu4_muonqual_L12MU3V: eventCount: 3 stepCounts: 0: 4 @@ -618,7 +570,7 @@ HLT_2mu4_muonqual_L12MU4: 1: 6 2: 10 3: 8 -HLT_2mu4_noL2Comb_bBmumux_BcmumuPi_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_BcmumuPi_L12MU3V: eventCount: 0 stepCounts: 0: 4 @@ -631,7 +583,7 @@ HLT_2mu4_noL2Comb_bBmumux_BcmumuPi_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_noL2Comb_bBmumux_BdmumuKst_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_BdmumuKst_L12MU3V: eventCount: 1 stepCounts: 0: 4 @@ -645,7 +597,7 @@ HLT_2mu4_noL2Comb_bBmumux_BdmumuKst_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_noL2Comb_bBmumux_BpmumuKp_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_BpmumuKp_L12MU3V: eventCount: 1 stepCounts: 0: 4 @@ -659,7 +611,7 @@ HLT_2mu4_noL2Comb_bBmumux_BpmumuKp_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_noL2Comb_bBmumux_BsmumuPhi_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_BsmumuPhi_L12MU3V: eventCount: 0 stepCounts: 0: 4 @@ -672,7 +624,7 @@ HLT_2mu4_noL2Comb_bBmumux_BsmumuPhi_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_noL2Comb_bBmumux_LbPqKm_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_LbPqKm_L12MU3V: eventCount: 0 stepCounts: 0: 4 @@ -685,7 +637,7 @@ HLT_2mu4_noL2Comb_bBmumux_LbPqKm_L12MU4: 2: 10 3: 8 4: 4 -HLT_2mu4_noL2Comb_bJpsimumu_L12MU4: +HLT_2mu4_noL2Comb_bJpsimumu_L12MU3V: eventCount: 1 stepCounts: 0: 4 @@ -699,13 +651,13 @@ HLT_2mu4_noL2Comb_bJpsimumu_L12MU4: 2: 10 3: 8 4: 8 -HLT_2mu50_msonly_L1MU20: +HLT_2mu50_msonly_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_10invm70_L1MU6: +HLT_2mu6_10invm70_L1MU5VF: eventCount: 2 stepCounts: 0: 3 @@ -717,7 +669,7 @@ HLT_2mu6_10invm70_L1MU6: 1: 6 2: 8 3: 7 -HLT_2mu6_10invmAA70_L1MU6: +HLT_2mu6_10invmAA70_L1MU5VF: eventCount: 2 stepCounts: 0: 3 @@ -731,7 +683,7 @@ HLT_2mu6_10invmAA70_L1MU6: 3: 7 HLT_2mu6_2j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF: eventCount: 0 -HLT_2mu6_L12MU6: +HLT_2mu6_L12MU5VF: eventCount: 3 stepCounts: 0: 3 @@ -743,13 +695,13 @@ HLT_2mu6_L12MU6: 1: 6 2: 8 3: 7 -HLT_2mu6_bBmumu_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bBmumu_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bBmumu_Lxy0_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bBmumu_Lxy0_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bBmumux_BpmumuKp_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bBmumux_BpmumuKp_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bBmumux_BpmumuKp_L1LFV-MU6: +HLT_2mu6_bBmumux_BpmumuKp_L1LFV-MU5VF: eventCount: 1 stepCounts: 0: 3 @@ -763,9 +715,9 @@ HLT_2mu6_bBmumux_BpmumuKp_L1LFV-MU6: 2: 8 3: 7 4: 3 -HLT_2mu6_bBmumux_BsmumuPhi_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bBmumux_BsmumuPhi_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bBmumux_BsmumuPhi_L1LFV-MU6: +HLT_2mu6_bBmumux_BsmumuPhi_L1LFV-MU5VF: eventCount: 0 stepCounts: 0: 3 @@ -778,7 +730,7 @@ HLT_2mu6_bBmumux_BsmumuPhi_L1LFV-MU6: 2: 8 3: 7 4: 3 -HLT_2mu6_bDimu_L12MU6: +HLT_2mu6_bDimu_L12MU5VF: eventCount: 1 stepCounts: 0: 3 @@ -792,9 +744,9 @@ HLT_2mu6_bDimu_L12MU6: 2: 8 3: 7 4: 7 -HLT_2mu6_bDimu_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bDimu_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bDimu_L1LFV-MU6: +HLT_2mu6_bDimu_L1LFV-MU5VF: eventCount: 1 stepCounts: 0: 3 @@ -808,11 +760,11 @@ HLT_2mu6_bDimu_L1LFV-MU6: 2: 8 3: 7 4: 7 -HLT_2mu6_bJpsimumu_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bJpsimumu_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bJpsimumu_Lxy0_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bJpsimumu_Lxy0_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bPhi_L1LFV-MU6: +HLT_2mu6_bPhi_L1LFV-MU5VF: eventCount: 0 stepCounts: 0: 3 @@ -825,9 +777,9 @@ HLT_2mu6_bPhi_L1LFV-MU6: 2: 8 3: 7 4: 7 -HLT_2mu6_bUpsimumu_L1BPH-8M15-0DR22-2MU6: +HLT_2mu6_bUpsimumu_L1BPH-8M15-0DR22-2MU5VF: eventCount: 0 -HLT_2mu6_l2io_L12MU6: +HLT_2mu6_l2io_L12MU5VF: eventCount: 3 stepCounts: 0: 3 @@ -839,11 +791,11 @@ HLT_2mu6_l2io_L12MU6: 1: 8 2: 8 3: 7 -HLT_2mu6_mu4_bTau_L12MU6_3MU4: +HLT_2mu6_mu4_bTau_L12MU5VF_3MU3V: eventCount: 0 -HLT_2mu6_mu4_bUpsi_L12MU6_3MU4: +HLT_2mu6_mu4_bUpsi_L12MU5VF_3MU3V: eventCount: 0 -HLT_2mu6_muonqual_L12MU6: +HLT_2mu6_muonqual_L12MU5VF: eventCount: 3 stepCounts: 0: 3 @@ -855,7 +807,7 @@ HLT_2mu6_muonqual_L12MU6: 1: 6 2: 8 3: 7 -HLT_2mu6_noL2Comb_bJpsimumu_L12MU6: +HLT_2mu6_noL2Comb_bJpsimumu_L12MU5VF: eventCount: 1 stepCounts: 0: 3 @@ -973,7 +925,7 @@ HLT_3j65_0eta290_020jvt_pf_ftf_bdl1r85_L1J45p0ETA21_3J15p0ETA25: 0: 12 1: 20 2: 7 -HLT_3mu4_bDimu2700_L13MU4: +HLT_3mu4_bDimu2700_L13MU3V: eventCount: 0 stepCounts: 0: 1 @@ -985,74 +937,42 @@ HLT_3mu4_bJpsi_L13MU3V: 0: 1 stepFeatures: 0: 3 -HLT_3mu4_bJpsi_L13MU4: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_3mu4_bPhi_L13MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_3mu4_bPhi_L13MU4: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_3mu4_bTau_L13MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_3mu4_bTau_L13MU4: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_3mu4_bUpsi_L13MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_3mu4_bUpsi_L13MU4: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_3mu6_L13MU5VF: eventCount: 0 -HLT_3mu6_L13MU6: - eventCount: 0 HLT_3mu6_bDimu_L13MU5VF: eventCount: 0 -HLT_3mu6_bDimu_L13MU6: +HLT_3mu6_bJpsi_L13MU5VF: eventCount: 0 -HLT_3mu6_bJpsi_L13MU6: +HLT_3mu6_bTau_L13MU5VF: eventCount: 0 -HLT_3mu6_bTau_L13MU6: - eventCount: 0 -HLT_3mu6_bUpsi_L13MU6: +HLT_3mu6_bUpsi_L13MU5VF: eventCount: 0 HLT_3mu6_msonly_L13MU5VF: eventCount: 0 -HLT_3mu6_msonly_L13MU6: - eventCount: 0 -HLT_3mu6_msonly_L1MU4_UNPAIRED_ISO: +HLT_3mu6_msonly_L1MU3V_UNPAIRED_ISO: eventCount: 0 -HLT_3mu6_msonly_L1MU6_EMPTY: +HLT_3mu6_msonly_L1MU5VF_EMPTY: eventCount: 0 HLT_3mu8_msonly_L13MU5VF: eventCount: 0 -HLT_3mu8_msonly_L13MU6: - eventCount: 0 HLT_4j115_ftf_L13J50: eventCount: 1 stepCounts: @@ -1186,12 +1106,8 @@ HLT_4j85_L13J50: 0: 4 HLT_4mu4_L14MU3V: eventCount: 0 -HLT_4mu4_L14MU4: - eventCount: 0 HLT_4mu4_bDimu6000_L14MU3V: eventCount: 0 -HLT_4mu4_bDimu6000_L14MU4: - eventCount: 0 HLT_5j24_L14J15: eventCount: 13 stepCounts: @@ -1686,7 +1602,7 @@ HLT_e120_lhvloose_L1EM22VHI: 2: 1 3: 1 4: 1 -HLT_e12_lhloose_2mu10_L12MU10: +HLT_e12_lhloose_2mu10_L12MU8F: eventCount: 0 HLT_e140_dnnloose_L1EM22VHI: eventCount: 0 @@ -1708,17 +1624,17 @@ HLT_e140_lhloose_noringer_L1EM22VHI: 1: 31 2: 3 3: 3 -HLT_e14_lhtight_e4_etcut_1invmAB3_L1JPSI-1M5-EM12: +HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e14_lhtight_e4_etcut_Jpsiee_L1JPSI-1M5-EM12: eventCount: 0 -HLT_e14_lhtight_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: +HLT_e14_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 -HLT_e14_lhtight_noringer_e4_etcut_1invmAB3_L1JPSI-1M5-EM12: +HLT_e14_lhtight_noringer_e4_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e14_lhtight_noringer_e4_etcut_Jpsiee_L1JPSI-1M5-EM12: eventCount: 0 -HLT_e14_lhtight_noringer_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: +HLT_e14_lhtight_noringer_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e15_lhvloose_L1EM10VH: eventCount: 7 @@ -1734,7 +1650,7 @@ HLT_e15_lhvloose_L1EM10VH: 2: 7 3: 7 4: 7 -HLT_e17_lhloose_mu14_L1EM15VH_MU10: +HLT_e17_lhloose_mu14_L1EM15VH_MU8F: eventCount: 2 stepCounts: 0: 5 @@ -1898,7 +1814,7 @@ HLT_e20_lhloose_L1EM7_AFP_A_AND_C: eventCount: 0 HLT_e20_lhloose_L1EM7_AFP_A_OR_C: eventCount: 0 -HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM18M: +HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM15M: eventCount: 0 HLT_e20_lhvloose_L1EM15VH: eventCount: 6 @@ -3368,17 +3284,17 @@ HLT_e5_dnntight_L1EM3: 3: 22 4: 6 HLT_e5_etcut_L1eEM3: - eventCount: 19 + eventCount: 18 stepCounts: 0: 20 1: 19 - 2: 19 - 3: 19 + 2: 18 + 3: 18 stepFeatures: - 0: 252 - 1: 664 - 2: 308 - 3: 162 + 0: 138 + 1: 437 + 2: 207 + 3: 94 HLT_e5_idperf_gsf_tight_L1EM3: eventCount: 13 stepCounts: @@ -3449,29 +3365,29 @@ HLT_e5_idperf_tight_L1EM3: 2: 24 3: 22 4: 22 -HLT_e5_lhtight_e14_etcut_1invmAB3_L1JPSI-1M5-EM12: +HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e5_lhtight_e14_etcut_Jpsiee_L1JPSI-1M5-EM12: eventCount: 0 -HLT_e5_lhtight_e14_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: +HLT_e5_lhtight_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 -HLT_e5_lhtight_e9_etcut_1invmAB3_L1JPSI-1M5-EM7: +HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 HLT_e5_lhtight_e9_etcut_Jpsiee_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e5_lhtight_e9_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: +HLT_e5_lhtight_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e5_lhtight_noringer_e14_etcut_1invmAB3_L1JPSI-1M5-EM12: +HLT_e5_lhtight_noringer_e14_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e5_lhtight_noringer_e14_etcut_Jpsiee_L1JPSI-1M5-EM12: eventCount: 0 -HLT_e5_lhtight_noringer_e14_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: +HLT_e5_lhtight_noringer_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 -HLT_e5_lhtight_noringer_e9_etcut_1invmAB3_L1JPSI-1M5-EM7: +HLT_e5_lhtight_noringer_e9_etcut_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 HLT_e5_lhtight_noringer_e9_etcut_Jpsiee_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e5_lhtight_noringer_e9_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: +HLT_e5_lhtight_noringer_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 HLT_e5_lhvloose_j70_0eta320_j50_0eta490_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF: eventCount: 0 @@ -3619,7 +3535,7 @@ HLT_e70_lhloose_xe70_cell_L1EM22VHI: 3: 1 4: 1 5: 1 -HLT_e7_lhmedium_mu24_L1MU20: +HLT_e7_lhmedium_mu24_L1MU14FCH: eventCount: 1 stepCounts: 0: 5 @@ -3655,21 +3571,21 @@ HLT_e80_lhvloose_L1EM22VHI: 2: 1 3: 1 4: 1 -HLT_e9_lhtight_e4_etcut_1invmAB3_L1JPSI-1M5-EM7: +HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 HLT_e9_lhtight_e4_etcut_Jpsiee_L1JPSI-1M5-EM7: eventCount: 0 HLT_e9_lhtight_e4_etcut_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e9_lhtight_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: +HLT_e9_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e9_lhtight_noringer_e4_etcut_1invmAB3_L1JPSI-1M5-EM7: +HLT_e9_lhtight_noringer_e4_etcut_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 HLT_e9_lhtight_noringer_e4_etcut_Jpsiee_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e9_lhtight_noringer_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: +HLT_e9_lhtight_noringer_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e9_lhvloose_mu20_mu8noL1_L1MU20: +HLT_e9_lhvloose_mu20_mu8noL1_L1MU14FCH: eventCount: 0 stepCounts: 0: 4 @@ -3698,11 +3614,11 @@ HLT_eb_low_L1RD2_FILLED: stepFeatures: 0: 19 HLT_eb_medium_L1RD2_FILLED: - eventCount: 20 + eventCount: 19 stepCounts: - 0: 20 + 0: 19 stepFeatures: - 0: 20 + 0: 19 HLT_g0_hiptrt_L1EM22VHI: eventCount: 0 stepCounts: @@ -3757,7 +3673,7 @@ HLT_g140_loose_L1EM22VHI: 0: 3 1: 3 2: 3 -HLT_g15_loose_2mu10_msonly_L12MU10: +HLT_g15_loose_2mu10_msonly_L12MU8F: eventCount: 0 stepCounts: 0: 2 @@ -3767,11 +3683,11 @@ HLT_g15_loose_2mu10_msonly_L12MU10: 0: 2 1: 1 2: 1 -HLT_g15_loose_2mu10_msonly_L1MU4_EMPTY: +HLT_g15_loose_2mu10_msonly_L1MU3V_EMPTY: eventCount: 0 -HLT_g15_loose_2mu10_msonly_L1MU4_UNPAIRED_ISO: +HLT_g15_loose_2mu10_msonly_L1MU3V_UNPAIRED_ISO: eventCount: 0 -HLT_g15_loose_2mu10_msonly_L1MU6_EMPTY: +HLT_g15_loose_2mu10_msonly_L1MU5VF_EMPTY: eventCount: 0 HLT_g15_loose_L1EM10VH: eventCount: 8 @@ -3947,7 +3863,7 @@ HLT_g25_medium_j35_pf_ftf_0eta490_bdl1r77_3j35_pf_ftf_0eta490_j0_pf_ftf_DJMASS70 4: 18 5: 16 6: 2 -HLT_g25_medium_mu24_L1MU20: +HLT_g25_medium_mu24_L1MU14FCH: eventCount: 0 stepCounts: 0: 4 @@ -3961,7 +3877,7 @@ HLT_g25_medium_mu24_L1MU20: 2: 7 3: 3 4: 2 -HLT_g25_medium_mu24_ivarmedium_L1MU20: +HLT_g25_medium_mu24_ivarmedium_L1MU14FCH: eventCount: 0 stepCounts: 0: 3 @@ -4657,7 +4573,7 @@ HLT_g40_loose_L1EM20VH: 3: 6 HLT_g40_loose_LArPEBHLT_L1EM20VHI: eventCount: 0 -HLT_g40_loose_mu40_msonly_L1MU20: +HLT_g40_loose_mu40_msonly_L1MU14FCH: eventCount: 0 stepCounts: 0: 4 @@ -5384,6 +5300,10 @@ HLT_j25_320eta490_L1RD0_FILLED: 0: 2 stepFeatures: 0: 2 +HLT_j25_320eta490_LArPEBHLT_L1J15p31ETA49: + eventCount: 0 +HLT_j25_LArPEBHLT_L1J15: + eventCount: 0 HLT_j25_pf_ftf_L1RD0_FILLED: eventCount: 20 stepCounts: @@ -6548,15 +6468,7 @@ HLT_j80_j60_SHARED_j40__L1J15: stepFeatures: 0: 48 1: 136 -? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU10_2J15_J20 -: eventCount: 5 - stepCounts: - 0: 10 - 1: 5 - stepFeatures: - 0: 40 - 1: 92 -HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU20: +HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU14FCH: eventCount: 4 stepCounts: 0: 6 @@ -6564,6 +6476,14 @@ HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jv stepFeatures: 0: 24 1: 71 +? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU8F_2J15_J20 +: eventCount: 5 + stepCounts: + 0: 10 + 1: 5 + stepFeatures: + 0: 40 + 1: 92 ? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_2j20_pf_ftf_0eta240_020jvt_bdl1r60_L1J45p0ETA21_3J15p0ETA25 : eventCount: 2 stepCounts: @@ -6652,7 +6572,7 @@ HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jv 0: 72 1: 228 2: 16 -? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j28_pf_ftf_0eta240_020jvt_bdl1r70_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU10_2J15_J20 +? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j28_pf_ftf_0eta240_020jvt_bdl1r70_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU8F_2J15_J20 : eventCount: 3 stepCounts: 0: 10 @@ -6710,7 +6630,7 @@ HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jv 0: 84 1: 254 2: 33 -? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU10_2J15_J20 +? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU8F_2J15_J20 : eventCount: 4 stepCounts: 0: 10 @@ -6728,15 +6648,7 @@ HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_ stepFeatures: 0: 48 1: 186 -HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU10_2J15_J20: - eventCount: 6 - stepCounts: - 0: 10 - 1: 6 - stepFeatures: - 0: 40 - 1: 115 -HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU20: +HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU14FCH: eventCount: 5 stepCounts: 0: 6 @@ -6744,6 +6656,14 @@ HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_ stepFeatures: 0: 24 1: 92 +HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU8F_2J15_J20: + eventCount: 6 + stepCounts: + 0: 10 + 1: 6 + stepFeatures: + 0: 40 + 1: 115 ? HLT_j80_pf_ftf_0eta240_j60_pf_ftf_0eta320_j45_pf_ftf_320eta490_SHARED_2j45_pf_ftf_0eta290_bdl1r60_L1J40p0ETA25_2J25_J20p31ETA49 : eventCount: 1 stepCounts: @@ -6883,6 +6803,36 @@ HLT_j85_pf_ftf_preselj20_L1J20: 1: 23 HLT_l1topodebug_legacy_L1All: eventCount: 0 +HLT_larnoiseburst_L1All: + eventCount: 18 + stepCounts: + 0: 18 + stepFeatures: + 0: 18 +HLT_larnoiseburst_L1J100: + eventCount: 4 + stepCounts: + 0: 4 + stepFeatures: + 0: 4 +HLT_larnoiseburst_L1J40_XE50: + eventCount: 5 + stepCounts: + 0: 5 + stepFeatures: + 0: 5 +HLT_larnoiseburst_L1J40_XE60: + eventCount: 3 + stepCounts: + 0: 3 + stepFeatures: + 0: 3 +HLT_larnoiseburst_L1J75: + eventCount: 7 + stepCounts: + 0: 7 + stepFeatures: + 0: 7 HLT_larnoiseburst_L1XE60: eventCount: 5 stepCounts: @@ -6917,9 +6867,9 @@ HLT_mb_afprec_L1AFP_A_AND_C_TOF_T0T1_J50: eventCount: 0 HLT_mb_afprec_L1AFP_A_AND_C_TOF_T0T1_J75: eventCount: 0 -HLT_mb_afprec_L1CEP-CJ50: +HLT_mb_afprec_L1CEP-CjJ50: eventCount: 0 -HLT_mb_afprec_L1CEP-CJ60: +HLT_mb_afprec_L1CEP-CjJ60: eventCount: 0 HLT_mb_afprec_L1RD0_FILLED: eventCount: 0 @@ -7025,11 +6975,11 @@ HLT_mb_sptrk_pt8_L1RD0_FILLED: eventCount: 0 HLT_mb_sptrk_vetombts2in_L1RD0_FILLED: eventCount: 0 -HLT_mu0_muoncalib_L1MU20: +HLT_mu0_muoncalib_L1MU14FCH: eventCount: 0 -HLT_mu0_muoncalib_L1MU4_EMPTY: +HLT_mu0_muoncalib_L1MU3V_EMPTY: eventCount: 0 -HLT_mu10_L1MU10: +HLT_mu10_L1MU8F: eventCount: 8 stepCounts: 0: 10 @@ -7057,20 +7007,6 @@ HLT_mu10_ivarmedium_j70_0eta320_j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF: 3: 2 4: 1 5: 11 -HLT_mu10_ivarmedium_mu10_10invm70_L12MU10: - eventCount: 1 - stepCounts: - 0: 2 - 1: 1 - 2: 1 - 3: 1 - 4: 1 - stepFeatures: - 0: 8 - 1: 6 - 2: 4 - 3: 4 - 4: 1 HLT_mu10_ivarmedium_mu10_10invm70_L12MU8F: eventCount: 1 stepCounts: @@ -7085,21 +7021,13 @@ HLT_mu10_ivarmedium_mu10_10invm70_L12MU8F: 2: 4 3: 4 4: 1 -HLT_mu10_lateMu_L1LATE-MU10_XE50: - eventCount: 0 -HLT_mu11_mu6_bBmumu_L1LFV-MU11: +HLT_mu10_l2mt_mu4_l2mt_bJpsimumu_L1MU10BOM: eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - 2: 1 stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 - 4: 4 -HLT_mu11_mu6_bBmumu_L1MU11_2MU6: + 0: 2 +HLT_mu10_lateMu_L1LATE-MU8F_XE50: + eventCount: 0 +HLT_mu11_mu6_bBmumu_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 3 @@ -7123,16 +7051,6 @@ HLT_mu11_mu6_bBmumu_L1MU8VF_2MU5VF: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bBmumux_BcmumuPi_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 HLT_mu11_mu6_bBmumux_BcmumuPi_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: @@ -7143,16 +7061,6 @@ HLT_mu11_mu6_bBmumux_BcmumuPi_L1MU8VF_2MU5VF: 1: 11 2: 10 3: 4 -HLT_mu11_mu6_bBmumux_BdmumuKst_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 HLT_mu11_mu6_bBmumux_BdmumuKst_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: @@ -7163,17 +7071,7 @@ HLT_mu11_mu6_bBmumux_BdmumuKst_L1MU8VF_2MU5VF: 1: 11 2: 10 3: 4 -HLT_mu11_mu6_bBmumux_BpmumuKp_L1LFV-MU11: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 -HLT_mu11_mu6_bBmumux_BpmumuKp_L1MU11_2MU6: +HLT_mu11_mu6_bBmumux_BpmumuKp_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 3 @@ -7193,16 +7091,6 @@ HLT_mu11_mu6_bBmumux_BpmumuKp_L1MU8VF_2MU5VF: 1: 11 2: 10 3: 4 -HLT_mu11_mu6_bBmumux_BsmumuPhi_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 HLT_mu11_mu6_bBmumux_BsmumuPhi_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: @@ -7213,16 +7101,6 @@ HLT_mu11_mu6_bBmumux_BsmumuPhi_L1MU8VF_2MU5VF: 1: 11 2: 10 3: 4 -HLT_mu11_mu6_bBmumux_LbPqKm_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 HLT_mu11_mu6_bBmumux_LbPqKm_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: @@ -7233,19 +7111,7 @@ HLT_mu11_mu6_bBmumux_LbPqKm_L1MU8VF_2MU5VF: 1: 11 2: 10 3: 4 -HLT_mu11_mu6_bDimu2700_L1LFV-MU11: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - 2: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 - 4: 4 -HLT_mu11_mu6_bDimu2700_L1MU11_2MU6: +HLT_mu11_mu6_bDimu2700_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 3 @@ -7269,19 +7135,7 @@ HLT_mu11_mu6_bDimu2700_L1MU8VF_2MU5VF: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bDimu2700_Lxy0_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - 2: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 - 4: 4 -HLT_mu11_mu6_bDimu_L1LFV-MU11: +HLT_mu11_mu6_bDimu2700_Lxy0_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 3 @@ -7293,7 +7147,7 @@ HLT_mu11_mu6_bDimu_L1LFV-MU11: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bDimu_L1MU11_2MU6: +HLT_mu11_mu6_bDimu_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 3 @@ -7317,19 +7171,7 @@ HLT_mu11_mu6_bDimu_L1MU8VF_2MU5VF: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bDimu_Lxy0_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - 2: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 - 4: 4 -HLT_mu11_mu6_bJpsimumu_L1LFV-MU11: +HLT_mu11_mu6_bDimu_Lxy0_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 3 @@ -7341,7 +7183,7 @@ HLT_mu11_mu6_bJpsimumu_L1LFV-MU11: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bJpsimumu_L1MU11_2MU6: +HLT_mu11_mu6_bJpsimumu_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 3 @@ -7365,7 +7207,7 @@ HLT_mu11_mu6_bJpsimumu_L1MU8VF_2MU5VF: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bJpsimumu_Lxy0_L1MU11_2MU6: +HLT_mu11_mu6_bJpsimumu_Lxy0_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 3 @@ -7377,7 +7219,7 @@ HLT_mu11_mu6_bJpsimumu_Lxy0_L1MU11_2MU6: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bPhi_L1LFV-MU11: +HLT_mu11_mu6_bPhi_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 3 @@ -7389,7 +7231,7 @@ HLT_mu11_mu6_bPhi_L1LFV-MU11: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bPhi_L1MU11_2MU6: +HLT_mu11_mu6_bPhi_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 3 @@ -7401,7 +7243,7 @@ HLT_mu11_mu6_bPhi_L1MU11_2MU6: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bPhi_L1MU8VF_2MU5VF: +HLT_mu11_mu6_bTau_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 3 @@ -7413,7 +7255,7 @@ HLT_mu11_mu6_bPhi_L1MU8VF_2MU5VF: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bTau_L1LFV-MU11: +HLT_mu11_mu6_bTau_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 3 @@ -7425,7 +7267,7 @@ HLT_mu11_mu6_bTau_L1LFV-MU11: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bTau_L1MU11_2MU6: +HLT_mu11_mu6_bUpsimumu_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 3 @@ -7437,7 +7279,7 @@ HLT_mu11_mu6_bTau_L1MU11_2MU6: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bTau_L1MU8VF_2MU5VF: +HLT_mu11_mu6_bUpsimumu_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 3 @@ -7449,44 +7291,8 @@ HLT_mu11_mu6_bTau_L1MU8VF_2MU5VF: 2: 10 3: 4 4: 4 -HLT_mu11_mu6_bUpsimumu_L1LFV-MU11: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - 2: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 - 4: 4 -HLT_mu11_mu6_bUpsimumu_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - 2: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 - 4: 4 -HLT_mu11_mu6_bUpsimumu_L1MU8VF_2MU5VF: - eventCount: 0 - stepCounts: - 0: 3 - 1: 1 - 2: 1 - stepFeatures: - 0: 11 - 1: 11 - 2: 10 - 3: 4 - 4: 4 -HLT_mu14_L1MU10: - eventCount: 6 +HLT_mu14_L1MU8F: + eventCount: 6 stepCounts: 0: 10 1: 6 @@ -7497,7 +7303,7 @@ HLT_mu14_L1MU10: 1: 7 2: 7 3: 7 -HLT_mu14_ivarloose_tau25_medium1_tracktwo_03dRAB_L1MU10_TAU12IM_3J12: +HLT_mu14_ivarloose_tau25_medium1_tracktwo_03dRAB_L1MU8F_TAU12IM_3J12: eventCount: 2 stepCounts: 0: 10 @@ -7523,7 +7329,7 @@ HLT_mu14_ivarloose_tau25_medium1_tracktwo_03dRAB_L1MU10_TAU12IM_3J12: 8: 9 9: 9 10: 4 -HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU10_TAU12IM_3J12: +HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU8F_TAU12IM_3J12: eventCount: 3 stepCounts: 0: 10 @@ -7547,7 +7353,7 @@ HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU10_TAU12IM_3J12: 7: 9 8: 9 9: 5 -HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU10_TAU12IM_3J12: +HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU8F_TAU12IM_3J12: eventCount: 3 stepCounts: 0: 10 @@ -7571,7 +7377,7 @@ HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU10_TAU12IM_3J12: 7: 9 8: 9 9: 5 -HLT_mu14_ivarloose_tau35_medium1_tracktwo_03dRAB_L1MU10_TAU20IM: +HLT_mu14_ivarloose_tau35_medium1_tracktwo_03dRAB_L1MU8F_TAU20IM: eventCount: 2 stepCounts: 0: 7 @@ -7597,7 +7403,7 @@ HLT_mu14_ivarloose_tau35_medium1_tracktwo_03dRAB_L1MU10_TAU20IM: 8: 6 9: 6 10: 4 -HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU10_TAU20IM: +HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU8F_TAU20IM: eventCount: 2 stepCounts: 0: 7 @@ -7621,7 +7427,7 @@ HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU10_TAU20IM: 7: 6 8: 6 9: 4 -HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU10_TAU20IM: +HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU8F_TAU20IM: eventCount: 2 stepCounts: 0: 7 @@ -7645,7 +7451,7 @@ HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU10_TAU20IM: 7: 6 8: 6 9: 4 -HLT_mu14_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1MU10_TAU12IM_XE35: +HLT_mu14_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1MU8F_TAU12IM_XE35: eventCount: 1 stepCounts: 0: 7 @@ -7669,7 +7475,7 @@ HLT_mu14_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1MU10_TAU12IM_XE35: 7: 5 8: 3 9: 1 -HLT_mu14_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1MU10_TAU12IM_XE35: +HLT_mu14_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1MU8F_TAU12IM_XE35: eventCount: 1 stepCounts: 0: 7 @@ -7705,19 +7511,7 @@ HLT_mu20_2mu4noL1_L1MU14FCH: 1: 4 2: 4 3: 4 -HLT_mu20_2mu4noL1_L1MU20: - eventCount: 0 - stepCounts: - 0: 6 - 1: 4 - 2: 4 - 3: 4 - stepFeatures: - 0: 7 - 1: 4 - 2: 4 - 3: 4 -HLT_mu20_L1MU6: +HLT_mu20_L1MU5VF: eventCount: 4 stepCounts: 0: 11 @@ -7729,11 +7523,11 @@ HLT_mu20_L1MU6: 1: 4 2: 4 3: 4 -HLT_mu20_L1MU6_AFP_A_AND_C: +HLT_mu20_L1MU5VF_AFP_A_AND_C: eventCount: 0 -HLT_mu20_L1MU6_AFP_A_OR_C: +HLT_mu20_L1MU5VF_AFP_A_OR_C: eventCount: 0 -HLT_mu20_ivarloose_tau20_medium1_tracktwo_03dRAB_L1MU20: +HLT_mu20_ivarloose_tau20_medium1_tracktwo_03dRAB_L1MU14FCH: eventCount: 2 stepCounts: 0: 6 @@ -7759,7 +7553,7 @@ HLT_mu20_ivarloose_tau20_medium1_tracktwo_03dRAB_L1MU20: 8: 9 9: 9 10: 5 -HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -7783,7 +7577,7 @@ HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: 7: 15 8: 15 9: 6 -HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -7825,24 +7619,6 @@ HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU14FCH: 4: 4 5: 6 6: 4 -HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU20: - eventCount: 2 - stepCounts: - 0: 6 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 3 - 6: 2 - stepFeatures: - 0: 7 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 6 - 6: 4 HLT_mu20_ivarmedium_mu8noL1_L1MU14FCH: eventCount: 2 stepCounts: @@ -7861,25 +7637,7 @@ HLT_mu20_ivarmedium_mu8noL1_L1MU14FCH: 4: 4 5: 4 6: 4 -HLT_mu20_ivarmedium_mu8noL1_L1MU20: - eventCount: 2 - stepCounts: - 0: 6 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 2 - 6: 2 - stepFeatures: - 0: 7 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 4 - 6: 4 -HLT_mu20_msonly_L1MU20: +HLT_mu20_msonly_L1MU14FCH: eventCount: 5 stepCounts: 0: 6 @@ -7887,9 +7645,9 @@ HLT_mu20_msonly_L1MU20: stepFeatures: 0: 7 1: 6 -HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L110DR-MU20-MU6: +HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L110DR-MU14FCH-MU5VF: eventCount: 0 -HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU20_J40: +HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU14FCH_J40: eventCount: 1 stepCounts: 0: 6 @@ -7901,7 +7659,7 @@ HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU20_J40: 1: 6 2: 1 3: 2 -HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU20_XE30: +HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU14FCH_XE30: eventCount: 1 stepCounts: 0: 4 @@ -7913,7 +7671,7 @@ HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU20_XE30: 1: 3 2: 1 3: 2 -HLT_mu20_mu2noL1_invmJPsi_os_L1MU20: +HLT_mu20_mu2noL1_invmJPsi_os_L1MU14FCH: eventCount: 0 stepCounts: 0: 6 @@ -7940,18 +7698,6 @@ HLT_mu22_2mu4noL1_L1MU14FCH: 1: 4 2: 4 3: 4 -HLT_mu22_2mu4noL1_L1MU20: - eventCount: 0 - stepCounts: - 0: 6 - 1: 4 - 2: 4 - 3: 4 - stepFeatures: - 0: 7 - 1: 4 - 2: 4 - 3: 4 HLT_mu22_mu10noL1_L1MU14FCH: eventCount: 2 stepCounts: @@ -7968,22 +7714,6 @@ HLT_mu22_mu10noL1_L1MU14FCH: 3: 4 4: 4 5: 4 -HLT_mu22_mu10noL1_L1MU20: - eventCount: 2 - stepCounts: - 0: 6 - 1: 4 - 2: 4 - 3: 4 - 4: 2 - 5: 2 - stepFeatures: - 0: 7 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 4 HLT_mu22_mu8noL1_L1MU14FCH: eventCount: 2 stepCounts: @@ -8000,23 +7730,7 @@ HLT_mu22_mu8noL1_L1MU14FCH: 3: 4 4: 4 5: 4 -HLT_mu22_mu8noL1_L1MU20: - eventCount: 2 - stepCounts: - 0: 6 - 1: 4 - 2: 4 - 3: 4 - 4: 2 - 5: 2 - stepFeatures: - 0: 7 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 4 -HLT_mu24_L1MU20: +HLT_mu24_L1MU14FCH: eventCount: 4 stepCounts: 0: 6 @@ -8034,25 +7748,19 @@ HLT_mu24_LRT_d0loose_L1MU14FCH: 0: 6 stepFeatures: 0: 7 -HLT_mu24_LRT_d0loose_L1MU20: +HLT_mu24_LRT_d0medium_L1MU14FCH: eventCount: 0 stepCounts: 0: 6 stepFeatures: 0: 7 -HLT_mu24_LRT_d0medium_L1MU20: +HLT_mu24_LRT_d0tight_L1MU14FCH: eventCount: 0 stepCounts: 0: 6 stepFeatures: 0: 7 -HLT_mu24_LRT_d0tight_L1MU20: - eventCount: 0 - stepCounts: - 0: 6 - stepFeatures: - 0: 7 -HLT_mu24_LRT_idperf_L1MU20: +HLT_mu24_LRT_idperf_L1MU14FCH: eventCount: 4 stepCounts: 0: 4 @@ -8064,7 +7772,7 @@ HLT_mu24_LRT_idperf_L1MU20: 1: 5 2: 4 3: 4 -HLT_mu24_idperf_L1MU20: +HLT_mu24_idperf_L1MU14FCH: eventCount: 4 stepCounts: 0: 4 @@ -8076,7 +7784,7 @@ HLT_mu24_idperf_L1MU20: 1: 5 2: 4 3: 4 -HLT_mu24_ivarmedium_L1MU20: +HLT_mu24_ivarmedium_L1MU14FCH: eventCount: 4 stepCounts: 0: 6 @@ -8090,7 +7798,7 @@ HLT_mu24_ivarmedium_L1MU20: 2: 4 3: 4 4: 4 -HLT_mu24_ivarmedium_mu6_L1MU20: +HLT_mu24_ivarmedium_mu6_L1MU14FCH: eventCount: 2 stepCounts: 0: 3 @@ -8104,7 +7812,7 @@ HLT_mu24_ivarmedium_mu6_L1MU20: 2: 7 3: 5 4: 2 -HLT_mu24_ivarmedium_mu6_ivarmedium_L1MU20: +HLT_mu24_ivarmedium_mu6_ivarmedium_L1MU14FCH: eventCount: 1 stepCounts: 0: 3 @@ -8118,7 +7826,7 @@ HLT_mu24_ivarmedium_mu6_ivarmedium_L1MU20: 2: 7 3: 5 4: 4 -HLT_mu24_ivarmedium_mu6_ivarmedium_probe_L1MU20: +HLT_mu24_ivarmedium_mu6_ivarmedium_probe_L1MU14FCH: eventCount: 1 stepCounts: 0: 6 @@ -8142,7 +7850,7 @@ HLT_mu24_ivarmedium_mu6_ivarmedium_probe_L1MU20: 7: 5 8: 3 9: 2 -HLT_mu24_ivarmedium_mu6_ivarperf_L1MU20: +HLT_mu24_ivarmedium_mu6_ivarperf_L1MU14FCH: eventCount: 2 stepCounts: 0: 3 @@ -8156,7 +7864,7 @@ HLT_mu24_ivarmedium_mu6_ivarperf_L1MU20: 2: 7 3: 5 4: 5 -HLT_mu24_ivarmedium_mu6_ivarperf_probe_L1MU20: +HLT_mu24_ivarmedium_mu6_ivarperf_probe_L1MU14FCH: eventCount: 2 stepCounts: 0: 6 @@ -8180,7 +7888,7 @@ HLT_mu24_ivarmedium_mu6_ivarperf_probe_L1MU20: 7: 5 8: 3 9: 3 -HLT_mu24_ivarmedium_mu6_probe_L1MU20: +HLT_mu24_ivarmedium_mu6_probe_L1MU14FCH: eventCount: 2 stepCounts: 0: 6 @@ -8202,7 +7910,7 @@ HLT_mu24_ivarmedium_mu6_probe_L1MU20: 6: 5 7: 5 8: 3 -HLT_mu24_mu10noL1_L1MU20: +HLT_mu24_mu10noL1_L1MU14FCH: eventCount: 2 stepCounts: 0: 6 @@ -8218,7 +7926,7 @@ HLT_mu24_mu10noL1_L1MU20: 3: 4 4: 4 5: 4 -HLT_mu24_mu6_L1MU20: +HLT_mu24_mu6_L1MU14FCH: eventCount: 2 stepCounts: 0: 3 @@ -8230,7 +7938,7 @@ HLT_mu24_mu6_L1MU20: 1: 9 2: 7 3: 5 -HLT_mu24_mu6_probe_L1MU20: +HLT_mu24_mu6_probe_L1MU14FCH: eventCount: 2 stepCounts: 0: 6 @@ -8266,23 +7974,7 @@ HLT_mu24_mu8noL1_L1MU14FCH: 3: 4 4: 4 5: 4 -HLT_mu24_mu8noL1_L1MU20: - eventCount: 2 - stepCounts: - 0: 6 - 1: 4 - 2: 4 - 3: 4 - 4: 2 - 5: 2 - stepFeatures: - 0: 7 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - 5: 4 -HLT_mu26_L1MU20: +HLT_mu26_L1MU14FCH: eventCount: 4 stepCounts: 0: 6 @@ -8294,7 +7986,7 @@ HLT_mu26_L1MU20: 1: 4 2: 4 3: 4 -HLT_mu26_ivarmedium_2j20_0eta290_020jvt_pf_ftf_boffperf_L1MU20: +HLT_mu26_ivarmedium_2j20_0eta290_020jvt_pf_ftf_boffperf_L1MU14FCH: eventCount: 4 stepCounts: 0: 6 @@ -8328,21 +8020,7 @@ HLT_mu26_ivarmedium_L1MU14FCH: 2: 4 3: 4 4: 4 -HLT_mu26_ivarmedium_L1MU20: - eventCount: 4 - stepCounts: - 0: 6 - 1: 4 - 2: 4 - 3: 4 - 4: 4 - stepFeatures: - 0: 7 - 1: 4 - 2: 4 - 3: 4 - 4: 4 -HLT_mu26_ivarmedium_tau100_mediumRNN_tracktwoLLP_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau100_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 2 @@ -8366,7 +8044,7 @@ HLT_mu26_ivarmedium_tau100_mediumRNN_tracktwoLLP_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 1 @@ -8390,7 +8068,7 @@ HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 1 @@ -8414,7 +8092,7 @@ HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVA_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarmedium_tau180_mediumRNN_tracktwoLLP_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau180_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 1 @@ -8438,7 +8116,7 @@ HLT_mu26_ivarmedium_tau180_mediumRNN_tracktwoLLP_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -8462,7 +8140,7 @@ HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: 7: 15 8: 15 9: 6 -HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -8486,7 +8164,7 @@ HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU20: 7: 15 8: 15 9: 6 -HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 3 stepCounts: 0: 4 @@ -8510,7 +8188,7 @@ HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVABDT_03dRAB_L1MU20: 7: 6 8: 6 9: 6 -HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 3 stepCounts: 0: 4 @@ -8534,7 +8212,7 @@ HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVA_03dRAB_L1MU20: 7: 6 8: 6 9: 6 -HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 2 stepCounts: 0: 6 @@ -8558,7 +8236,7 @@ HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: 7: 6 8: 6 9: 4 -HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 2 stepCounts: 0: 6 @@ -8582,7 +8260,7 @@ HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU20: 7: 6 8: 6 9: 4 -HLT_mu26_ivarmedium_tau25_perf_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_perf_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -8606,7 +8284,7 @@ HLT_mu26_ivarmedium_tau25_perf_tracktwoMVABDT_03dRAB_L1MU20: 7: 6 8: 6 9: 6 -HLT_mu26_ivarmedium_tau25_perf_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_perf_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -8630,7 +8308,7 @@ HLT_mu26_ivarmedium_tau25_perf_tracktwoMVA_03dRAB_L1MU20: 7: 6 8: 6 9: 6 -HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 3 @@ -8654,7 +8332,7 @@ HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: 7: 4 8: 4 9: 3 -HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 3 @@ -8678,7 +8356,7 @@ HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU20: 7: 4 8: 4 9: 3 -HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 3 @@ -8702,7 +8380,7 @@ HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 3 @@ -8726,7 +8404,7 @@ HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVA_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoLLP_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 6 @@ -8750,7 +8428,7 @@ HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoLLP_03dRAB_L1MU20: 7: 7 8: 7 9: 3 -HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 6 @@ -8774,7 +8452,7 @@ HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: 7: 7 8: 7 9: 3 -HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 6 @@ -8798,7 +8476,7 @@ HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVA_03dRAB_L1MU20: 7: 7 8: 7 9: 3 -HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoLLP_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 2 @@ -8822,7 +8500,7 @@ HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoLLP_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 2 @@ -8846,7 +8524,7 @@ HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 1 stepCounts: 0: 2 @@ -8870,7 +8548,7 @@ HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVA_03dRAB_L1MU20: 7: 3 8: 3 9: 3 -HLT_mu26_ivarperf_L1MU20: +HLT_mu26_ivarperf_L1MU14FCH: eventCount: 4 stepCounts: 0: 6 @@ -8884,7 +8562,7 @@ HLT_mu26_ivarperf_L1MU20: 2: 4 3: 4 4: 4 -HLT_mu28_ivarmedium_L1MU20: +HLT_mu28_ivarmedium_L1MU14FCH: eventCount: 4 stepCounts: 0: 6 @@ -8898,6 +8576,42 @@ HLT_mu28_ivarmedium_L1MU20: 2: 4 3: 4 4: 4 +HLT_mu4_j20_0eta290_pf_ftf_boffperf_dRAB03_L1MU3V: + eventCount: 7 + stepCounts: + 0: 12 + 1: 12 + 2: 12 + 3: 12 + 4: 12 + 5: 12 + 6: 7 + stepFeatures: + 0: 17 + 1: 17 + 2: 21 + 3: 17 + 4: 12 + 5: 105 + 6: 105 +HLT_mu4_j20_0eta290_pf_ftf_boffperf_dRAB03_L1MU3V_J15: + eventCount: 7 + stepCounts: + 0: 12 + 1: 12 + 2: 12 + 3: 12 + 4: 12 + 5: 12 + 6: 7 + stepFeatures: + 0: 17 + 1: 17 + 2: 21 + 3: 17 + 4: 12 + 5: 105 + 6: 105 HLT_mu4_j70_0eta320_j50_0eta490_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF: eventCount: 1 stepCounts: @@ -8912,7 +8626,7 @@ HLT_mu4_j70_0eta320_j50_0eta490_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF: 2: 2 3: 2 4: 12 -HLT_mu4_l2io_L1MU4: +HLT_mu4_l2io_L1MU3V: eventCount: 12 stepCounts: 0: 12 @@ -8936,19 +8650,7 @@ HLT_mu50_L1MU14FCH: 1: 4 2: 3 3: 3 -HLT_mu50_L1MU20: - eventCount: 3 - stepCounts: - 0: 6 - 1: 4 - 2: 3 - 3: 3 - stepFeatures: - 0: 7 - 1: 4 - 2: 3 - 3: 3 -HLT_mu50_RPCPEBSecondaryReadout_L1MU20: +HLT_mu50_RPCPEBSecondaryReadout_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -8970,15 +8672,7 @@ HLT_mu60_0eta105_msonly_L1MU14FCH: stepFeatures: 0: 3 1: 2 -HLT_mu60_0eta105_msonly_L1MU20: - eventCount: 2 - stepCounts: - 0: 3 - 1: 2 - stepFeatures: - 0: 3 - 1: 2 -HLT_mu60_L1MU20: +HLT_mu60_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -8997,13 +8691,6 @@ HLT_mu6_2mu4_bDimu2700_L1MU5VF_3MU3V: stepFeatures: 0: 4 1: 1 -HLT_mu6_2mu4_bDimu2700_L1MU6_3MU4: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 4 - 1: 1 HLT_mu6_2mu4_bDimu6000_L1MU5VF_3MU3V: eventCount: 0 stepCounts: @@ -9011,35 +8698,28 @@ HLT_mu6_2mu4_bDimu6000_L1MU5VF_3MU3V: stepFeatures: 0: 4 1: 1 -HLT_mu6_2mu4_bDimu6000_L1MU6_3MU4: +HLT_mu6_2mu4_bJpsi_L1MU5VF_3MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 4 1: 1 -HLT_mu6_2mu4_bJpsi_L1MU6_3MU4: +HLT_mu6_2mu4_bTau_L1MU5VF_3MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 4 1: 1 -HLT_mu6_2mu4_bTau_L1MU6_3MU4: +HLT_mu6_2mu4_bUpsi_L1MU5VF_3MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 4 1: 1 -HLT_mu6_2mu4_bUpsi_L1MU6_3MU4: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 4 - 1: 1 -HLT_mu6_L1MU6: +HLT_mu6_L1MU5VF: eventCount: 11 stepCounts: 0: 11 @@ -9051,7 +8731,7 @@ HLT_mu6_L1MU6: 1: 14 2: 16 3: 15 -HLT_mu6_LRT_idperf_L1MU6: +HLT_mu6_LRT_idperf_L1MU5VF: eventCount: 11 stepCounts: 0: 11 @@ -9063,7 +8743,7 @@ HLT_mu6_LRT_idperf_L1MU6: 1: 14 2: 16 3: 16 -HLT_mu6_idperf_L1MU6: +HLT_mu6_idperf_L1MU5VF: eventCount: 11 stepCounts: 0: 11 @@ -9075,7 +8755,7 @@ HLT_mu6_idperf_L1MU6: 1: 14 2: 16 3: 16 -HLT_mu6_ivarmedium_L1MU6: +HLT_mu6_ivarmedium_L1MU5VF: eventCount: 7 stepCounts: 0: 11 @@ -9103,7 +8783,7 @@ HLT_mu6_j45_nojcalib_L1J20: 2: 16 3: 15 4: 28 -HLT_mu6_msonly_L1MU6: +HLT_mu6_msonly_L1MU5VF: eventCount: 11 stepCounts: 0: 11 @@ -9111,7 +8791,7 @@ HLT_mu6_msonly_L1MU6: stepFeatures: 0: 14 1: 16 -HLT_mu6_mu4_L12MU4: +HLT_mu6_mu4_L12MU3V: eventCount: 3 stepCounts: 0: 4 @@ -9123,17 +8803,17 @@ HLT_mu6_mu4_L12MU4: 1: 18 2: 24 3: 17 -HLT_mu6_mu4_bBmumu_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bBmumu_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bDimu_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bDimu_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bDimu_L1MU6_2MU4: +HLT_mu6_mu4_bDimu_L1MU5VF_2MU3V: eventCount: 1 stepCounts: 0: 4 @@ -9146,13 +8826,13 @@ HLT_mu6_mu4_bDimu_L1MU6_2MU4: 2: 18 3: 15 4: 15 -HLT_mu6_mu4_bJpsimumu_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bJpsimumu_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bUpsimumu_L1BPH-8M15-0DR22-MU6MU4-BO: +HLT_mu6_mu4_bUpsimumu_L1BPH-8M15-0DR22-MU5VFMU3V-BO: eventCount: 0 -HLT_mu6_mu6noL1_L1MU6: +HLT_mu6_mu6noL1_L1MU5VF: eventCount: 4 stepCounts: 0: 11 @@ -9168,7 +8848,7 @@ HLT_mu6_mu6noL1_L1MU6: 3: 15 4: 9 5: 8 -HLT_mu6_noL2Comb_mu4_noL2Comb_bJpsimumu_L1MU6_2MU4: +HLT_mu6_noL2Comb_mu4_noL2Comb_bJpsimumu_L1MU5VF_2MU3V: eventCount: 1 stepCounts: 0: 4 @@ -9195,7 +8875,7 @@ HLT_mu6_xe30_mht_L1XE30: 2: 11 3: 10 4: 7 -HLT_mu80_L1MU20: +HLT_mu80_L1MU14FCH: eventCount: 3 stepCounts: 0: 6 @@ -9215,15 +8895,7 @@ HLT_mu80_msonly_3layersEC_L1MU14FCH: stepFeatures: 0: 4 1: 3 -HLT_mu80_msonly_3layersEC_L1MU20: - eventCount: 3 - stepCounts: - 0: 4 - 1: 3 - stepFeatures: - 0: 4 - 1: 3 -HLT_mu8_L1MU6: +HLT_mu8_L1MU5VF: eventCount: 9 stepCounts: 0: 11 @@ -9245,12 +8917,24 @@ HLT_noalg_CSCPEB_L1All: 0: 20 stepFeatures: 0: 20 +HLT_noalg_CSCPEB_L1EM3_EMPTY: + eventCount: 0 +HLT_noalg_CSCPEB_L1EM7_EMPTY: + eventCount: 0 +HLT_noalg_CSCPEB_L1J12_EMPTY: + eventCount: 0 +HLT_noalg_CSCPEB_L1J30p31ETA49_EMPTY: + eventCount: 0 +HLT_noalg_CSCPEB_L1TAU8_EMPTY: + eventCount: 0 HLT_noalg_CostMonDS_L1All: eventCount: 20 stepCounts: 0: 20 stepFeatures: 0: 20 +HLT_noalg_L1ABORTGAPNOTCALIB_noPS: + eventCount: 0 HLT_noalg_L1AFP_A_AND_C_TOF_J50: eventCount: 0 HLT_noalg_L1AFP_A_AND_C_TOF_J75: @@ -9261,9 +8945,11 @@ HLT_noalg_L1AFP_A_AND_C_TOF_T0T1_J75: eventCount: 0 HLT_noalg_L1All: eventCount: 20 -HLT_noalg_L1CEP-CJ50: +HLT_noalg_L1Bkg: eventCount: 0 -HLT_noalg_L1CEP-CJ60: +HLT_noalg_L1CEP-CjJ50: + eventCount: 0 +HLT_noalg_L1CEP-CjJ60: eventCount: 0 HLT_noalg_L1Calo: eventCount: 20 @@ -9283,16 +8969,28 @@ HLT_noalg_L1EM22VHI: eventCount: 10 HLT_noalg_L1EM3: eventCount: 20 +HLT_noalg_L1EM3_EMPTY: + eventCount: 0 HLT_noalg_L1EM7: eventCount: 19 HLT_noalg_L1EM7_AFP_A_AND_C: eventCount: 0 HLT_noalg_L1EM7_AFP_A_OR_C: eventCount: 0 +HLT_noalg_L1EM7_EMPTY: + eventCount: 0 HLT_noalg_L1EM8VH: eventCount: 18 +HLT_noalg_L1EMPTY_noPS: + eventCount: 0 +HLT_noalg_L1FIRSTEMPTY_noPS: + eventCount: 0 HLT_noalg_L1J100: eventCount: 5 +HLT_noalg_L1J12_EMPTY: + eventCount: 0 +HLT_noalg_L1J12_FIRSTEMPTY: + eventCount: 0 HLT_noalg_L1J15: eventCount: 20 HLT_noalg_L1J20: @@ -9301,6 +8999,12 @@ HLT_noalg_L1J25: eventCount: 18 HLT_noalg_L1J30: eventCount: 17 +HLT_noalg_L1J30_EMPTY: + eventCount: 0 +HLT_noalg_L1J30_FIRSTEMPTY: + eventCount: 0 +HLT_noalg_L1J30p31ETA49_EMPTY: + eventCount: 0 HLT_noalg_L1J40: eventCount: 17 HLT_noalg_L1J400: @@ -9393,16 +9097,30 @@ HLT_noalg_L1MBTS_2_EMPTY: eventCount: 0 HLT_noalg_L1MBTS_2_UNPAIRED_ISO: eventCount: 0 -HLT_noalg_L1MU6: +HLT_noalg_L1MU5VF: eventCount: 11 -HLT_noalg_L1MU6_AFP_A_AND_C: +HLT_noalg_L1MU5VF_AFP_A_AND_C: eventCount: 0 -HLT_noalg_L1MU6_AFP_A_OR_C: +HLT_noalg_L1MU5VF_AFP_A_OR_C: eventCount: 0 +HLT_noalg_L1PhysicsHigh_noPS: + eventCount: 18 +HLT_noalg_L1PhysicsVeryHigh_noPS: + eventCount: 6 HLT_noalg_L1RD0_EMPTY: eventCount: 0 HLT_noalg_L1RD0_FILLED: eventCount: 20 +HLT_noalg_L1RD0_FIRSTEMPTY: + eventCount: 0 +HLT_noalg_L1RD1_EMPTY: + eventCount: 0 +HLT_noalg_L1RD2_EMPTY: + eventCount: 0 +HLT_noalg_L1RD3_EMPTY: + eventCount: 0 +HLT_noalg_L1RD3_FILLED: + eventCount: 20 HLT_noalg_L1Standby: eventCount: 20 HLT_noalg_L1TAU12IM: @@ -9415,6 +9133,14 @@ HLT_noalg_L1TAU60: eventCount: 7 HLT_noalg_L1TAU8: eventCount: 20 +HLT_noalg_L1TAU8_EMPTY: + eventCount: 0 +HLT_noalg_L1TGC_BURST: + eventCount: 0 +HLT_noalg_L1UNPAIRED_ISO_noPS: + eventCount: 0 +HLT_noalg_L1UNPAIRED_NONISO_noPS: + eventCount: 0 HLT_noalg_L1XE30: eventCount: 14 HLT_noalg_L1XE300: @@ -9431,8 +9157,14 @@ HLT_noalg_L1XE55: eventCount: 8 HLT_noalg_L1XE60: eventCount: 6 -HLT_noalg_L1eEM10: - eventCount: 18 +HLT_noalg_L1ZB: + eventCount: 0 +HLT_noalg_L1cTAU12M: + eventCount: 0 +HLT_noalg_L1cTAU20M: + eventCount: 0 +HLT_noalg_L1cTAU25M: + eventCount: 0 HLT_noalg_L1eEM10L: eventCount: 0 HLT_noalg_L1eEM15: @@ -9441,8 +9173,6 @@ HLT_noalg_L1eEM15L: eventCount: 0 HLT_noalg_L1eEM15M: eventCount: 0 -HLT_noalg_L1eEM18M: - eventCount: 0 HLT_noalg_L1eEM20: eventCount: 14 HLT_noalg_L1eEM20L: @@ -9450,33 +9180,35 @@ HLT_noalg_L1eEM20L: HLT_noalg_L1eEM20M: eventCount: 0 HLT_noalg_L1eEM22: - eventCount: 13 + eventCount: 14 +HLT_noalg_L1eEM22L: + eventCount: 0 HLT_noalg_L1eEM22M: eventCount: 0 HLT_noalg_L1eEM22T: eventCount: 0 HLT_noalg_L1eEM3: eventCount: 20 -HLT_noalg_L1eEM7: - eventCount: 18 +HLT_noalg_L1eEM5: + eventCount: 20 HLT_noalg_L1eEM8: eventCount: 18 HLT_noalg_L1eEM8L: eventCount: 0 +HLT_noalg_L1eEM8M: + eventCount: 0 HLT_noalg_L1eTAU100: eventCount: 0 HLT_noalg_L1eTAU12: eventCount: 0 +HLT_noalg_L1eTAU12L: + eventCount: 0 HLT_noalg_L1eTAU12M: eventCount: 0 HLT_noalg_L1eTAU20: eventCount: 0 -HLT_noalg_L1eTAU20M: - eventCount: 0 HLT_noalg_L1eTAU25: eventCount: 0 -HLT_noalg_L1eTAU25M: - eventCount: 0 HLT_noalg_L1eTAU30H: eventCount: 0 HLT_noalg_L1eTAU40: @@ -9485,64 +9217,30 @@ HLT_noalg_L1eTAU60: eventCount: 0 HLT_noalg_L1eTAU8: eventCount: 0 +HLT_noalg_L1jTAU12: + eventCount: 0 +HLT_noalg_L1jTAU12M: + eventCount: 0 +HLT_noalg_LArPEBCalib_L1LAR-ZEE: + eventCount: 1 + stepCounts: + 0: 1 + stepFeatures: + 0: 1 HLT_noalg_LArPEBCalib_L1RD0_BGRP11: eventCount: 0 HLT_noalg_LArPEBCalib_L1RD0_EMPTY: eventCount: 0 HLT_noalg_SCTPEB_L1RD0_EMPTY: eventCount: 0 -HLT_noalg_bkg_L1Bkg: - eventCount: 0 -HLT_noalg_cosmiccalo_L1EM3_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1EM7_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J12_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J12_FIRSTEMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J30_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J30_FIRSTEMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J30p31ETA49_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1RD0_FIRSTEMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1RD1_EMPTY: - eventCount: 0 -HLT_noalg_eb_L1ABORTGAPNOTCALIB_noPS: - eventCount: 0 -HLT_noalg_eb_L1EMPTY_noPS: - eventCount: 0 -HLT_noalg_eb_L1FIRSTEMPTY_noPS: - eventCount: 0 -HLT_noalg_eb_L1PhysicsHigh_noPS: - eventCount: 18 -HLT_noalg_eb_L1PhysicsVeryHigh_noPS: - eventCount: 6 -HLT_noalg_eb_L1RD3_EMPTY: - eventCount: 0 -HLT_noalg_eb_L1RD3_FILLED: - eventCount: 20 -HLT_noalg_eb_L1UNPAIRED_ISO_noPS: - eventCount: 0 -HLT_noalg_eb_L1UNPAIRED_NONISO_noPS: - eventCount: 0 HLT_noalg_idmon_L1RD0_EMPTY: eventCount: 0 HLT_noalg_idmon_L1RD0_FILLED: eventCount: 20 HLT_noalg_idmon_L1RD0_UNPAIRED_ISO: eventCount: 0 -HLT_noalg_l1calo_L1J400: - eventCount: 1 HLT_noalg_laser_TilePEB_L1CALREQ2: eventCount: 0 -HLT_noalg_mb_L1RD2_EMPTY: - eventCount: 0 -HLT_noalg_zb_L1ZB: - eventCount: 0 HLT_tau0_ptonly_L1TAU60: eventCount: 7 stepCounts: @@ -10248,8 +9946,6 @@ HLT_tau35_mediumRNN_tracktwoMVABDT_L1TAU20IM: 4: 9 HLT_tau35_mediumRNN_tracktwoMVABDT_L1eTAU20: eventCount: 0 -HLT_tau35_mediumRNN_tracktwoMVABDT_L1eTAU20M: - eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVABDT_probe_xe110_pfsum_vssk_L1XE50: eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVABDT_tau25_mediumRNN_tracktwoMVABDT_03dRAB30_L1DR-TAU20ITAU12I-J25: @@ -10689,12 +10385,18 @@ HLT_tau80_tightRNN_tracktwoLLP_tau60_tightRNN_tracktwoLLP_03dRAB_L1TAU60_2TAU40: 4: 9 HLT_timeburner_L1All: eventCount: 0 -HLT_unconvtrk0_fslrt_L1All: - eventCount: 20 +HLT_unconvtrk0_fslrt_L14J15: + eventCount: 13 stepCounts: - 0: 20 + 0: 13 stepFeatures: - 0: 20 + 0: 13 +HLT_unconvtrk0_fslrt_L1J100: + eventCount: 5 + stepCounts: + 0: 5 + stepFeatures: + 0: 5 HLT_unconvtrk0_fslrt_L1XE50: eventCount: 8 stepCounts: @@ -11038,7 +10740,7 @@ HLT_xe80_tcpufit_unconvtrk25_dedx_medium_L1XE50: stepFeatures: 0: 4 1: 4 - 2: 1 + 2: 3 HLT_xe80_tcpufit_unconvtrk50_dedx_medium_L1XE50: eventCount: 1 stepCounts: @@ -11048,4 +10750,4 @@ HLT_xe80_tcpufit_unconvtrk50_dedx_medium_L1XE50: stepFeatures: 0: 4 1: 4 - 2: 1 + 2: 2 diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/testAthenaTrigAOD_TrigDecTool.py b/Trigger/TrigValidation/TrigAnalysisTest/share/testAthenaTrigAOD_TrigDecTool.py index cd706e30fbdf2c4b507b10a3cf0eb8b6d17da435..ec5c816e3f43d4d3a58318724ce10a7c33abc620 100644 --- a/Trigger/TrigValidation/TrigAnalysisTest/share/testAthenaTrigAOD_TrigDecTool.py +++ b/Trigger/TrigValidation/TrigAnalysisTest/share/testAthenaTrigAOD_TrigDecTool.py @@ -87,20 +87,19 @@ TrigDecChecker = TrigDecisionChecker("TrigDecChecker") TrigDecChecker.WriteEventDecision=False TrigDecChecker.MonitoringBlock=100 TrigDecChecker.MonitoredChains=[] -#TrigDecChecker.OutputLevel=DEBUG -#from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool -#tdt = Trig__TrigDecisionTool("TrigDecisionTool") -#ToolSvc += tdt +from AthenaCommon.Configurable import Configurable +Configurable.configurableRun3Behavior+=1 +from TrigDecisionTool.TrigDecisionToolConfig import getTrigDecisionTool +tdtAcc = getTrigDecisionTool(ConfigFlags) +Configurable.configurableRun3Behavior-=1 -#from AthenaCommon.GlobalFlags import GlobalFlags -#GlobalFlags.DetGeo.set_atlas() +theTDT = tdtAcc.getPrimary() +from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable, appendCAtoAthena -from TrigDecisionTool.TrigDecisionToolConf import Trig__TrigDecisionTool -ToolSvc += Trig__TrigDecisionTool( "TrigDecisionTool" ) +TrigDecChecker.TrigDecisionTool = conf2toConfigurable(theTDT) -from TrigEDMConfig.TriggerEDM import EDMLibraries -ToolSvc.TrigDecisionTool.Navigation.Dlls = EDMLibraries +appendCAtoAthena( tdtAcc ) from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() diff --git a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py index 7d0ea16c940f2e61d00bf852dbbab4b84cfba6f0..f9c3bba04f9cbba609d015d1a9c01c6441d71e25 100644 --- a/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py +++ b/Trigger/TrigValidation/TrigInDetValidation/python/TrigInDetArtSteps.py @@ -93,18 +93,17 @@ class TrigInDetReco(ExecStep): chains += "'HLT_e5_idperf_loose_lrtloose_L1EM3'," chains += "'HLT_e26_idperf_loose_lrtloose_L1EM22VHI'," flags += 'doEgammaSlice=True;' - if (i=='electron') : + if ('electron' in i) : # chains += "'HLT_e5_etcut_L1EM3'," ## need an idperf chain once one is in the menu - # chains += "'HLT_e17_lhvloose_nod0_L1EM15VH'," + # chains += "'HLT_e17_lhvloose_nod0_L1EM15VH'," chains += "'HLT_e26_gsf_lhtight_ivarloose_L1EM22VHI'," chains += "'HLT_e26_idperf_loose_L1EM24VHI'," chains += "'HLT_e28_idperf_loose_L1EM24VHI'," chains += "'HLT_e5_idperf_loose_L1EM3'," chains += "'HLT_e5_idperf_tight_L1EM3'," flags += 'doEgammaSlice=True;' - if (i=='electron-tnp') : - chains += "'HLT_e26_lhtight_ivarloose_e5_lhvloose_idperf_probe_L1EM22VHI'," - flags += 'doEgammaSlice=True;' + if ('tnp' in i) : + chains += "'HLT_e26_lhtight_ivarloose_e5_lhvloose_idperf_probe_L1EM22VHI'," if (i=='tau') : chains += "'HLT_tau25_idperf_tracktwo_L1TAU12IM'," chains += "'HLT_tau25_idperf_tracktwoMVA_L1TAU12IM'," @@ -231,16 +230,11 @@ class TrigInDetRdictStep(Step): os.system( 'get_files -data Test_bin.dat &> /dev/null' ) os.system( 'get_files -data Test_bin_larged0.dat &> /dev/null' ) os.system( 'get_files -data Test_bin_lrt.dat &> /dev/null' ) - os.system( 'get_files -data TIDAdata-chains-run3.dat &> /dev/null' ) - os.system( 'get_files -data TIDAhisto-panel.dat &> /dev/null' ) - os.system( 'get_files -data TIDAhisto-panel-vtx.dat &> /dev/null' ) - os.system( 'get_files -data TIDAhistos-vtx.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-larged0.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-larged0-el.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-lrt.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-minbias.dat &> /dev/null' ) - os.system( 'get_files -data TIDAdata-run3-minbias-offline.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata_cuts.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-offline.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-offline-rzMatcher.dat &> /dev/null' ) @@ -249,9 +243,10 @@ class TrigInDetRdictStep(Step): os.system( 'get_files -data TIDAdata-run3-offline-larged0-el.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-offline-lrt.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-offline-vtx.dat &> /dev/null' ) - os.system( 'get_files -data TIDAdata_cuts-offline.dat &> /dev/null' ) - os.system( 'get_files -data TIDAhisto-panel-TnP.dat &> /dev/null' ) + os.system( 'get_files -data TIDAdata-run3-minbias-offline.dat &> /dev/null' ) os.system( 'get_files -data TIDAdata-run3-offline-TnP.dat &> /dev/null' ) + os.system( 'get_files -data TIDAdata_cuts-offline.dat &> /dev/null' ) + os.system( 'get_files -data TIDAdata-chains-run3.dat &> /dev/null' ) super(TrigInDetRdictStep, self).configure(test) @@ -285,6 +280,11 @@ class TrigInDetCompStep(RefComparisonStep): self.required = True self.args = args self.executable = 'TIDAcomparitor' + os.system( 'get_files -data TIDAhisto-panel.dat &> /dev/null' ) + os.system( 'get_files -data TIDAhisto-panel-vtx.dat &> /dev/null' ) + os.system( 'get_files -data TIDAhistos-vtx.dat &> /dev/null' ) + os.system( 'get_files -data TIDAhisto-panel-TnP.dat &> /dev/null' ) + os.system( 'get_files -data TIDAhisto-tier0.dat &> /dev/null' ) def configure(self, test): diff --git a/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py b/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py index ad8c81ea7aee5a5010d98fa9a9a362855b58341d..beb40ea60a213509e98e79eb1288a12f0fe75afc 100644 --- a/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py +++ b/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_AODtoTrkNtuple.py @@ -49,6 +49,11 @@ HLTMonManager = CfgMgr.AthenaMonManager( "HLTMonManager") algseq += HLTMonManager # HLTMonManager = algseq.HLTMonManager +doTier0Mon = False + +if 'doTIDATier0' in locals(): + doTier0Mon = doTIDATier0 + ############ TrigIDtrkMonitoring part ################################ @@ -59,7 +64,7 @@ from AthenaCommon.AppMgr import ToolSvc from TrigInDetAnalysisExample.TrigInDetAnalysisExampleConf import TrigTestBase -if ( False ) : +if doTier0Mon : from TrigIDtrkMonitoring.TrigIDtrkMonitoringConfig import TrigIDtrkMonitoringTool diff --git a/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_Base.py b/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_Base.py index bd62f0cb840326ae3b78f24dbf403252e729948f..884f2fe46837d3e06dd57289453a59b92d071176 100644 --- a/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_Base.py +++ b/Trigger/TrigValidation/TrigInDetValidation/share/TrigInDetValidation_Base.py @@ -16,7 +16,7 @@ from TrigInDetValidation.TrigInDetArtSteps import TrigInDetReco, TrigInDetAna, T import os,sys,getopt try: - opts, args = getopt.getopt(sys.argv[1:],"lcxptmn:",["local","config"]) + opts, args = getopt.getopt(sys.argv[1:],"lcxptrmn:",["local","config"]) except getopt.GetoptError: print("Usage: ") print("-l | --local run locally with input file from art eos grid-input") @@ -36,7 +36,7 @@ costplot = False postproc = False testconfig = False dry_run = False - +runstuff = True if "Art_type" not in locals(): Art_type = 'grid' if "GridFiles" not in locals(): GridFiles=False @@ -53,6 +53,8 @@ for opt,arg in opts: costplot=True if opt=="-n": Events_local=int(arg) + if opt=="-r": + runstuff=False if opt in ("-c", "--config"): testconfig = True if opt=="-t": @@ -142,7 +144,10 @@ rdo_to_cost = TrigCostStep() if dry_run: test.dry_run = True if (not exclude): - test.exec_steps = [rdo2aod, aod_to_ntup, rdo_to_cost] + if runstuff: + test.exec_steps = [rdo2aod, aod_to_ntup, rdo_to_cost] + else: + test.exec_steps = [aod_to_ntup] test.check_steps = CheckSteps.default_check_steps(test) # Run TIDArdict diff --git a/Trigger/TrigValidation/TrigInDetValidation/share/comparitor.json b/Trigger/TrigValidation/TrigInDetValidation/share/comparitor.json index 9864f4586ba7200ab15529327ea142755c6faa58..932670d8ca211ecee083d4e29c01c8d85e0035df 100644 --- a/Trigger/TrigValidation/TrigInDetValidation/share/comparitor.json +++ b/Trigger/TrigValidation/TrigInDetValidation/share/comparitor.json @@ -77,7 +77,10 @@ "EFbphys":{ "chains" : "HLT_2mu4_bBmumux_BsmumuPhi_L12MU4:HLT_IDTrack_Bmumux_FTF HLT_2mu4_bBmumux_BsmumuPhi_L12MU4:HLT_IDTrack_Bmumux_IDTrig" }, - "TagnProbe":{ + "L2electronTnP":{ + "chains" : "HLT_e26_lhtight_ivarloose_e5_lhvloose_idperf_probe_L1EM22VHI:HLT_IDTrack_Electron_FTF:HLT_Roi_FastElectron:1" + }, + "EFelectronTnP":{ "chains" : "HLT_e26_lhtight_ivarloose_e5_lhvloose_idperf_probe_L1EM22VHI:HLT_IDTrack_Electron_FTF:HLT_Roi_FastElectron:1 HLT_e26_lhtight_ivarloose_e5_lhvloose_idperf_probe_L1EM22VHI:HLT_IDTrack_Electron_IDTrig:HLT_Roi_FastElectron:1" } } diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_cl_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_cl_pu55.py similarity index 98% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_cl_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_cl_pu55.py index 15d900a6eeb79b84a1c2ca7a4dfec741bdef0ee2..41e0430b13416c01d6a3918d8a52810155ff8253 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_cl_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_cl_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for all_ttbar_cl_pu40 +# art-description: art job for all_ttbar_cl_pu55 # art-type: grid # art-include: master/Athena # art-athena-mt: 8 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_eff_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_eff_pu55.py similarity index 98% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_eff_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_eff_pu55.py index 360833ae46464797cef20db1f7aab25b947ee1cc..155bc26ce7bbec4d275971f982e29c22f894733c 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_eff_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_eff_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for all_ttbar_eff_pu40 +# art-description: art job for all_ttbar_eff_pu55 # art-type: grid # art-include: master/Athena # art-athena-mt: 8 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_idtrigconfig_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_idtrigconfig_pu55.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_idtrigconfig_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_idtrigconfig_pu55.py index c711c397a3dc5d6cecca82f5071d0fe08781ed80..808b204fb213d9e1b4b16bdf4396b261a008005d 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_idtrigconfig_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_idtrigconfig_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for all_ttbar_idtrigconfig_pu40 +# art-description: art job for all_ttbar_idtrigconfig_pu55 # art-type: grid # art-include: master/Athena # art-athena-mt: 8 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu55.py similarity index 98% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu55.py index f5516af8417b5e7468ca60d14be5868029e6e50e..c5f7ab20a83a705dd179a982956745de9c959129 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for all_ttbar_pu40 +# art-description: art job for all_ttbar_pu55 # art-type: grid # art-include: master/Athena # art-athena-mt: 8 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_tier0_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_tier0_pu40.py new file mode 100755 index 0000000000000000000000000000000000000000..16368df2e6cb317c3b9c675e8e28b7668a183ffb --- /dev/null +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_tier0_pu40.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +# art-description: art job for all_ttbar_tier0_pu40 +# art-type: grid +# art-include: master/Athena +# art-athena-mt: 8 +# art-memory: 4096 +# art-html: https://idtrigger-val.web.cern.ch/idtrigger-val/TIDAWeb/TIDAart/?jobdir= +# art-output: *.txt +# art-output: *.log +# art-output: log.* +# art-output: *.out +# art-output: *.err +# art-output: *.log.tar.gz +# art-output: *.new +# art-output: *.json +# art-output: *.root +# art-output: *.check* +# art-output: HLT* +# art-output: times* +# art-output: cost-perCall +# art-output: cost-perEvent +# art-output: cost-perCall-chain +# art-output: cost-perEvent-chain +# art-output: *.dat + + +Slices = ['muon','electron','tau','bjet','fsjet'] +Events = 4000 +Threads = 8 +Slots = 8 +Release = "current" + +ExtraAna = " -c doTIDATier0=True " + +Input = 'ttbar' # defined in TrigValTools/share/TrigValInputs.json + +Jobs = [] + +Comp = [ ( "L2muon", "L2muon", "TIDA_T0.root", " -b HLT/TRIDT/Muon/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTL2-plots-muon " ), + ( "L2electron", "L2electron", "TIDA_T0.root", " -b HLT/TRIDT/Electron/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTL2-plots-electron " ), + ( "L2tau", "L2tau", "TIDA_T0.root", " -b HLT/TRIDT/Tau/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTL2-plots-tau " ), + ( "L2bjet", "L2bjet", "TIDA_T0.root", " -b HLT/TRIDT/Bjet/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTL2-plots-bjet " ), + ( "FSjetoffline", "L2fsjet", "TIDA_T0.root", " -b HLT/TRIDT/Bjet/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTL2-plots-FS " ), + + ( "EFmuon", "EFmuon", "TIDA_T0.root", " -b HLT/TRIDT/Muon/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTEF-plots-muon " ), + ( "EFelectron", "EFelectron", "TIDA_T0.root", " -b HLT/TRIDT/Electron/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTEF-plots-electron " ), + ( "EFtau", "EFtau", "TIDA_T0.root", " -b HLT/TRIDT/Tau/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTEF-plots-tau " ), + ( "EFbjet", "EFbjet", "TIDA_T0.root", " -b HLT/TRIDT/Bjet/Expert -s '_HLT_IDTrack' '/HLT_IDTrack' -c TIDAhisto-tier0.dat --ncols 3 -d HLTEF-plots-bjet " ) ] + +from AthenaCommon.Include import include +include("TrigInDetValidation/TrigInDetValidation_Base.py") + diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet.py index 824100077d6c1467f0f3ebd1b5b1dc4447ad8de3..209769197a2b983e213a9d7c01ece2832b937835 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for bjet_pu40_mt +# art-description: art job for bjet # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_lowpt_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_lowpt.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_lowpt_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_lowpt.py index ffa03fc534bcd0d551719a7337ecf5a77f976ec3..1840f50ae6b42fe222b63ff70eba94455f4c5a15 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_lowpt_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_lowpt.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for bjet_lowpt_pu40 +# art-description: art job for bjet_lowpt # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_nopps_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_nopps.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_nopps_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_nopps.py index ef7be3e6b4b68b65f269716a2c2a9837f6235645..118a7e4680de05d9c9f62b826ae521a83bcf7c4f 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_nopps_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bjet_nopps.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for bjet_pu40_mt +# art-description: art job for bjet_nopps # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bphys.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bphys.py index 56639a6da8dd788a1b00b5cdb33fc2c0d65efb23..dbc8a77ac8cdfb65c39aa04608a69f814b685b01 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bphys.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_bphys.py @@ -33,8 +33,8 @@ Input = 'Bphys_JpsiPhi' # defined in TrigValTools/share/TrigValInputs.json preinclude_file = 'all:TrigInDetValidation/TIDV_cond_fix.py' #conditions fix for ATR-23982. In future find a more recent RDO -Jobs = [ ( "Truth", " TIDAdata-run3.dat -o data-hists.root " ), - ( "Offline", " TIDAdata-run3-offline.dat -r Offline -o data-hists-offline.root" ) ] +Jobs = [ ( "Truth", " TIDAdata-run3-larged0.dat -o data-hists.root " ), + ( "Offline", " TIDAdata-run3-offline-larged0.dat -r Offline -o data-hists-offline.root" ) ] Comp = [ ( "L2bphys", "L2bphys", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots " ), ( "L2bphysoffline", "L2bphys", "data-hists-offline.root", " -c TIDAhisto-panel.dat -d HLTL2-plots-offline " ), diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_singlee_7-80_larged0_pu.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_singlee_7-80_larged0_pu.py index 9f59d6bc37d67392db2234c6701deb292d146157..920b6ac2ee74572a9127ba7b9ec727dc2eb8cccb 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_singlee_7-80_larged0_pu.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_singlee_7-80_larged0_pu.py @@ -31,7 +31,7 @@ Slices = ['electron'] Events = 20000 Threads = 8 Slots = 8 -Input = 'Single_el_larged0_pu' # defined in TrigValTools/share/TrigValInputs.json +Input = 'Single_el_larged0_pu40' # defined in TrigValTools/share/TrigValInputs.json GridFiles=True preinclude_file = 'all:TrigInDetValidation/TIDV_cond_fix.py' #conditions fix for ATR-23982. In future find a more recent RDO diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_singlee_7-80_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_singlee_7-80_pu40.py index abd52d6db27be46bdf7bd1d3e868157a1d6a23bb..2a71a9a226b39d880974684a64e4aa16ded934cc 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_singlee_7-80_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_singlee_7-80_pu40.py @@ -3,7 +3,7 @@ # art-description: art job for el_singlee_7-80_pu40 # art-type: grid # art-include: master/Athena -# art-input: mc15_13TeV.159010.ParticleGenerator_e_Et7to80.recon.RDO.e1948_s2726_r7728 +# art-input: mc15_13TeV.159010.ParticleGenerator_e_Et7to80.recon.RDO.e1948_s2726_r7772 # art-input-nfiles: 10 # art-athena-mt: 8 # art-memory: 4096 @@ -31,7 +31,7 @@ Slices = ['electron'] Events = 20000 Threads = 8 Slots = 8 -Input = 'Single_el_pu' # defined in TrigValTools/share/TrigValInputs.json +Input = 'Single_el_pu40' # defined in TrigValTools/share/TrigValInputs.json GridFiles=True preinclude_file = 'all:TrigInDetValidation/TIDV_cond_fix.py' #conditions fix for ATR-23982. In future find a more recent RDO diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_zee_pu40_TnP.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_zee_pu40_TnP.py index e62281e685468cdfb9ed231e3ff1680bbd9af924..670bde0367015f8cb281cd6c5a5c29c089d1f455 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_zee_pu40_TnP.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_el_zee_pu40_TnP.py @@ -36,12 +36,16 @@ Release = "current" GridFiles = True preinclude_file = 'all:TrigInDetValidation/TIDV_cond_fix.py' #conditions fix for ATR-23982. In future find a more recent RDO -Jobs = [( "Offline", " TIDAdata-run3-offline-TnP.dat -r Offline -o data-hists-offline-TnP.root" ) ] - -Comp = [( "TagnProbe", "TagnProbe", "data-hists-offline-TnP.root", " -c TIDAhisto-panel-TnP.dat -d HLT-plots-TnP " ) ] - +Jobs = [( "Truth", " TIDAdata-run3.dat -o data-hists.root -p 11" ), + ( "Offline", " TIDAdata-run3-offline-TnP.dat -r Offline -o data-hists-offline.root" )] + +Comp = [( "L2ele", "L2electron", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTL2-plots " ), + ( "L2eleoffline", "L2electronTnP", "data-hists-offline.root", " -c TIDAhisto-panel-TnP.dat -d HLTL2-plots-offline " ), + ( "EFele", "EFelectron", "data-hists.root", " -c TIDAhisto-panel.dat -d HLTEF-plots " ), + ( "EFeleoffline", "EFelectronTnP", "data-hists-offline.root", " -c TIDAhisto-panel-TnP.dat -d HLTEF-plots-offline " ) ] + from AthenaCommon.Include import include include("TrigInDetValidation/TrigInDetValidation_Base.py") diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_ellrt_staustau.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_ellrt_staustau.py index ba569920b07616ff156912efa35966f48f35d07e..bda6677383f7c69df50cea4dccfb186d26319776 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_ellrt_staustau.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_ellrt_staustau.py @@ -3,7 +3,6 @@ # art-description: art job for mu_Zmumu_pu40 # art-type: grid # art-include: master/Athena -# art-input: mc15_13TeV.361107.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zmumu.recon.RDO.e3601_s2576_s2132_r7143 # art-input-nfiles: 4 # art-athena-mt: 8 # art-memory: 4096 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_dedx_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_dedx_pu55.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_dedx_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_dedx_pu55.py index d47d07926cb649cb165eae8a4f0753eb41c7c5de..193f480fb0bc7839dbd6b77d5f61df3bafe10e12 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_dedx_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_dedx_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for fsjet_dedx_pu40 +# art-description: art job for fsjet_dedx_pu55 # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml2_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml2_pu55.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml2_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml2_pu55.py index af022aa6df3b5c2e10f660b0078efdc61f212426..e5170b04cfe310000868553e3a351914a809dc53 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml2_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml2_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for fsjet_ml2_pu40 +# art-description: art job for fsjet_ml2_pu55 # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml_pu55.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml_pu55.py index 1fd14b23f4128fa8246c1afbf8bb9988367b7786..2fcadf66a4162c92728317b5bc77df82a9729e41 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_ml_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for fsjet_ml_pu40 +# art-description: art job for fsjet_ml_pu55 # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_nopps_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_nopps_pu55.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_nopps_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_nopps_pu55.py index feb9a4be509072bab918a593bb27b67d985458ef..592f1a9c2a05a8510fa5c61b02f84b8bbbef0c2f 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_nopps_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_nopps_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for fsjet_nopps_pu40 +# art-description: art job for fsjet_nopps_pu55 # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu55.py similarity index 98% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu55.py index 192f2c45f714e8062433eb4473c3b3c6e58f67c3..676651f41ee1b3525e6288aa50c23794ae2ba3c0 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for fsjet_pu40 +# art-description: art job for fsjet_pu55 # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu40_st.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu55_st.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu40_st.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu55_st.py index 9a0b6137f8c29cf8ebe097c6798e6214029eecbb..9d7ab5453b469bd5f29cf355eefd1f3896c20d6b 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu40_st.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_pu55_st.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for fsjet_pu40_st +# art-description: art job for fsjet_pu55_st # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_vtx_pu40.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_vtx_pu55.py similarity index 97% rename from Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_vtx_pu40.py rename to Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_vtx_pu55.py index 77be6b756f675ba1b016559d2f7f509bdf8b9adb..9982ed855151a31ee7e0ed608bd2bf6edeeea27e 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_vtx_pu40.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fsjet_vtx_pu55.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# art-description: art job for fsjet_vtx_pu40 +# art-description: art job for fsjet_vtx_pu55 # art-type: grid # art-include: master/Athena # art-input-nfiles: 3 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fslrt_rhadron.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fslrt_rhadron.py index 8da95e3962137fe21da88dc1eaf295bd75b9d61b..a43d44ad5bfb199586cdcc078faff115fb6506a7 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fslrt_rhadron.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_fslrt_rhadron.py @@ -3,7 +3,6 @@ # art-description: art job for mu_Zmumu_pu40 # art-type: grid # art-include: master/Athena -# art-input: mc15_13TeV.361107.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zmumu.recon.RDO.e3601_s2576_s2132_r7143 # art-input-nfiles: 4 # art-athena-mt: 8 # art-memory: 4096 diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_staustau.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_staustau.py index 3927e610212015ccbe629ffa609a131d0e2b716f..0857ffdc9cbea39d632b9ae5942fca434b84cfed 100755 --- a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_staustau.py +++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_mulrt_staustau.py @@ -3,7 +3,6 @@ # art-description: art job for mu_Zmumu_pu40 # art-type: grid # art-include: master/Athena -# art-input: mc15_13TeV.361107.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zmumu.recon.RDO.e3601_s2576_s2132_r7143 # art-input-nfiles: 4 # art-athena-mt: 8 # art-memory: 4096 diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref index 1ca2a74268aa7c5df8b4418939a6f35c6896b708..7a1c496380dabc154bcce95e02ffdea87665e271 100644 --- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref +++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref @@ -8,7 +8,7 @@ HLT_10j40_pf_ftf_presel7j28_L14J15: eventCount: 0 HLT_10j40_pf_ftf_presel7j35_L14J15: eventCount: 0 -HLT_2e12_lhloose_mu10_L12EM8VH_MU10: +HLT_2e12_lhloose_mu10_L12EM8VH_MU8F: eventCount: 0 HLT_2e17_gsf_lhvloose_L12EM15VHI: eventCount: 0 @@ -34,7 +34,7 @@ HLT_2e5_lhvloose_bBeeM6000_L12EM3: 1: 49 2: 4 3: 4 -HLT_2g10_loose_mu20_L1MU20: +HLT_2g10_loose_mu20_L1MU14FCH: eventCount: 0 HLT_2g15_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM12M: eventCount: 0 @@ -68,13 +68,13 @@ HLT_2g50_tight_L1EM7_EMPTY: eventCount: 0 HLT_2g50_tight_L1EM7_UNPAIRED_ISO: eventCount: 0 -HLT_2j100_L1CEP-CJ50: +HLT_2j100_L1CEP-CjJ50: eventCount: 0 -HLT_2j100_L1CEP-CJ60: +HLT_2j100_L1CEP-CjJ60: eventCount: 0 -HLT_2j120_mb_afprec_afpdijet_L1CEP-CJ50: +HLT_2j120_mb_afprec_afpdijet_L1CEP-CjJ50: eventCount: 0 -HLT_2j135_mb_afprec_afpdijet_L1CEP-CJ60: +HLT_2j135_mb_afprec_afpdijet_L1CEP-CjJ60: eventCount: 0 HLT_2j20_mb_afprec_afpdijet_L1RD0_FILLED: eventCount: 0 @@ -123,153 +123,147 @@ HLT_2j45_pf_ftf_bdl1r70_j0_pf_ftf_HT300_j0_pf_ftf_DJMASS700j35_L1HT150-J20s5pETA eventCount: 0 HLT_2j55_0eta290_020jvt_pf_ftf_bdl1r60_2j55_pf_ftf_0eta320_L14J15p0ETA25: eventCount: 0 -HLT_2mu10_bJpsimumu_L12MU10: - eventCount: 0 HLT_2mu10_bJpsimumu_L12MU8F: eventCount: 0 -HLT_2mu10_bUpsimumu_L12MU10: - eventCount: 0 HLT_2mu10_bUpsimumu_L12MU8F: eventCount: 0 -HLT_2mu10_l2mt_L1MU10: +HLT_2mu10_l2mt_L1MU10BOM: eventCount: 0 -HLT_2mu14_L12MU10: +HLT_2mu10_l2mt_L1MU8F: eventCount: 0 HLT_2mu14_L12MU8F: eventCount: 0 -HLT_2mu14_l2io_L12MU10: - eventCount: 0 -HLT_2mu15_L12MU10: +HLT_2mu14_l2io_L12MU8F: eventCount: 0 HLT_2mu15_L12MU8F: eventCount: 0 -HLT_2mu4_L12MU4: +HLT_2mu4_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bBmumu_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bBmumu_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bBmumux_BcmumuDsloose_L12MU4: +HLT_2mu4_bBmumux_BcmumuDsloose_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bBmumux_BcmumuPi_L12MU4: +HLT_2mu4_bBmumux_BcmumuPi_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bBmumux_BdmumuKst_L12MU4: +HLT_2mu4_bBmumux_BdmumuKst_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bBmumux_BpmumuKp_L12MU4: +HLT_2mu4_bBmumux_BpmumuKp_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bBmumux_BsmumuPhi_L12MU4: +HLT_2mu4_bBmumux_BsmumuPhi_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bBmumux_LbPqKm_L12MU4: +HLT_2mu4_bBmumux_LbPqKm_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bDimu_L12MU4: +HLT_2mu4_bDimu_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bJpsimumu_L12MU4: +HLT_2mu4_bJpsimumu_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-2MU4: +HLT_2mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-2MU3V: eventCount: 0 -HLT_2mu4_bUpsimumu_L12MU4: +HLT_2mu4_bUpsimumu_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_muonqual_L12MU4: +HLT_2mu4_muonqual_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu4_noL2Comb_bBmumux_BcmumuPi_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_BcmumuPi_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 1: 2 -HLT_2mu4_noL2Comb_bBmumux_BdmumuKst_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_BdmumuKst_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 1: 2 -HLT_2mu4_noL2Comb_bBmumux_BpmumuKp_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_BpmumuKp_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 1: 2 -HLT_2mu4_noL2Comb_bBmumux_BsmumuPhi_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_BsmumuPhi_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 1: 2 -HLT_2mu4_noL2Comb_bBmumux_LbPqKm_L12MU4: +HLT_2mu4_noL2Comb_bBmumux_LbPqKm_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 1: 2 -HLT_2mu4_noL2Comb_bJpsimumu_L12MU4: +HLT_2mu4_noL2Comb_bJpsimumu_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 1: 2 -HLT_2mu50_msonly_L1MU20: +HLT_2mu50_msonly_L1MU14FCH: eventCount: 0 -HLT_2mu6_10invm70_L1MU6: +HLT_2mu6_10invm70_L1MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_10invmAA70_L1MU6: +HLT_2mu6_10invmAA70_L1MU5VF: eventCount: 0 stepCounts: 0: 1 @@ -277,75 +271,75 @@ HLT_2mu6_10invmAA70_L1MU6: 0: 2 HLT_2mu6_2j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF: eventCount: 0 -HLT_2mu6_L12MU6: +HLT_2mu6_L12MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_bBmumu_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bBmumu_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bBmumu_Lxy0_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bBmumu_Lxy0_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bBmumux_BpmumuKp_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bBmumux_BpmumuKp_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bBmumux_BpmumuKp_L1LFV-MU6: +HLT_2mu6_bBmumux_BpmumuKp_L1LFV-MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_bBmumux_BsmumuPhi_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bBmumux_BsmumuPhi_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bBmumux_BsmumuPhi_L1LFV-MU6: +HLT_2mu6_bBmumux_BsmumuPhi_L1LFV-MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_bDimu_L12MU6: +HLT_2mu6_bDimu_L12MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_bDimu_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bDimu_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bDimu_L1LFV-MU6: +HLT_2mu6_bDimu_L1LFV-MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_bJpsimumu_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bJpsimumu_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bJpsimumu_Lxy0_L1BPH-2M9-2DR15-2MU6: +HLT_2mu6_bJpsimumu_Lxy0_L1BPH-2M9-2DR15-2MU5VF: eventCount: 0 -HLT_2mu6_bPhi_L1LFV-MU6: +HLT_2mu6_bPhi_L1LFV-MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_bUpsimumu_L1BPH-8M15-0DR22-2MU6: +HLT_2mu6_bUpsimumu_L1BPH-8M15-0DR22-2MU5VF: eventCount: 0 -HLT_2mu6_l2io_L12MU6: +HLT_2mu6_l2io_L12MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_mu4_bTau_L12MU6_3MU4: +HLT_2mu6_mu4_bTau_L12MU5VF_3MU3V: eventCount: 0 -HLT_2mu6_mu4_bUpsi_L12MU6_3MU4: +HLT_2mu6_mu4_bUpsi_L12MU5VF_3MU3V: eventCount: 0 -HLT_2mu6_muonqual_L12MU6: +HLT_2mu6_muonqual_L12MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 2 -HLT_2mu6_noL2Comb_bJpsimumu_L12MU6: +HLT_2mu6_noL2Comb_bJpsimumu_L12MU5VF: eventCount: 0 stepCounts: 0: 1 @@ -376,50 +370,34 @@ HLT_3j65_0eta290_020jvt_pf_ftf_bdl1r77_L1J45p0ETA21_3J15p0ETA25: eventCount: 0 HLT_3j65_0eta290_020jvt_pf_ftf_bdl1r85_L1J45p0ETA21_3J15p0ETA25: eventCount: 0 -HLT_3mu4_bDimu2700_L13MU4: +HLT_3mu4_bDimu2700_L13MU3V: eventCount: 0 HLT_3mu4_bJpsi_L13MU3V: eventCount: 0 -HLT_3mu4_bJpsi_L13MU4: - eventCount: 0 HLT_3mu4_bPhi_L13MU3V: eventCount: 0 -HLT_3mu4_bPhi_L13MU4: - eventCount: 0 HLT_3mu4_bTau_L13MU3V: eventCount: 0 -HLT_3mu4_bTau_L13MU4: - eventCount: 0 HLT_3mu4_bUpsi_L13MU3V: eventCount: 0 -HLT_3mu4_bUpsi_L13MU4: - eventCount: 0 HLT_3mu6_L13MU5VF: eventCount: 0 -HLT_3mu6_L13MU6: - eventCount: 0 HLT_3mu6_bDimu_L13MU5VF: eventCount: 0 -HLT_3mu6_bDimu_L13MU6: +HLT_3mu6_bJpsi_L13MU5VF: eventCount: 0 -HLT_3mu6_bJpsi_L13MU6: +HLT_3mu6_bTau_L13MU5VF: eventCount: 0 -HLT_3mu6_bTau_L13MU6: - eventCount: 0 -HLT_3mu6_bUpsi_L13MU6: +HLT_3mu6_bUpsi_L13MU5VF: eventCount: 0 HLT_3mu6_msonly_L13MU5VF: eventCount: 0 -HLT_3mu6_msonly_L13MU6: - eventCount: 0 -HLT_3mu6_msonly_L1MU4_UNPAIRED_ISO: +HLT_3mu6_msonly_L1MU3V_UNPAIRED_ISO: eventCount: 0 -HLT_3mu6_msonly_L1MU6_EMPTY: +HLT_3mu6_msonly_L1MU5VF_EMPTY: eventCount: 0 HLT_3mu8_msonly_L13MU5VF: eventCount: 0 -HLT_3mu8_msonly_L13MU6: - eventCount: 0 HLT_4j115_ftf_L13J50: eventCount: 0 HLT_4j115_pf_ftf_presel4j33_L13J50: @@ -454,12 +432,8 @@ HLT_4j85_L13J50: eventCount: 0 HLT_4mu4_L14MU3V: eventCount: 0 -HLT_4mu4_L14MU4: - eventCount: 0 HLT_4mu4_bDimu6000_L14MU3V: eventCount: 0 -HLT_4mu4_bDimu6000_L14MU4: - eventCount: 0 HLT_5j24_L14J15: eventCount: 0 HLT_5j25_pf_ftf_0eta240_020jvt_j25_pf_ftf_0eta240_020jvt_bdl1r60_L14J15: @@ -614,7 +588,7 @@ HLT_e120_etcut_L1EM22VHI: eventCount: 0 HLT_e120_lhvloose_L1EM22VHI: eventCount: 0 -HLT_e12_lhloose_2mu10_L12MU10: +HLT_e12_lhloose_2mu10_L12MU8F: eventCount: 0 HLT_e140_dnnloose_L1EM22VHI: eventCount: 0 @@ -626,7 +600,7 @@ HLT_e140_lhloose_L1eEM22M: eventCount: 0 HLT_e140_lhloose_noringer_L1EM22VHI: eventCount: 0 -HLT_e14_lhtight_e4_etcut_1invmAB3_L1JPSI-1M5-EM12: +HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 stepFeatures: 0: 6 @@ -634,9 +608,9 @@ HLT_e14_lhtight_e4_etcut_Jpsiee_L1JPSI-1M5-EM12: eventCount: 0 stepFeatures: 0: 6 -HLT_e14_lhtight_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: +HLT_e14_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 -HLT_e14_lhtight_noringer_e4_etcut_1invmAB3_L1JPSI-1M5-EM12: +HLT_e14_lhtight_noringer_e4_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 stepFeatures: 0: 6 @@ -644,7 +618,7 @@ HLT_e14_lhtight_noringer_e4_etcut_Jpsiee_L1JPSI-1M5-EM12: eventCount: 0 stepFeatures: 0: 6 -HLT_e14_lhtight_noringer_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: +HLT_e14_lhtight_noringer_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 HLT_e15_lhvloose_L1EM10VH: eventCount: 0 @@ -654,7 +628,7 @@ HLT_e15_lhvloose_L1EM10VH: stepFeatures: 0: 4 1: 5 -HLT_e17_lhloose_mu14_L1EM15VH_MU10: +HLT_e17_lhloose_mu14_L1EM15VH_MU8F: eventCount: 0 HLT_e17_lhmedium_ivarloose_tau25_medium1_tracktwo_03dRAB_L1EM15VHI_2TAU12IM_4J12: eventCount: 0 @@ -676,7 +650,7 @@ HLT_e20_lhloose_L1EM7_AFP_A_AND_C: eventCount: 0 HLT_e20_lhloose_L1EM7_AFP_A_OR_C: eventCount: 0 -HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM18M: +HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM15M: eventCount: 0 HLT_e20_lhvloose_L1EM15VH: eventCount: 0 @@ -895,17 +869,17 @@ HLT_e5_dnntight_L1EM3: 2: 10 3: 9 HLT_e5_etcut_L1eEM3: - eventCount: 34 + eventCount: 28 stepCounts: - 0: 46 - 1: 39 - 2: 34 - 3: 34 + 0: 39 + 1: 32 + 2: 28 + 3: 28 stepFeatures: - 0: 332 - 1: 303 - 2: 177 - 3: 140 + 0: 139 + 1: 154 + 2: 102 + 3: 72 HLT_e5_idperf_gsf_tight_L1EM3: eventCount: 11 stepCounts: @@ -976,7 +950,7 @@ HLT_e5_idperf_tight_L1EM3: 2: 14 3: 13 4: 13 -HLT_e5_lhtight_e14_etcut_1invmAB3_L1JPSI-1M5-EM12: +HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 stepCounts: 0: 1 @@ -990,13 +964,13 @@ HLT_e5_lhtight_e14_etcut_Jpsiee_L1JPSI-1M5-EM12: stepFeatures: 0: 2 1: 7 -HLT_e5_lhtight_e14_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: +HLT_e5_lhtight_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_e5_lhtight_e9_etcut_1invmAB3_L1JPSI-1M5-EM7: +HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 stepCounts: 0: 1 @@ -1010,7 +984,7 @@ HLT_e5_lhtight_e9_etcut_Jpsiee_L1JPSI-1M5-EM7: stepFeatures: 0: 5 1: 7 -HLT_e5_lhtight_e9_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: +HLT_e5_lhtight_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 stepCounts: 0: 2 @@ -1022,7 +996,7 @@ HLT_e5_lhtight_e9_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: 1: 6 2: 1 3: 1 -HLT_e5_lhtight_noringer_e14_etcut_1invmAB3_L1JPSI-1M5-EM12: +HLT_e5_lhtight_noringer_e14_etcut_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 stepCounts: 0: 1 @@ -1046,7 +1020,7 @@ HLT_e5_lhtight_noringer_e14_etcut_Jpsiee_L1JPSI-1M5-EM12: 1: 11 2: 2 3: 2 -HLT_e5_lhtight_noringer_e14_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: +HLT_e5_lhtight_noringer_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12: eventCount: 0 stepCounts: 0: 1 @@ -1058,7 +1032,7 @@ HLT_e5_lhtight_noringer_e14_etcut_probe_1invmAB3_L1JPSI-1M5-EM12: 1: 4 2: 1 3: 1 -HLT_e5_lhtight_noringer_e9_etcut_1invmAB3_L1JPSI-1M5-EM7: +HLT_e5_lhtight_noringer_e9_etcut_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 stepCounts: 0: 1 @@ -1082,7 +1056,7 @@ HLT_e5_lhtight_noringer_e9_etcut_Jpsiee_L1JPSI-1M5-EM7: 1: 11 2: 4 3: 2 -HLT_e5_lhtight_noringer_e9_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: +HLT_e5_lhtight_noringer_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 stepCounts: 0: 2 @@ -1118,11 +1092,11 @@ HLT_e60_lhvloose_L1EM22VHI: eventCount: 0 HLT_e70_lhloose_xe70_cell_L1EM22VHI: eventCount: 0 -HLT_e7_lhmedium_mu24_L1MU20: +HLT_e7_lhmedium_mu24_L1MU14FCH: eventCount: 0 HLT_e80_lhvloose_L1EM22VHI: eventCount: 0 -HLT_e9_lhtight_e4_etcut_1invmAB3_L1JPSI-1M5-EM7: +HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 stepFeatures: 0: 11 @@ -1134,9 +1108,9 @@ HLT_e9_lhtight_e4_etcut_L1JPSI-1M5-EM7: eventCount: 0 stepFeatures: 0: 11 -HLT_e9_lhtight_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: +HLT_e9_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e9_lhtight_noringer_e4_etcut_1invmAB3_L1JPSI-1M5-EM7: +HLT_e9_lhtight_noringer_e4_etcut_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 stepFeatures: 0: 11 @@ -1144,9 +1118,9 @@ HLT_e9_lhtight_noringer_e4_etcut_Jpsiee_L1JPSI-1M5-EM7: eventCount: 0 stepFeatures: 0: 11 -HLT_e9_lhtight_noringer_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM7: +HLT_e9_lhtight_noringer_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7: eventCount: 0 -HLT_e9_lhvloose_mu20_mu8noL1_L1MU20: +HLT_e9_lhvloose_mu20_mu8noL1_L1MU14FCH: eventCount: 0 HLT_eb_low_L1RD2_FILLED: eventCount: 29 @@ -1186,13 +1160,13 @@ HLT_g12_loose_LArPEBHLT_L1EM10VH: eventCount: 0 HLT_g140_loose_L1EM22VHI: eventCount: 0 -HLT_g15_loose_2mu10_msonly_L12MU10: +HLT_g15_loose_2mu10_msonly_L12MU8F: eventCount: 0 -HLT_g15_loose_2mu10_msonly_L1MU4_EMPTY: +HLT_g15_loose_2mu10_msonly_L1MU3V_EMPTY: eventCount: 0 -HLT_g15_loose_2mu10_msonly_L1MU4_UNPAIRED_ISO: +HLT_g15_loose_2mu10_msonly_L1MU3V_UNPAIRED_ISO: eventCount: 0 -HLT_g15_loose_2mu10_msonly_L1MU6_EMPTY: +HLT_g15_loose_2mu10_msonly_L1MU5VF_EMPTY: eventCount: 0 HLT_g15_loose_L1EM10VH: eventCount: 5 @@ -1314,9 +1288,9 @@ HLT_g25_medium_j35_pf_ftf_0eta490_bdl1r77_3j35_pf_ftf_0eta490_j0_pf_ftf_DJMASS70 0: 4 1: 3 2: 1 -HLT_g25_medium_mu24_L1MU20: +HLT_g25_medium_mu24_L1MU14FCH: eventCount: 0 -HLT_g25_medium_mu24_ivarmedium_L1MU20: +HLT_g25_medium_mu24_ivarmedium_L1MU14FCH: eventCount: 0 HLT_g25_medium_tau25_dikaonmass_tracktwoMVABDT_50invmAB_L1EM22VHI: eventCount: 0 @@ -1546,7 +1520,7 @@ HLT_g40_loose_L1EM20VH: eventCount: 0 HLT_g40_loose_LArPEBHLT_L1EM20VHI: eventCount: 0 -HLT_g40_loose_mu40_msonly_L1MU20: +HLT_g40_loose_mu40_msonly_L1MU14FCH: eventCount: 0 HLT_g45_loose_6j45_L14J15p0ETA25: eventCount: 0 @@ -1864,6 +1838,10 @@ HLT_j25_320eta490_L1RD0_FILLED: 0: 3 stepFeatures: 0: 3 +HLT_j25_320eta490_LArPEBHLT_L1J15p31ETA49: + eventCount: 0 +HLT_j25_LArPEBHLT_L1J15: + eventCount: 0 HLT_j25_pf_ftf_L1RD0_FILLED: eventCount: 33 stepCounts: @@ -2412,14 +2390,14 @@ HLT_j80_j60_SHARED_j40__L1J15: 0: 13 ? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 -? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU10_2J15_J20 -: eventCount: 0 -HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU20: +HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 4 +? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU8F_2J15_J20 +: eventCount: 0 ? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_2j20_pf_ftf_0eta240_020jvt_bdl1r60_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 ? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_2j20_pf_ftf_0eta240_020jvt_bdl1r70_L1J45p0ETA21_3J15p0ETA25 @@ -2438,7 +2416,7 @@ HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jv : eventCount: 0 ? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j28_pf_ftf_0eta240_020jvt_bdl1r70_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 -? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j28_pf_ftf_0eta240_020jvt_bdl1r70_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU10_2J15_J20 +? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j28_pf_ftf_0eta240_020jvt_bdl1r70_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU8F_2J15_J20 : eventCount: 0 ? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j28_pf_ftf_0eta240_020jvt_bdl1r77_j20_pf_ftf_0eta240_020jvt_bdl1r77_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 @@ -2450,18 +2428,18 @@ HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jv : eventCount: 0 ? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j55_pf_ftf_0eta240_020jvt_bdl1r85_j28_pf_ftf_0eta240_020jvt_bdl1r85_j20_pf_ftf_0eta240_020jvt_bdl1r85_L1J45p0ETA21_3J15p0ETA25 : eventCount: 0 -? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU10_2J15_J20 +? HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU8F_2J15_J20 : eventCount: 0 HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1J45p0ETA21_3J15p0ETA25: eventCount: 0 -HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU10_2J15_J20: - eventCount: 0 -HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU20: +HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 4 +HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU8F_2J15_J20: + eventCount: 0 ? HLT_j80_pf_ftf_0eta240_j60_pf_ftf_0eta320_j45_pf_ftf_320eta490_SHARED_2j45_pf_ftf_0eta290_bdl1r60_L1J40p0ETA25_2J25_J20p31ETA49 : eventCount: 0 HLT_j80_pf_ftf_0eta320_bdl1r70_j60_pf_ftf_0eta320_bdl1r85_j45_pf_ftf_320eta490_L1J40p0ETA25_2J25_J20p31ETA49: @@ -2570,6 +2548,16 @@ HLT_j85_pf_ftf_preselj20_L1J20: 1: 7 HLT_l1topodebug_legacy_L1All: eventCount: 0 +HLT_larnoiseburst_L1All: + eventCount: 0 +HLT_larnoiseburst_L1J100: + eventCount: 0 +HLT_larnoiseburst_L1J40_XE50: + eventCount: 0 +HLT_larnoiseburst_L1J40_XE60: + eventCount: 0 +HLT_larnoiseburst_L1J75: + eventCount: 0 HLT_larnoiseburst_L1XE60: eventCount: 0 HLT_larpsall_L1J15: @@ -2600,9 +2588,9 @@ HLT_mb_afprec_L1AFP_A_AND_C_TOF_T0T1_J50: eventCount: 0 HLT_mb_afprec_L1AFP_A_AND_C_TOF_T0T1_J75: eventCount: 0 -HLT_mb_afprec_L1CEP-CJ50: +HLT_mb_afprec_L1CEP-CjJ50: eventCount: 0 -HLT_mb_afprec_L1CEP-CJ60: +HLT_mb_afprec_L1CEP-CjJ60: eventCount: 0 HLT_mb_afprec_L1RD0_FILLED: eventCount: 0 @@ -2708,11 +2696,11 @@ HLT_mb_sptrk_pt8_L1RD0_FILLED: eventCount: 0 HLT_mb_sptrk_vetombts2in_L1RD0_FILLED: eventCount: 0 -HLT_mu0_muoncalib_L1MU20: +HLT_mu0_muoncalib_L1MU14FCH: eventCount: 0 -HLT_mu0_muoncalib_L1MU4_EMPTY: +HLT_mu0_muoncalib_L1MU3V_EMPTY: eventCount: 0 -HLT_mu10_L1MU10: +HLT_mu10_L1MU8F: eventCount: 0 stepCounts: 0: 5 @@ -2720,19 +2708,13 @@ HLT_mu10_L1MU10: 0: 5 HLT_mu10_ivarmedium_j70_0eta320_j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF: eventCount: 0 -HLT_mu10_ivarmedium_mu10_10invm70_L12MU10: - eventCount: 0 HLT_mu10_ivarmedium_mu10_10invm70_L12MU8F: eventCount: 0 -HLT_mu10_lateMu_L1LATE-MU10_XE50: +HLT_mu10_l2mt_mu4_l2mt_bJpsimumu_L1MU10BOM: eventCount: 0 -HLT_mu11_mu6_bBmumu_L1LFV-MU11: +HLT_mu10_lateMu_L1LATE-MU8F_XE50: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 -HLT_mu11_mu6_bBmumu_L1MU11_2MU6: +HLT_mu11_mu6_bBmumu_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 1 @@ -2744,37 +2726,19 @@ HLT_mu11_mu6_bBmumu_L1MU8VF_2MU5VF: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bBmumux_BcmumuPi_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_mu11_mu6_bBmumux_BcmumuPi_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bBmumux_BdmumuKst_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_mu11_mu6_bBmumux_BdmumuKst_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bBmumux_BpmumuKp_L1LFV-MU11: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 -HLT_mu11_mu6_bBmumux_BpmumuKp_L1MU11_2MU6: +HLT_mu11_mu6_bBmumux_BpmumuKp_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 1 @@ -2786,37 +2750,19 @@ HLT_mu11_mu6_bBmumux_BpmumuKp_L1MU8VF_2MU5VF: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bBmumux_BsmumuPhi_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_mu11_mu6_bBmumux_BsmumuPhi_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bBmumux_LbPqKm_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 HLT_mu11_mu6_bBmumux_LbPqKm_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bDimu2700_L1LFV-MU11: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 -HLT_mu11_mu6_bDimu2700_L1MU11_2MU6: +HLT_mu11_mu6_bDimu2700_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 1 @@ -2828,19 +2774,13 @@ HLT_mu11_mu6_bDimu2700_L1MU8VF_2MU5VF: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bDimu2700_Lxy0_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 -HLT_mu11_mu6_bDimu_L1LFV-MU11: +HLT_mu11_mu6_bDimu2700_Lxy0_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bDimu_L1MU11_2MU6: +HLT_mu11_mu6_bDimu_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 1 @@ -2852,19 +2792,13 @@ HLT_mu11_mu6_bDimu_L1MU8VF_2MU5VF: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bDimu_Lxy0_L1MU11_2MU6: +HLT_mu11_mu6_bDimu_Lxy0_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bJpsimumu_L1LFV-MU11: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 -HLT_mu11_mu6_bJpsimumu_L1MU11_2MU6: +HLT_mu11_mu6_bJpsimumu_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 1 @@ -2876,19 +2810,13 @@ HLT_mu11_mu6_bJpsimumu_L1MU8VF_2MU5VF: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bJpsimumu_Lxy0_L1MU11_2MU6: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 -HLT_mu11_mu6_bPhi_L1LFV-MU11: +HLT_mu11_mu6_bJpsimumu_Lxy0_L1MU8VF_2MU5VF: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bPhi_L1MU11_2MU6: +HLT_mu11_mu6_bPhi_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 1 @@ -2900,13 +2828,7 @@ HLT_mu11_mu6_bPhi_L1MU8VF_2MU5VF: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bTau_L1LFV-MU11: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 -HLT_mu11_mu6_bTau_L1MU11_2MU6: +HLT_mu11_mu6_bTau_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 1 @@ -2918,13 +2840,7 @@ HLT_mu11_mu6_bTau_L1MU8VF_2MU5VF: 0: 1 stepFeatures: 0: 3 -HLT_mu11_mu6_bUpsimumu_L1LFV-MU11: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 3 -HLT_mu11_mu6_bUpsimumu_L1MU11_2MU6: +HLT_mu11_mu6_bUpsimumu_L1LFV-MU8VF: eventCount: 0 stepCounts: 0: 1 @@ -2936,27 +2852,27 @@ HLT_mu11_mu6_bUpsimumu_L1MU8VF_2MU5VF: 0: 1 stepFeatures: 0: 3 -HLT_mu14_L1MU10: +HLT_mu14_L1MU8F: eventCount: 0 stepCounts: 0: 5 stepFeatures: 0: 5 -HLT_mu14_ivarloose_tau25_medium1_tracktwo_03dRAB_L1MU10_TAU12IM_3J12: +HLT_mu14_ivarloose_tau25_medium1_tracktwo_03dRAB_L1MU8F_TAU12IM_3J12: eventCount: 0 -HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU10_TAU12IM_3J12: +HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU8F_TAU12IM_3J12: eventCount: 0 -HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU10_TAU12IM_3J12: +HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU8F_TAU12IM_3J12: eventCount: 0 -HLT_mu14_ivarloose_tau35_medium1_tracktwo_03dRAB_L1MU10_TAU20IM: +HLT_mu14_ivarloose_tau35_medium1_tracktwo_03dRAB_L1MU8F_TAU20IM: eventCount: 0 -HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU10_TAU20IM: +HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU8F_TAU20IM: eventCount: 0 -HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU10_TAU20IM: +HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU8F_TAU20IM: eventCount: 0 -HLT_mu14_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1MU10_TAU12IM_XE35: +HLT_mu14_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1MU8F_TAU12IM_XE35: eventCount: 0 -HLT_mu14_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1MU10_TAU12IM_XE35: +HLT_mu14_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1MU8F_TAU12IM_XE35: eventCount: 0 HLT_mu20_2mu4noL1_L1MU14FCH: eventCount: 0 @@ -2964,31 +2880,25 @@ HLT_mu20_2mu4noL1_L1MU14FCH: 0: 1 stepFeatures: 0: 1 -HLT_mu20_2mu4noL1_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 -HLT_mu20_L1MU6: +HLT_mu20_L1MU5VF: eventCount: 0 stepCounts: 0: 5 stepFeatures: 0: 6 -HLT_mu20_L1MU6_AFP_A_AND_C: +HLT_mu20_L1MU5VF_AFP_A_AND_C: eventCount: 0 -HLT_mu20_L1MU6_AFP_A_OR_C: +HLT_mu20_L1MU5VF_AFP_A_OR_C: eventCount: 0 -HLT_mu20_ivarloose_tau20_medium1_tracktwo_03dRAB_L1MU20: +HLT_mu20_ivarloose_tau20_medium1_tracktwo_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 @@ -2998,37 +2908,25 @@ HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU14FCH: 0: 1 stepFeatures: 0: 1 -HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 HLT_mu20_ivarmedium_mu8noL1_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu20_ivarmedium_mu8noL1_L1MU20: +HLT_mu20_msonly_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu20_msonly_L1MU20: +HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L110DR-MU14FCH-MU5VF: eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 -HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L110DR-MU20-MU6: +HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU14FCH_J40: eventCount: 0 -HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU20_J40: +HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU14FCH_XE30: eventCount: 0 -HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU20_XE30: - eventCount: 0 -HLT_mu20_mu2noL1_invmJPsi_os_L1MU20: +HLT_mu20_mu2noL1_invmJPsi_os_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3040,37 +2938,19 @@ HLT_mu22_2mu4noL1_L1MU14FCH: 0: 1 stepFeatures: 0: 1 -HLT_mu22_2mu4noL1_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 HLT_mu22_mu10noL1_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu22_mu10noL1_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 HLT_mu22_mu8noL1_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu22_mu8noL1_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 -HLT_mu24_L1MU20: +HLT_mu24_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3082,25 +2962,19 @@ HLT_mu24_LRT_d0loose_L1MU14FCH: 0: 1 stepFeatures: 0: 1 -HLT_mu24_LRT_d0loose_L1MU20: +HLT_mu24_LRT_d0medium_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu24_LRT_d0medium_L1MU20: +HLT_mu24_LRT_d0tight_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu24_LRT_d0tight_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 -HLT_mu24_LRT_idperf_L1MU20: +HLT_mu24_LRT_idperf_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3108,7 +2982,7 @@ HLT_mu24_LRT_idperf_L1MU20: stepFeatures: 0: 1 1: 1 -HLT_mu24_idperf_L1MU20: +HLT_mu24_idperf_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3116,61 +2990,61 @@ HLT_mu24_idperf_L1MU20: stepFeatures: 0: 1 1: 1 -HLT_mu24_ivarmedium_L1MU20: +HLT_mu24_ivarmedium_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu24_ivarmedium_mu6_L1MU20: +HLT_mu24_ivarmedium_mu6_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu24_ivarmedium_mu6_ivarmedium_L1MU20: +HLT_mu24_ivarmedium_mu6_ivarmedium_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu24_ivarmedium_mu6_ivarmedium_probe_L1MU20: +HLT_mu24_ivarmedium_mu6_ivarmedium_probe_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu24_ivarmedium_mu6_ivarperf_L1MU20: +HLT_mu24_ivarmedium_mu6_ivarperf_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu24_ivarmedium_mu6_ivarperf_probe_L1MU20: +HLT_mu24_ivarmedium_mu6_ivarperf_probe_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu24_ivarmedium_mu6_probe_L1MU20: +HLT_mu24_ivarmedium_mu6_probe_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu24_mu10noL1_L1MU20: +HLT_mu24_mu10noL1_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu24_mu6_L1MU20: +HLT_mu24_mu6_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 3 -HLT_mu24_mu6_probe_L1MU20: +HLT_mu24_mu6_probe_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3182,19 +3056,13 @@ HLT_mu24_mu8noL1_L1MU14FCH: 0: 1 stepFeatures: 0: 1 -HLT_mu24_mu8noL1_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 -HLT_mu26_L1MU20: +HLT_mu26_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_2j20_0eta290_020jvt_pf_ftf_boffperf_L1MU20: +HLT_mu26_ivarmedium_2j20_0eta290_020jvt_pf_ftf_boffperf_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3206,115 +3074,145 @@ HLT_mu26_ivarmedium_L1MU14FCH: 0: 1 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_L1MU20: +HLT_mu26_ivarmedium_tau100_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH: eventCount: 0 - stepCounts: - 0: 1 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau100_mediumRNN_tracktwoLLP_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau180_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau180_mediumRNN_tracktwoLLP_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_perf_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau25_perf_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau25_perf_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau25_perf_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoLLP_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoLLP_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20: +HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH: eventCount: 0 stepFeatures: 0: 1 -HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVA_03dRAB_L1MU20: +HLT_mu26_ivarperf_L1MU14FCH: eventCount: 0 + stepCounts: + 0: 1 stepFeatures: 0: 1 -HLT_mu26_ivarperf_L1MU20: +HLT_mu28_ivarmedium_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 1 -HLT_mu28_ivarmedium_L1MU20: - eventCount: 0 +HLT_mu4_j20_0eta290_pf_ftf_boffperf_dRAB03_L1MU3V: + eventCount: 2 + stepCounts: + 0: 6 + 1: 3 + 2: 2 + 3: 2 + 4: 2 + 5: 2 + 6: 2 + stepFeatures: + 0: 7 + 1: 3 + 2: 2 + 3: 2 + 4: 2 + 5: 7 + 6: 7 +HLT_mu4_j20_0eta290_pf_ftf_boffperf_dRAB03_L1MU3V_J15: + eventCount: 1 stepCounts: 0: 1 + 1: 1 + 2: 1 + 3: 1 + 4: 1 + 5: 1 + 6: 1 stepFeatures: 0: 1 + 1: 1 + 2: 1 + 3: 1 + 4: 1 + 5: 5 + 6: 5 HLT_mu4_j70_0eta320_j50_0eta490_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF: eventCount: 0 -HLT_mu4_l2io_L1MU4: +HLT_mu4_l2io_L1MU3V: eventCount: 2 stepCounts: 0: 6 @@ -3332,13 +3230,7 @@ HLT_mu50_L1MU14FCH: 0: 1 stepFeatures: 0: 1 -HLT_mu50_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 -HLT_mu50_RPCPEBSecondaryReadout_L1MU20: +HLT_mu50_RPCPEBSecondaryReadout_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3346,9 +3238,7 @@ HLT_mu50_RPCPEBSecondaryReadout_L1MU20: 0: 1 HLT_mu60_0eta105_msonly_L1MU14FCH: eventCount: 0 -HLT_mu60_0eta105_msonly_L1MU20: - eventCount: 0 -HLT_mu60_L1MU20: +HLT_mu60_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3356,19 +3246,15 @@ HLT_mu60_L1MU20: 0: 1 HLT_mu6_2mu4_bDimu2700_L1MU5VF_3MU3V: eventCount: 0 -HLT_mu6_2mu4_bDimu2700_L1MU6_3MU4: - eventCount: 0 HLT_mu6_2mu4_bDimu6000_L1MU5VF_3MU3V: eventCount: 0 -HLT_mu6_2mu4_bDimu6000_L1MU6_3MU4: +HLT_mu6_2mu4_bJpsi_L1MU5VF_3MU3V: eventCount: 0 -HLT_mu6_2mu4_bJpsi_L1MU6_3MU4: +HLT_mu6_2mu4_bTau_L1MU5VF_3MU3V: eventCount: 0 -HLT_mu6_2mu4_bTau_L1MU6_3MU4: +HLT_mu6_2mu4_bUpsi_L1MU5VF_3MU3V: eventCount: 0 -HLT_mu6_2mu4_bUpsi_L1MU6_3MU4: - eventCount: 0 -HLT_mu6_L1MU6: +HLT_mu6_L1MU5VF: eventCount: 2 stepCounts: 0: 5 @@ -3380,7 +3266,7 @@ HLT_mu6_L1MU6: 1: 2 2: 2 3: 2 -HLT_mu6_LRT_idperf_L1MU6: +HLT_mu6_LRT_idperf_L1MU5VF: eventCount: 2 stepCounts: 0: 5 @@ -3392,7 +3278,7 @@ HLT_mu6_LRT_idperf_L1MU6: 1: 6 2: 2 3: 2 -HLT_mu6_idperf_L1MU6: +HLT_mu6_idperf_L1MU5VF: eventCount: 2 stepCounts: 0: 5 @@ -3404,7 +3290,7 @@ HLT_mu6_idperf_L1MU6: 1: 6 2: 2 3: 2 -HLT_mu6_ivarmedium_L1MU6: +HLT_mu6_ivarmedium_L1MU5VF: eventCount: 0 stepCounts: 0: 5 @@ -3428,7 +3314,7 @@ HLT_mu6_j45_nojcalib_L1J20: 1: 1 2: 1 3: 1 -HLT_mu6_msonly_L1MU6: +HLT_mu6_msonly_L1MU5VF: eventCount: 2 stepCounts: 0: 5 @@ -3436,35 +3322,35 @@ HLT_mu6_msonly_L1MU6: stepFeatures: 0: 6 1: 2 -HLT_mu6_mu4_L12MU4: +HLT_mu6_mu4_L12MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 4 -HLT_mu6_mu4_bBmumu_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bBmumu_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bDimu_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bDimu_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bDimu_L1MU6_2MU4: +HLT_mu6_mu4_bDimu_L1MU5VF_2MU3V: eventCount: 0 stepCounts: 0: 1 stepFeatures: 0: 4 -HLT_mu6_mu4_bJpsimumu_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bJpsimumu_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-MU6MU4: +HLT_mu6_mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-MU5VFMU3V: eventCount: 0 -HLT_mu6_mu4_bUpsimumu_L1BPH-8M15-0DR22-MU6MU4-BO: +HLT_mu6_mu4_bUpsimumu_L1BPH-8M15-0DR22-MU5VFMU3V-BO: eventCount: 0 -HLT_mu6_mu6noL1_L1MU6: +HLT_mu6_mu6noL1_L1MU5VF: eventCount: 0 stepCounts: 0: 5 @@ -3478,7 +3364,7 @@ HLT_mu6_mu6noL1_L1MU6: 2: 2 3: 2 4: 2 -HLT_mu6_noL2Comb_mu4_noL2Comb_bJpsimumu_L1MU6_2MU4: +HLT_mu6_noL2Comb_mu4_noL2Comb_bJpsimumu_L1MU5VF_2MU3V: eventCount: 0 stepCounts: 0: 1 @@ -3487,7 +3373,7 @@ HLT_mu6_noL2Comb_mu4_noL2Comb_bJpsimumu_L1MU6_2MU4: 1: 4 HLT_mu6_xe30_mht_L1XE30: eventCount: 0 -HLT_mu80_L1MU20: +HLT_mu80_L1MU14FCH: eventCount: 0 stepCounts: 0: 1 @@ -3499,13 +3385,7 @@ HLT_mu80_msonly_3layersEC_L1MU14FCH: 0: 1 stepFeatures: 0: 1 -HLT_mu80_msonly_3layersEC_L1MU20: - eventCount: 0 - stepCounts: - 0: 1 - stepFeatures: - 0: 1 -HLT_mu8_L1MU6: +HLT_mu8_L1MU5VF: eventCount: 1 stepCounts: 0: 5 @@ -3527,12 +3407,24 @@ HLT_noalg_CSCPEB_L1All: 0: 50 stepFeatures: 0: 50 +HLT_noalg_CSCPEB_L1EM3_EMPTY: + eventCount: 0 +HLT_noalg_CSCPEB_L1EM7_EMPTY: + eventCount: 0 +HLT_noalg_CSCPEB_L1J12_EMPTY: + eventCount: 0 +HLT_noalg_CSCPEB_L1J30p31ETA49_EMPTY: + eventCount: 0 +HLT_noalg_CSCPEB_L1TAU8_EMPTY: + eventCount: 0 HLT_noalg_CostMonDS_L1All: eventCount: 50 stepCounts: 0: 50 stepFeatures: 0: 50 +HLT_noalg_L1ABORTGAPNOTCALIB_noPS: + eventCount: 0 HLT_noalg_L1AFP_A_AND_C_TOF_J50: eventCount: 0 HLT_noalg_L1AFP_A_AND_C_TOF_J75: @@ -3543,9 +3435,11 @@ HLT_noalg_L1AFP_A_AND_C_TOF_T0T1_J75: eventCount: 0 HLT_noalg_L1All: eventCount: 50 -HLT_noalg_L1CEP-CJ50: +HLT_noalg_L1Bkg: + eventCount: 0 +HLT_noalg_L1CEP-CjJ50: eventCount: 0 -HLT_noalg_L1CEP-CJ60: +HLT_noalg_L1CEP-CjJ60: eventCount: 0 HLT_noalg_L1Calo: eventCount: 50 @@ -3565,16 +3459,28 @@ HLT_noalg_L1EM22VHI: eventCount: 5 HLT_noalg_L1EM3: eventCount: 40 +HLT_noalg_L1EM3_EMPTY: + eventCount: 0 HLT_noalg_L1EM7: eventCount: 25 HLT_noalg_L1EM7_AFP_A_AND_C: eventCount: 0 HLT_noalg_L1EM7_AFP_A_OR_C: eventCount: 0 +HLT_noalg_L1EM7_EMPTY: + eventCount: 0 HLT_noalg_L1EM8VH: eventCount: 20 +HLT_noalg_L1EMPTY_noPS: + eventCount: 0 +HLT_noalg_L1FIRSTEMPTY_noPS: + eventCount: 0 HLT_noalg_L1J100: eventCount: 0 +HLT_noalg_L1J12_EMPTY: + eventCount: 0 +HLT_noalg_L1J12_FIRSTEMPTY: + eventCount: 0 HLT_noalg_L1J15: eventCount: 22 HLT_noalg_L1J20: @@ -3583,6 +3489,12 @@ HLT_noalg_L1J25: eventCount: 12 HLT_noalg_L1J30: eventCount: 7 +HLT_noalg_L1J30_EMPTY: + eventCount: 0 +HLT_noalg_L1J30_FIRSTEMPTY: + eventCount: 0 +HLT_noalg_L1J30p31ETA49_EMPTY: + eventCount: 0 HLT_noalg_L1J40: eventCount: 5 HLT_noalg_L1J400: @@ -3675,16 +3587,30 @@ HLT_noalg_L1MBTS_2_EMPTY: eventCount: 0 HLT_noalg_L1MBTS_2_UNPAIRED_ISO: eventCount: 0 -HLT_noalg_L1MU6: +HLT_noalg_L1MU5VF: eventCount: 6 -HLT_noalg_L1MU6_AFP_A_AND_C: +HLT_noalg_L1MU5VF_AFP_A_AND_C: eventCount: 0 -HLT_noalg_L1MU6_AFP_A_OR_C: +HLT_noalg_L1MU5VF_AFP_A_OR_C: eventCount: 0 +HLT_noalg_L1PhysicsHigh_noPS: + eventCount: 10 +HLT_noalg_L1PhysicsVeryHigh_noPS: + eventCount: 1 HLT_noalg_L1RD0_EMPTY: eventCount: 0 HLT_noalg_L1RD0_FILLED: eventCount: 50 +HLT_noalg_L1RD0_FIRSTEMPTY: + eventCount: 0 +HLT_noalg_L1RD1_EMPTY: + eventCount: 0 +HLT_noalg_L1RD2_EMPTY: + eventCount: 0 +HLT_noalg_L1RD3_EMPTY: + eventCount: 0 +HLT_noalg_L1RD3_FILLED: + eventCount: 50 HLT_noalg_L1Standby: eventCount: 50 HLT_noalg_L1TAU12IM: @@ -3697,6 +3623,14 @@ HLT_noalg_L1TAU60: eventCount: 1 HLT_noalg_L1TAU8: eventCount: 26 +HLT_noalg_L1TAU8_EMPTY: + eventCount: 0 +HLT_noalg_L1TGC_BURST: + eventCount: 0 +HLT_noalg_L1UNPAIRED_ISO_noPS: + eventCount: 0 +HLT_noalg_L1UNPAIRED_NONISO_noPS: + eventCount: 0 HLT_noalg_L1XE30: eventCount: 2 HLT_noalg_L1XE300: @@ -3713,8 +3647,14 @@ HLT_noalg_L1XE55: eventCount: 1 HLT_noalg_L1XE60: eventCount: 1 -HLT_noalg_L1eEM10: - eventCount: 16 +HLT_noalg_L1ZB: + eventCount: 0 +HLT_noalg_L1cTAU12M: + eventCount: 0 +HLT_noalg_L1cTAU20M: + eventCount: 0 +HLT_noalg_L1cTAU25M: + eventCount: 0 HLT_noalg_L1eEM10L: eventCount: 0 HLT_noalg_L1eEM15: @@ -3723,8 +3663,6 @@ HLT_noalg_L1eEM15L: eventCount: 0 HLT_noalg_L1eEM15M: eventCount: 0 -HLT_noalg_L1eEM18M: - eventCount: 0 HLT_noalg_L1eEM20: eventCount: 7 HLT_noalg_L1eEM20L: @@ -3733,32 +3671,34 @@ HLT_noalg_L1eEM20M: eventCount: 0 HLT_noalg_L1eEM22: eventCount: 7 +HLT_noalg_L1eEM22L: + eventCount: 0 HLT_noalg_L1eEM22M: eventCount: 0 HLT_noalg_L1eEM22T: eventCount: 0 HLT_noalg_L1eEM3: eventCount: 50 -HLT_noalg_L1eEM7: - eventCount: 24 +HLT_noalg_L1eEM5: + eventCount: 39 HLT_noalg_L1eEM8: - eventCount: 22 + eventCount: 23 HLT_noalg_L1eEM8L: eventCount: 0 +HLT_noalg_L1eEM8M: + eventCount: 0 HLT_noalg_L1eTAU100: eventCount: 0 HLT_noalg_L1eTAU12: eventCount: 0 +HLT_noalg_L1eTAU12L: + eventCount: 0 HLT_noalg_L1eTAU12M: eventCount: 0 HLT_noalg_L1eTAU20: eventCount: 0 -HLT_noalg_L1eTAU20M: - eventCount: 0 HLT_noalg_L1eTAU25: eventCount: 0 -HLT_noalg_L1eTAU25M: - eventCount: 0 HLT_noalg_L1eTAU30H: eventCount: 0 HLT_noalg_L1eTAU40: @@ -3767,49 +3707,17 @@ HLT_noalg_L1eTAU60: eventCount: 0 HLT_noalg_L1eTAU8: eventCount: 0 -HLT_noalg_LArPEBCalib_L1RD0_BGRP11: +HLT_noalg_L1jTAU12: eventCount: 0 -HLT_noalg_LArPEBCalib_L1RD0_EMPTY: +HLT_noalg_L1jTAU12M: eventCount: 0 -HLT_noalg_SCTPEB_L1RD0_EMPTY: +HLT_noalg_LArPEBCalib_L1LAR-ZEE: eventCount: 0 -HLT_noalg_bkg_L1Bkg: - eventCount: 0 -HLT_noalg_cosmiccalo_L1EM3_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1EM7_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J12_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J12_FIRSTEMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J30_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J30_FIRSTEMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1J30p31ETA49_EMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1RD0_FIRSTEMPTY: - eventCount: 0 -HLT_noalg_cosmiccalo_L1RD1_EMPTY: - eventCount: 0 -HLT_noalg_eb_L1ABORTGAPNOTCALIB_noPS: - eventCount: 0 -HLT_noalg_eb_L1EMPTY_noPS: - eventCount: 0 -HLT_noalg_eb_L1FIRSTEMPTY_noPS: - eventCount: 0 -HLT_noalg_eb_L1PhysicsHigh_noPS: - eventCount: 10 -HLT_noalg_eb_L1PhysicsVeryHigh_noPS: - eventCount: 1 -HLT_noalg_eb_L1RD3_EMPTY: +HLT_noalg_LArPEBCalib_L1RD0_BGRP11: eventCount: 0 -HLT_noalg_eb_L1RD3_FILLED: - eventCount: 50 -HLT_noalg_eb_L1UNPAIRED_ISO_noPS: +HLT_noalg_LArPEBCalib_L1RD0_EMPTY: eventCount: 0 -HLT_noalg_eb_L1UNPAIRED_NONISO_noPS: +HLT_noalg_SCTPEB_L1RD0_EMPTY: eventCount: 0 HLT_noalg_idmon_L1RD0_EMPTY: eventCount: 0 @@ -3817,14 +3725,8 @@ HLT_noalg_idmon_L1RD0_FILLED: eventCount: 50 HLT_noalg_idmon_L1RD0_UNPAIRED_ISO: eventCount: 0 -HLT_noalg_l1calo_L1J400: - eventCount: 0 HLT_noalg_laser_TilePEB_L1CALREQ2: eventCount: 0 -HLT_noalg_mb_L1RD2_EMPTY: - eventCount: 0 -HLT_noalg_zb_L1ZB: - eventCount: 0 HLT_tau0_ptonly_L1TAU60: eventCount: 1 stepCounts: @@ -4248,8 +4150,6 @@ HLT_tau35_mediumRNN_tracktwoMVABDT_L1TAU20IM: 4: 1 HLT_tau35_mediumRNN_tracktwoMVABDT_L1eTAU20: eventCount: 0 -HLT_tau35_mediumRNN_tracktwoMVABDT_L1eTAU20M: - eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVABDT_probe_xe110_pfsum_vssk_L1XE50: eventCount: 0 HLT_tau35_mediumRNN_tracktwoMVABDT_tau25_mediumRNN_tracktwoMVABDT_03dRAB30_L1DR-TAU20ITAU12I-J25: @@ -4470,12 +4370,10 @@ HLT_tau80_tightRNN_tracktwoLLP_tau60_tightRNN_tracktwoLLP_03dRAB_L1TAU60_2TAU40: 4: 2 HLT_timeburner_L1All: eventCount: 0 -HLT_unconvtrk0_fslrt_L1All: - eventCount: 48 - stepCounts: - 0: 48 - stepFeatures: - 0: 48 +HLT_unconvtrk0_fslrt_L14J15: + eventCount: 0 +HLT_unconvtrk0_fslrt_L1J100: + eventCount: 0 HLT_unconvtrk0_fslrt_L1XE50: eventCount: 1 stepCounts: diff --git a/Trigger/TrigValidation/TrigValAlgs/src/TrigDecisionChecker.cxx b/Trigger/TrigValidation/TrigValAlgs/src/TrigDecisionChecker.cxx index 2476c4923b36a9a7d0410a62784b965f39b26b76..e207034d82e338ddc1769ad5ff1d56a3370fa875 100644 --- a/Trigger/TrigValidation/TrigValAlgs/src/TrigDecisionChecker.cxx +++ b/Trigger/TrigValidation/TrigValAlgs/src/TrigDecisionChecker.cxx @@ -102,8 +102,7 @@ StatusCode TrigDecisionChecker::initialize() // get handle to TrigDecisionTool ATH_CHECK(m_trigDec.retrieve()); - m_trigDec->ExperimentalAndExpertMethods()->enable(); - + // reserve space for vectors m_summary.reserve(700); m_summaryChainPassRaw.reserve(700); @@ -401,9 +400,7 @@ StatusCode TrigDecisionChecker::execute() msg(MSG::INFO) << "Pass state EF = " << m_trigDec->isPassed("EF_.*") << endmsg; msg(MSG::INFO) << "Pass state HLT = " << m_trigDec->isPassed("HLT_.*") << endmsg; } - - Trig::ExpertMethods* em = m_trigDec->ExperimentalAndExpertMethods(); - + // L1 std::vector<std::string> allItems = m_trigDec->getListOfTriggers("L1_.*"); if (!allItems.empty()) { @@ -412,7 +409,7 @@ StatusCode TrigDecisionChecker::execute() for (std::vector<std::string>::const_iterator itemIt = allItems.begin(); itemIt != allItems.end(); ++itemIt) { - const LVL1CTP::Lvl1Item* aItem = em->getItemDetails(*itemIt); + const LVL1CTP::Lvl1Item* aItem = m_trigDec->ExperimentalAndExpertMethods().getItemDetails(*itemIt); if (!aItem) continue; if (aItem->name()=="") continue; @@ -463,7 +460,7 @@ StatusCode TrigDecisionChecker::execute() std::map<std::string,float> t_ps_map; for(std::vector<std::string>::iterator chIter = confChains.begin(); chIter != confChains.end(); ++chIter) { - const TrigConf::HLTChain * ch = em->getChainConfigurationDetails(*chIter); + const TrigConf::HLTChain * ch = m_trigDec->ExperimentalAndExpertMethods().getChainConfigurationDetails(*chIter); std::string name = *chIter; m_summary.push_back(name); t_pt_map[name] = ch->pass_through(); @@ -499,7 +496,7 @@ StatusCode TrigDecisionChecker::execute() std::string name = m_summary[i]; ATH_MSG_VERBOSE("Testing chain: " << name); - const HLT::Chain* aChain = em->getChainDetails(name); + const HLT::Chain* aChain = m_trigDec->ExperimentalAndExpertMethods().getChainDetails(name); if (! aChain) { // inactive chain continue; } diff --git a/Trigger/TrigValidation/TrigValAlgs/src/TrigEDMChecker.cxx b/Trigger/TrigValidation/TrigValAlgs/src/TrigEDMChecker.cxx index a0370219a9804e890789b28a2b4c5d8f1e289545..dc3ed7c68133c064588f0aa30dafee8f5ea4516e 100644 --- a/Trigger/TrigValidation/TrigValAlgs/src/TrigEDMChecker.cxx +++ b/Trigger/TrigValidation/TrigValAlgs/src/TrigEDMChecker.cxx @@ -244,7 +244,6 @@ StatusCode TrigEDMChecker::initialize() { if (m_doTDTCheck || m_doDumpTrigCompsiteNavigation) { ATH_CHECK( m_trigDec.retrieve() ); - m_trigDec->ExperimentalAndExpertMethods()->enable(); ATH_MSG_INFO("TDT Executing with navigation format: " << m_trigDec->getNavigationFormat()); } ATH_CHECK(m_muonTracksKey.initialize(m_doTDTCheck)); @@ -1781,6 +1780,9 @@ StatusCode TrigEDMChecker::dumpxAODElectronContainer() { //DEBUG output for Egamma container ATH_MSG_INFO(" REGTEST: xAOD Reconstruction variables: "); // //Cluster and ShowerShape info + // + static const SG::AuxElement::Accessor< float > accLH("LHValue"); + static const SG::AuxElement::Accessor< float > accLHCalo("LHCaloValue"); for (const auto eg : *elCont){ //REGTEST printout if (eg) { @@ -1811,12 +1813,12 @@ StatusCode TrigEDMChecker::dumpxAODElectronContainer() { if(eg->selectionisEM(isEMbit,"isEMLHTight")) ATH_MSG_INFO(" REGTEST: isEMLHTight " << std::hex << isEMbit << std::dec); else ATH_MSG_WARNING(" REGTEST: Missing Aux info"); - if(eg->likelihoodValue(val_float,"LHValue")) - ATH_MSG_INFO(" REGTEST: LHValue " << val_float); + if(accLH.isAvailable(*eg)) + ATH_MSG_INFO(" REGTEST: LHValue " << accLH(*eg)); else ATH_MSG_WARNING(" REGTEST: Missing Aux info "); - if(eg->likelihoodValue(val_float,"LHCaloValue")) - ATH_MSG_INFO(" REGTEST: LHValue " << val_float); + if(accLHCalo.isAvailable(*eg)) + ATH_MSG_INFO(" REGTEST: LHValue " << accLHCalo(*eg)); else ATH_MSG_WARNING(" REGTEST: Missing Aux info "); if(eg->passSelection(pid,"LHVLoose")) @@ -4021,8 +4023,6 @@ StatusCode TrigEDMChecker::dumpTDT() { if (chain.empty()) { chain = "HLT_.*"; } - if (msgLvl(MSG::VERBOSE)) m_trigDec->setLevel( MSG::VERBOSE ); - else if (msgLvl(MSG::DEBUG)) m_trigDec->setLevel( MSG::DEBUG ); std::vector<std::string> confChains = m_trigDec->getListOfTriggers(chain); for (const auto& item : confChains) { bool passed = m_trigDec->isPassed(item); @@ -4239,7 +4239,7 @@ StatusCode TrigEDMChecker::TrigCompositeNavigationToDot(std::string& returnValue pass = cg->isPassed(TrigDefs::requireDecision); std::vector<std::string> chains = cg->getListOfTriggers(); for (const std::string& chain : chains) { - const TrigConf::HLTChain* hltChain = m_trigDec->ExperimentalAndExpertMethods()->getChainConfigurationDetails(chain); + const TrigConf::HLTChain* hltChain = m_trigDec->ExperimentalAndExpertMethods().getChainConfigurationDetails(chain); const HLT::Identifier chainID_tmp( hltChain->chain_name() ); chainIDs.insert( chainID_tmp.numeric() ); const std::vector<size_t> legMultiplicites = hltChain->leg_multiplicities(); diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py index cb2c8d83fa45016071dcdf7be773da0113e9ab13..f5a53a04448e8193ef6955a74b7ae0117a283f24 100644 --- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py +++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py @@ -110,18 +110,6 @@ BTagVars = '.'.join(BTagOutput) BTagJetOutput = ['btaggingLink', 'Jvt', 'JVFCorr', 'SumPtTrkPt500'] BTagJetVars ='.'.join(BTagJetOutput) -hitDVTrkToKeepBase = ['id','pt','eta','phi','n_hits_innermost','n_hits_pix','n_hits_sct','a0beam'] -hitDVTrkToKeep = [] -for var in hitDVTrkToKeepBase: - hitDVTrkToKeep.append('hitDVTrk_'+var) -hitDVTrkVars = '.'.join(hitDVTrkToKeep) - -hitDVSPToKeepBase = ['eta','r','phi','layer','isPix','isSct','usedTrkId'] -hitDVSPToKeep = [] -for var in hitDVSPToKeepBase: - hitDVSPToKeep.append('hitDVSP_'+var) -hitDVSPVars = '.'.join(hitDVSPToKeep) - hitDVToKeepBase = ['seed_eta','seed_phi','seed_type','n_track_qual','ly0_sp_frac','ly1_sp_frac','ly2_sp_frac','ly3_sp_frac','ly4_sp_frac','ly5_sp_frac','ly6_sp_frac','ly7_sp_frac','bdt_score'] hitDVToKeep = [] for var in hitDVToKeepBase: @@ -140,7 +128,8 @@ for var in dEdxHitToKeepBase: dEdxHitToKeep.append('dEdxHit_'+var) dEdxHitVars = '.'.join(dEdxHitToKeep) -HPtdEdxTrkToKeepBase = ['pt','eta','phi','dedx','dedx_n_usedhits','a0beam','n_hits_innermost','n_hits_inner','n_hits_pix','n_hits_sct'] +HPtdEdxTrkToKeepBase = ['pt','eta','phi','a0beam','dedx','n_hits_innermost','n_hits_inner','n_hits_pix','n_hits_sct', + 'n_hdedx_hits_1p45','n_hdedx_hits_1p50','n_hdedx_hits_1p55','n_hdedx_hits_1p60','n_hdedx_hits_1p65','n_hdedx_hits_1p70','n_hdedx_hits_1p75','n_hdedx_hits_1p80'] HPtdEdxTrkToKeep = [] for var in HPtdEdxTrkToKeepBase: HPtdEdxTrkToKeep.append('HPtdEdxTrk_'+var) @@ -153,7 +142,7 @@ DisTrkToKeepNoIso = ['pt','eta','phi','d0','z0','chi2','ndof','n_hits_innermost' 'ndofsum_br_ibl','ndofsum_br_pix1','ndofsum_br_pix2','ndofsum_br_pix3','ndofsum_br_sct1','ndofsum_br_sct2','ndofsum_br_sct3','ndofsum_br_sct4', 'n_brhits_good_ibl','n_brhits_good_pix1','n_brhits_good_pix2','n_brhits_good_pix3', 'n_brhits_good_sct1','n_brhits_good_sct2','n_brhits_good_sct3','n_brhits_good_sct4'] -DisTrkToKeepIso = ['iso1_dr01','iso1_dr02','iso1_dr04','iso2_dr01','iso2_dr02','iso2_dr04','iso3_dr01','iso3_dr02','iso3_dr04'] +DisTrkToKeepIso = ['category','is_fail','iso1_dr01','iso1_dr02','iso1_dr04','iso2_dr01','iso2_dr02','iso2_dr04','iso3_dr01','iso3_dr02','iso3_dr04'] DisTrkVars = [] for var in DisTrkToKeepNoIso: DisTrkVars.append('disTrkCand_'+var) @@ -268,8 +257,6 @@ TriggerHLTListRun3 = [ ('xAOD::TrigEMClusterAuxContainer#HLT_FastCaloEMClustersAux.', 'BS ESD AODFULL', 'Egamma'), ('xAOD::TrigRingerRingsContainer#HLT_FastCaloRinger', 'BS ESD AODFULL', 'Egamma', 'inViews:EMCaloViews'), #Ringer ('xAOD::TrigRingerRingsAuxContainer#HLT_FastCaloRingerAux.', 'BS ESD AODFULL', 'Egamma'), #Ringer - ('xAOD::TrigRingerRingsContainer#HLT_FastCaloAsymRinger', 'BS ESD AODFULL', 'Egamma', 'inViews:EMCaloViews'), #Ringer - ('xAOD::TrigRingerRingsAuxContainer#HLT_FastCaloAsymRingerAux.', 'BS ESD AODFULL', 'Egamma'), #Ringer # Egamma FWD ('xAOD::TrigEMClusterContainer#HLT_FastCaloEMClusters_FWD', 'BS ESD AODFULL', 'Egamma', 'inViews:EMCaloViews_FWD'), # last arg specifies in which view container the fragments are, look into the proprty of View maker alg for it @@ -787,11 +774,6 @@ TriggerHLTListRun3 = [ # UTT # hit-based displaced vertex - # commented out temporarly due to HLT truncation issue (ATR-23958) - #('xAOD::TrigCompositeContainer#HLT_HitDVTrk', 'BS ESD', 'ID'), - #('xAOD::TrigCompositeAuxContainer#HLT_HitDVTrkAux.'+hitDVTrkVars, 'BS ESD', 'ID'), - #('xAOD::TrigCompositeContainer#HLT_HitDVSP', 'BS ESD AODFULL', 'ID'), - #('xAOD::TrigCompositeAuxContainer#HLT_HitDVSPAux.'+hitDVSPVars, 'BS ESD AODFULL', 'ID'), ('xAOD::TrigCompositeContainer#HLT_HitDV', 'BS ESD AODFULL AODSLIM', 'ID'), ('xAOD::TrigCompositeAuxContainer#HLT_HitDVAux.'+hitDVVars, 'BS ESD AODFULL AODSLIM', 'ID'), diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1MuonSimulationConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1MuonSimulationConfig.py index 7a1ceacff76ac825acbd30275193bbab4d545de2..5aa6f7cc6fe2c656cb927a13d30c2e8013186808 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1MuonSimulationConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1MuonSimulationConfig.py @@ -106,18 +106,13 @@ def Lvl1MuonSimulationCfg(flags): from MuonConfig.MuonCablingConfig import RPCCablingConfigCfg acc.merge( RPCCablingConfigCfg(flags) ) - if not flags.Input.isMC: - tagName = flags.Trigger.L1MuonSim.CondDBOffline if flags.Trigger.L1MuonSim.CondDBOffline != '' else "OFLCOND-MC16-SDR-RUN2-04" - acc.merge(addFolders(flags, ["<db>COOLOFL_RPC/OFLP200</db> /RPC/TRIGGER/CM_THR_ETA", - "<db>COOLOFL_RPC/OFLP200</db> /RPC/TRIGGER/CM_THR_PHI"], - tag=tagName, className="CondAttrListCollection")) - rpcL1Alg = CompFactory.TrigT1RPC("TrigT1RPC", - Hardware = True, # not sure if needed, not there in old config, present in JO - DataDetail = False, - RPCbytestream = False, - RPCbytestreamFile = "", - RPCDigitContainer = "RPC_DIGITS_L1") + Hardware = True, # not sure if needed, not there in old config, present in JO + DataDetail = False, + RPCbytestream = False, + RPCbytestreamFile = "", + RPCDigitContainer = "RPC_DIGITS_L1", + useRun3Config = True) acc.addEventAlgo(rpcL1Alg) #TGC @@ -150,9 +145,10 @@ def Lvl1MuonSimulationCfg(flags): tgcL1Alg = CompFactory.LVL1TGCTrigger.LVL1TGCTrigger("LVL1TGCTrigger", - InputData_perEvent = "TGC_DIGITS_L1", - MuCTPIInput_TGC = "L1MuctpiStoreTGC", - MaskFileName12 = "TrigT1TGCMaskedChannel._12.db") + InputData_perEvent = "TGC_DIGITS_L1", + MuCTPIInput_TGC = "L1MuctpiStoreTGC", + MaskFileName12 = "TrigT1TGCMaskedChannel._12.db", + useRun3Config = True) if not flags.Input.isMC: tgcL1Alg.TileMuRcv_Input = "rerunTileMuRcvCnt" @@ -160,23 +156,8 @@ def Lvl1MuonSimulationCfg(flags): from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg acc.merge(L1ConfigSvcCfg(flags)) - # based on: Trigger/TrigT1/TrigT1Muctpi/python/TrigT1MuctpiConfig.py - muctpiAlg = CompFactory.LVL1MUCTPI.L1Muctpi("L1Muctpi", - OverlapStrategyName = "LUT", - DumpLUT = False, - FlaggingMode = False, - MultiplicityStrategyName = "INCLUSIVE", - # TODO this value depends on the flags on original however seem always to default to this two settings below - # is definitely different for Run3 - LUTXMLFile = "TrigConfMuctpi/data10_7TeV.periodI.physics_Muons.MuCTPI_LUT.NoBEOverlaps_composedEF.v002_modifiedBB.xml", - RunPeriod = "RUN2", - GeometryXMLFile = "TrigConfMuctpi/TestMioctGeometry_2016_05_30_CS_2600573263.xml", - DoNIMOutput = True, - NIMBarrelBit = 29, - NIMEndcapBit = 30, - LVL1ConfigSvc = acc.getService("LVL1ConfigSvc")) - - acc.addEventAlgo(muctpiAlg) + from TrigT1MuctpiPhase1.TrigT1MuctpiPhase1Config import MUCTPI_AthAlgCfg + acc.merge(MUCTPI_AthAlgCfg(flags)) return acc @@ -194,6 +175,7 @@ if __name__ == "__main__": flags.Scheduler.ShowDataDeps=True flags.Scheduler.CheckDependencies=True flags.Scheduler.ShowDataFlow=True + flags.Trigger.enableL1MuonPhase1=True acc = MainServicesCfg(flags) diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py index 8fa4ef3cf5ea7757a5f7f4ba600b45b60e7e358b..749107c862d74a183d7bc73cc8f258f06cefc584 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1SimulationConfig.py @@ -231,6 +231,7 @@ if __name__ == '__main__': flags.Scheduler.ShowDataDeps=True flags.Scheduler.CheckDependencies=True flags.Scheduler.ShowDataFlow=True + flags.Trigger.enableL1MuonPhase1=True from AthenaConfiguration.MainServicesConfig import MainServicesCfg acc = MainServicesCfg(flags) diff --git a/Trigger/TriggerCommon/TriggerJobOpts/share/BStoESD_Tier0_HLTConfig_jobOptions.py b/Trigger/TriggerCommon/TriggerJobOpts/share/BStoESD_Tier0_HLTConfig_jobOptions.py index c0666cc57119fd53ce999757738ebdb255def617..8720eae9897d5b4356de200a7422906cd7d9bd01 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/share/BStoESD_Tier0_HLTConfig_jobOptions.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/share/BStoESD_Tier0_HLTConfig_jobOptions.py @@ -84,7 +84,6 @@ if rec.doTrigger(): if not hasattr(ToolSvc,'RecMuCTPIByteStreamTool'): from TrigT1ResultByteStream.TrigT1ResultByteStreamConf import RecMuCTPIByteStreamTool ToolSvc += RecMuCTPIByteStreamTool("RecMuCTPIByteStreamTool") - ToolSvc.RecMuCTPIByteStreamTool.LVL1ConfigSvc="TrigConf::TrigConfigSvc/TrigConfigSvc" import TrigT1CaloTools.TrigT1CaloToolsConf as calotools # noqa: F401 for toolName in ['L1JetCMXTools', 'L1EnergyCMXTools', 'L1TriggerTowerTool', 'L1CPMTools', diff --git a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_newJO.py b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_newJO.py index 94c81b142612e9784543881f2a005be1aead75d6..0dec6f732f70c8f30e053217981513ff9bb32246 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_newJO.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_newJO.py @@ -54,6 +54,9 @@ flags.IOVDb.GlobalTag = lambda f: 'OFLCOND-MC16-SDR-25-02' if f.Input.isMC else flags.Common.isOnline = lambda f: not f.Input.isMC flags.Common.MsgSourceLength=70 flags.Trigger.doLVL1=True # run L1 sim also on data +flags.Trigger.enableL1MuonPhase1=True +flags.Trigger.enableL1CaloPhase1=False +flags.Trigger.enableL1CaloLegacy=True flags.Concurrency.NumThreads = 1 flags.InDet.useSctDCS = False diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CalibCosmicMon/EnhancedBiasChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CalibCosmicMon/EnhancedBiasChainConfiguration.py index 28ba20a5399a0fd5364ea3d4c14214169714651f..68adad2a6cdc6f1922e5e82cd4a8c6bd832d0adb 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CalibCosmicMon/EnhancedBiasChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CalibCosmicMon/EnhancedBiasChainConfiguration.py @@ -21,27 +21,27 @@ l1seeds = { 'low' : \ 'L1_J30',\ #'L1_J30p0ETA49_2J20p0ETA49',\ 'L1_JPSI-1M5-eEM7',\ - 'L1_MU10',\ + 'L1_MU8F',\ 'L1_ZB'],\ 'medium' : \ [ 'L1_2EM15',\ - 'L1_2MU4',\ + 'L1_2MU3V',\ 'L1_DR-TAU20ITAU12I',\ - 'L1_DY-BOX-2MU6',\ + 'L1_DY-BOX-2MU5VF',\ 'L1_EM15VHI_2TAU12IM_J25_3J12',\ #'L1_EM15_XS30',\ 'L1_EM18VHI',\ 'L1_EM20VH',\ - 'L1_EM7_MU10',\ + 'L1_EM7_MU8F',\ 'L1_J30p31ETA49',\ 'L1_J40p0ETA25_2J15p31ETA49',\ 'L1_J50',\ 'L1_J50_DETA20-J50J',\ - 'L1_LFV-MU6',\ - 'L1_MU10_TAU12IM',\ - 'L1_MU6_J20',\ - #'L1_MU6_J30p0ETA49_2J20p0ETA49',\ + 'L1_LFV-MU5VF',\ + 'L1_MU8F_TAU12IM',\ + #'L1_MU5VF_J20',\ + #'L1_MU5VF_J30p0ETA49_2J20p0ETA49',\ 'L1_TAU20IM_2TAU12IM_J25_2J20_3J12',\ 'L1_TAU20IM_2TAU12IM_XE35',\ 'L1_TAU40',\ diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/EgammaDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/EgammaDefs.py index 2a15cbba29b41d940bc685e7a972aa2f81f8f98d..db6f279fd770d5b074c6340ec5478f76c6a5b9da 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/EgammaDefs.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/EgammaDefs.py @@ -8,6 +8,8 @@ from TrigEDMConfig.TriggerEDMRun3 import recordable from AthenaCommon.Logging import logging from AthenaConfiguration.ComponentFactory import CompFactory from ROOT import egammaPID +from TrigInDetConfig.ConfigSettings import getInDetTrigConfig +IDTrigConfig = getInDetTrigConfig( 'electron' ) # Add ONNX into app service mgr (in rec-ex common style), but only in Run 2 conf style from AthenaCommon.Configurable import Configurable @@ -25,10 +27,11 @@ class TrigEgammaKeys(object): outputElectronKey = recordable('HLT_egamma_Electrons') SuperPhotonRecCollectionName = 'HLT_PhotonSuperRecCollection' EgammaRecKey = 'HLT_egammaRecCollection' + IDTrigConfig = getInDetTrigConfig( 'electron' ) outputPhotonKey = recordable('HLT_egamma_Photons') outputTopoSeededClusterKey = 'HLT_egammaTopoSeededClusters' TrigEMClusterToolOutputContainer = recordable('HLT_TrigEMClusters') - TrigElectronTracksCollectionName = recordable('HLT_IDTrack_Electron_IDTrig') + TrigElectronTracksCollectionName = IDTrigConfig.tracks_IDTrig() pidVersion = 'rel22_20210611' dnnVersion = 'mc16_20210430' ringerVersion = 'TrigL2_20210702_r4' @@ -38,7 +41,8 @@ class TrigEgammaKeys(object): class TrigEgammaKeys_LRT(object): """Static class to collect all string manipulation in Electron_LRT sequences """ outputElectronKey_LRT = recordable('HLT_egamma_Electrons_LRT') - TrigElectronTracksCollectionName_LRT = recordable('HLT_IDTrack_ElecLRT_IDTrig') + IDTrigConfig_LRT = getInDetTrigConfig('electronLRT') + TrigElectronTracksCollectionName_LRT = IDTrigConfig_LRT.tracks_IDTrig() class TrigEgammaKeys_GSF(object): """Static class to collect all string manipulation in Electron sequences """ diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences.py index 692fadda81e3c276242b38d82fd582aa05417e37..3686f3c66cd1148b7d8669044a683b0fb7b8230b 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences.py @@ -9,13 +9,13 @@ from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFr from AthenaCommon.CFElements import parOR, seqAND from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm from DecisionHandling.DecisionHandlingConf import ViewCreatorCentredOnClusterROITool +from TriggerMenuMT.HLTMenuConfig.Egamma.EgammaDefs import TrigEgammaKeys from TrigEDMConfig.TriggerEDMRun3 import recordable def fastElectronSequence(ConfigFlags): """ second step: tracking.....""" - from TrigInDetConfig.ConfigSettings import getInDetTrigConfig - IDTrigConfig = getInDetTrigConfig( 'electron' ) + IDTrigConfig = TrigEgammaKeys.IDTrigConfig from TrigInDetConfig.InDetSetup import makeInDetAlgs RoIs = "EMIDRoIs" # contract with the fastCalo diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences_LRT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences_LRT.py index 293d1cecff4e0a37dea2f6f9def7fcb4c81ea724..2c354337e1aae43c587301202123365984f5d748 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences_LRT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/FastElectronMenuSequences_LRT.py @@ -9,13 +9,13 @@ from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFr from AthenaCommon.CFElements import parOR, seqAND from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm from DecisionHandling.DecisionHandlingConf import ViewCreatorCentredOnClusterROITool +from TriggerMenuMT.HLTMenuConfig.Egamma.EgammaDefs import TrigEgammaKeys_LRT from TrigEDMConfig.TriggerEDMRun3 import recordable def fastElectronSequence_LRT(ConfigFlags): """ second step: tracking.....""" - from TrigInDetConfig.ConfigSettings import getInDetTrigConfig - IDTrigConfig = getInDetTrigConfig( "electronLRT" ) + IDTrigConfig = TrigEgammaKeys_LRT.IDTrigConfig_LRT from TrigInDetConfig.InDetSetup import makeInDetAlgs RoIs = "EMIDRoIs_LRT" # contract with the fastCalo diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/TrigEgammaFactories.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/TrigEgammaFactories.py index 33376f2adaa1b292dea5a1ae568de0336fc3f66d..3bfd7486e12fcf3b7c898ad5d31089d976a54ecf 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/TrigEgammaFactories.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/TrigEgammaFactories.py @@ -111,7 +111,7 @@ from IsolationAlgs.IsolationAlgsConf import IsolationBuilder def TrigElectronIsoBuilderCfg(name='TrigElectronIsolationBuilder'): TrigElectronIsolationBuilder = AlgFactory(IsolationBuilder, name = name, - doAdd = False, + doAdd = False, ElectronCollectionContainerName = 'HLT_egamma_Electrons', CaloCellIsolationTool = None, CaloTopoIsolationTool = None, @@ -120,13 +120,14 @@ def TrigElectronIsoBuilderCfg(name='TrigElectronIsolationBuilder'): ElIsoTypes = [[isoPar.ptcone20]], ElCorTypes = [[isoPar.coreTrackPtr]], ElCorTypesExtra = [[]], - ) + IsTrigger = True, + ) return TrigElectronIsolationBuilder() def TrigElectronIsoBuilderCfg_LRT(name='TrigElectronIsolationBuilder_LRT'): TrigElectronIsolationBuilder = AlgFactory(IsolationBuilder, name = name, - doAdd = False, + doAdd = False, ElectronCollectionContainerName = 'HLT_egamma_Electrons_LRT', CaloCellIsolationTool = None, CaloTopoIsolationTool = None, @@ -152,6 +153,8 @@ cfrc = ToolFactory( from ParticlesInConeTools.ParticlesInConeToolsConf import xAOD__CaloClustersInConeTool TrigCaloClustersInConeTool = ToolFactory(xAOD__CaloClustersInConeTool, CaloClusterLocation = TrigEgammaKeys.TrigEMClusterToolOutputContainer) + +# this is not used below... from IsolationCorrections.IsolationCorrectionsConf import CP__IsolationCorrectionTool as ICT IsoCorrectionTool = ToolFactory(ICT, name = "TrigLeakageCorrTool") @@ -179,7 +182,7 @@ H_ClIT.UseEMScale=True def TrigPhotonIsoBuilderCfg(name='TrigPhotonIsolationBuilder'): TrigPhotonIsolationBuilder = AlgFactory(IsolationBuilder, name = name, - doAdd = False, + doAdd = False, PhotonCollectionContainerName = 'HLT_egamma_Photons', CaloCellIsolationTool = None, CaloTopoIsolationTool = TrigCaloIsolationTool, @@ -189,8 +192,6 @@ def TrigPhotonIsoBuilderCfg(name='TrigPhotonIsolationBuilder'): PhCorTypes = [[isoPar.core57cells]], PhCorTypesExtra = [[]], ) - - return TrigPhotonIsolationBuilder() diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py index 0f9bb13adfca5852e8a3df13b2940369d2245caf..c81ccf8b4dd0ad7076f25c07be49776019a35b64 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py @@ -79,6 +79,7 @@ def precisionElectronRecoSequence(RoIs, ion=False): collectionOut_dummy = TrigTopoEgammaAlgo.DummyElectronOutputName ## TrigElectronIsoBuilderCfg_noGSF ## isoBuilder = TrigElectronIsoBuilderCfg("TrigElectronIsoBuilderCfg_noGSF" + tag) + isoBuilder.useBremAssoc = False thesequence += isoBuilder #online monitoring for topoEgammaBuilder diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionTrackingSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionTrackingSequences.py index 48950ee13d6a74ed25ef1af0e207d5ed356ff557..f639e35d525e8da69f60a3635f2a65713b565d32 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionTrackingSequences.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionTrackingSequences.py @@ -15,8 +15,8 @@ from TriggerMenuMT.HLTMenuConfig.Egamma.EgammaDefs import TrigEgammaKeys def precisionTracking(RoIs, precisionCaloClusters, ion=False): ## Taking Fast Track information computed in 2nd step ## - from TrigInDetConfig.ConfigSettings import getInDetTrigConfig - IDTrigConfig = getInDetTrigConfig( 'electron' ) + + IDTrigConfig = TrigEgammaKeys.IDTrigConfig tag = '_ion' if ion is True else '' diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionTrackingSequences_LRT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionTrackingSequences_LRT.py index 56ca9cc5ce9e98176fe0c4138aed36258aa10f33..8d43c866ca60aee3136b0ee27f691df23f24077f 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionTrackingSequences_LRT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionTrackingSequences_LRT.py @@ -15,8 +15,8 @@ from TriggerMenuMT.HLTMenuConfig.Egamma.EgammaDefs import TrigEgammaKeys_LRT def precisionTracking_LRT(RoIs, precisionCaloClusters): ## Taking Fast Track information computed in 2nd step ## - from TrigInDetConfig.ConfigSettings import getInDetTrigConfig - IDTrigConfig = getInDetTrigConfig( 'electronLRT' ) + + IDTrigConfig = TrigEgammaKeys_LRT.IDTrigConfig_LRT # TrackCollection="TrigFastTrackFinder_Tracks_Electron" ViewVerifyTrk = CfgMgr.AthViews__ViewDataVerifier("FastTrackViewDataVerifier_LRT") diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Cosmic_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Cosmic_run3_v1.py index bd8ad724d6df407a074ec304e9490db633fdbd4f..72535388e3cc88873ca6657695fd474725c383fe 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Cosmic_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Cosmic_run3_v1.py @@ -9,6 +9,16 @@ #['name', 'L1chainParts'=[], 'stream', 'groups', 'merging'=[], 'topoStartFrom'=False], from TriggerMenuMT.HLTMenuConfig.Menu.ChainDefInMenu import ChainProp from TriggerMenuMT.HLTMenuConfig.Menu.PhysicsP1_pp_run3_v1 import addP1Signatures +from TriggerMenuMT.HLTMenuConfig.Menu.Physics_pp_run3_v1 import ( + SinglePhotonGroup, + SingleJetGroup, + SingleBjetGroup, + SingleMuonGroup, + MultiMuonGroup, + EgammaMuonGroup, + PrimaryLegGroup, + PrimaryL1MuGroup, +) def setupMenu(): from TriggerJobOpts.TriggerFlags import TriggerFlags @@ -18,34 +28,69 @@ def setupMenu(): TriggerFlags.TestSlice.signatures = [] TriggerFlags.MuonSlice.signatures = [ - ChainProp(name='HLT_mu4_cosmic_L1MU4_EMPTY', l1SeedThresholds=['MU4'], stream=['CosmicMuons'], groups=['RATE:Cosmic_Muon','BW:Muon']), - ChainProp(name='HLT_mu4_cosmic_L1MU4', l1SeedThresholds=['MU4'], stream=['CosmicMuons'], groups=['RATE:Cosmic_Muon','BW:Muon']), - ChainProp(name='HLT_mu4_msonly_cosmic_L1MU4_EMPTY', l1SeedThresholds=['MU4'], stream=['CosmicMuons'], groups=['RATE:Cosmic_Muon','BW:Muon']), + ChainProp(name='HLT_mu4_cosmic_L1MU3V_EMPTY', l1SeedThresholds=['MU3V'], stream=['CosmicMuons'], groups=['RATE:Cosmic_Muon','BW:Muon']), + ChainProp(name='HLT_mu4_cosmic_L1MU3V', l1SeedThresholds=['MU3V'], stream=['CosmicMuons'], groups=['RATE:Cosmic_Muon','BW:Muon']), + ChainProp(name='HLT_mu4_msonly_cosmic_L1MU3V_EMPTY', l1SeedThresholds=['MU3V'], stream=['CosmicMuons'], groups=['RATE:Cosmic_Muon','BW:Muon']), + + ChainProp(name='HLT_3mu6_msonly_L1MU3V_EMPTY', l1SeedThresholds=['MU3V'], stream=['Late'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_3mu6_msonly_L1MU5VF_EMPTY', l1SeedThresholds=['MU5VF'], stream=['Late'], groups=PrimaryL1MuGroup+MultiMuonGroup), + + ChainProp(name='HLT_mu60_0eta105_msonly_L1MU14FCH', l1SeedThresholds=['MU14FCH'], stream=['Main'], groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu60_msonly_3layersEC_L1MU14FCH', l1SeedThresholds=['MU14FCH'], stream=['Main'], groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu80_msonly_3layersEC_L1MU14FCH', l1SeedThresholds=['MU14FCH'], stream=['Main'], groups=PrimaryL1MuGroup+SingleMuonGroup), ] TriggerFlags.EgammaSlice.signatures = [ - ChainProp(name='HLT_g3_etcut_LArPEB_L1EM3',stream=['LArCells'], groups=['RATE:SinglePhoton', 'BW:Egamma']) + ChainProp(name='HLT_g3_etcut_LArPEB_L1EM3',stream=['LArCells'], groups=['RATE:SinglePhoton', 'BW:Egamma']), + ChainProp(name='HLT_g3_loose_LArPEBHLT_L1EM3', stream=['LArCells'], groups=['PS:Online']+SinglePhotonGroup), + ChainProp(name='HLT_g12_loose_LArPEBHLT_L1EM10VH', stream=['LArCells'], groups=['PS:Online']+SinglePhotonGroup), + ChainProp(name='HLT_g20_loose_LArPEBHLT_L1EM15', stream=['LArCells'], groups=['PS:Online']+SinglePhotonGroup), + ChainProp(name='HLT_g40_loose_LArPEBHLT_L1EM20VHI',stream=['LArCells'], groups=['PS:Online']+SinglePhotonGroup), + ChainProp(name='HLT_g60_loose_LArPEBHLT_L1EM20VHI',stream=['LArCells'], groups=['PS:Online']+SinglePhotonGroup), + ChainProp(name='HLT_g80_loose_LArPEBHLT_L1EM20VHI',stream=['LArCells'], groups=['PS:Online']+SinglePhotonGroup), + + ChainProp(name='HLT_e5_etcut_L1EM3',stream=['Main'], groups=['RATE:SingleElectron', 'BW:Egamma']), ] TriggerFlags.METSlice.signatures = [] - TriggerFlags.JetSlice.signatures = [] - TriggerFlags.BjetSlice.signatures = [] + TriggerFlags.JetSlice.signatures = [ + ChainProp(name='HLT_j40_LArPEBHLT_L1J20', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + ChainProp(name='HLT_j165_LArPEBHLT_L1J100', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + ChainProp(name='HLT_j75_320eta490_LArPEBHLT_L1J30p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + ChainProp(name='HLT_j140_320eta490_LArPEBHLT_L1J75p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + ChainProp(name='HLT_j25_LArPEBHLT_L1J15', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + ChainProp(name='HLT_j25_320eta490_LArPEBHLT_L1J15p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + + ChainProp(name='HLT_j15_L1J12_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=PrimaryLegGroup+SingleJetGroup), + ChainProp(name='HLT_j0_HT0_L1J12_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=PrimaryLegGroup+SingleJetGroup), + + ] + TriggerFlags.BjetSlice.signatures = [ + ChainProp(name='HLT_j0_ftf_boffperf_L1MU8F', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=PrimaryLegGroup+SingleBjetGroup), + ChainProp(name='HLT_j0_ftf_boffperf_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=PrimaryLegGroup+SingleBjetGroup), + ChainProp(name='HLT_j0_ftf_boffperf_L1J12_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=PrimaryLegGroup+SingleBjetGroup), + ] TriggerFlags.TauSlice.signatures = [] TriggerFlags.BphysicsSlice.signatures = [] - TriggerFlags.CombinedSlice.signatures = [] + TriggerFlags.CombinedSlice.signatures = [ + ChainProp(name='HLT_g15_loose_2mu10_msonly_L1MU3V_EMPTY', l1SeedThresholds=['EM8VH','MU3V'], stream=['Main'], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g15_loose_2mu10_msonly_L1MU5VF_EMPTY', l1SeedThresholds=['EM8VH','MU5VF'], stream=['Main'], groups=PrimaryLegGroup+EgammaMuonGroup), + ] TriggerFlags.HeavyIonSlice.signatures = [] TriggerFlags.BeamspotSlice.signatures = [] - TriggerFlags.MinBiasSlice.signatures = [] + TriggerFlags.MinBiasSlice.signatures = [ + ChainProp(name='HLT_mb_sptrk_costr_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=['Rate:MinBias','BW:MinBias']), + ChainProp(name='HLT_mb_sptrk_costr_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=['Rate:Cosmic_MinBias','BW:MinBias']), + ] TriggerFlags.CalibSlice.signatures = [] TriggerFlags.CosmicSlice.signatures = [] TriggerFlags.StreamingSlice.signatures = [ - ChainProp(name='HLT_noalg_idcosmic_L1TRT_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['IDCosmic','express'],groups=['RATE:SeededStreamers','BW:Other']), - ChainProp(name='HLT_noalg_idcosmic_L1TRT_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['IDCosmic'],groups=['RATE:SeededStreamers','BW:Other']), - - ChainProp(name='HLT_noalg_cosmicmuons_L1MU4_EMPTY', stream=['CosmicMuons','express'],groups=['RATE:Cosmic_Muon','BW:Muon']), - ChainProp(name='HLT_noalg_cosmiccalo_L1MU11_EMPTY', stream=['CosmicMuons','express'],groups=['RATE:Cosmic_Muon','BW:Muon']), + ChainProp(name='HLT_noalg_L1TRT_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['IDCosmic','express'],groups=['RATE:SeededStreamers','BW:Other']), + ChainProp(name='HLT_noalg_L1TRT_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['IDCosmic'],groups=['RATE:SeededStreamers','BW:Other']), + ChainProp(name='HLT_noalg_L1MU3V_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicMuons','express'],groups=['RATE:Cosmic_Muon','BW:Muon']), + ChainProp(name='HLT_noalg_L1MU8VF_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicMuons','express'],groups=['RATE:Cosmic_Muon','BW:Muon']), ] TriggerFlags.MonitorSlice.signatures = [] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Dev_HI_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Dev_HI_run3_v1.py index 4f29f8f402bc1fefef11ec79a1fe72b69584ddd1..84dd6ea6d61fe1fb4ec04c6f7bba8a83efb61259 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Dev_HI_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Dev_HI_run3_v1.py @@ -33,11 +33,11 @@ def setupMenu(): TriggerFlags.MuonSlice.signatures = TriggerFlags.MuonSlice.signatures() + [ #-- 1 mu - ChainProp(name='HLT_mu8_L1MU6', stream=[HardProbesStream], groups=SingleMuonGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu8_L1MU5VF', stream=[HardProbesStream], groups=SingleMuonGroup+PrimaryL1MuGroup), #-- 2 mu - ChainProp(name='HLT_2mu4_L12MU4', stream=[HardProbesStream], groups=MultiMuonGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu4_mu4noL1_L1MU4', stream=[HardProbesStream], l1SeedThresholds=['MU4','FSNOSEED'], groups=MultiMuonGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_2mu4_L12MU3V', stream=[HardProbesStream], groups=MultiMuonGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu4_mu4noL1_L1MU3V', stream=[HardProbesStream], l1SeedThresholds=['MU3V','FSNOSEED'], groups=MultiMuonGroup+PrimaryL1MuGroup), ] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT_newJO.py index 8f002cc74d3a316e17947bedbf7645bf5c9b8484..c64f47390f41777ad13e192f84d0b6544f11e0a9 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT_newJO.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT_newJO.py @@ -185,7 +185,7 @@ def generateMenu(flags): if __name__ == "__main__": assert getGenerator("muon") is not None, "Can not get basic generator" chainsInMenu = [dictFromChainName("HLT_e10_L1EM7"), dictFromChainName("HLT_e12_L1EM10"), - dictFromChainName("HLT_e10_mu6_L1EM7_MU4")] + dictFromChainName("HLT_e10_mu6_L1EM7_MU3V")] sigMap = {} fillAllGeneratorsMap(chainsInMenu, sigMap) assert "Muon" in sigMap, "Muons missing" diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/L1Seeds.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/L1Seeds.py index 046e471aeb5db485d3eceaa4a834ccb78f70ee7b..1669043dae897fe1d29336f176a5952d8d331388 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/L1Seeds.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/L1Seeds.py @@ -53,56 +53,88 @@ def Lvl1ItemByTriggerType(l1object, triggertype_pattern, triggertype_bitmask): # define the various seeds ############################## def getL1BackgroundSeed(menul1items): - l1background_seeds = 'L1_BCM_AC_CA_BGRP0,L1_BCM_Wide_EMPTY,L1_BCM_Wide_UNPAIRED_ISO,L1_BCM_Wide_UNPAIRED_NONISO,L1_J30p31ETA49_UNPAIRED_ISO,L1_J12_UNPAIRED_ISO,L1_J12_UNPAIRED_NONISO,L1_J12_ABORTGAPNOTCALIB,L1_BCM_AC_UNPAIRED_ISO,L1_BCM_CA_UNPAIRED_ISO,L1_BCM_AC_UNPAIRED_NONISO,L1_BCM_CA_UNPAIRED_NONISO,L1_J30p31ETA49_UNPAIRED_NONISO,L1_BCM_AC_ABORTGAPNOTCALIB,L1_BCM_CA_ABORTGAPNOTCALIB,L1_BCM_Wide_ABORTGAPNOTCALIB,L1_BCM_AC_CALIB,L1_BCM_CA_CALIB,L1_BCM_Wide_CALIB,L1_J50_UNPAIRED_ISO,L1_J50_UNPAIRED_NONISO,L1_J50_ABORTGAPNOTCALIB' + l1bgditems = [ + 'L1_BCM_AC_CA_BGRP0', + 'L1_BCM_Wide_EMPTY', 'L1_BCM_Wide_UNPAIRED_ISO', 'L1_BCM_Wide_UNPAIRED_NONISO', + 'L1_J30p31ETA49_UNPAIRED_ISO', + 'L1_J12_UNPAIRED_ISO', 'L1_J12_UNPAIRED_NONISO', 'L1_J12_ABORTGAPNOTCALIB', + 'L1_BCM_AC_UNPAIRED_ISO', 'L1_BCM_CA_UNPAIRED_ISO', + 'L1_BCM_AC_UNPAIRED_NONISO', 'L1_BCM_CA_UNPAIRED_NONISO', + 'L1_J30p31ETA49_UNPAIRED_NONISO', + 'L1_BCM_AC_ABORTGAPNOTCALIB', 'L1_BCM_CA_ABORTGAPNOTCALIB', + 'L1_BCM_Wide_ABORTGAPNOTCALIB', + 'L1_BCM_AC_CALIB', 'L1_BCM_CA_CALIB', + 'L1_BCM_Wide_CALIB', + 'L1_J50_UNPAIRED_ISO', 'L1_J50_UNPAIRED_NONISO', 'L1_J50_ABORTGAPNOTCALIB' + ] if TriggerFlags.triggerMenuSetup() == 'LS1_v1': - l1background_seeds = 'L1_BCM_AC_CA_BGRP0,L1_BCM_AC_CA_UNPAIRED_ISO,L1_BCM_Wide_EMPTY,L1_BCM_Wide_UNPAIRED_ISO,L1_BCM_Wide_UNPAIRED_NONISO,L1_EM3_UNPAIRED_ISO,L1_FJ30_UNPAIRED_ISO,L1_J10_UNPAIRED_ISO,L1_J10_UNPAIRED_NONISO,L1_LUCID_A_C_EMPTY,L1_LUCID_A_C_UNPAIRED_ISO,L1_LUCID_A_C_UNPAIRED_NONISO,L1_LUCID_EMPTY,L1_LUCID_UNPAIRED_ISO,L1_MU4_UNPAIRED_ISO,L1_LUCID_COMM_UNPAIRED_ISO,L1_LUCID_COMM_EMPTY' + l1bgditems = [ + 'L1_BCM_AC_CA_BGRP0','L1_BCM_AC_CA_UNPAIRED_ISO', + 'L1_BCM_Wide_EMPTY','L1_BCM_Wide_UNPAIRED_ISO','L1_BCM_Wide_UNPAIRED_NONISO', + 'L1_EM3_UNPAIRED_ISO','L1_FJ30_UNPAIRED_ISO', + 'L1_J10_UNPAIRED_ISO','L1_J10_UNPAIRED_NONISO', + 'L1_LUCID_A_C_EMPTY','L1_LUCID_A_C_UNPAIRED_ISO','L1_LUCID_A_C_UNPAIRED_NONISO', + 'L1_LUCID_EMPTY','L1_LUCID_UNPAIRED_ISO', + 'L1_MU3V_UNPAIRED_ISO', + 'L1_LUCID_COMM_UNPAIRED_ISO','L1_LUCID_COMM_EMPTY' + ] # check if all the l1 background seeds given are in the current L1 menu - l1bgditems = l1background_seeds.split(',') for item in l1bgditems: if item not in menul1items: log.error('L1 item %s from background seeds is not in current L1 menu', item) - + + l1background_seeds = ','.join(l1bgditems) return l1background_seeds ############################## def getL1_ALFA_Diff_Phys_Seeds(menul1items): - # comma separated list fo l1 seeds - l1_seeds = 'L1_ALFA_SDIFF5,L1_ALFA_SDIFF6,L1_ALFA_SDIFF7,L1_ALFA_SDIFF8,L1_MBTS_1_A_ALFA_C,L1_MBTS_1_C_ALFA_A,L1_MBTS_1_A_ALFA_C_UNPAIRED_ISO,L1_MBTS_1_C_ALFA_A_UNPAIRED_ISO,L1_MBTS_2_A_ALFA_C,L1_MBTS_2_C_ALFA_A,L1_MBTS_2_A_ALFA_C_UNPAIRED_ISO,L1_MBTS_2_C_ALFA_A_UNPAIRED_ISO,L1_LUCID_A_ALFA_C,L1_LUCID_C_ALFA_A,L1_LUCID_A_ALFA_C_UNPAIRED_ISO,L1_LUCID_C_ALFA_A_UNPAIRED_ISO,L1_EM3_ALFA_ANY,L1_EM3_ALFA_ANY_UNPAIRED_ISO,L1_TE5_ALFA_ANY,L1_TE5_ALFA_ANY_UNPAIRED_ISO' + # list of l1 seeds + l1items = [ + 'L1_ALFA_SDIFF5','L1_ALFA_SDIFF6','L1_ALFA_SDIFF7','L1_ALFA_SDIFF8', + 'L1_MBTS_1_A_ALFA_C','L1_MBTS_1_C_ALFA_A', + 'L1_MBTS_1_A_ALFA_C_UNPAIRED_ISO','L1_MBTS_1_C_ALFA_A_UNPAIRED_ISO', + 'L1_MBTS_2_A_ALFA_C','L1_MBTS_2_C_ALFA_A', + 'L1_MBTS_2_A_ALFA_C_UNPAIRED_ISO','L1_MBTS_2_C_ALFA_A_UNPAIRED_ISO', + 'L1_LUCID_A_ALFA_C','L1_LUCID_C_ALFA_A', + 'L1_LUCID_A_ALFA_C_UNPAIRED_ISO','L1_LUCID_C_ALFA_A_UNPAIRED_ISO', + 'L1_EM3_ALFA_ANY','L1_EM3_ALFA_ANY_UNPAIRED_ISO', + 'L1_TE5_ALFA_ANY','L1_TE5_ALFA_ANY_UNPAIRED_ISO' + ] # check if all the l1 background seeds given are in the current L1 menu - l1items = l1_seeds.split(',') for item in l1items: if item not in menul1items: log.error('L1 item %s from background seeds is not in current L1 menu', item) - + + l1_seeds = ','.join(l1items) return l1_seeds ############################## def getL1_ALFA_CDiff_Phys_Seeds (menul1items): - # comma separated list fo l1 seeds - l1_seeds = 'L1_EM3_ALFA_EINE,L1_TE5_ALFA_EINE' + # list of l1 seeds + l1items = ['L1_EM3_ALFA_EINE','L1_TE5_ALFA_EINE'] # check if all the l1 background seeds given are in the current L1 menu - l1items = l1_seeds.split(',') for item in l1items: if item not in menul1items: log.error('L1 item %s from background seeds is not in current L1 menu', item) + l1_seeds = ','.join(l1items) return l1_seeds ############################## def getL1_ALFA_Jet_Phys_Seeds (menul1items): - # comma separated list fo l1 seeds - l1_seeds = 'L1_J12_ALFA_ANY,L1_J12_ALFA_ANY_UNPAIRED_ISO' + # list of l1 seeds + l1items = ['L1_J12_ALFA_ANY','L1_J12_ALFA_ANY_UNPAIRED_ISO'] # check if all the l1 background seeds given are in the current L1 menu - l1items = l1_seeds.split(',') for item in l1items: if item not in menul1items: log.error('L1 item %s from background seeds is not in current L1 menu', item) - + + l1_seeds = ','.join(l1items) return l1_seeds ############################## @@ -135,13 +167,13 @@ def getL1TauSeed(l1items): ############################## def getL1BSSeed(menul1items): - l1_seeds = 'L1_J15,L1_3J15,L1_3J10,L1_4J10' + l1items = ['L1_J15','L1_3J15','L1_3J10','L1_4J10'] # check if all the l1 background seeds given are in the current L1 menu - l1items = l1_seeds.split(',') for item in l1items: if item not in menul1items: log.error('L1 item %s from beamspot seeds is not in current L1 menu', item) + l1_seeds = ','.join(l1items) return l1_seeds ############################## @@ -173,126 +205,183 @@ def getL1MuonSeed(l1seed, l1object): def getEBnoL1PSSeed(l1items, l1seedname): # All of these L1 items must be PS=1 for an EB campaign - noL1PS_seeds = '' + l1EBitems = [] if ('L1_PhysicsHigh' in l1seedname): - #noL1PS_seeds = 'L1_MU6_3MU4,L1_EM15HI_2TAU12IM_J25_3J12,L1_EM15HI_2TAU12IM_XE35,L1_EM15HI_TAU40_2TAU15,L1_EM15VH_MU10,L1_EM15VH_3EM7,L1_EM22VHI,L1_2EM8VH_MU10,L1_MU10_TAU12IM_J25_2J12,L1_MU10_TAU12IM_XE35,L1_MU10_TAU20IM,L1_4J15,L1_XE50,L1_2J15_XE55,L1_TAU60,L1_TAU20IM_2TAU12IM_J25_2J20_3J12,L1_TAU20IM_2TAU12IM_XE35,L1_TAU20IM_2J20_XE45,L1_MU20,L1_MU6_J30.0ETA49_2J20.0ETA49,L1_MU10_3J20,L1_J40.0ETA25_2J15.31ETA49,L1_3MU6,L1_MU10_2J15_J20,L1_J40.0ETA25_2J25_J20.31ETA49,L1_2MU6_3MU4,L1_MU11_2MU6' - noL1PS_seeds = 'L1_MU6_3MU4,L1_EM15VH_MU10,L1_EM22VHI,L1_2EM8VH_MU10,L1_MU10_TAU12IM_J25_2J12,L1_MU10_TAU12IM_XE35,L1_MU10_TAU20IM,L1_4J15,L1_XE50,L1_2J15_XE55,L1_TAU60,L1_TAU20IM_2TAU12IM_J25_2J20_3J12,L1_TAU20IM_2TAU12IM_XE35,L1_TAU20IM_2J20_XE45,L1_MU20,L1_MU10_3J20,L1_J40p0ETA25_2J15p31ETA49,L1_3MU6,L1_MU10_2J15_J20,L1_J40p0ETA25_2J25_J20p31ETA49,L1_2MU6_3MU4,L1_MU11_2MU6' + l1EBitems = [ + 'L1_MU5VF_3MU3V', + 'L1_EM15VH_MU8F','L1_EM22VHI','L1_2EM8VH_MU8F', + 'L1_MU8F_TAU12IM_J25_2J12','L1_MU8F_TAU12IM_XE35','L1_MU8F_TAU20IM', + 'L1_4J15','L1_XE50','L1_2J15_XE55', + 'L1_TAU60','L1_TAU20IM_2TAU12IM_J25_2J20_3J12','L1_TAU20IM_2TAU12IM_XE35','L1_TAU20IM_2J20_XE45', + 'L1_MU14FCH','L1_MU8F_3J20', + 'L1_J40p0ETA25_2J15p31ETA49', + 'L1_3MU5VF','L1_MU8F_2J15_J20', + 'L1_J40p0ETA25_2J25_J20p31ETA49', + 'L1_2MU5VF_3MU3V','L1_MU8VF_2MU5VF' + ] elif ('L1_PhysicsVeryHigh' in l1seedname): - #noL1PS_seeds = 'L1_XE80,L1_J100.31ETA49,L1_J400,L1_6J15' - noL1PS_seeds = 'L1_XE60,L1_J400,L1_6J15' + l1EBitems = ['L1_XE60', 'L1_J400', 'L1_6J15'] elif ('L1_EMPTY' in l1seedname): - noL1PS_seeds = 'L1_J12_EMPTY,L1_MU11_EMPTY,L1_TAU8_EMPTY,L1_TAU40_EMPTY,L1_EM7_EMPTY' + l1EBitems = ['L1_J12_EMPTY', 'L1_MU8VF_EMPTY', 'L1_TAU8_EMPTY', 'L1_TAU40_EMPTY', 'L1_EM7_EMPTY'] elif ('L1_FIRSTEMPTY' in l1seedname): - #noL1PS_seeds = 'L1_J12_FIRSTEMPTY,L1_MU20_FIRSTEMPTY,L1_TAU8_FIRSTEMPTY,L1_EM7_FIRSTEMPTY' - noL1PS_seeds = 'L1_J12_FIRSTEMPTY,L1_TAU8_FIRSTEMPTY,L1_EM7_FIRSTEMPTY' + l1EBitems = ['L1_J12_FIRSTEMPTY', 'L1_TAU8_FIRSTEMPTY', 'L1_EM7_FIRSTEMPTY'] elif ('L1_UNPAIRED_ISO' in l1seedname): - noL1PS_seeds = 'L1_J12_UNPAIRED_ISO,L1_J15p31ETA49_UNPAIRED_ISO,L1_BCM_Wide_UNPAIRED_ISO,L1_BCM_AC_UNPAIRED_ISO,L1_BCM_CA_UNPAIRED_ISO,L1_MU4_UNPAIRED_ISO,L1_EM7_UNPAIRED_ISO,L1_TAU8_UNPAIRED_ISO,L1_TAU40_UNPAIRED_ISO' + l1EBitems = [ + 'L1_J12_UNPAIRED_ISO', 'L1_J15p31ETA49_UNPAIRED_ISO', + 'L1_BCM_Wide_UNPAIRED_ISO', 'L1_BCM_AC_UNPAIRED_ISO', 'L1_BCM_CA_UNPAIRED_ISO', + 'L1_MU3V_UNPAIRED_ISO', 'L1_EM7_UNPAIRED_ISO', 'L1_TAU8_UNPAIRED_ISO', 'L1_TAU40_UNPAIRED_ISO' + ] elif ('L1_UNPAIRED_NONISO' in l1seedname): - noL1PS_seeds = 'L1_J12_UNPAIRED_NONISO,L1_BCM_Wide_UNPAIRED_NONISO,L1_BCM_AC_UNPAIRED_NONISO,L1_BCM_CA_UNPAIRED_NONISO' + l1EBitems = [ + 'L1_J12_UNPAIRED_NONISO', 'L1_BCM_Wide_UNPAIRED_NONISO', + 'L1_BCM_AC_UNPAIRED_NONISO', 'L1_BCM_CA_UNPAIRED_NONISO' + ] elif ('L1_ABORTGAPNOTCALIB' in l1seedname): - noL1PS_seeds = 'L1_J12_ABORTGAPNOTCALIB' + l1EBitems = ['L1_J12_ABORTGAPNOTCALIB'] else: log.error('Do not know how to supply EnhancedBias L1 seeds for %s', l1seedname) # check if all the l1 seeds given are in the current L1 menu - l1EBitems = noL1PS_seeds.split(',') for item in l1EBitems: if item not in l1items: log.error('L1 item %s from %s seed is not in current L1 menu (EnhancedBias)', item, l1seedname) + noL1PS_seeds = ','.join(l1EBitems) return noL1PS_seeds ############################## def getL1_ALFA_Phys(l1seed): - L1ALFA_Phys_seeds = 'L1_ALFA_ELAST1,L1_ALFA_ELAST2,L1_ALFA_ELAST11,L1_ALFA_ELAST12,L1_ALFA_ELAST13,L1_ALFA_ELAST14,L1_ALFA_ELAST15,L1_ALFA_ELAST16,L1_ALFA_ELAST17,L1_ALFA_ELAST18,L1_ALFA_SHOWSYST5,L1_ALFA_ANY_A_EMPTY,L1_ALFA_ANY_C_EMPTY' + l1bgditems = [ + 'L1_ALFA_ELAST1', 'L1_ALFA_ELAST2', + 'L1_ALFA_ELAST11', 'L1_ALFA_ELAST12', + 'L1_ALFA_ELAST13', 'L1_ALFA_ELAST14', + 'L1_ALFA_ELAST15', 'L1_ALFA_ELAST16', + 'L1_ALFA_ELAST17', 'L1_ALFA_ELAST18', + 'L1_ALFA_SHOWSYST5', + 'L1_ALFA_ANY_A_EMPTY', 'L1_ALFA_ANY_C_EMPTY' + ] # check if all the l1 background seeds given are in the current L1 menu - l1bgditems = L1ALFA_Phys_seeds.split(',') for item in l1bgditems: if item not in l1seed: log.error('L1 item %s from L1ALFA_Phys seeds is not in current L1 menu', item) + L1ALFA_Phys_seeds = ','.join(l1bgditems) return L1ALFA_Phys_seeds ############################## def getL1_ALFA_Phys_Any(l1seed): - L1ALFA_Phys_Any_seeds = 'L1_ALFA_ANY,L1_ALFA_ANY_EMPTY,L1_ALFA_ANY_FIRSTEMPTY,L1_ALFA_ANY_UNPAIRED_ISO,L1_ALFA_ANY_UNPAIRED_NONISO,L1_ALFA_ANY_BGRP10' + l1bgditems = [ + 'L1_ALFA_ANY', 'L1_ALFA_ANY_EMPTY', 'L1_ALFA_ANY_FIRSTEMPTY', + 'L1_ALFA_ANY_UNPAIRED_ISO', 'L1_ALFA_ANY_UNPAIRED_NONISO', 'L1_ALFA_ANY_BGRP10' + ] # check if all the l1 background seeds given are in the current L1 menu - l1bgditems = L1ALFA_Phys_Any_seeds.split(',') for item in l1bgditems: if item not in l1seed: log.error('L1 item %s from L1ALFA_Phys_Any_seeds seeds is not in current L1 menu', item) + L1ALFA_Phys_Any_seeds = ','.join(l1bgditems) return L1ALFA_Phys_Any_seeds ############################## def getL1ALFA_Calib(l1seed): - L1ALFA_Calib_seeds = 'L1_ALFA_B7L1U,L1_ALFA_B7L1L,L1_ALFA_A7L1U,L1_ALFA_A7L1L,L1_ALFA_A7R1U,L1_ALFA_A7R1L,L1_ALFA_B7R1U,L1_ALFA_B7R1L' - #ATR-13743 'L1_ALFA_ELAST15_Calib,L1_ALFA_ELAST18_Calib,L1_ALFA_BGT,L1_ALFA_BGT_UNPAIRED_ISO,L1_ALFA_BGT_BGRP10,L1_ALFA_SHOWSYST5,L1_ALFA_ANY_EMPTY,L1_ALFA_ANY_FIRSTEMPTY,L1_ALFA_ANY_UNPAIRED_ISO,L1_ALFA_ANY_UNPAIRED_NONISO,L1_ALFA_ANY_BGRP10,L1_ALFA_ANY_CALIB,L1_ALFA_ANY_ABORTGAPNOTCALIB, - #L1_ALFA_B7L1U_OD,L1_ALFA_B7L1L_OD,L1_ALFA_A7L1U_OD,L1_ALFA_A7L1L_OD,L1_ALFA_A7R1U_OD,L1_ALFA_A7R1L_OD,L1_ALFA_B7R1U_OD,L1_ALFA_B7R1L_OD,L1_ALFA_B7L1_OD,L1_ALFA_A7L1_OD,L1_ALFA_A7R1_OD,L1_ALFA_B7R1_OD,L1_ALFA_ANY_A_EMPTY,L1_ALFA_ANY_C_EMPTY' + l1bgditems = [ + 'L1_ALFA_B7L1U', 'L1_ALFA_B7L1L', + 'L1_ALFA_A7L1U', 'L1_ALFA_A7L1L', + 'L1_ALFA_A7R1U', 'L1_ALFA_A7R1L', + 'L1_ALFA_B7R1U', 'L1_ALFA_B7R1L' + ] # check if all the l1 background seeds given are in the current L1 menu - l1bgditems = L1ALFA_Calib_seeds.split(',') for item in l1bgditems: if item not in l1seed: log.error('L1 item %s from L1ALFA_Calib_seeds seeds is not in current L1 menu', item) + L1ALFA_Calib_seeds = ','.join(l1bgditems) return L1ALFA_Calib_seeds ############################## def getL1ALFA_CEP(l1seed): - L1ALFA_CEP_seeds = 'L1_ALFA_ELAST15,L1_ALFA_ELAST18,L1_ALFA_SYST17,L1_ALFA_SYST18,L1_ALFA_ELASTIC_UNPAIRED_ISO,L1_ALFA_ANTI_ELASTIC_UNPAIRED_ISO' + l1bgditems = [ + 'L1_ALFA_ELAST15', 'L1_ALFA_ELAST18', + 'L1_ALFA_SYST17', 'L1_ALFA_SYST18', + 'L1_ALFA_ELASTIC_UNPAIRED_ISO', 'L1_ALFA_ANTI_ELASTIC_UNPAIRED_ISO' + ] # check if all the l1 background seeds given are in the current L1 menu - l1bgditems = L1ALFA_CEP_seeds.split(',') for item in l1bgditems: if item not in l1seed: log.error('L1 item %s from L1ALFA_CEP_seeds seeds is not in current L1 menu', item) + L1ALFA_CEP_seeds = ','.join(l1bgditems) return L1ALFA_CEP_seeds ############################## def getL1ALFA_SYS(l1seed): - L1ALFA_SYS_seeds = 'L1_ALFA_SYST9,L1_ALFA_SYST10,L1_ALFA_SYST11,L1_ALFA_SYST12,L1_ALFA_SYST17,L1_ALFA_SYST18' + l1bgditems = [ + 'L1_ALFA_SYST9', 'L1_ALFA_SYST10', 'L1_ALFA_SYST11', + 'L1_ALFA_SYST12', 'L1_ALFA_SYST17', 'L1_ALFA_SYST18' + ] # check if all the l1 background seeds given are in the current L1 menu - l1bgditems = L1ALFA_SYS_seeds.split(',') for item in l1bgditems: if item not in l1seed: log.error('L1 item %s from L1ALFA_SYS_seeds seeds is not in current L1 menu', item) + L1ALFA_SYS_seeds = ','.join(l1bgditems) return L1ALFA_SYS_seeds ############################## def getL1ALFA_ELAS(l1seed): - L1ALFA_ELAS_seeds = 'L1_ALFA_ELAST1,L1_ALFA_ELAST2,L1_ALFA_ELAST11,L1_ALFA_ELAST12,L1_ALFA_ELAST13,L1_ALFA_ELAST14,L1_ALFA_ELAST15,L1_ALFA_ELAST16,L1_ALFA_ELAST17,L1_ALFA_ELAST18' + l1bgditems = [ + 'L1_ALFA_ELAST1', 'L1_ALFA_ELAST2', + 'L1_ALFA_ELAST11', 'L1_ALFA_ELAST12', + 'L1_ALFA_ELAST13', 'L1_ALFA_ELAST14', + 'L1_ALFA_ELAST15', 'L1_ALFA_ELAST16', + 'L1_ALFA_ELAST17', 'L1_ALFA_ELAST18' + ] # check if all the l1 background seeds given are in the current L1 menu - l1bgditems = L1ALFA_ELAS_seeds.split(',') for item in l1bgditems: if item not in l1seed: log.error('L1 item %s from L1ALFA_ELAS_seeds seeds is not in current L1 menu', item) + L1ALFA_ELAS_seeds = ','.join(l1bgditems) return L1ALFA_ELAS_seeds ##################################### def getL1LowLumi(l1seed): - L1LowLumi_seeds = 'L1_EM20VH,L1_2EM10VH,L1_MU15,L1_2MU6,L1_3MU4,L1_EM15VH_MU10,L1_EM15I_MU4,L1_EM7_MU10,L1_2EM8VH_MU10,L1_TAU60,L1_TAU20IM_2TAU12IM_J25_2J20_3J12,L1_EM15HI_2TAU12IM_XE35,L1_MU10_TAU12IM_XE35,L1_TAU20_2TAU12_XE35,L1_TAU20IM_2TAU12IM_XE35,L1_EM15HI_2TAU12IM,L1_EM15HI_2TAU12IM_J25_3J12,L1_EM15HI_TAU40_2TAU15,L1_MU10_TAU12IM_J25_2J12,L1_MU10_TAU12IM,L1_J75,L1_4J15,L1_XE50,L1_3J25p0ETA23,L1_3J40,L1_2J15_XE55,L1_MU6_J40,L1_J75p31ETA49' + l1bgditems = [ + 'L1_EM20VH', 'L1_2EM10VH', + 'L1_2MU5VF', 'L1_3MU3V', + 'L1_EM15VH_MU8F', 'L1_EM15I_MU3V', + 'L1_EM7_MU8F', 'L1_2EM8VH_MU8F', + 'L1_TAU60', 'L1_TAU20IM_2TAU12IM_J25_2J20_3J12', + 'L1_EM15HI_2TAU12IM_XE35', 'L1_MU8F_TAU12IM_XE35', + 'L1_TAU20_2TAU12_XE35', 'L1_TAU20IM_2TAU12IM_XE35', + 'L1_EM15HI_2TAU12IM', 'L1_EM15HI_2TAU12IM_J25_3J12', + 'L1_EM15HI_TAU40_2TAU15', 'L1_MU8F_TAU12IM_J25_2J12', + 'L1_MU8F_TAU12IM', + 'L1_J75', 'L1_4J15', + 'L1_XE50', 'L1_3J25p0ETA23', + 'L1_3J40', 'L1_2J15_XE55', + 'L1_MU5VF_J40', 'L1_J75p31ETA49' + ] # check if all the l1 background seeds given are in the current L1 menu - l1bgditems = L1LowLumi_seeds.split(',') for item in l1bgditems: if item not in l1seed: log.error('L1 item %s from L1LowLumi_seeds seeds is not in current L1 menu', item) + L1LowLumi_seeds = ','.join(l1bgditems) return L1LowLumi_seeds ##################################### diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_emu_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_emu_v1.py index bc8e4001457d1e2749d1bd68eaee1697bd754e64..8d53e6789f83f0a13e5c5349e7b9c28a8e2c0c0e 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_emu_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_emu_v1.py @@ -29,11 +29,11 @@ def setupMenu(): TriggerFlags.TestSlice.signatures = [ # muons - ChainProp(name='HLT_TestChain8_muv1step_L1MU6', stream=['Main'], groups=['RATE:Test','BW:Other'] ), - ChainProp(name='HLT_TestChain8_muv1_L1MU10', stream=['Main'], groups=['RATE:Test','BW:Other'] ), - ChainProp(name='HLT_TestChain20_muv1_L1MU10',stream=['Main'], groups=['RATE:Test','BW:Other'] ), - ChainProp(name='HLT_TestChain10_muv2_L1MU10',stream=['Main'], groups=['RATE:Test','BW:Other'] ), - ChainProp(name='HLT_TestChain6_muEmpty2_L1MU6', stream=['Main'], groups=['RATE:Test','BW:Other'] ), + ChainProp(name='HLT_TestChain8_muv1step_L1MU5VF', stream=['Main'], groups=['RATE:Test','BW:Other'] ), + ChainProp(name='HLT_TestChain8_muv1_L1MU8F', stream=['Main'], groups=['RATE:Test','BW:Other'] ), + ChainProp(name='HLT_TestChain20_muv1_L1MU8F',stream=['Main'], groups=['RATE:Test','BW:Other'] ), + ChainProp(name='HLT_TestChain10_muv2_L1MU8F',stream=['Main'], groups=['RATE:Test','BW:Other'] ), + ChainProp(name='HLT_TestChain6_muEmpty2_L1MU5VF', stream=['Main'], groups=['RATE:Test','BW:Other'] ), # egamma ChainProp(name='HLT_TestChain5_ev1_L1EM3', stream=['Main'], groups=['RATE:Test','BW:Other'] ), @@ -43,19 +43,19 @@ def setupMenu(): ChainProp(name='HLT_TestChain5_gv1_L1EM7', stream=['Main'], groups=['RATE:Test','BW:Other'] ), # combined - ChainProp(name='HLT_TestChain6_muv1_TestChain10_ev1_L1EM7_MU10', l1SeedThresholds=['MU10','EM7'], stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel'), - ChainProp(name='HLT_TestChain6_muv2_TestChain8_ev2_L1EM7_MU10', l1SeedThresholds=['MU10','EM7'], stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel'), + ChainProp(name='HLT_TestChain6_muv1_TestChain10_ev1_L1EM7_MU8F', l1SeedThresholds=['MU8F','EM7'], stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel'), + ChainProp(name='HLT_TestChain6_muv2_TestChain8_ev2_L1EM7_MU8F', l1SeedThresholds=['MU8F','EM7'], stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel'), ChainProp(name='HLT_TestChain5_ev1_TestChain8_ev1_L12EM3', stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel'), -# ChainProp(name='HLT_TestChain5_ev1_TestChain8_ev1_2TestChain6_muv1_L1EM3_L1EM3_L12MU6', stream=['Main'], groups=['RATE:Test','BW:Other'] ), - ChainProp(name='HLT_2TestChain6_muv1_L12MU6', stream=['Main'], groups=['RATE:Test','BW:Other'] ), - ChainProp(name='HLT_3TestChain6_muv1_L12MU6', stream=['Main'], groups=['RATE:Test','BW:Other'] ), - ChainProp(name='HLT_TestChain6_muv1_TestChain10_muv1_L12MU6', stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel' ), - ChainProp(name='HLT_2TestChain6_muEmpty1_L12MU6', stream=['Main'], groups=['RATE:Test','BW:Other']), #may differ from manual - ChainProp(name='HLT_TestChain6_muv1_TestChain5_ev1dr_L1EM7_MU10', l1SeedThresholds=['MU10','EM7'], stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel'), - ChainProp(name='HLT_2TestChain4_muv1dr_L12MU6', stream=['Main'], groups=['RATE:Test','BW:Other'] ), +# ChainProp(name='HLT_TestChain5_ev1_TestChain8_ev1_2TestChain6_muv1_L1EM3_L1EM3_L12MU5VF', stream=['Main'], groups=['RATE:Test','BW:Other'] ), + ChainProp(name='HLT_2TestChain6_muv1_L12MU5VF', stream=['Main'], groups=['RATE:Test','BW:Other'] ), + ChainProp(name='HLT_3TestChain6_muv1_L12MU5VF', stream=['Main'], groups=['RATE:Test','BW:Other'] ), + ChainProp(name='HLT_TestChain6_muv1_TestChain10_muv1_L12MU5VF', stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel' ), + ChainProp(name='HLT_2TestChain6_muEmpty1_L12MU5VF', stream=['Main'], groups=['RATE:Test','BW:Other']), #may differ from manual + ChainProp(name='HLT_TestChain6_muv1_TestChain5_ev1dr_L1EM7_MU8F', l1SeedThresholds=['MU8F','EM7'], stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel'), + ChainProp(name='HLT_2TestChain4_muv1dr_L12MU5VF', stream=['Main'], groups=['RATE:Test','BW:Other'] ), # FSNOSEED not implemented in emulation - ChainProp(name='HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU6', l1SeedThresholds=['MU6','MU6'], stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel') + ChainProp(name='HLT_TestChain10_muEmpty1_TestChain6_muEmpty1_L12MU5VF', l1SeedThresholds=['MU5VF','MU5VF'], stream=['Main'], groups=['RATE:Test','BW:Other'], mergingStrategy = 'parallel') ] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py index 14a215ffd9773fa2b7936def97f5009ec355faab..0f20464dc93be5912d36f1482dc85507b6764c15 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py @@ -52,7 +52,7 @@ from TriggerMenuMT.HLTMenuConfig.Menu.Physics_pp_run3_v1 import (PhysicsStream, EOFTLALegGroup, UnconvTrkGroup, TauPhaseIStreamersGroup, - EgammaPhaseIStreamersGroup + EgammaPhaseIStreamersGroup, ) def setupMenu(): @@ -70,110 +70,90 @@ def setupMenu(): TriggerFlags.MuonSlice.signatures = TriggerFlags.MuonSlice.signatures() + [ #ATR-19985 - ChainProp(name='HLT_mu6_mu6noL1_L1MU6', l1SeedThresholds=['MU6','FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu6_mu6noL1_L1MU5VF', l1SeedThresholds=['MU5VF','FSNOSEED'], groups=MultiMuonGroup), #test chains - ChainProp(name='HLT_mu6_L1MU6', groups=SingleMuonGroup), - ChainProp(name="HLT_noalg_L1MU6", l1SeedThresholds=['FSNOSEED'], groups=SingleMuonGroup+LowMuGroup), + ChainProp(name='HLT_mu6_L1MU5VF', groups=SingleMuonGroup), + ChainProp(name="HLT_noalg_L1MU5VF", l1SeedThresholds=['FSNOSEED'], groups=SingleMuonGroup+LowMuGroup), - ChainProp(name='HLT_mu6_LRT_idperf_L1MU6', groups=SingleMuonGroup), - ChainProp(name='HLT_mu24_LRT_d0medium_L1MU20', groups=SingleMuonGroup), + ChainProp(name='HLT_mu6_LRT_idperf_L1MU5VF', groups=SingleMuonGroup), + ChainProp(name='HLT_mu24_LRT_d0medium_L1MU14FCH', groups=SingleMuonGroup), - ChainProp(name='HLT_mu6_ivarmedium_L1MU6', groups=SingleMuonGroup), + ChainProp(name='HLT_mu6_ivarmedium_L1MU5VF', groups=SingleMuonGroup), # commented because it is conflict with dimuon noL1 serial chain - # ChainProp(name='HLT_mu6noL1_L1MU6', l1SeedThresholds=['FSNOSEED'], groups=SingleMuonGroup), + # ChainProp(name='HLT_mu6noL1_L1MU5VF', l1SeedThresholds=['FSNOSEED'], groups=SingleMuonGroup), - ChainProp(name='HLT_mu6_msonly_L1MU6', groups=SingleMuonGroup, monGroups=['muonMon:shifter','muonMon:val','idMon:t0']), + ChainProp(name='HLT_mu6_msonly_L1MU5VF', groups=SingleMuonGroup, monGroups=['muonMon:shifter','muonMon:val','idMon:t0']), - ChainProp(name='HLT_2mu6_10invm70_L1MU6', groups=SingleMuonGroup), + ChainProp(name='HLT_2mu6_10invm70_L1MU5VF', groups=SingleMuonGroup), # Using generic hypo - ChainProp(name='HLT_2mu6_10invmAA70_L1MU6', groups=SingleMuonGroup), - ChainProp(name='HLT_mu10_lateMu_L1LATE-MU10_XE50', l1SeedThresholds=['FSNOSEED'], groups=SingleMuonGroup), + ChainProp(name='HLT_2mu6_10invmAA70_L1MU5VF', groups=SingleMuonGroup), + ChainProp(name='HLT_mu10_lateMu_L1LATE-MU8F_XE50', l1SeedThresholds=['FSNOSEED'], groups=SingleMuonGroup), # ATR-20049 - ChainProp(name='HLT_mu6_mu4_L12MU4', l1SeedThresholds=['MU4']*2, groups=MultiMuonGroup), + ChainProp(name='HLT_mu6_mu4_L12MU3V', l1SeedThresholds=['MU3V']*2, groups=MultiMuonGroup), # Additional intermediate thresholds for validation comparisons to match with Physics_pp_v7_primaries menu - ChainProp(name='HLT_mu24_mu10noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), - ChainProp(name="HLT_mu10_L1MU10", groups=SingleMuonGroup), - ChainProp(name='HLT_2mu4_L12MU4', groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_mu10noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name="HLT_mu10_L1MU8F", groups=SingleMuonGroup), + ChainProp(name='HLT_2mu4_L12MU3V', groups=MultiMuonGroup), # ATR-19452 - ChainProp(name='HLT_2mu4_muonqual_L12MU4', groups=MultiMuonGroup), - ChainProp(name='HLT_2mu6_muonqual_L12MU6', groups=MultiMuonGroup), + ChainProp(name='HLT_2mu4_muonqual_L12MU3V', groups=MultiMuonGroup), + ChainProp(name='HLT_2mu6_muonqual_L12MU5VF', groups=MultiMuonGroup), # ATR-20650 - ChainProp(name='HLT_mu0_muoncalib_L1MU4_EMPTY', groups=SingleMuonGroup), - ChainProp(name='HLT_mu0_muoncalib_L1MU20', groups=SingleMuonGroup), + ChainProp(name='HLT_mu0_muoncalib_L1MU3V_EMPTY', groups=SingleMuonGroup), + ChainProp(name='HLT_mu0_muoncalib_L1MU14FCH', groups=SingleMuonGroup), # Unisolated single muons for monitoring isolated muons - ChainProp(name="HLT_mu8_L1MU6", groups=SingleMuonGroup), - ChainProp(name="HLT_mu14_L1MU10", groups=SingleMuonGroup), - ChainProp(name="HLT_mu24_L1MU20", groups=SingleMuonGroup), + ChainProp(name="HLT_mu8_L1MU5VF", groups=SingleMuonGroup), + ChainProp(name="HLT_mu14_L1MU8F", groups=SingleMuonGroup), + ChainProp(name="HLT_mu24_L1MU14FCH", groups=SingleMuonGroup), #ATR-21003 - ChainProp(name='HLT_mu4_l2io_L1MU4', groups=SingleMuonGroup), - ChainProp(name='HLT_2mu14_l2io_L12MU10', groups=MultiMuonGroup), - ChainProp(name='HLT_2mu6_l2io_L12MU6', l1SeedThresholds=['MU6'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu4_l2io_L1MU3V', groups=SingleMuonGroup), + ChainProp(name='HLT_2mu14_l2io_L12MU8F', groups=MultiMuonGroup), + ChainProp(name='HLT_2mu6_l2io_L12MU5VF', l1SeedThresholds=['MU5VF'], groups=MultiMuonGroup), #ATR-22537 - ChainProp(name='HLT_2mu10_l2mt_L1MU10', groups=MultiMuonGroup), + ChainProp(name='HLT_2mu10_l2mt_L1MU8F', groups=MultiMuonGroup), + ChainProp(name='HLT_2mu10_l2mt_L1MU10BOM', groups=MultiMuonGroup), #performance chain for isolation (ATR-21905) - ChainProp(name='HLT_mu26_ivarperf_L1MU20', groups=SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarperf_L1MU14FCH', groups=SingleMuonGroup), #-- nscan ATR-19376 - ChainProp(name='HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU20_J40', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryLegGroup+MultiMuonGroup), - ChainProp(name='HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU20_XE30', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryLegGroup+MultiMuonGroup), - ChainProp(name='HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L110DR-MU20-MU6', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU14FCH_J40', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryLegGroup+MultiMuonGroup), + ChainProp(name='HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L1MU14FCH_XE30', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryLegGroup+MultiMuonGroup), + ChainProp(name='HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan_L110DR-MU14FCH-MU5VF', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), #ATR-20505 - ChainProp(name='HLT_2mu50_msonly_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_2mu50_msonly_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), #ATR-23614 - ChainProp(name='HLT_mu20_mu2noL1_invmJPsi_os_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu20_mu2noL1_invmJPsi_os_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=MultiMuonGroup), #ART-23577 - ChainProp(name='HLT_mu20_L1MU6_AFP_A_OR_C', l1SeedThresholds=['MU6'], groups=SingleMuonGroup+LowMuGroup), - ChainProp(name='HLT_mu20_L1MU6_AFP_A_AND_C', l1SeedThresholds=['MU6'], groups=SingleMuonGroup+LowMuGroup), - ChainProp(name='HLT_mu20_L1MU6', l1SeedThresholds=['MU6'], groups=SingleMuonGroup+LowMuGroup), + ChainProp(name='HLT_mu20_L1MU5VF_AFP_A_OR_C', l1SeedThresholds=['MU5VF'], groups=SingleMuonGroup+LowMuGroup), + ChainProp(name='HLT_mu20_L1MU5VF_AFP_A_AND_C', l1SeedThresholds=['MU5VF'], groups=SingleMuonGroup+LowMuGroup), + ChainProp(name='HLT_mu20_L1MU5VF', l1SeedThresholds=['MU5VF'], groups=SingleMuonGroup+LowMuGroup), # Late stream for LLP - ChainProp(name='HLT_3mu6_msonly_L1MU6_EMPTY', l1SeedThresholds=['MU6'], stream=['Late'], groups=PrimaryLegGroup+MultiMuonGroup), - ChainProp(name='HLT_3mu6_msonly_L1MU4_UNPAIRED_ISO', l1SeedThresholds=['MU4'], stream=['Late'], groups=PrimaryLegGroup+MultiMuonGroup), + ChainProp(name='HLT_3mu6_msonly_L1MU5VF_EMPTY', l1SeedThresholds=['MU5VF'], stream=['Late'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_3mu6_msonly_L1MU3V_UNPAIRED_ISO', l1SeedThresholds=['MU3V'], stream=['Late'], groups=PrimaryL1MuGroup+MultiMuonGroup), # Test T&P dimuon - ChainProp(name='HLT_mu24_mu6_L1MU20', l1SeedThresholds=['MU20','MU4'], groups=MultiMuonGroup), - ChainProp(name='HLT_mu24_mu6_probe_L1MU20', l1SeedThresholds=['MU20','PROBEMU4'], groups=MultiMuonGroup), - ChainProp(name='HLT_mu24_ivarmedium_mu6_L1MU20', l1SeedThresholds=['MU20','MU4'], groups=MultiMuonGroup), - ChainProp(name='HLT_mu24_ivarmedium_mu6_ivarmedium_L1MU20', l1SeedThresholds=['MU20','MU4'], groups=MultiMuonGroup), - ChainProp(name='HLT_mu24_ivarmedium_mu6_ivarperf_L1MU20', l1SeedThresholds=['MU20','MU4'], groups=MultiMuonGroup), - ChainProp(name='HLT_mu24_ivarmedium_mu6_probe_L1MU20', l1SeedThresholds=['MU20','PROBEMU4'], groups=MultiMuonGroup), - ChainProp(name='HLT_mu24_ivarmedium_mu6_ivarmedium_probe_L1MU20', l1SeedThresholds=['MU20','PROBEMU4'], groups=MultiMuonGroup), - ChainProp(name='HLT_mu24_ivarmedium_mu6_ivarperf_probe_L1MU20', l1SeedThresholds=['MU20','PROBEMU4'], groups=MultiMuonGroup), - - - # Run3 L1 thresholds - ChainProp(name='HLT_mu26_ivarmedium_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu50_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu60_0eta105_msonly_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu80_msonly_3layersEC_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu22_mu8noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu22_mu10noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu24_mu8noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_2mu14_L12MU8F', groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_2mu15_L12MU8F', groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu20_ivarmedium_mu8noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu10_ivarmedium_mu10_10invm70_L12MU8F', groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu20_2mu4noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu22_2mu4noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_3mu6_L13MU5VF', l1SeedThresholds=['MU5VF'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_3mu6_msonly_L13MU5VF', l1SeedThresholds=['MU5VF'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_3mu8_msonly_L13MU5VF', groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_4mu4_L14MU3V', l1SeedThresholds=['MU3V'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu24_LRT_d0loose_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu24_mu6_L1MU14FCH', l1SeedThresholds=['MU14FCH','MU3V'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_mu6_probe_L1MU14FCH', l1SeedThresholds=['MU14FCH','PROBEMU3V'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_ivarmedium_mu6_L1MU14FCH', l1SeedThresholds=['MU14FCH','MU3V'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_ivarmedium_mu6_ivarmedium_L1MU14FCH', l1SeedThresholds=['MU14FCH','MU3V'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_ivarmedium_mu6_ivarperf_L1MU14FCH', l1SeedThresholds=['MU14FCH','MU3V'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_ivarmedium_mu6_probe_L1MU14FCH', l1SeedThresholds=['MU14FCH','PROBEMU3V'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_ivarmedium_mu6_ivarmedium_probe_L1MU14FCH', l1SeedThresholds=['MU14FCH','PROBEMU3V'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_ivarmedium_mu6_ivarperf_probe_L1MU14FCH', l1SeedThresholds=['MU14FCH','PROBEMU3V'], groups=MultiMuonGroup), + ] TriggerFlags.EgammaSlice.signatures = TriggerFlags.EgammaSlice.signatures() + [ @@ -323,23 +303,23 @@ def setupMenu(): ChainProp(name='HLT_e26_lhtight_e15_etcut_probe_50invmAB130_L1EM22VHI', l1SeedThresholds=['EM22VHI','EM7'], groups=TagAndProbeLegGroup+SingleElectronGroup), ChainProp(name='HLT_e26_lhtight_e15_etcut_50invmAB130_L1EM22VHI', l1SeedThresholds=['EM22VHI','EM7'], groups=MultiElectronGroup), # Jpsiee - ChainProp(name='HLT_e9_lhtight_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM7', l1SeedThresholds=['EM7','EM3'], groups=SupportLegGroup+MultiElectronGroup), - ChainProp(name='HLT_e5_lhtight_e9_etcut_probe_1invmAB3_L1JPSI-1M5-EM7', l1SeedThresholds=['EM3','EM7'], groups=SupportLegGroup+MultiElectronGroup), - ChainProp(name='HLT_e14_lhtight_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM12', l1SeedThresholds=['EM12','EM3'], groups=SupportLegGroup+MultiElectronGroup), - ChainProp(name='HLT_e5_lhtight_e14_etcut_probe_1invmAB3_L1JPSI-1M5-EM12', l1SeedThresholds=['EM3','EM12'], groups=SupportLegGroup+MultiElectronGroup), - ChainProp(name='HLT_e9_lhtight_noringer_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM7', l1SeedThresholds=['EM7','EM3'], groups=SupportLegGroup+MultiElectronGroup), - ChainProp(name='HLT_e5_lhtight_noringer_e9_etcut_probe_1invmAB3_L1JPSI-1M5-EM7', l1SeedThresholds=['EM3','EM7'], groups=SupportLegGroup+MultiElectronGroup), - ChainProp(name='HLT_e14_lhtight_noringer_e4_etcut_probe_1invmAB3_L1JPSI-1M5-EM12', l1SeedThresholds=['EM12','EM3'], groups=SupportLegGroup+MultiElectronGroup), - ChainProp(name='HLT_e5_lhtight_noringer_e14_etcut_probe_1invmAB3_L1JPSI-1M5-EM12', l1SeedThresholds=['EM3','EM12'], groups=SupportLegGroup+MultiElectronGroup), + ChainProp(name='HLT_e9_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7', l1SeedThresholds=['EM7','EM3'], groups=SupportLegGroup+MultiElectronGroup), + ChainProp(name='HLT_e5_lhtight_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7', l1SeedThresholds=['EM3','EM7'], groups=SupportLegGroup+MultiElectronGroup), + ChainProp(name='HLT_e14_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12', l1SeedThresholds=['EM12','EM3'], groups=SupportLegGroup+MultiElectronGroup), + ChainProp(name='HLT_e5_lhtight_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12', l1SeedThresholds=['EM3','EM12'], groups=SupportLegGroup+MultiElectronGroup), + ChainProp(name='HLT_e9_lhtight_noringer_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7', l1SeedThresholds=['EM7','EM3'], groups=SupportLegGroup+MultiElectronGroup), + ChainProp(name='HLT_e5_lhtight_noringer_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7', l1SeedThresholds=['EM3','EM7'], groups=SupportLegGroup+MultiElectronGroup), + ChainProp(name='HLT_e14_lhtight_noringer_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12', l1SeedThresholds=['EM12','EM3'], groups=SupportLegGroup+MultiElectronGroup), + ChainProp(name='HLT_e5_lhtight_noringer_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12', l1SeedThresholds=['EM3','EM12'], groups=SupportLegGroup+MultiElectronGroup), # - ChainProp(name='HLT_e9_lhtight_e4_etcut_1invmAB3_L1JPSI-1M5-EM7', l1SeedThresholds=['EM7','EM3'], groups=MultiElectronGroup), - ChainProp(name='HLT_e5_lhtight_e9_etcut_1invmAB3_L1JPSI-1M5-EM7', l1SeedThresholds=['EM3','EM7'], groups=MultiElectronGroup), - ChainProp(name='HLT_e14_lhtight_e4_etcut_1invmAB3_L1JPSI-1M5-EM12', l1SeedThresholds=['EM12','EM3'], groups=MultiElectronGroup), - ChainProp(name='HLT_e5_lhtight_e14_etcut_1invmAB3_L1JPSI-1M5-EM12', l1SeedThresholds=['EM3','EM12'], groups=MultiElectronGroup), - ChainProp(name='HLT_e9_lhtight_noringer_e4_etcut_1invmAB3_L1JPSI-1M5-EM7', l1SeedThresholds=['EM7','EM3'], groups=MultiElectronGroup), - ChainProp(name='HLT_e5_lhtight_noringer_e9_etcut_1invmAB3_L1JPSI-1M5-EM7', l1SeedThresholds=['EM3','EM7'], groups=MultiElectronGroup), - ChainProp(name='HLT_e14_lhtight_noringer_e4_etcut_1invmAB3_L1JPSI-1M5-EM12', l1SeedThresholds=['EM12','EM3'], groups=MultiElectronGroup), - ChainProp(name='HLT_e5_lhtight_noringer_e14_etcut_1invmAB3_L1JPSI-1M5-EM12', l1SeedThresholds=['EM3','EM12'], groups=MultiElectronGroup), + ChainProp(name='HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM7', l1SeedThresholds=['EM7','EM3'], groups=MultiElectronGroup), + ChainProp(name='HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7', l1SeedThresholds=['EM3','EM7'], groups=MultiElectronGroup), + ChainProp(name='HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM12', l1SeedThresholds=['EM12','EM3'], groups=MultiElectronGroup), + ChainProp(name='HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-EM12', l1SeedThresholds=['EM3','EM12'], groups=MultiElectronGroup), + ChainProp(name='HLT_e9_lhtight_noringer_e4_etcut_1invmAB5_L1JPSI-1M5-EM7', l1SeedThresholds=['EM7','EM3'], groups=MultiElectronGroup), + ChainProp(name='HLT_e5_lhtight_noringer_e9_etcut_1invmAB5_L1JPSI-1M5-EM7', l1SeedThresholds=['EM3','EM7'], groups=MultiElectronGroup), + ChainProp(name='HLT_e14_lhtight_noringer_e4_etcut_1invmAB5_L1JPSI-1M5-EM12', l1SeedThresholds=['EM12','EM3'], groups=MultiElectronGroup), + ChainProp(name='HLT_e5_lhtight_noringer_e14_etcut_1invmAB5_L1JPSI-1M5-EM12', l1SeedThresholds=['EM3','EM12'], groups=MultiElectronGroup), ] TriggerFlags.METSlice.signatures = TriggerFlags.METSlice.signatures() + [ @@ -428,8 +408,8 @@ def setupMenu(): ChainProp(name='HLT_j60_j0_FBDJSHARED_L1J20', l1SeedThresholds=['FSNOSEED']*2, groups=MultiJetGroup), # Central Exclusive Production for SM group - ChainProp(name='HLT_2j100_L1CEP-CJ50', l1SeedThresholds=['FSNOSEED'], groups=PrimaryPhIGroup+MultiJetGroup), - ChainProp(name='HLT_2j100_L1CEP-CJ60', l1SeedThresholds=['FSNOSEED'], groups=PrimaryPhIGroup+MultiJetGroup), + ChainProp(name='HLT_2j100_L1CEP-CjJ50', l1SeedThresholds=['FSNOSEED'], groups=PrimaryPhIGroup+MultiJetGroup), + ChainProp(name='HLT_2j100_L1CEP-CjJ60', l1SeedThresholds=['FSNOSEED'], groups=PrimaryPhIGroup+MultiJetGroup), # HT chains using pt conditions ChainProp(name='HLT_j0_HT1000_L1J20', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup), @@ -471,10 +451,12 @@ def setupMenu(): ChainProp(name='HLT_j0_perf_L1J12_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=['PS:Online']+SingleJetGroup), # ATR-21368 - cannot be moved to the calibSlice because they need to configure the jet sequence - ChainProp(name='HLT_j40_LArPEBHLT_L1J20', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + ChainProp(name='HLT_j40_LArPEBHLT_L1J20', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), ChainProp(name='HLT_j75_320eta490_LArPEBHLT_L1J30p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), ChainProp(name='HLT_j140_320eta490_LArPEBHLT_L1J75p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), ChainProp(name='HLT_j165_LArPEBHLT_L1J100', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + ChainProp(name='HLT_j25_LArPEBHLT_L1J15', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), + ChainProp(name='HLT_j25_320eta490_LArPEBHLT_L1J15p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'], groups=['PS:Online']+SingleJetGroup), # TLA test chains, ATR-20395 ChainProp(name='HLT_j20_JetDS_L1J100', l1SeedThresholds=['FSNOSEED'], stream=['JetDS'], groups=PrimaryLegGroup+SingleJetGroup), @@ -629,10 +611,10 @@ def setupMenu(): # Adjusted thresholds for BSM (k_l=10) ChainProp(name='HLT_j75_pf_ftf_0eta240_020jvt_j50_pf_ftf_0eta240_020jvt_j35_pf_ftf_0eta240_020jvt_j25_pf_ftf_0eta240_020jvt_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), # Mu-seeded - ChainProp(name='HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU20', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), - ChainProp(name='HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU20', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), - ChainProp(name='HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU10_2J15_J20', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), - ChainProp(name='HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU10_2J15_J20', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), + ChainProp(name='HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU14FCH', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), + ChainProp(name='HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU14FCH', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), + ChainProp(name='HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_L1MU8F_2J15_J20', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), + ChainProp(name='HLT_j80_pf_ftf_0eta240_j55_pf_ftf_0eta240_j28_pf_ftf_0eta240_j20_pf_ftf_0eta240_L1MU8F_2J15_J20', l1SeedThresholds=['FSNOSEED']*4, groups=MultiJetGroup), # ATR-22594 ChainProp(name='HLT_j150_ftf_2j55_ftf_L1J85_3J30', l1SeedThresholds=['FSNOSEED']*2, groups=MultiJetGroup), @@ -727,9 +709,9 @@ def setupMenu(): ChainProp(name='HLT_j75_pf_ftf_0eta240_020jvt_j50_pf_ftf_0eta240_020jvt_j35_pf_ftf_0eta240_020jvt_j25_pf_ftf_0eta240_020jvt_SHARED_2j25_pf_ftf_0eta240_020jvt_bdl1r85_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*5, stream=['VBFDelayed'], groups=MultiBjetGroup), # Copies with L1 muon+jet seed # j[28,20]_b60 - ChainProp(name='HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j28_pf_ftf_0eta240_020jvt_bdl1r70_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU10_2J15_J20', l1SeedThresholds=['FSNOSEED']*6, stream=['VBFDelayed'], groups=PrimaryLegGroup+MultiBjetGroup), + ChainProp(name='HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_SHARED_j28_pf_ftf_0eta240_020jvt_bdl1r70_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU8F_2J15_J20', l1SeedThresholds=['FSNOSEED']*6, stream=['VBFDelayed'], groups=PrimaryLegGroup+MultiBjetGroup), # j20_b60 - ChainProp(name='HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU10_2J15_J20', l1SeedThresholds=['FSNOSEED']*4, stream=['VBFDelayed'], groups=PrimaryLegGroup+MultiBjetGroup), + ChainProp(name='HLT_j80_pf_ftf_0eta240_020jvt_j55_pf_ftf_0eta240_020jvt_j28_pf_ftf_0eta240_020jvt_j20_pf_ftf_0eta240_020jvt_bdl1r70_L1MU8F_2J15_J20', l1SeedThresholds=['FSNOSEED']*4, stream=['VBFDelayed'], groups=PrimaryLegGroup+MultiBjetGroup), # Boffperf to facilitate emulation studies ChainProp(name='HLT_j80_pf_ftf_j55_pf_ftf_j28_pf_ftf_j20_0eta290_pf_ftf_boffperf_L1J45p0ETA21_3J15p0ETA25', l1SeedThresholds=['FSNOSEED']*4, groups=MultiBjetGroup), @@ -847,155 +829,134 @@ def setupMenu(): ChainProp(name="HLT_tau80_tightRNN_tracktwoLLP_tau60_tightRNN_tracktwoLLP_03dRAB_L1TAU60_2TAU40", l1SeedThresholds=['TAU60','TAU40'], groups=SupportLegGroup+TauJetGroup), ChainProp(name="HLT_tau100_mediumRNN_tracktwoLLP_tau80_mediumRNN_tracktwoLLP_03dRAB_L1TAU60_2TAU40", l1SeedThresholds=['TAU60','TAU40'], groups=SupportLegGroup+TauJetGroup), - # Phase-I + # Phase-I ChainProp(name="HLT_tau25_mediumRNN_tracktwoMVABDT_L1eTAU12", groups=SingleTauGroup), ChainProp(name="HLT_tau25_mediumRNN_tracktwoMVABDT_L1eTAU12M", groups=SingleTauGroup), + #ChainProp(name="HLT_tau25_mediumRNN_tracktwoMVABDT_L1cTAU12", groups=SingleTauGroup), #TODO: cTAU seeding missing ChainProp(name="HLT_tau35_mediumRNN_tracktwoMVABDT_L1eTAU20", groups=SingleTauGroup), - ChainProp(name="HLT_tau35_mediumRNN_tracktwoMVABDT_L1eTAU20M", groups=SingleTauGroup), + #ChainProp(name="HLT_tau35_mediumRNN_tracktwoMVABDT_L1cTAU20", groups=SingleTauGroup), ChainProp(name="HLT_tau160_mediumRNN_tracktwoMVABDT_L1eTAU100", groups=SingleTauGroup), ] TriggerFlags.BphysicsSlice.signatures = TriggerFlags.BphysicsSlice.signatures() + [ #ATR-21003; default dimuon and Bmumux chains from Run2; l2io validation; should not be moved to Physics - ChainProp(name='HLT_2mu4_noL2Comb_bJpsimumu_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_noL2Comb_mu4_noL2Comb_bJpsimumu_L1MU6_2MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu6_noL2Comb_bJpsimumu_L12MU6', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_BpmumuKp_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_BcmumuPi_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_BsmumuPhi_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_BdmumuKst_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_LbPqKm_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_noL2Comb_bJpsimumu_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_noL2Comb_mu4_noL2Comb_bJpsimumu_L1MU5VF_2MU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu6_noL2Comb_bJpsimumu_L12MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_BpmumuKp_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_BcmumuPi_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_BsmumuPhi_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_BdmumuKst_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_noL2Comb_bBmumux_LbPqKm_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), #ATR-20603; B-trigger monitoring, ART tests; should not be moved to Physics - ChainProp(name='HLT_2mu4_bJpsimumu_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bUpsimumu_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bJpsimumu_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bUpsimumu_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), #ATR-20839; validation and ART; should not be moved to Physics - ChainProp(name='HLT_2mu4_bDimu_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bDimu_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), #ATR-21639; validation and monitoring of Bmumux chains; should not be moved to Physics - ChainProp(name='HLT_2mu4_bBmumux_BpmumuKp_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bBmumux_BcmumuPi_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bBmumux_BsmumuPhi_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bBmumux_BdmumuKst_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bBmumux_LbPqKm_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bBmumux_BcmumuDsloose_L12MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumux_BpmumuKp_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumux_BcmumuPi_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumux_BsmumuPhi_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumux_BdmumuKst_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumux_LbPqKm_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumux_BcmumuDsloose_L12MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), #ATR-23576; dimuon + L1Topo; primary triggers; should be moved to Physics after validation - ChainProp(name='HLT_2mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-2MU4', l1SeedThresholds=['MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_mu4_bJpsimumu_L1BPH-2M9-0DR15-MU6MU4', l1SeedThresholds=['MU6','MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-MU6MU4', l1SeedThresholds=['MU6','MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-MU6MU4', l1SeedThresholds=['MU6','MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_mu4_bUpsimumu_L1BPH-8M15-0DR22-MU6MU4-BO', l1SeedThresholds=['MU6','MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu6_bJpsimumu_L1BPH-2M9-2DR15-2MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_2mu6_bBmumu_Lxy0_L1BPH-2M9-2DR15-2MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_2mu6_bUpsimumu_L1BPH-8M15-0DR22-2MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_2mu6_bPhi_L1LFV-MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumu_L1LFV-MU11', l1SeedThresholds=['MU11','MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_mu11_mu6_bDimu2700_L1LFV-MU11', l1SeedThresholds=['MU11','MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_mu11_mu6_bDimu_L1LFV-MU11', l1SeedThresholds=['MU11','MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_mu11_mu6_bJpsimumu_L1LFV-MU11', l1SeedThresholds=['MU11','MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_mu11_mu6_bUpsimumu_L1LFV-MU11', l1SeedThresholds=['MU11','MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_mu11_mu6_bPhi_L1LFV-MU11', l1SeedThresholds=['MU11','MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_mu11_mu6_bTau_L1LFV-MU11', l1SeedThresholds=['MU11','MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_2mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-2MU3V', l1SeedThresholds=['MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bJpsimumu_L1BPH-2M9-0DR15-MU5VFMU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-MU5VFMU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bBmumu_Lxy0_L1BPH-2M9-0DR15-MU5VFMU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bUpsimumu_L1BPH-8M15-0DR22-MU5VFMU3V-BO', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu6_bJpsimumu_L1BPH-2M9-2DR15-2MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_2mu6_bBmumu_Lxy0_L1BPH-2M9-2DR15-2MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_2mu6_bUpsimumu_L1BPH-8M15-0DR22-2MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_2mu6_bPhi_L1LFV-MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bBmumu_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_mu11_mu6_bDimu2700_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_mu11_mu6_bDimu_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_mu11_mu6_bJpsimumu_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_mu11_mu6_bUpsimumu_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_mu11_mu6_bPhi_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_mu11_mu6_bTau_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), #ATR-23576, yellow chains, should be moved to Physics - ChainProp(name='HLT_3mu6_bJpsi_L13MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu6_bUpsi_L13MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu6_bTau_L13MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_2mu6_mu4_bTau_L12MU6_3MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_2mu6_mu4_bUpsi_L12MU6_3MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu6_2mu4_bTau_L1MU6_3MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu6_2mu4_bJpsi_L1MU6_3MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu6_2mu4_bUpsi_L1MU6_3MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu4_bDimu2700_L13MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_3mu6_bJpsi_L13MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_3mu6_bUpsi_L13MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_3mu6_bTau_L13MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_2mu6_mu4_bTau_L12MU5VF_3MU3V', l1SeedThresholds=['MU5VF', 'MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_2mu6_mu4_bUpsi_L12MU5VF_3MU3V', l1SeedThresholds=['MU5VF', 'MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu6_2mu4_bTau_L1MU5VF_3MU3V', l1SeedThresholds=['MU5VF', 'MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu6_2mu4_bJpsi_L1MU5VF_3MU3V', l1SeedThresholds=['MU5VF', 'MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu6_2mu4_bUpsi_L1MU5VF_3MU3V', l1SeedThresholds=['MU5VF', 'MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_3mu4_bDimu2700_L13MU3V', l1SeedThresholds=['MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), # - ChainProp(name='HLT_mu11_mu6_bDimu_Lxy0_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bDimu2700_Lxy0_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bJpsimumu_Lxy0_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_BpmumuKp_L1LFV-MU11', l1SeedThresholds=['MU11','MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_mu11_mu6_bDimu_Lxy0_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bDimu2700_Lxy0_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bJpsimumu_Lxy0_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bBmumux_BpmumuKp_L1LFV-MU8VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), # - ChainProp(name='HLT_2mu6_bDimu_L12MU6', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu6_bJpsimumu_Lxy0_L1BPH-2M9-2DR15-2MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_2mu6_bBmumu_L1BPH-2M9-2DR15-2MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu6_bDimu_L1BPH-2M9-2DR15-2MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu6_bBmumux_BpmumuKp_L1BPH-2M9-2DR15-2MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_2mu6_bBmumux_BsmumuPhi_L1BPH-2M9-2DR15-2MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), - ChainProp(name='HLT_2mu6_bDimu_L1LFV-MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu6_bBmumux_BpmumuKp_L1LFV-MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu6_bBmumux_BsmumuPhi_L1LFV-MU6', l1SeedThresholds=['MU6'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu6_bDimu_L12MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu6_bJpsimumu_Lxy0_L1BPH-2M9-2DR15-2MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_2mu6_bBmumu_L1BPH-2M9-2DR15-2MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu6_bDimu_L1BPH-2M9-2DR15-2MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu6_bBmumux_BpmumuKp_L1BPH-2M9-2DR15-2MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_2mu6_bBmumux_BsmumuPhi_L1BPH-2M9-2DR15-2MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=PrimaryL1MuGroup+BphysicsGroup), + ChainProp(name='HLT_2mu6_bDimu_L1LFV-MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu6_bBmumux_BpmumuKp_L1LFV-MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu6_bBmumux_BsmumuPhi_L1LFV-MU5VF', l1SeedThresholds=['MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), # - ChainProp(name='HLT_mu6_mu4_bDimu_L1MU6_2MU4', stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-MU6MU4', l1SeedThresholds=['MU6','MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_mu4_bBmumu_L1BPH-2M9-0DR15-MU6MU4', l1SeedThresholds=['MU6','MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-MU6MU4', l1SeedThresholds=['MU6','MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_mu6_mu4_bDimu_L1BPH-2M9-0DR15-MU6MU4', l1SeedThresholds=['MU6','MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bDimu_L1MU5VF_2MU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-MU5VFMU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bBmumu_L1BPH-2M9-0DR15-MU5VFMU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-MU5VFMU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_mu6_mu4_bDimu_L1BPH-2M9-0DR15-MU5VFMU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), # - ChainProp(name='HLT_2mu4_bBmumu_L1BPH-2M9-0DR15-2MU4', l1SeedThresholds=['MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-2MU4', l1SeedThresholds=['MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-2MU4', l1SeedThresholds=['MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), - ChainProp(name='HLT_2mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-2MU4', l1SeedThresholds=['MU4'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumu_L1BPH-2M9-0DR15-2MU3V', l1SeedThresholds=['MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bJpsimumu_Lxy0_L1BPH-2M9-0DR15-2MU3V', l1SeedThresholds=['MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumux_BpmumuKp_L1BPH-2M9-0DR15-2MU3V', l1SeedThresholds=['MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), + ChainProp(name='HLT_2mu4_bBmumux_BsmumuPhi_L1BPH-2M9-0DR15-2MU3V', l1SeedThresholds=['MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+EOFBPhysL1MuGroup), # supplementary PEB triggers, temporarily commented out due to ATR-23615 to make ART back for Bphysics slice - #ChainProp(name='HLT_mu4_bJpsi_MuonTrkPEB_L1MU4', stream =['BphysPEB'], groups=BphysicsGroup+['PS:Online']), - #ChainProp(name='HLT_mu6_bJpsi_MuonTrkPEB_L1MU6', stream =['BphysPEB'], groups=BphysicsGroup+['PS:Online']), - #ChainProp(name='HLT_mu10_bJpsi_MuonTrkPEB_L1MU10', stream =['BphysPEB'], groups=BphysicsGroup+['PS:Online']), - #ChainProp(name='HLT_mu20_bJpsi_MuonTrkPEB_L1MU20', stream =['BphysPEB'], groups=BphysicsGroup+['PS:Online']), - - - # Run3 thresholds - ChainProp(name='HLT_2mu10_bJpsimumu_L12MU8F', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bJpsimumu_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_2mu10_bUpsimumu_L12MU8F', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bUpsimumu_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bBmumu_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bDimu_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bDimu2700_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bPhi_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bTau_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bBmumux_BpmumuKp_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_BcmumuPi_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_BsmumuPhi_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_BdmumuKst_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_LbPqKm_L1MU8VF_2MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu4_bJpsi_L13MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu4_bUpsi_L13MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu4_bTau_L13MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu4_bPhi_L13MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu6_bDimu_L13MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu6_2mu4_bDimu2700_L1MU5VF_3MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu6_2mu4_bDimu6000_L1MU5VF_3MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_4mu4_bDimu6000_L14MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + #ChainProp(name='HLT_mu4_bJpsi_MuonTrkPEB_L1MU3V', stream =['BphysPEB'], groups=BphysicsGroup+['PS:Online']), + #ChainProp(name='HLT_mu6_bJpsi_MuonTrkPEB_L1MU5VF', stream =['BphysPEB'], groups=BphysicsGroup+['PS:Online']), + #ChainProp(name='HLT_mu10_bJpsi_MuonTrkPEB_L1MU8F', stream =['BphysPEB'], groups=BphysicsGroup+['PS:Online']), + #ChainProp(name='HLT_mu20_bJpsi_MuonTrkPEB_L1MU14FCH', stream =['BphysPEB'], groups=BphysicsGroup+['PS:Online']), + + # RCP multiple candidate + ChainProp(name='HLT_mu10_l2mt_mu4_l2mt_bJpsimumu_L1MU10BOM', l1SeedThresholds=['MU10BOM']*2, stream=["BphysDelayed"], groups=BphysicsGroup), ] TriggerFlags.CombinedSlice.signatures = TriggerFlags.CombinedSlice.signatures() + [ # Primary e-mu chains - ChainProp(name='HLT_e17_lhloose_mu14_L1EM15VH_MU10', l1SeedThresholds=['EM15VH','MU10'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_e7_lhmedium_mu24_L1MU20',l1SeedThresholds=['EM3','MU20'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_e12_lhloose_2mu10_L12MU10', l1SeedThresholds=['EM8VH','MU10'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_2e12_lhloose_mu10_L12EM8VH_MU10', l1SeedThresholds=['EM8VH','MU10'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_e17_lhloose_mu14_L1EM15VH_MU8F', l1SeedThresholds=['EM15VH','MU8F'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_e7_lhmedium_mu24_L1MU14FCH',l1SeedThresholds=['EM3','MU14FCH'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_e12_lhloose_2mu10_L12MU8F', l1SeedThresholds=['EM8VH','MU8F'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_2e12_lhloose_mu10_L12EM8VH_MU8F', l1SeedThresholds=['EM8VH','MU8F'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), # Primary g-mu chains - ChainProp(name='HLT_g25_medium_mu24_L1MU20',l1SeedThresholds=['EM15VH','MU20'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), #ATR-22594 - ChainProp(name='HLT_g35_loose_mu18_L1EM22VHI', l1SeedThresholds=['EM22VHI','MU10'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_g35_loose_mu18_L1EM24VHI', l1SeedThresholds=['EM24VHI','MU10'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_2g10_loose_mu20_L1MU20', l1SeedThresholds=['EM7','MU20'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), # unsure what EM seed should be + ChainProp(name='HLT_g25_medium_mu24_L1MU14FCH',l1SeedThresholds=['EM15VH','MU14FCH'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), #ATR-22594 + ChainProp(name='HLT_g35_loose_mu18_L1EM22VHI', l1SeedThresholds=['EM22VHI','MU8F'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g35_loose_mu18_L1EM24VHI', l1SeedThresholds=['EM24VHI','MU8F'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_2g10_loose_mu20_L1MU14FCH', l1SeedThresholds=['EM7','MU14FCH'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), # unsure what EM seed should be #LLP - ChainProp(name='HLT_g15_loose_2mu10_msonly_L12MU10', l1SeedThresholds=['EM8VH','MU10'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_g40_loose_mu40_msonly_L1MU20', l1SeedThresholds=['EM20VH','MU20'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), #ATR-20505 + ChainProp(name='HLT_g15_loose_2mu10_msonly_L12MU8F', l1SeedThresholds=['EM8VH','MU8F'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g40_loose_mu40_msonly_L1MU14FCH', l1SeedThresholds=['EM20VH','MU14FCH'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), #ATR-20505 # Test chains for muon + jet/MET merging/aligning - ChainProp(name='HLT_mu6_xe30_mht_L1XE30', l1SeedThresholds=['MU6','FSNOSEED'], stream=[PhysicsStream], groups=MuonMETGroup), - ChainProp(name='HLT_mu6_j45_nojcalib_L1J20', l1SeedThresholds=['MU6','FSNOSEED'], stream=[PhysicsStream], groups=MuonJetGroup), + ChainProp(name='HLT_mu6_xe30_mht_L1XE30', l1SeedThresholds=['MU5VF','FSNOSEED'], stream=[PhysicsStream], groups=MuonMETGroup), + ChainProp(name='HLT_mu6_j45_nojcalib_L1J20', l1SeedThresholds=['MU5VF','FSNOSEED'], stream=[PhysicsStream], groups=MuonJetGroup), #ATR-22107 ChainProp(name='HLT_e24_lhmedium_mu8noL1_L1EM22VHI', l1SeedThresholds=['EM22VHI','FSNOSEED'], stream=[PhysicsStream], groups=EgammaMuonGroup), ChainProp(name='HLT_e26_lhmedium_mu8noL1_L1EM22VHI', l1SeedThresholds=['EM22VHI','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), ChainProp(name='HLT_e28_lhmedium_mu8noL1_L1EM24VHI', l1SeedThresholds=['EM24VHI','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_e9_lhvloose_mu20_mu8noL1_L1MU20', l1SeedThresholds=['EM3','MU20','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_g35_loose_mu15_mu2noL1_L1EM22VHI', l1SeedThresholds=['EM22VHI','MU6','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_g35_loose_mu15_mu2noL1_L1EM24VHI', l1SeedThresholds=['EM24VHI','MU6','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_e9_lhvloose_mu20_mu8noL1_L1MU14FCH', l1SeedThresholds=['EM3','MU14FCH','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g35_loose_mu15_mu2noL1_L1EM22VHI', l1SeedThresholds=['EM22VHI','MU5VF','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g35_loose_mu15_mu2noL1_L1EM24VHI', l1SeedThresholds=['EM24VHI','MU5VF','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), ChainProp(name='HLT_g35_tight_icalotight_mu18noL1_L1EM22VHI', l1SeedThresholds=['EM22VHI','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), ChainProp(name='HLT_g35_tight_icalotight_mu18noL1_L1EM24VHI', l1SeedThresholds=['EM24VHI','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), ChainProp(name='HLT_g35_tight_icalotight_mu15noL1_mu2noL1_L1EM22VHI', l1SeedThresholds=['EM22VHI','FSNOSEED','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), @@ -1005,7 +966,7 @@ def setupMenu(): ChainProp(name='HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_j70_0eta320_j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF',l1SeedThresholds=['TAU8','TAU8','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=SupportLegGroup+TauJetGroup), ChainProp(name='HLT_tau25_mediumRNN_tracktwoMVABDT_tau20_mediumRNN_tracktwoMVABDT_03dRAB_j70_0eta320_j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF',l1SeedThresholds=['TAU8','TAU8','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+TauJetGroup), # mu-tag & tau-probe triggers for LLP (ATR-23150) - ChainProp(name='HLT_mu26_ivarmedium_tau100_mediumRNN_tracktwoLLP_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU60'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau100_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU60'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), ChainProp(name='HLT_e26_lhtight_ivarloose_tau100_mediumRNN_tracktwoLLP_03dRAB_L1EM22VHI', l1SeedThresholds=['EM22VHI','TAU60'], stream=[PhysicsStream], groups=TagAndProbeLegGroup+SingleElectronGroup), # MET + tau tag and probe chains (ATR-23507) @@ -1049,13 +1010,13 @@ def setupMenu(): # VBF triggers (ATR-22594) - ChainProp(name='HLT_2mu6_2j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF',l1SeedThresholds=['MU6','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+MuonJetGroup), # Formerly HLT_2mu6_2j50_0eta490_invm900j50 + ChainProp(name='HLT_2mu6_2j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF',l1SeedThresholds=['MU5VF','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+MuonJetGroup), # Formerly HLT_2mu6_2j50_0eta490_invm900j50 ChainProp(name='HLT_e5_lhvloose_j70_0eta320_j50_0eta490_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF',l1SeedThresholds=['EM3','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+EgammaJetGroup), ChainProp(name='HLT_2e5_lhmedium_j70_0eta320_j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF',l1SeedThresholds=['EM3','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+EgammaJetGroup), ChainProp(name='HLT_g25_medium_4j35_0eta490_j0_DJMASS1000j35_L1EM22VHI',l1SeedThresholds=['EM22VHI','FSNOSEED','FSNOSEED'],stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaJetGroup), ChainProp(name='HLT_e10_lhmedium_ivarloose_j70_0eta320_j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF',l1SeedThresholds=['EM8VH','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+EgammaJetGroup), - ChainProp(name='HLT_mu4_j70_0eta320_j50_0eta490_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF',l1SeedThresholds=['MU4','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+MuonJetGroup), - ChainProp(name='HLT_mu10_ivarmedium_j70_0eta320_j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF',l1SeedThresholds=['MU10','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+MuonJetGroup), + ChainProp(name='HLT_mu4_j70_0eta320_j50_0eta490_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF',l1SeedThresholds=['MU3V','FSNOSEED','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+MuonJetGroup), + ChainProp(name='HLT_mu10_ivarmedium_j70_0eta320_j50_0eta490_j0_DJMASS900j50_L1MJJ-500-NFF',l1SeedThresholds=['MU8F','FSNOSEED','FSNOSEED','FSNOSEED'],stream=['VBFDelayed'], groups=PrimaryLegGroup+MuonJetGroup), ChainProp(name='HLT_j70_0eta320_j50_0eta490_j0_DJMASS1000j50dphi240_xe90_tcpufit_xe50_cell_L1MJJ-500-NFF',l1SeedThresholds=['FSNOSEED']*5,stream=['VBFDelayed'], groups=PrimaryLegGroup+JetMETGroup), # meson + photon (ATR-22644, ATR-23239) @@ -1080,8 +1041,8 @@ def setupMenu(): #Combined BPhys #ATR-22749; chain configuration is broken, temporarily comment them out, see ATR-23839 - #ChainProp(name='HLT_e9_lhvloose_e5_lhvloose_bBeeM6000_mu6_noL2Comb_L1BPH-0M9-EM7-EM5_MU6', l1SeedThresholds=['EM7','EM3','MU6'], groups=BphysElectronGroup), - #ChainProp(name='HLT_e9_lhvloose_e5_lhvloose_bBeeM6000_2mu4_noL2Comb_L1BPH-0M9-EM7-EM5_2MU4', l1SeedThresholds=['EM7','EM3','MU4'], groups=BphysElectronGroup), + #ChainProp(name='HLT_e9_lhvloose_e5_lhvloose_bBeeM6000_mu6_noL2Comb_L1BPH-0M9-EM7-EM5_MU5VF', l1SeedThresholds=['EM7','EM3','MU5VF'], groups=BphysElectronGroup), + #ChainProp(name='HLT_e9_lhvloose_e5_lhvloose_bBeeM6000_2mu4_noL2Comb_L1BPH-0M9-EM7-EM5_2MU3V', l1SeedThresholds=['EM7','EM3','MU3V'], groups=BphysElectronGroup), # Tests of potential TLA chains for cost/rate # ATR-19317 - dijet+ISR @@ -1097,20 +1058,20 @@ def setupMenu(): ChainProp(name='HLT_tau50_mediumRNN_tracktwoMVABDT_xe80_tcpufit_xe50_cell_L1XE50', l1SeedThresholds=['TAU25IM','FSNOSEED','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+TauMETGroup), ChainProp(name='HLT_tau50_mediumRNN_tracktwoMVABDT_xe80_pfopufit_xe50_cell_L1XE50', l1SeedThresholds=['TAU25IM','FSNOSEED','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+TauMETGroup), ChainProp(name='HLT_j80_pf_ftf_bdl1r60_xe60_cell_L12J50_XE40', l1SeedThresholds=['FSNOSEED','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+BjetMETGroup), - ChainProp(name='HLT_g25_medium_mu24_ivarmedium_L1MU20', l1SeedThresholds=['EM22VHI','MU20'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g25_medium_mu24_ivarmedium_L1MU14FCH', l1SeedThresholds=['EM22VHI','MU14FCH'], stream=[PhysicsStream], groups=PrimaryLegGroup+EgammaMuonGroup), # Late stream for LLP - ChainProp(name='HLT_g15_loose_2mu10_msonly_L1MU4_EMPTY', l1SeedThresholds=['EM8VH','MU4'], stream=['Late'], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_g15_loose_2mu10_msonly_L1MU6_EMPTY', l1SeedThresholds=['EM8VH','MU6'], stream=['Late'], groups=PrimaryLegGroup+EgammaMuonGroup), - ChainProp(name='HLT_g15_loose_2mu10_msonly_L1MU4_UNPAIRED_ISO', l1SeedThresholds=['EM8VH','MU4'], stream=['Late'], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g15_loose_2mu10_msonly_L1MU3V_EMPTY', l1SeedThresholds=['EM8VH','MU3V'], stream=['Late'], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g15_loose_2mu10_msonly_L1MU5VF_EMPTY', l1SeedThresholds=['EM8VH','MU5VF'], stream=['Late'], groups=PrimaryLegGroup+EgammaMuonGroup), + ChainProp(name='HLT_g15_loose_2mu10_msonly_L1MU3V_UNPAIRED_ISO', l1SeedThresholds=['EM8VH','MU3V'], stream=['Late'], groups=PrimaryLegGroup+EgammaMuonGroup), # ChainProp(name='HLT_j55_0eta240_xe50_cell_L1J30_EMPTY', l1SeedThresholds=['FSNOSEED']*2, stream=['Late'], groups=PrimaryLegGroup+JetMETGroup), ChainProp(name='HLT_j55_0eta240_xe50_cell_L1J30_FIRSTEMPTY', l1SeedThresholds=['FSNOSEED']*2, stream=['Late'], groups=PrimaryLegGroup+JetMETGroup), # high-mu AFP ChainProp(name='HLT_2j20_mb_afprec_afpdijet_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream],groups=MinBiasGroup+LowMuGroup+SupportLegGroup), - ChainProp(name='HLT_2j135_mb_afprec_afpdijet_L1CEP-CJ60', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream],groups=MinBiasGroup+LowMuGroup+SupportLegGroup), - ChainProp(name='HLT_2j120_mb_afprec_afpdijet_L1CEP-CJ50', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream],groups=MinBiasGroup+LowMuGroup+SupportLegGroup), + ChainProp(name='HLT_2j135_mb_afprec_afpdijet_L1CEP-CjJ60', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream],groups=MinBiasGroup+LowMuGroup+SupportLegGroup), + ChainProp(name='HLT_2j120_mb_afprec_afpdijet_L1CEP-CjJ50', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream],groups=MinBiasGroup+LowMuGroup+SupportLegGroup), ChainProp(name='HLT_j120_mb_afprec_afpdijet_L1AFP_A_AND_C_TOF_J50', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream],groups=MinBiasGroup+LowMuGroup+SupportLegGroup), ChainProp(name='HLT_j175_mb_afprec_afpdijet_L1AFP_A_AND_C_TOF_J75', l1SeedThresholds=['FSNOSEED']*2, stream=[PhysicsStream],groups=MinBiasGroup+LowMuGroup+SupportLegGroup), @@ -1134,6 +1095,10 @@ def setupMenu(): # dEdx triggers ChainProp(name='HLT_xe80_tcpufit_unconvtrk25_dedx_medium_L1XE50', groups=SupportLegGroup+UnconvTrkGroup, l1SeedThresholds=['FSNOSEED']*2), ChainProp(name='HLT_xe80_tcpufit_unconvtrk50_dedx_medium_L1XE50', groups=PrimaryLegGroup+UnconvTrkGroup, l1SeedThresholds=['FSNOSEED']*2), + + #ATR-23156 + ChainProp(name='HLT_mu4_j20_0eta290_pf_ftf_boffperf_dRAB03_L1MU3V_J15', l1SeedThresholds=['MU3V','FSNOSEED'], groups=SingleBjetGroup), + ChainProp(name='HLT_mu4_j20_0eta290_pf_ftf_boffperf_dRAB03_L1MU3V', l1SeedThresholds=['MU3V','FSNOSEED'], groups=SingleBjetGroup), ] @@ -1199,9 +1164,8 @@ def setupMenu(): # afprec chains ChainProp(name='HLT_mb_afprec_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), - ChainProp(name='HLT_mb_afprec_L1CEP-CJ60', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), - ChainProp(name='HLT_mb_afprec_L1CEP-CJ50', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), - #ChainProp(name='HLT_mb_afprec_L1CEP-CJ50pETA21', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), + ChainProp(name='HLT_mb_afprec_L1CEP-CjJ60', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), + ChainProp(name='HLT_mb_afprec_L1CEP-CjJ50', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), ChainProp(name='HLT_mb_afprec_L1AFP_A_AND_C_TOF_J20', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), ChainProp(name='HLT_mb_afprec_L1AFP_A_AND_C_TOF_T0T1_J20', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), ChainProp(name='HLT_mb_afprec_L1AFP_A_AND_C_TOF_J30', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['PS:Online']+MinBiasGroup+LowMuGroup), @@ -1223,40 +1187,68 @@ def setupMenu(): ] TriggerFlags.StreamingSlice.signatures = TriggerFlags.StreamingSlice.signatures() + [ - #ChainProp(name='HLT_noalg_mb_L1RD2_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=MinBiasGroup), - #ChainProp(name='HLT_noalg_zb_L1ZB', l1SeedThresholds=['FSNOSEED'], stream=['ZeroBias'], groups=ZeroBiasGroup), + #ChainProp(name='HLT_noalg_1RD2_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=MinBiasGroup), + #ChainProp(name='HLT_noalg_L1ZB', l1SeedThresholds=['FSNOSEED'], stream=['ZeroBias'], groups=ZeroBiasGroup), ChainProp(name='HLT_noalg_L1All', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=['Primary:CostAndRate', 'RATE:SeededStreamers', 'BW:Other']), # ATR-22072, for rates in MC. To move to MC menu once good nightly in LS2_v1. #Phase-I ChainProp(name='HLT_noalg_L1eTAU8', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eTAU12', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1jTAU12', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1jTAU12M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1cTAU12M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1eTAU12L', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eTAU12M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eTAU20', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), - ChainProp(name='HLT_noalg_L1eTAU20M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1cTAU20M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eTAU25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), - ChainProp(name='HLT_noalg_L1eTAU25M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1cTAU25M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eTAU30H', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eTAU40', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eTAU60', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eTAU100', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=TauPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM3', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), - ChainProp(name='HLT_noalg_L1eEM7', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1eEM5', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM8', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM8L', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), - ChainProp(name='HLT_noalg_L1eEM10', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1eEM8M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM10L', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM15', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM15L', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM15M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), - ChainProp(name='HLT_noalg_L1eEM18M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM20', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM20L', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM20M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM22', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), + ChainProp(name='HLT_noalg_L1eEM22L', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM22M', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), ChainProp(name='HLT_noalg_L1eEM22T', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ12', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ120pETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ15', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ15p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ15p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ20', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ20p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ25p0ETA23', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ30', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ30p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ35p0ETA23', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ40', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ40p0ETA25', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ45p0ETA20', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ50', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ50p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ75', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ75p31ETA49', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ85', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ100', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ120', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup), + #ChainProp(name='HLT_noalg_L1jJ400', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetPhaseIStreamersGroup+PrimaryPhIGroup), + ] TriggerFlags.MonitorSlice.signatures = TriggerFlags.MonitorSlice.signatures() + [ @@ -1269,17 +1261,17 @@ def setupMenu(): ChainProp(name='HLT_eb_low_L1RD2_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), ChainProp(name='HLT_eb_medium_L1RD2_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1PhysicsHigh_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1PhysicsVeryHigh_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), + ChainProp(name='HLT_noalg_L1PhysicsHigh_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), + ChainProp(name='HLT_noalg_L1PhysicsVeryHigh_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1RD3_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1RD3_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), + ChainProp(name='HLT_noalg_L1RD3_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), + ChainProp(name='HLT_noalg_L1RD3_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1EMPTY_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1FIRSTEMPTY_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1UNPAIRED_ISO_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1UNPAIRED_NONISO_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), - ChainProp(name='HLT_noalg_eb_L1ABORTGAPNOTCALIB_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ) + ChainProp(name='HLT_noalg_L1EMPTY_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), + ChainProp(name='HLT_noalg_L1FIRSTEMPTY_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), + ChainProp(name='HLT_noalg_L1UNPAIRED_ISO_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), + ChainProp(name='HLT_noalg_L1UNPAIRED_NONISO_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ), + ChainProp(name='HLT_noalg_L1ABORTGAPNOTCALIB_noPS', l1SeedThresholds=['FSNOSEED'], stream=['EnhancedBias'], groups= ["RATE:EnhancedBias", "BW:Detector"] ) ] @@ -1288,7 +1280,8 @@ def setupMenu(): ChainProp(name='HLT_unconvtrk50_isohpttrack_L1XE50', groups=SingleMETGroup, l1SeedThresholds=['FSNOSEED']), - ChainProp(name='HLT_unconvtrk0_fslrt_L1All', groups=SingleMETGroup, l1SeedThresholds=['FSNOSEED']), + ChainProp(name='HLT_unconvtrk0_fslrt_L1J100', groups=SingleJetGroup, l1SeedThresholds=['FSNOSEED']), + ChainProp(name='HLT_unconvtrk0_fslrt_L14J15', groups=MultiJetGroup, l1SeedThresholds=['FSNOSEED']), ChainProp(name='HLT_unconvtrk0_fslrt_L1XE50', groups=SingleMETGroup, l1SeedThresholds=['FSNOSEED']), # hit-based DV diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py index a3db85a5c6a7a6b8486afebcff40389cd88cf74d..b35da9b7449e83feca54738d304ff7f3831d7294 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py @@ -27,19 +27,19 @@ def setupMenu(): chains["muon"] = [ - ChainProp(name='HLT_mu20_L1MU20', groups=SingleMuonGroup), - ChainProp(name='HLT_mu10_L1MU10', groups=SingleMuonGroup), - ChainProp(name='HLT_mu8_L1MU6', groups=SingleMuonGroup), + ChainProp(name='HLT_mu20_L1MU14FCH', groups=SingleMuonGroup), + ChainProp(name='HLT_mu10_L1MU8F', groups=SingleMuonGroup), + ChainProp(name='HLT_mu8_L1MU5VF', groups=SingleMuonGroup), - ChainProp(name='HLT_mu20_msonly_L1MU20', groups=SingleMuonGroup), - ChainProp(name='HLT_mu10_msonly_L1MU10', groups=SingleMuonGroup), - ChainProp(name='HLT_mu8_msonly_L1MU6', groups=SingleMuonGroup), + ChainProp(name='HLT_mu20_msonly_L1MU14FCH', groups=SingleMuonGroup), + ChainProp(name='HLT_mu10_msonly_L1MU8F', groups=SingleMuonGroup), + ChainProp(name='HLT_mu8_msonly_L1MU5VF', groups=SingleMuonGroup), - ChainProp(name='HLT_mu8_ivarmedium_L1MU6', groups=SingleMuonGroup), - ChainProp(name='HLT_mu6noL1_L1MU6', l1SeedThresholds=['FSNOSEED'], groups=SingleMuonGroup), + ChainProp(name='HLT_mu8_ivarmedium_L1MU5VF', groups=SingleMuonGroup), + ChainProp(name='HLT_mu6noL1_L1MU5VF', l1SeedThresholds=['FSNOSEED'], groups=SingleMuonGroup), ] chains["bphysics"] = [ -# ChainProp(name='HLT_2mu4_bJpsimumu_L12MU4', groups=BphysicsGroup), +# ChainProp(name='HLT_2mu4_bJpsimumu_L12MU3V', groups=BphysicsGroup), ] chains["electron"] = [ @@ -89,8 +89,8 @@ def setupMenu(): ] chains["combined"] = [ - ChainProp(name='HLT_e7_etcut_mu10_L1EM7_MU10', groups=EgammaMuonGroup), - ChainProp(name='HLT_e7_etcut_mu10_msonly_L1EM7_MU10', groups=EgammaMuonGroup) + ChainProp(name='HLT_e7_etcut_mu10_L1EM7_MU8F', groups=EgammaMuonGroup), + ChainProp(name='HLT_e7_etcut_mu10_msonly_L1EM7_MU8F', groups=EgammaMuonGroup) ] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_HI_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_HI_run3_v1.py index 60e87ea69a9c7858f5bcfe95ea68c08e49aae4b1..b180c7378143d1568b41d822e51588338b55519a 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_HI_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_HI_run3_v1.py @@ -34,7 +34,7 @@ def setupMenu(): TriggerFlags.TestSlice.signatures = [] TriggerFlags.MuonSlice.signatures = [ - ChainProp(name='HLT_mu4_L1MU4', stream=[HardProbesStream], groups=SingleMuonGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu4_L1MU3V', stream=[HardProbesStream], groups=SingleMuonGroup+PrimaryL1MuGroup), ] TriggerFlags.EgammaSlice.signatures = [ @@ -64,8 +64,8 @@ def setupMenu(): TriggerFlags.CalibSlice.signatures = [] TriggerFlags.CosmicSlice.signatures = [] TriggerFlags.StreamingSlice.signatures = [ - ChainProp(name='HLT_noalg_mb_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=[MinBiasStream], groups=MinBiasGroup), - ChainProp(name='HLT_noalg_mb_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=[MinBiasStream], groups=MinBiasGroup), + ChainProp(name='HLT_noalg_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=[MinBiasStream], groups=MinBiasGroup), + ChainProp(name='HLT_noalg_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=[MinBiasStream], groups=MinBiasGroup), ] TriggerFlags.MonitorSlice.signatures = [ diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_pp_run3_v1.py index e77f73c7659b7f84538d8964aa262e0d166c7f59..fc4645ef0da27f29c90c4003877cd78571a2c951 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/PhysicsP1_pp_run3_v1.py @@ -27,7 +27,7 @@ def addP1Signatures(): TriggerFlags.TestSlice.signatures = TriggerFlags.TestSlice.signatures() + [] TriggerFlags.MuonSlice.signatures = TriggerFlags.MuonSlice.signatures() + [ - ChainProp(name='HLT_mu50_RPCPEBSecondaryReadout_L1MU20', stream=['RPCSecondaryReadout'], groups=SingleMuonGroup), # TODO: Move to Detector slice + ChainProp(name='HLT_mu50_RPCPEBSecondaryReadout_L1MU14FCH', stream=['RPCSecondaryReadout'], groups=SingleMuonGroup), # TODO: Move to Detector slice ] TriggerFlags.EgammaSlice.signatures = TriggerFlags.EgammaSlice.signatures() + [ @@ -63,7 +63,14 @@ def addP1Signatures(): TriggerFlags.CalibSlice.signatures = TriggerFlags.CalibSlice.signatures() + [ ChainProp(name='HLT_noalg_LArPEBCalib_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['LArPEB'], groups=['RATE:Calibration','BW:Detector']), ChainProp(name='HLT_noalg_LArPEBCalib_L1RD0_BGRP11', l1SeedThresholds=['FSNOSEED'], stream=['LArPEB'], groups=['RATE:Calibration','BW:Detector']), + # LAr noise burst chains ChainProp(name='HLT_larnoiseburst_L1XE60', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_larnoiseburst_L1J75', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_larnoiseburst_L1J100', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_larnoiseburst_L1J40_XE50', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_larnoiseburst_L1J40_XE60', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_larnoiseburst_L1All', l1SeedThresholds=['FSNOSEED'], stream=['LArNoiseBurst'], groups=['RATE:Calibration','BW:Detector']), + ] TriggerFlags.CosmicSlice.signatures = TriggerFlags.CosmicSlice.signatures() + [ ChainProp(name='HLT_noalg_SCTPEB_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['SCTNoise'], groups=['RATE:SCTCalibration','BW:Detector']), # HLT_sct_noise @@ -71,18 +78,19 @@ def addP1Signatures(): ChainProp(name='HLT_noalg_CIS_TilePEB_L1CALREQ1', l1SeedThresholds=['FSNOSEED'], stream=['Tile'], groups=['RATE:TileCalibration','BW:Detector']), # HLT_tilecalib_CIS ] TriggerFlags.StreamingSlice.signatures = TriggerFlags.StreamingSlice.signatures() + [ - ChainProp(name='HLT_noalg_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup), + ChainProp(name='HLT_noalg_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup), ChainProp(name='HLT_noalg_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup), + + # ID monitoring ChainProp(name='HLT_noalg_idmon_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['IDMonitoring','express'],groups=['RATE:Monitoring','BW:Detector']), ChainProp(name='HLT_noalg_idmon_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['IDMonitoring'],groups=['RATE:Monitoring','BW:Detector']), ChainProp(name='HLT_noalg_idmon_L1RD0_UNPAIRED_ISO', l1SeedThresholds=['FSNOSEED'], stream=['IDMonitoring'],groups=['RATE:Monitoring','BW:Detector']), # L1 combined streamers - ChainProp(name='HLT_noalg_bkg_L1Bkg', l1SeedThresholds=['FSNOSEED'], stream=['Background'], groups=['RATE:SeededStreamers', 'BW:Other']), + ChainProp(name='HLT_noalg_L1Bkg', l1SeedThresholds=['FSNOSEED'], stream=['Background'], groups=['RATE:SeededStreamers', 'BW:Other']), ChainProp(name='HLT_noalg_L1Standby', l1SeedThresholds=['FSNOSEED'], stream=['Standby'], groups=['RATE:SeededStreamers', 'BW:Other']), ChainProp(name='HLT_noalg_L1Calo', l1SeedThresholds=['FSNOSEED'], stream=['L1Calo'], groups=['RATE:SeededStreamers', 'BW:Other']), ChainProp(name='HLT_noalg_L1Calo_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['L1Calo'], groups=['RATE:SeededStreamers', 'BW:Other']), - ChainProp(name='HLT_noalg_l1calo_L1J400', l1SeedThresholds=['FSNOSEED'], stream=['L1Calo'], groups=['RATE:SeededStreamers', 'BW:Other']), # L1 calo streamers ChainProp(name='HLT_noalg_L1EM3', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=EgammaStreamersGroup), @@ -110,7 +118,8 @@ def addP1Signatures(): ChainProp(name='HLT_noalg_L1J75', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetStreamersGroup), ChainProp(name='HLT_noalg_L1J85', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetStreamersGroup), ChainProp(name='HLT_noalg_L1J100', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetStreamersGroup), - ChainProp(name='HLT_noalg_L1J400', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=JetStreamersGroup), + # Also used for L1Calo overflow detection + ChainProp(name='HLT_noalg_L1J400', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream,'L1Calo'], groups=JetStreamersGroup+['BW:Other']), ChainProp(name='HLT_noalg_L1XE30', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=SupportLegGroup+METStreamersGroup), ChainProp(name='HLT_noalg_L1XE35', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=SupportLegGroup+METStreamersGroup), @@ -122,22 +131,35 @@ def addP1Signatures(): ChainProp(name='HLT_noalg_L1XE300', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=METStreamersGroup), # Cosmic calo stream - ChainProp(name='HLT_noalg_cosmiccalo_L1EM3_EMPTY', stream=['CosmicCalo'],groups=['RATE:Cosmic_Calo','BW:MinBias']), - ChainProp(name='HLT_noalg_cosmiccalo_L1RD1_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Calibration','BW:Detector']), - ChainProp(name='HLT_noalg_cosmiccalo_L1J30p31ETA49_EMPTY', stream=['CosmicCalo'],groups=['RATE:Cosmic_Calo','BW:Jet']), - ChainProp(name='HLT_noalg_cosmiccalo_L1J12_EMPTY', stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','BW:Jet']), - ChainProp(name='HLT_noalg_cosmiccalo_L1EM7_EMPTY', stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','BW:Jet']), - ChainProp(name='HLT_noalg_cosmiccalo_L1J30_EMPTY', stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','BW:Jet']), - ChainProp(name='HLT_noalg_cosmiccalo_L1J12_FIRSTEMPTY', stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','BW:Jet']), - ChainProp(name='HLT_noalg_cosmiccalo_L1J30_FIRSTEMPTY', stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','BW:Jet']), - ChainProp(name='HLT_noalg_cosmiccalo_L1RD0_FIRSTEMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo'], groups=['RATE:Calibration','BW:Detector']), - -# ChainProp(name='HLT_noalg_cosmiccalo_L1RD1_BGRP10', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_noalg_L1EM3_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo'],groups=['RATE:Cosmic_Calo','BW:MinBias','RATE:Calibration']), + ChainProp(name='HLT_noalg_L1RD1_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_noalg_L1J30p31ETA49_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo'],groups=['RATE:Cosmic_Calo','RATE:Calibration','BW:Jet']), + ChainProp(name='HLT_noalg_L1J12_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','RATE:Calibration','BW:Jet']), + ChainProp(name='HLT_noalg_L1EM7_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','RATE:Calibration','BW:Jet']), + ChainProp(name='HLT_noalg_L1J30_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','RATE:Calibration','BW:Jet']), + ChainProp(name='HLT_noalg_L1J12_FIRSTEMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','RATE:Calibration','BW:Jet']), + ChainProp(name='HLT_noalg_L1J30_FIRSTEMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','RATE:Calibration','BW:Jet']), + ChainProp(name='HLT_noalg_L1RD0_FIRSTEMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo'], groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_noalg_L1TAU8_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Cosmic_Calo','RATE:Calibration','BW:Jet']), + # + ChainProp(name='HLT_noalg_CSCPEB_L1EM3_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['LArCellsEmpty'],groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_noalg_CSCPEB_L1EM7_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['LArCellsEmpty'],groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_noalg_CSCPEB_L1J12_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['LArCellsEmpty'],groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_noalg_CSCPEB_L1TAU8_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['LArCellsEmpty'],groups=['RATE:Calibration','BW:Detector']), + ChainProp(name='HLT_noalg_CSCPEB_L1J30p31ETA49_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['LArCellsEmpty'],groups=['RATE:Calibration','BW:Detector']), + + # LAr + ChainProp(name='HLT_noalg_LArPEBCalib_L1LAR-ZEE', l1SeedThresholds=['FSNOSEED'], stream=['LArCells'],groups=['RATE:Calibration','BW:Detector']), + + # TGC + ChainProp(name='HLT_noalg_L1TGC_BURST', l1SeedThresholds=['FSNOSEED'], stream=['TgcNoiseBurst'],groups=['RATE:Calibration','BW:Detector']), + +# ChainProp(name='HLT_noalg_L1RD1_BGRP10', l1SeedThresholds=['FSNOSEED'], stream=['CosmicCalo','express'],groups=['RATE:Calibration','BW:Detector']), # MBTS ChainProp(name='HLT_noalg_L1MBTS_1_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=MinBiasGroup), #ATR-21740 - ChainProp(name='HLT_noalg_mb_L1RD2_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=MinBiasGroup), # ATR-21367 - ChainProp(name='HLT_noalg_zb_L1ZB', l1SeedThresholds=['FSNOSEED'], stream=['ZeroBias'],groups=ZeroBiasGroup),# ATR-21367 + ChainProp(name='HLT_noalg_L1RD2_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=MinBiasGroup), # ATR-21367 + ChainProp(name='HLT_noalg_L1ZB', l1SeedThresholds=['FSNOSEED'], stream=['ZeroBias'],groups=ZeroBiasGroup),# ATR-21367 ChainProp(name='HLT_noalg_L1MBTS_2_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=MinBiasGroup), #ATR-21999 ChainProp(name='HLT_noalg_L1MBTS_1_1_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['MinBias'], groups=MinBiasGroup), #ATR-21999 @@ -182,10 +204,9 @@ def addP1Signatures(): ChainProp(name='HLT_noalg_L1MBTS_2_UNPAIRED_ISO', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+LowMuGroup+SupportLegGroup), ChainProp(name='HLT_noalg_L1MBTS_1_1_UNPAIRED_ISO', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+LowMuGroup+SupportLegGroup), - ChainProp(name='HLT_noalg_L1CEP-CJ60', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+SupportLegGroup), - ChainProp(name='HLT_noalg_L1CEP-CJ50', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+SupportLegGroup), + ChainProp(name='HLT_noalg_L1CEP-CjJ60', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+SupportLegGroup), + ChainProp(name='HLT_noalg_L1CEP-CjJ50', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+SupportLegGroup), # TODO add once L1 items/thresholds are in place - # ChainProp(name='HLT_noalg_L1CEP-CJ50pETA21', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+SupportLegGroup), ChainProp(name='HLT_noalg_L1AFP_A_AND_C_TOF_T0T1_J50', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+SupportLegGroup), ChainProp(name='HLT_noalg_L1AFP_A_AND_C_TOF_T0T1_J75', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+SupportLegGroup), ChainProp(name='HLT_noalg_L1AFP_A_AND_C_TOF_J50', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+SupportLegGroup), @@ -194,8 +215,9 @@ def addP1Signatures(): # Low mu AFP ChainProp(name='HLT_noalg_L1EM7_AFP_A_OR_C', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+LowMuGroup+SupportLegGroup), ChainProp(name='HLT_noalg_L1EM7_AFP_A_AND_C', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+LowMuGroup+SupportLegGroup), - ChainProp(name='HLT_noalg_L1MU6_AFP_A_OR_C', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+LowMuGroup+SupportLegGroup), - ChainProp(name='HLT_noalg_L1MU6_AFP_A_AND_C', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+LowMuGroup+SupportLegGroup), + ChainProp(name='HLT_noalg_L1MU5VF_AFP_A_OR_C', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+LowMuGroup+SupportLegGroup), + ChainProp(name='HLT_noalg_L1MU5VF_AFP_A_AND_C', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream], groups=MinBiasGroup+['PS:Online']+LowMuGroup+SupportLegGroup), + ] TriggerFlags.MonitorSlice.signatures = TriggerFlags.MonitorSlice.signatures() + [ ChainProp(name='HLT_timeburner_L1All', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=['PS:Online','RATE:DISCARD','BW:DISCARD']), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py index 6f8751c2dbf1d3c9350a0a33fc0af432c4427338..5e997b183d80aaff01b883c55bcd3b65e5149a05 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py @@ -46,6 +46,7 @@ EgammaPhaseIStreamersGroup = ['RATE:PhaseISeededStreamers', 'BW:Egamma'] TauStreamersGroup = ['RATE:SeededStreamers', 'BW:Tau'] TauPhaseIStreamersGroup = ['RATE:PhaseISeededStreamers', 'BW:Tau'] JetStreamersGroup = ['RATE:SeededStreamers', 'BW:Jet'] +JetPhaseIStreamersGroup = ['RATE:SeededStreamers', 'BW:Jet'] METStreamersGroup = ['RATE:SeededStreamers', 'BW:MET'] BCIDmonGroup = ['MON:BCID'] # For chains seeded by L1 muon (no calo items) @@ -82,48 +83,48 @@ def setupMenu(): TriggerFlags.MuonSlice.signatures = [ #ATR-20049 - ChainProp(name='HLT_2mu6_L12MU6', l1SeedThresholds=['MU6'], groups=SupportGroup+MultiMuonGroup), + ChainProp(name='HLT_2mu6_L12MU5VF', l1SeedThresholds=['MU5VF'], groups=SupportGroup+MultiMuonGroup), #Planned Primaries #-- 1 mu iso - ChainProp(name='HLT_mu24_ivarmedium_L1MU20', groups=SupportGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup, monGroups=['muonMon:shifter','idMon:t0']), - ChainProp(name='HLT_mu28_ivarmedium_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu24_ivarmedium_L1MU14FCH', groups=SupportGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup, monGroups=['muonMon:shifter','idMon:t0']), + ChainProp(name='HLT_mu28_ivarmedium_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), #-- 1 mu - ChainProp(name='HLT_mu6_idperf_L1MU6', groups=SupportGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_L1MU20', groups=SupportGroup+SingleMuonGroup), - ChainProp(name='HLT_mu24_idperf_L1MU20', groups=SupportGroup+SingleMuonGroup), - ChainProp(name='HLT_mu50_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu60_0eta105_msonly_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu60_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu80_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu80_msonly_3layersEC_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu6_idperf_L1MU5VF', groups=SupportGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_L1MU14FCH', groups=SupportGroup+SingleMuonGroup), + ChainProp(name='HLT_mu24_idperf_L1MU14FCH', groups=SupportGroup+SingleMuonGroup), + ChainProp(name='HLT_mu50_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu60_0eta105_msonly_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu60_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu80_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu80_msonly_3layersEC_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), #-- 2 mu - ChainProp(name='HLT_mu22_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu22_mu10noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu24_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_2mu14_L12MU10', groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_2mu15_L12MU10', groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu20_ivarmedium_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu22_mu8noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu22_mu10noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu24_mu8noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_2mu14_L12MU8F', groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_2mu15_L12MU8F', groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu20_ivarmedium_mu8noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), #ATR-22107 - ChainProp(name='HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu20_ivarmedium_mu4noL1_10invm70_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), #-- 2 mu iso invm - ChainProp(name='HLT_mu10_ivarmedium_mu10_10invm70_L12MU10', groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu10_ivarmedium_mu10_10invm70_L12MU8F', groups=PrimaryL1MuGroup+MultiMuonGroup), #-- 3 mu - ChainProp(name='HLT_mu20_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_mu22_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_3mu6_L13MU6', l1SeedThresholds=['MU6'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_3mu6_msonly_L13MU6', l1SeedThresholds=['MU6'], groups=PrimaryL1MuGroup+MultiMuonGroup), - ChainProp(name='HLT_3mu8_msonly_L13MU6', groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu20_2mu4noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_mu22_2mu4noL1_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_3mu6_L13MU5VF', l1SeedThresholds=['MU5VF'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_3mu6_msonly_L13MU5VF', l1SeedThresholds=['MU5VF'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_3mu8_msonly_L13MU5VF', groups=PrimaryL1MuGroup+MultiMuonGroup), #-- 4 mu - ChainProp(name='HLT_4mu4_L14MU4', l1SeedThresholds=['MU4'], groups=PrimaryL1MuGroup+MultiMuonGroup), + ChainProp(name='HLT_4mu4_L14MU3V', l1SeedThresholds=['MU3V'], groups=PrimaryL1MuGroup+MultiMuonGroup), # -- LRT mu - ChainProp(name='HLT_mu24_LRT_d0loose_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), - ChainProp(name='HLT_mu24_LRT_d0tight_L1MU20', groups=PrimaryL1MuGroup+SingleMuonGroup), #back-up - ChainProp(name='HLT_mu24_LRT_idperf_L1MU20', groups=SupportGroup+SingleMuonGroup), - ChainProp(name='HLT_mu20_msonly_L1MU20', groups=SupportGroup+SingleMuonGroup), + ChainProp(name='HLT_mu24_LRT_d0loose_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), + ChainProp(name='HLT_mu24_LRT_d0tight_L1MU14FCH', groups=PrimaryL1MuGroup+SingleMuonGroup), #back-up + ChainProp(name='HLT_mu24_LRT_idperf_L1MU14FCH', groups=SupportGroup+SingleMuonGroup), + ChainProp(name='HLT_mu20_msonly_L1MU14FCH', groups=SupportGroup+SingleMuonGroup), ] TriggerFlags.EgammaSlice.signatures = [ @@ -145,7 +146,7 @@ def setupMenu(): ChainProp(name='HLT_e26_lhtight_e15_etcut_Zee_L1EM22VHI', l1SeedThresholds=['EM22VHI','EM7'], groups=PrimaryLegGroup+MultiElectronGroup), #--------- primary special - ChainProp(name='HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM18M', l1SeedThresholds=['eEM18M'], groups=PrimaryPhIGroup+SingleElectronGroup), + ChainProp(name='HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM15M', l1SeedThresholds=['eEM15M'], groups=PrimaryPhIGroup+SingleElectronGroup), #--------- support Zee and J/psi TnP ChainProp(name='HLT_e26_lhtight_e15_etcut_idperf_Zee_L1EM22VHI', l1SeedThresholds=['EM22VHI','EM7'], groups=PrimaryLegGroup+MultiElectronGroup), @@ -257,23 +258,23 @@ def setupMenu(): TriggerFlags.JetSlice.signatures = [ # Support performance chains (for emulation+calibration studies) ATR-20624 - ChainProp(name='HLT_j0_perf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=['PS:Online']+SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j0_perf_pf_ftf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=['PS:Online']+SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j0_perf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=['PS:Online']+SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), + ChainProp(name='HLT_j0_perf_pf_ftf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['Main'], groups=['PS:Online']+SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), # Central single small-R jet chains - ChainProp(name='HLT_j15_pf_ftf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j25_pf_ftf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j35_pf_ftf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j45_pf_ftf_preselj20_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j15_pf_ftf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), + ChainProp(name='HLT_j25_pf_ftf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), + ChainProp(name='HLT_j35_pf_ftf_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), + ChainProp(name='HLT_j45_pf_ftf_preselj20_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), ChainProp(name='HLT_j45_pf_ftf_preselj20_L1J15', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j60_pf_ftf_preselj20_L1J20', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j85_pf_ftf_preselj20_L1J20', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j110_pf_ftf_preselj20_L1J30', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j175_pf_ftf_preselj20_L1J50', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j260_pf_ftf_preselj20_L1J75', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j360_pf_ftf_preselj20_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j380_pf_ftf_preselj20_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j400_pf_ftf_preselj20_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j360_pf_ftf_preselj20_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), + ChainProp(name='HLT_j380_pf_ftf_preselj20_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), + ChainProp(name='HLT_j400_pf_ftf_preselj20_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), ChainProp(name='HLT_j420_pf_ftf_preselj135_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+PrimaryLegGroup), ChainProp(name='HLT_j440_pf_ftf_preselj135_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+PrimaryLegGroup), ChainProp(name='HLT_j450_pf_ftf_preselj135_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+PrimaryLegGroup), @@ -288,17 +289,17 @@ def setupMenu(): ChainProp(name='HLT_j175_a10t_lcw_jes_L1J50', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j260_a10sd_cssk_pf_jes_ftf_L1J75', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j260_a10t_lcw_jes_L1J75', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j360_a10sd_cssk_pf_jes_ftf_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j360_a10sd_cssk_pf_jes_ftf_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), ChainProp(name='HLT_j360_a10sd_cssk_pf_jes_ftf_L1SC111-CJ15', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j360_a10t_lcw_jes_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j360_a10t_lcw_jes_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), ChainProp(name='HLT_j360_a10t_lcw_jes_L1SC111-CJ15', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j400_a10sd_cssk_pf_jes_ftf_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j400_a10sd_cssk_pf_jes_ftf_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), ChainProp(name='HLT_j400_a10sd_cssk_pf_jes_ftf_L1SC111-CJ15', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j400_a10t_lcw_jes_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j400_a10t_lcw_jes_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), ChainProp(name='HLT_j400_a10t_lcw_jes_L1SC111-CJ15', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j420_a10sd_cssk_pf_jes_ftf_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j420_a10sd_cssk_pf_jes_ftf_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), ChainProp(name='HLT_j420_a10sd_cssk_pf_jes_ftf_L1SC111-CJ15', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j420_a10t_lcw_jes_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j420_a10t_lcw_jes_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J100']), ChainProp(name='HLT_j420_a10t_lcw_jes_L1SC111-CJ15', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j460_a10sd_cssk_pf_jes_ftf_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+PrimaryLegGroup), ChainProp(name='HLT_j460_a10sd_cssk_pf_jes_ftf_L1SC111-CJ15', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+PrimaryLegGroup), @@ -315,9 +316,9 @@ def setupMenu(): ChainProp(name='HLT_j85_a10t_lcw_jes_L1J20', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), #Forward small-R EMTopo chains - ChainProp(name='HLT_j15_320eta490_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j25_320eta490_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), - ChainProp(name='HLT_j35_320eta490_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), + ChainProp(name='HLT_j15_320eta490_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), + ChainProp(name='HLT_j25_320eta490_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), + ChainProp(name='HLT_j35_320eta490_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_RD0FILLED']), ChainProp(name='HLT_j45_320eta490_L1J15p31ETA49', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j60_320eta490_L1J20p31ETA49', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), ChainProp(name='HLT_j85_320eta490_L1J20p31ETA49', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+SupportLegGroup), @@ -447,44 +448,44 @@ def setupMenu(): TriggerFlags.BphysicsSlice.signatures = [ #ATR-20049, dimuon primary triggers - ChainProp(name='HLT_2mu10_bJpsimumu_L12MU10', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bJpsimumu_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_2mu10_bUpsimumu_L12MU10', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bUpsimumu_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bBmumu_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bDimu_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bDimu2700_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bPhi_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), - ChainProp(name='HLT_mu11_mu6_bTau_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_2mu10_bJpsimumu_L12MU8F', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_mu11_mu6_bJpsimumu_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_2mu10_bUpsimumu_L12MU8F', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_mu11_mu6_bUpsimumu_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_mu11_mu6_bBmumu_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_mu11_mu6_bDimu_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_mu11_mu6_bDimu2700_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_mu11_mu6_bPhi_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), + ChainProp(name='HLT_mu11_mu6_bTau_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup ), #ATR-21639, Bmumux primary triggers - ChainProp(name='HLT_mu11_mu6_bBmumux_BpmumuKp_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_BcmumuPi_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_BsmumuPhi_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_BdmumuKst_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu11_mu6_bBmumux_LbPqKm_L1MU11_2MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bBmumux_BpmumuKp_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bBmumux_BcmumuPi_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bBmumux_BsmumuPhi_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bBmumux_BdmumuKst_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu11_mu6_bBmumux_LbPqKm_L1MU8VF_2MU5VF', l1SeedThresholds=['MU8VF','MU5VF'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), #ATR-22223, multi muon primary triggers - ChainProp(name='HLT_3mu4_bJpsi_L13MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu4_bUpsi_L13MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu4_bTau_L13MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu4_bPhi_L13MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_3mu6_bDimu_L13MU6', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu6_2mu4_bDimu2700_L1MU6_3MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_mu6_2mu4_bDimu6000_L1MU6_3MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), - ChainProp(name='HLT_4mu4_bDimu6000_L14MU4', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_3mu4_bJpsi_L13MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_3mu4_bUpsi_L13MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_3mu4_bTau_L13MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_3mu4_bPhi_L13MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_3mu6_bDimu_L13MU5VF', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu6_2mu4_bDimu2700_L1MU5VF_3MU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_mu6_2mu4_bDimu6000_L1MU5VF_3MU3V', l1SeedThresholds=['MU5VF','MU3V'], stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), + ChainProp(name='HLT_4mu4_bDimu6000_L14MU3V', stream=["BphysDelayed"], groups=BphysicsGroup+PrimaryL1MuGroup), ] TriggerFlags.CombinedSlice.signatures = [ # tau + muon triggers - ChainProp(name='HLT_mu20_ivarloose_tau20_medium1_tracktwo_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU8'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), - ChainProp(name='HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU8'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), - ChainProp(name='HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU8'], stream=[PhysicsStream], groups=PrimaryLegGroup+MuonTauGroup), - ChainProp(name='HLT_mu14_ivarloose_tau35_medium1_tracktwo_03dRAB_L1MU10_TAU20IM', l1SeedThresholds=['MU10','TAU20IM'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), - ChainProp(name='HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU10_TAU20IM', l1SeedThresholds=['MU10','TAU20IM'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), - ChainProp(name='HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU10_TAU20IM', l1SeedThresholds=['MU10','TAU20IM'], stream=[PhysicsStream], groups=PrimaryLegGroup+MuonTauGroup), - ChainProp(name='HLT_mu14_ivarloose_tau25_medium1_tracktwo_03dRAB_L1MU10_TAU12IM_3J12', l1SeedThresholds=['MU10','TAU12IM'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), - ChainProp(name='HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU10_TAU12IM_3J12', l1SeedThresholds=['MU10','TAU12IM'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), - ChainProp(name='HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU10_TAU12IM_3J12', l1SeedThresholds=['MU10','TAU12IM'], stream=[PhysicsStream], groups=PrimaryLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu20_ivarloose_tau20_medium1_tracktwo_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU8'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU8'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu20_ivarloose_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU8'], stream=[PhysicsStream], groups=PrimaryLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu14_ivarloose_tau35_medium1_tracktwo_03dRAB_L1MU8F_TAU20IM', l1SeedThresholds=['MU8F','TAU20IM'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU8F_TAU20IM', l1SeedThresholds=['MU8F','TAU20IM'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu14_ivarloose_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU8F_TAU20IM', l1SeedThresholds=['MU8F','TAU20IM'], stream=[PhysicsStream], groups=PrimaryLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu14_ivarloose_tau25_medium1_tracktwo_03dRAB_L1MU8F_TAU12IM_3J12', l1SeedThresholds=['MU8F','TAU12IM'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU8F_TAU12IM_3J12', l1SeedThresholds=['MU8F','TAU12IM'], stream=[PhysicsStream], groups=SupportLegGroup+MuonTauGroup), + ChainProp(name='HLT_mu14_ivarloose_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU8F_TAU12IM_3J12', l1SeedThresholds=['MU8F','TAU12IM'], stream=[PhysicsStream], groups=PrimaryLegGroup+MuonTauGroup), # tau + electron triggers ChainProp(name='HLT_e24_lhmedium_ivarloose_tau20_medium1_tracktwo_03dRAB_L1EM22VHI', l1SeedThresholds=['EM22VHI','TAU8'], stream=[PhysicsStream], groups=SupportLegGroup+EgammaTauGroup), @@ -497,35 +498,35 @@ def setupMenu(): # tau + met ChainProp(name='HLT_tau60_mediumRNN_tracktwoMVABDT_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1TAU40_2TAU12IM_XE40', l1SeedThresholds=['TAU40','TAU12IM','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+TauMETGroup), # ATR-22966 ChainProp(name='HLT_e17_lhmedium_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1EM15VHI_2TAU12IM_XE35', l1SeedThresholds=['EM15VHI','TAU12IM','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+TauMETGroup), - ChainProp(name='HLT_mu14_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1MU10_TAU12IM_XE35', l1SeedThresholds=['MU10','TAU12IM','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+TauMETGroup), + ChainProp(name='HLT_mu14_tau25_mediumRNN_tracktwoMVABDT_xe50_cell_03dRAB_L1MU8F_TAU12IM_XE35', l1SeedThresholds=['MU8F','TAU12IM','FSNOSEED'], stream=[PhysicsStream], groups=PrimaryLegGroup+TauMETGroup), # ChainProp(name='HLT_tau60_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1TAU40_2TAU12IM_XE40', l1SeedThresholds=['TAU40','TAU12IM','FSNOSEED'], stream=[PhysicsStream], groups=SupportLegGroup+TauMETGroup), ChainProp(name='HLT_e17_lhmedium_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1EM15VHI_2TAU12IM_XE35', l1SeedThresholds=['EM15VHI','TAU12IM','FSNOSEED'], stream=[PhysicsStream], groups=SupportLegGroup+TauMETGroup), - ChainProp(name='HLT_mu14_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1MU10_TAU12IM_XE35', l1SeedThresholds=['MU10','TAU12IM','FSNOSEED'], stream=[PhysicsStream], groups=SupportLegGroup+TauMETGroup), + ChainProp(name='HLT_mu14_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1MU8F_TAU12IM_XE35', l1SeedThresholds=['MU8F','TAU12IM','FSNOSEED'], stream=[PhysicsStream], groups=SupportLegGroup+TauMETGroup), # T&P alignement-based tau chains - ChainProp(name='HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU8'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU8'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau25_perf_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau25_perf_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU20IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU20IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU25IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU25IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU40'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU40'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU60'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU60'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVA_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU100'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVABDT_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU100'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU8'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU8'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau25_idperf_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau25_perf_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau25_perf_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau25_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU12IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU20IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau35_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU20IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU25IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau40_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU25IM'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU40'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU40'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU60'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU60'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVA_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU100'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau160_mediumRNN_tracktwoMVABDT_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU100'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), # mu-tag & tau-probe triggers for LLP tau (ATR-23150) - ChainProp(name='HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoLLP_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU40'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoLLP_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU60'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), - ChainProp(name='HLT_mu26_ivarmedium_tau180_mediumRNN_tracktwoLLP_03dRAB_L1MU20', l1SeedThresholds=['MU20','TAU100'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau60_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU40'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau80_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU60'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_tau180_mediumRNN_tracktwoLLP_03dRAB_L1MU14FCH', l1SeedThresholds=['MU14FCH','TAU100'], stream=[PhysicsStream], groups=TagAndProbeGroup+SingleMuonGroup), ChainProp(name='HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1EM22VHI', l1SeedThresholds=['EM22VHI','TAU8'], stream=[PhysicsStream], groups=TagAndProbeLegGroup+SingleElectronGroup), ChainProp(name='HLT_e26_lhtight_ivarloose_tau20_mediumRNN_tracktwoMVABDT_03dRAB_L1EM22VHI', l1SeedThresholds=['EM22VHI','TAU8'], stream=[PhysicsStream], groups=TagAndProbeLegGroup+SingleElectronGroup), @@ -549,7 +550,7 @@ def setupMenu(): # b-jet trigger calibration chains ChainProp(name='HLT_e26_lhtight_ivarloose_2j20_0eta290_020jvt_pf_ftf_boffperf_L1EM22VHI', l1SeedThresholds=['EM22VHI','FSNOSEED'], groups=TagAndProbeLegGroup+SingleElectronGroup), - ChainProp(name='HLT_mu26_ivarmedium_2j20_0eta290_020jvt_pf_ftf_boffperf_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=TagAndProbeGroup+SingleMuonGroup), + ChainProp(name='HLT_mu26_ivarmedium_2j20_0eta290_020jvt_pf_ftf_boffperf_L1MU14FCH', l1SeedThresholds=['MU14FCH','FSNOSEED'], groups=TagAndProbeGroup+SingleMuonGroup), ### Affected by ATR-23722 #ChainProp(name='HLT_e26_lhtight_ivarloose_mu22noL1_j20_0eta290_020jvt_pf_ftf_boffperf_L1EM22VHI', l1SeedThresholds=['EM22VHI','FSNOSEED','FSNOSEED'], groups=TagAndProbeLegGroup+EgammaBjetGroup), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py index 276d6094306418fd71716cea18fa357b9427ea9d..123e1efc5b2810d8885ccca1d3334ca562affb5c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py @@ -206,6 +206,7 @@ JetChainParts = { 'DIJET35j12ptXX700djmass', 'DIJET35j12ptXX500djmass', # 'ht' category applies a cut on HT (HT>value) computed by aggregation over single jets (default filtering: 30et and 0eta320) + 'HT0', 'HT1000', 'HT300', 'HT500', @@ -775,10 +776,11 @@ StreamingChainParts = { 'L1threshold' : '', 'threshold' : '', 'multiplicity' : '', - 'streamingInfo' : ['bkg', 'idmon', 'mb', 'eb', 'zb','to','standby', - 'jettauetmiss', 'larcells','laser', 'CIS', - 'cosmiccalo', 'cosmicmuons','idcosmic', 'dcmmon', - 'zb', 'l1calo', 'l1topo','ftk'], + # No effect on configuration, used in special cases for + # disambiguation or to allow events from the same L1 seed + # to be written to different streams + # New cases should be discussed with Menu Coordinators + 'streamingInfo' : ['laser', 'CIS','idmon'], 'trigType' : 'streamer', 'extra' : '', 'streamType' : AllowedStreamingChainIdentifiers, @@ -1029,8 +1031,8 @@ UnconventionalTrackingChainParts_Default = { # Combined Chains #========================================================== AllowedTopos_comb = [ - '03dRAB','03dRAB30','02dRAB','02dRAC','50invmAB','60invmAB','afpdijet','18dphiAB','18dphiAC','80mTAC', - '1invmAB3','50invmAB130', # Jpsiee, Zee/Zeg + '03dRAB','03dRAB30','dRAB03','02dRAB','02dRAC','50invmAB','60invmAB','afpdijet','18dphiAB','18dphiAC','80mTAC', + '1invmAB5','50invmAB130', # Jpsiee, Zee/Zeg '25dphiAA','invmAA80', # Low-mass diphoton '10invmAA70', # Low-mass dimuon ] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/StreamInfo.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/StreamInfo.py index e34769a63344136058e5bdac620d6583f1359fcc..463400ea33bcc8828376315fd4dc92e1f5dcf096 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/StreamInfo.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/StreamInfo.py @@ -60,7 +60,9 @@ _all_streams = [ StreamInfo('BphysPEB','calibration',True,False), StreamInfo('BeamSpot', 'calibration', True, False), StreamInfo('LArCells', 'calibration', False, False), + StreamInfo('LArCellsEmpty', 'calibration', False, False), StreamInfo('LArNoiseBurst', 'calibration', False, True), + StreamInfo('TgcNoiseBurst', 'calibration', False, True), StreamInfo('RPCSecondaryReadout', 'calibration', False, False), StreamInfo('CostMonitoring', 'calibration', False, False), StreamInfo('SCTNoise', 'calibration', False, False), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/DisTrkTriggerConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/DisTrkTriggerConfiguration.py index b4a9736a7bf61ae27898986e09eeb6b9f2ac785c..594823cd1957bb1eec260a1331a92c6c25eeb706 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/DisTrkTriggerConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/DisTrkTriggerConfiguration.py @@ -8,14 +8,11 @@ log = logging.getLogger(__name__) def DisTrkTriggerHypoSequence(): - from TrigLongLivedParticlesHypo.TrigDisappearingTrackTriggerHypoTool import TrigDisappearingTrackTriggerHypoToolFromDict - from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConf import (TrigDisappearingTrackTriggerHypoAlg) - # Setup the hypothesis algorithm - theDisTrkTrackTriggerHypo = TrigDisappearingTrackTriggerHypoAlg("DisTrkTrack") + from TrigLongLivedParticlesHypo.TrigDisappearingTrackHypoConfig import TrigDisappearingTrackHypoToolFromDict + from TrigLongLivedParticlesHypo.TrigDisappearingTrackHypoConfig import createTrigDisappearingTrackHypoAlg - from TrigEDMConfig.TriggerEDMRun3 import recordable - theDisTrkTrackTriggerHypo.DisTrkBDTSel = recordable("HLT_DisTrkBDTSel") + theDisTrkHypo = createTrigDisappearingTrackHypoAlg("DisTrkTrack") from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable from AthenaConfiguration.ComponentFactory import CompFactory @@ -25,6 +22,6 @@ def DisTrkTriggerHypoSequence(): log.debug("Building the Step dictinary for DisTrk") return MenuSequence( Sequence = seqAND("DisTrkEmptyStep",[DummyInputMakerAlg]), Maker = DummyInputMakerAlg, - Hypo = theDisTrkTrackTriggerHypo, - HypoToolGen = TrigDisappearingTrackTriggerHypoToolFromDict, + Hypo = theDisTrkHypo, + HypoToolGen = TrigDisappearingTrackHypoToolFromDict, ) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/dEdxTriggerConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/dEdxTriggerConfiguration.py index 2a1ade8c193f0069972b1b741490dfb2484c585a..ab3b3d7617b07678be0e59ec2fba02d24c566ae7 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/dEdxTriggerConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/dEdxTriggerConfiguration.py @@ -8,23 +8,18 @@ log = logging.getLogger(__name__) def dEdxTriggerHypoSequence(): - from TrigLongLivedParticlesHypo.TrigdEdxTrackTriggerHypoTool import TrigdEdxTrackTriggerHypoToolFromDict - from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConf import (TrigdEdxTrackTriggerHypoAlg) - - # Setup the hypothesis algorithm - thedEdxTrackTriggerHypo = TrigdEdxTrackTriggerHypoAlg("dEdxTrack") - - from TrigEDMConfig.TriggerEDMRun3 import recordable - thedEdxTrackTriggerHypo.HPtdEdxTrk = recordable("HLT_HPtdEdxTrk") + from TrigLongLivedParticlesHypo.TrigdEdxTrackHypoConfig import TrigdEdxTrackHypoToolFromDict + from TrigLongLivedParticlesHypo.TrigdEdxTrackHypoConfig import createTrigdEdxTrackHypoAlg + + thedEdxTrackHypo = createTrigdEdxTrackHypoAlg("dEdxTrack") from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable from AthenaConfiguration.ComponentFactory import CompFactory DummyInputMakerAlg = conf2toConfigurable(CompFactory.InputMakerForRoI( "IM_dEdxTrack_HypoOnlyStep" )) DummyInputMakerAlg.RoITool = conf2toConfigurable(CompFactory.ViewCreatorInitialROITool()) - log.debug("Building the Step dictinary for dEdx") return MenuSequence( Sequence = seqAND("dEdxEmptyStep",[DummyInputMakerAlg]), Maker = DummyInputMakerAlg, - Hypo = thedEdxTrackTriggerHypo, - HypoToolGen = TrigdEdxTrackTriggerHypoToolFromDict, - ) + Hypo = thedEdxTrackHypo, + HypoToolGen = TrigdEdxTrackHypoToolFromDict, + ) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/L1Menu.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/L1Menu.py index 550c25312f6c54d3db5c1316b363c8baa3fd0b5e..3e896623e5d877c2cbe1a9cd9ae9d446bcf02970 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/L1Menu.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/L1Menu.py @@ -9,6 +9,7 @@ from .Connectors import MenuConnectorsCollection from .MenuUtils import get_smk_psk_Name from .Limits import Limits +from collections import OrderedDict as odict from AthenaCommon.Logging import logging log = logging.getLogger(__name__) @@ -84,25 +85,32 @@ class L1Menu(object): self.ctp.setupMonitoring(self.items, self.thresholds, self.connectors) def check(self): + log.info("Doing L1 Menu checks") from collections import defaultdict as dd missing = dd(list) allThresholds = set([thr.name for thr in self.thresholds]) allUsedThresholds = set() for item in self.items: for thrName in item.thresholdNames(): - allUsedThresholds.add(thrName) if thrName not in allThresholds: missing[thrName].append(item.name) + else: + allUsedThresholds.add(thrName) for thrName in sorted(missing.keys()): log.warning("Threshold %s (used by %s) is not defined in the menu", thrName,",".join(missing[thrName])) - if len(missing)>0: + if len(allThresholds)-len(allUsedThresholds)>0: unusedThresholds = allThresholds.difference(allUsedThresholds) log.info("The following thresholds are unused") + log.info("MU: %s", ", ".join([thr for thr in unusedThresholds if thr.startswith("MU")])) log.info("EM: %s", ", ".join([thr for thr in unusedThresholds if thr.startswith("EM")])) log.info("HA: %s", ", ".join([thr for thr in unusedThresholds if thr.startswith("HA")])) log.info("J: %s", ", ".join([thr for thr in unusedThresholds if thr.startswith("J")])) + log.info("eFEX: %s", ", ".join([thr for thr in unusedThresholds if thr.startswith("e")])) + log.info("jFEX: %s", ", ".join([thr for thr in unusedThresholds if thr.startswith("j")])) + log.info("cTAU: %s", ", ".join([thr for thr in unusedThresholds if thr.startswith("cTAU")])) + log.info("gFEX: %s", ", ".join([thr for thr in unusedThresholds if thr.startswith("g")])) def checkLegacyThresholds(self): from collections import defaultdict as dd @@ -110,7 +118,7 @@ class L1Menu(object): extraThresholds = dd(list) for item in self.items: for thrName in item.thresholdNames(): - if thrName[0] not in ('e','j','g') and "TOPO" not in thrName and "MU" not in thrName and "MBTS" not in thrName and "ZB" not in thrName and "ALFA" not in thrName and "ZDC" not in thrName and "AFP" not in thrName and "BCM" not in thrName: + if thrName[0] not in ('e','j','g', 'c') and not any(x in thrName for x in ["TOPO", "MU", "MBTS", "ZB", "ALFA", "ZDC", "AFP", "BCM"]): if thrName not in legacyThresholds: extraThresholds[thrName].append(item.name) @@ -118,8 +126,31 @@ class L1Menu(object): log.warning("Threshold %s (used by %s) should not be used!", thrName,",".join(extraThresholds[thrName])) + def checkBoardInputs(self, algo, connDefName, fpgaName ): + if 'MuCTPi' in connDefName or 'Legacy' in connDefName: + return + boardName = connDefName+fpgaName + allowedInputs = odict() + allowedInputs['Topo1Opt0'] = ['MU', 'eEM', 'eTAU', 'g', ] # TOPO1A, FPGA1 + allowedInputs['Topo1Opt1'] = ['MU', 'eEM', 'eTAU', 'g', ] # TOPO1A, FPGA2 + allowedInputs['Topo1Opt2'] = ['MU', 'eTAU', 'cTAU', 'j', 'g', ] # TOPO1B, FPGA1 + allowedInputs['Topo1Opt3'] = ['MU', 'eTAU', 'cTAU', 'j', 'g', ] # TOPO1B, FPGA2 + allowedInputs['Topo2El0'] = ['MU', 'eTAU', 'j', ] # TOPO2, FPGA1 + allowedInputs['Topo2El1'] = [ 'eEM', 'j', ] # TOPO2, FPGA2 + allowedInputs['Topo3El0'] = [ 'eEM', 'eTAU', 'j', ] # TOPO3, FPGA1 + allowedInputs['Topo3El1'] = ['MU', 'eEM', 'eTAU', 'g', ] # TOPO3, FPGA2 + if boardName not in allowedInputs.keys(): + raise RuntimeError("Connector name %s not found" % boardName ) + + if 'Mult_' in algo.name: + if not (any(x in algo.threshold for x in allowedInputs[boardName])): + raise RuntimeError("Algorithm %s in board %s with threshold %s not allowed" % (algo.name, boardName, algo.threshold )) + + if 'Mult_' not in algo.name: + for algoInput in algo.inputs: + if not (any(x in algoInput for x in allowedInputs[boardName])): + raise RuntimeError("Algorithm %s in board %s with input %s not allowed" % (algo.name, boardName, algoInput )) - diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/ThresholdType.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/ThresholdType.py index 9c88ddb901bc7dda896962d55aac5061b32e58b1..f83603e50a097467cb83442c9ad15114e733caae 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/ThresholdType.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/ThresholdType.py @@ -11,7 +11,8 @@ log = logging.getLogger(__name__) class ThrType( Enum ): # run 3 calo and muon thresholds - eEM = 1; eTAU = 2; jJ = 3; gJ = 4; gXE = 5; jXE = 6; MU = 7 # noqa: E702 + # cTau is the combined taus computed in the L1Topo multiplicity board matching eTAU and jTAU + eEM = 1; eTAU = 2; jTAU = 3; cTAU=4; jJ = 5; gJ = 6; gXE = 7; jXE = 8; MU = 9 # noqa: E702 # NIM thresholds BCM = 21; BCMCMB = 22; LUCID = 23; ZDC = 24; BPTX = 25; CALREQ = 26; MBTS = 27; MBTSSI = 28; NIM = 29 # noqa: E702 @@ -34,7 +35,7 @@ class ThrType( Enum ): @staticmethod def Run3Types(): - return [ ThrType.MU, ThrType.eEM, ThrType.eTAU, ThrType.jJ, ThrType.gJ, ThrType.gXE, ThrType.jXE ] + return [ ThrType.MU, ThrType.eEM, ThrType.eTAU, ThrType.jTAU, ThrType.cTAU, ThrType.jJ, ThrType.gJ, ThrType.gXE, ThrType.jXE ] @staticmethod def NIMTypes(): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/Thresholds.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/Thresholds.py index 8baaa1950ad8d69f1b70630b3760b753f758ca92..f78c611aa538a4d49654f47c60b0e333e701ea4b 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/Thresholds.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/Thresholds.py @@ -458,21 +458,122 @@ class MuonThreshold( Threshold ): -class TauThreshold( Threshold ): +class eTauThreshold( Threshold ): def __init__(self, name, ttype = 'eTAU', mapping = -1): - super(TauThreshold,self).__init__(name = name, ttype = ttype, mapping = mapping, run = 3 if ttype=='eTAU' else 2) + super(eTauThreshold,self).__init__(name = name, ttype = ttype, mapping = mapping, run = 3 if ttype=='eTAU' else 2) self.et = None + mres = re.match("(?P<type>[A-z]*)[0-9]*(?P<suffix>[LMTH]*)",name).groupdict() + self.suffix = mres["suffix"] + self.isoConeRel = "None" + self.fEM = "None" + + def isL(self): + return 'L' in self.suffix + + def isM(self): + return 'M' in self.suffix + + def isT(self): + return 'T' in self.suffix + + def isH(self): + return 'H' in self.suffix def setEt(self, et): self.et = et + return self + + def setIsolation(self, isoConeRel = "None", fEM = "None"): + allowed_isoConeRel = [ "None", "Loose", "Medium", "Tight" ] + allowed_fEM = [ "None", "Had" ] + if isoConeRel not in allowed_isoConeRel: + raise RuntimeError("Threshold %s of type %s: isolation wp %s not allowed for isoConeRel, must be one of %s", self.name, self.ttype, isoConeRel, ', '.join(allowed_isoConeRel) ) + if fEM not in allowed_fEM: + raise RuntimeError("Threshold %s of type %s: isolation wp %s not allowed for fEM, must be one of %s", self.name, self.ttype, fEM, ', '.join(allowed_fEM) ) + self.fEM = fEM + self.isoConeRel = isoConeRel + return self def json(self): confObj = odict() confObj["mapping"] = self.mapping confObj["value"] = self.et + confObj["isoConeRel"] = self.isoConeRel + confObj["fEM"] = self.fEM return confObj +class jTauThreshold( Threshold ): + + def __init__(self, name, ttype = 'jTAU', mapping = -1): + super(jTauThreshold,self).__init__(name = name, ttype = ttype, mapping = mapping, run = 3 if ttype=='jTAU' else 2) + self.et = None + mres = re.match("(?P<type>[A-z]*)[0-9]*(?P<suffix>[LMT]*)",name).groupdict() + self.suffix = mres["suffix"] + self.isolation = "None" + + def isL(self): + return 'L' in self.suffix + + def isM(self): + return 'M' in self.suffix + + def isT(self): + return 'T' in self.suffix + + def setEt(self, et): + self.et = et + return self + + def setIsolation(self, isolation = "None"): + allowed = [ "None", "Loose", "Medium", "Tight" ] + if isolation not in allowed: + raise RuntimeError("Threshold %s of type %s: isolation wp %s not allowed for isolation, must be one of %s", self.name, self.ttype, isolation, ', '.join(allowed) ) + self.isolation = isolation + return self + + def json(self): + confObj = odict() + confObj["mapping"] = self.mapping + confObj["value"] = self.et + confObj["isolation"] = self.isolation + return confObj + +class cTauThreshold( Threshold ): + + def __init__(self, name, ttype = 'cTAU', mapping = -1): + super(cTauThreshold,self).__init__(name = name, ttype = ttype, mapping = mapping, run = 3 if ttype=='cTAU' else 2) + self.et = None + mres = re.match("(?P<type>[A-z]*)[0-9]*(?P<suffix>[LMT]*)",name).groupdict() + self.suffix = mres["suffix"] + self.isolation = "None" + + def isL(self): + return 'L' in self.suffix + + def isM(self): + return 'M' in self.suffix + + def isT(self): + return 'T' in self.suffix + + def setEt(self, et): + self.et = et + return self + + def setIsolation(self, isolation = "None"): + allowed = [ "None", "Loose", "Medium", "Tight" ] + if isolation not in allowed: + raise RuntimeError("Threshold %s of type %s: isolation wp %s not allowed for isolation, must be one of %s", self.name, self.ttype, isolation, ', '.join(allowed) ) + self.isolation = isolation + return self + + def json(self): + confObj = odict() + confObj["mapping"] = self.mapping + confObj["value"] = self.et + confObj["isolation"] = self.isolation + return confObj class JetThreshold( Threshold ): @@ -506,8 +607,6 @@ class JetThreshold( Threshold ): return confObj - - class XEThreshold( Threshold ): def __init__(self, name, ttype, mapping = -1): @@ -615,7 +714,7 @@ class ThresholdValue(object): 'phimax' : 64, 'priority': 0, } - if ttype == 'EM' or ttype == 'TAU' or ttype == 'eEM' or ttype == 'eTAU': + if ttype == 'EM' or ttype == 'TAU': defaults.update({'priority': 1, 'em_isolation' : CL.IsolationOff, 'had_isolation' : CL.IsolationOff, diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/TopoAlgos.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/TopoAlgos.py index aefa54e54da95f4f9b564e0da3d73ceba8342819..38d6e3bcfee5cf0925250e163bd141d44c504de4 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/TopoAlgos.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Base/TopoAlgos.py @@ -285,7 +285,7 @@ class MultiplicityAlgo(TopoAlgo): class EMMultiplicityAlgo(MultiplicityAlgo): - def __init__(self, name, algoId, threshold, nbits, classtype = "EMMultiplicity" ): + def __init__(self, name, algoId, threshold, nbits, classtype ): super(EMMultiplicityAlgo, self).__init__(classtype=classtype, name=name, algoId=algoId, threshold = threshold, @@ -294,22 +294,25 @@ class EMMultiplicityAlgo(MultiplicityAlgo): mres = re.match("(?P<type>[A-z]*)[0-9]*(?P<suffix>[VHILMT]*)",threshold).groupdict() self.input = mres["type"] - class TauMultiplicityAlgo(MultiplicityAlgo): - def __init__(self, name, algoId, threshold, nbits, classtype = "TauMultiplicity" ): + def __init__(self, name, algoId, threshold, nbits, classtype ): super(TauMultiplicityAlgo, self).__init__(classtype=classtype, name=name, algoId=algoId, threshold = threshold, input=None, output="%s" % threshold, nbits=nbits) + mres = re.match("(?P<type>[A-z]*)[0-9]*(?P<suffix>[HLMT]*)",threshold).groupdict() + self.input = mres["type"] class JetMultiplicityAlgo(MultiplicityAlgo): - def __init__(self, name, algoId, threshold, nbits, classtype = "JetMultiplicity" ): + def __init__(self, name, algoId, threshold, nbits, classtype ): super(JetMultiplicityAlgo, self).__init__(classtype=classtype, name=name, algoId=algoId, threshold = threshold, input=None, output="%s" % threshold, nbits=nbits) + mres = re.match("(?P<type>[A-z]*)[0-9]*(?P<suffix>[A-z]*)",threshold).groupdict() + self.input = mres["type"] class XEMultiplicityAlgo(MultiplicityAlgo): def __init__(self, name, algoId, threshold, nbits, classtype = "EnergyThreshold"): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py index 6f3930b8ba3cfc31d58c379b1c8e4c09315c91fc..b4de7426827425d77e050b658efb362f6ffa6005 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py @@ -116,19 +116,19 @@ class ItemDef: # Phase-I MenuItem('L1_eEM3' ).setLogic( d.eEM3 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_eEM7' ).setLogic( d.eEM7 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_eEM5' ).setLogic( d.eEM5 & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM8' ).setLogic( d.eEM8 & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM8L' ).setLogic( d.eEM8L & physcond).setTriggerType( TT.calo ) - MenuItem('L1_eEM10' ).setLogic( d.eEM10 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_eEM8M' ).setLogic( d.eEM8M & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM10L' ).setLogic( d.eEM10L & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM15' ).setLogic( d.eEM15 & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM15L' ).setLogic( d.eEM15L & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM15M' ).setLogic( d.eEM15M & physcond).setTriggerType( TT.calo ) - MenuItem('L1_eEM18M' ).setLogic( d.eEM18M & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM20' ).setLogic( d.eEM20 & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM20L' ).setLogic( d.eEM20L & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM20M' ).setLogic( d.eEM20M & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM22' ).setLogic( d.eEM22 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_eEM22L' ).setLogic( d.eEM22L & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM22M' ).setLogic( d.eEM22M & physcond).setTriggerType( TT.calo ) MenuItem('L1_eEM22T' ).setLogic( d.eEM22T & physcond).setTriggerType( TT.calo ) @@ -253,122 +253,84 @@ class ItemDef: MenuItem('L1_MU10BOM' ).setLogic( d.MU10BOM & physcond).setTriggerType(TT.muon) # Barrel-only close-by muons MenuItem('L1_MU20FC' ).setLogic( d.MU20FC & physcond).setTriggerType(TT.muon) # alignment with toroid off + MenuItem('L1_2MU0' ).setLogic( d.MU0.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_2MU0' ).setLogic( d.MU5VF & d.MU0.x(2) & physcond).setTriggerType(TT.muon) + + MenuItem('L1_2MU3V' ).setLogic( d.MU3V.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU5VF' ).setLogic( d.MU5VF.x(2) & physcond).setTriggerType(TT.muon) MenuItem('L1_2MU8F' ).setLogic( d.MU8F.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU8VF_2MU5VF' ).setLogic( d.MU8F & d.MU5VF.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU8VF' ).setLogic( d.MU8VF.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU14FCH' ).setLogic( d.MU14FCH.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_2MU3V' ).setLogic( d.MU5VF & d.MU3V.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU8F_2MU3V' ).setLogic( d.MU8F & d.MU3V.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU8F_2MU5VF' ).setLogic( d.MU8F & d.MU5VF.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU8VF_2MU5VF' ).setLogic( d.MU8VF & d.MU5VF.x(2) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_3MU3V' ).setLogic( d.MU5VF & d.MU3V.x(3) & physcond).setTriggerType(TT.muon) MenuItem('L1_3MU3V' ).setLogic( d.MU3V.x(3) & physcond).setTriggerType(TT.muon) MenuItem('L1_3MU5VF' ).setLogic( d.MU5VF.x(3) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU5VF_3MU3V' ).setLogic( d.MU5VF & d.MU3V.x(3) & physcond).setTriggerType(TT.muon) MenuItem('L1_4MU3V' ).setLogic( d.MU3V.x(4) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU5VF_3MU3V' ).setLogic( d.MU5VF.x(2) & d.MU3V.x(3) & physcond).setTriggerType(TT.muon) - # To be removed - MenuItem('L1_MU4' ).setLogic( d.MU4 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6' ).setLogic( d.MU6 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU10' ).setLogic( d.MU10 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU11' ).setLogic( d.MU11 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU15' ).setLogic( d.MU15 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU20' ).setLogic( d.MU20 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU21' ).setLogic( d.MU21 & physcond).setTriggerType(TT.muon) - - # 2xMU, 3xMU, 4xMU - MenuItem('L1_2MU0' ).setLogic( d.MU0.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU4' ).setLogic( d.MU4.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU6' ).setLogic( d.MU6.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU10' ).setLogic( d.MU10.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU11' ).setLogic( d.MU11.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU20' ).setLogic( d.MU20.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_MU10' ).setLogic( d.MU4 & d.MU10 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_MU4' ).setLogic( d.MU6 & d.MU4 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU10_2MU6' ).setLogic( d.MU10 & d.MU6.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU11_2MU10').setLogic( d.MU11 & d.MU10.x(2)& physcond).setTriggerType(TT.muon) - MenuItem('L1_MU11_2MU6' ).setLogic( d.MU11 & d.MU6.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU10_2MU4' ).setLogic( d.MU10 & d.MU4.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_3MU4' ).setLogic( d.MU4.x(3) & physcond).setTriggerType(TT.muon) - MenuItem('L1_4MU4' ).setLogic( d.MU4.x(4) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_2MU4' ).setLogic( d.MU6 & d.MU4.x(2) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_3MU4' ).setLogic( d.MU6 & d.MU4.x(3) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU6_3MU4' ).setLogic( d.MU6.x(2) & d.MU4.x(3) & physcond).setTriggerType(TT.muon) - MenuItem('L1_3MU6' ).setLogic( d.MU6.x(3)& physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU0_MU6' ).setLogic( d.MU0.x(2) & d.MU6 & physcond).setTriggerType(TT.muon) - - MenuItem('L1_2MU20_OVERLAY').setLogic( d.MU20.x(2) & physcond).setTriggerType(TT.zerobs) + MenuItem('L1_2MU14FCH_OVERLAY').setLogic( d.MU14FCH.x(2) & physcond).setTriggerType(TT.zerobs) # HI - MenuItem('L1_MU0_NZ' ).setLogic( d.MU0 & Not(d.ZDC_AND) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU0_NZ' ).setLogic( d.MU0.x(2) & Not(d.ZDC_AND) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU0_NL' ).setLogic( d.MU0 & Not(d.LUCID_A) & Not(d.LUCID_C) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU0_NL' ).setLogic( d.MU0.x(2) & Not(d.LUCID_A) & Not(d.LUCID_C) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU0_MV' ).setLogic( d.MU0 & Not(d.MBTS_A & d.MBTS_C) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU0_MV' ).setLogic( d.MU0.x(2) & Not(d.MBTS_A & d.MBTS_C) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_VTE10' ).setLogic( d.MU4 & Not(d.TE10) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU4_VTE10').setLogic( d.MU4.x(2) & Not(d.TE10) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU4_VTE50').setLogic( d.MU4.x(2) & Not(d.TE50) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU0_TE50' ).setLogic( d.MU0 & d.TE50 & physcond).setTriggerType(TT.muon) - - MenuItem('L1_MU4_TE10' ).setLogic( d.MU4 & d.TE10 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE20' ).setLogic( d.MU4 & d.TE20 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE30' ).setLogic( d.MU4 & d.TE30 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE40' ).setLogic( d.MU4 & d.TE40 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE50' ).setLogic( d.MU4 & d.TE50 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE70' ).setLogic( d.MU4 & d.TE70 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE90' ).setLogic( d.MU4 & d.TE90 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE120' ).setLogic( d.MU4 & d.TE120 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE160' ).setLogic( d.MU4 & d.TE160 & physcond).setTriggerType(TT.muon) - - MenuItem('L1_MU4_TE10p24ETA49' ).setLogic( d.MU4 & d.TE1024ETA49 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE15p24ETA49' ).setLogic( d.MU4 & d.TE1524ETA49 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE20p24ETA49' ).setLogic( d.MU4 & d.TE2024ETA49 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE25p24ETA49' ).setLogic( d.MU4 & d.TE2524ETA49 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE30p24ETA49' ).setLogic( d.MU4 & d.TE3024ETA49 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE35p24ETA49' ).setLogic( d.MU4 & d.TE3524ETA49 & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_TE40p24ETA49' ).setLogic( d.MU4 & d.TE4024ETA49 & physcond).setTriggerType(TT.muon) - - MenuItem('L1_MU0_VTE50').setLogic( d.MU0 & Not(d.TE50) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_VTE50').setLogic( d.MU4 & Not(d.TE50) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_VTE50').setLogic( d.MU6 & Not(d.TE50) & physcond).setTriggerType(TT.muon) - - MenuItem('L1_MU0_MV_VTE50').setLogic( d.MU0 & Not(d.MBTS_A & d.MBTS_C) & Not(d.TE50) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_MV_VTE50').setLogic( d.MU4 & Not(d.MBTS_A & d.MBTS_C) & Not(d.TE50) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_VTE10' ).setLogic( d.MU3V & Not(d.TE10) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU3V_VTE10').setLogic( d.MU3V.x(2) & Not(d.TE10) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU3V_VTE50').setLogic( d.MU3V.x(2) & Not(d.TE50) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE10' ).setLogic( d.MU3V & d.TE10 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE20' ).setLogic( d.MU3V & d.TE20 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE30' ).setLogic( d.MU3V & d.TE30 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE40' ).setLogic( d.MU3V & d.TE40 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE50' ).setLogic( d.MU3V & d.TE50 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE70' ).setLogic( d.MU3V & d.TE70 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE90' ).setLogic( d.MU3V & d.TE90 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE120' ).setLogic( d.MU3V & d.TE120 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE160' ).setLogic( d.MU3V & d.TE160 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE10p24ETA49' ).setLogic( d.MU3V & d.TE1024ETA49 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE15p24ETA49' ).setLogic( d.MU3V & d.TE1524ETA49 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE20p24ETA49' ).setLogic( d.MU3V & d.TE2024ETA49 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE25p24ETA49' ).setLogic( d.MU3V & d.TE2524ETA49 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE30p24ETA49' ).setLogic( d.MU3V & d.TE3024ETA49 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE35p24ETA49' ).setLogic( d.MU3V & d.TE3524ETA49 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_TE40p24ETA49' ).setLogic( d.MU3V & d.TE4024ETA49 & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU0_VTE50' ).setLogic( d.MU0 & Not(d.TE50) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_VTE50' ).setLogic( d.MU3V & Not(d.TE50) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_VTE50').setLogic( d.MU5VF & Not(d.TE50) & physcond).setTriggerType(TT.muon) MenuItem('L1_MU0_UNPAIRED_ISO' ).setLogic(d.MU0 & unpaired_isocond ).setTriggerType( TT.muon ) MenuItem('L1_MU0_UNPAIRED_NONISO').setLogic(d.MU0 & unpaired_nonisocond).setTriggerType( TT.muon ) MenuItem('L1_MU0_EMPTY' ).setLogic(d.MU0 & cosmiccond).setTriggerType( TT.muon ) MenuItem('L1_MU0_FIRSTEMPTY' ).setLogic(d.MU0 & firstempty).setTriggerType( TT.muon ) - MenuItem('L1_MU4_UNPAIRED_ISO' ).setLogic(d.MU4 & unpaired_isocond ).setTriggerType( TT.muon ) - MenuItem('L1_MU4_UNPAIRED_NONISO').setLogic(d.MU4 & unpaired_nonisocond).setTriggerType( TT.muon ) - MenuItem('L1_MU4_EMPTY' ).setLogic(d.MU4 & cosmiccond).setTriggerType( TT.muon ) - MenuItem('L1_MU6_EMPTY' ).setLogic(d.MU6 & cosmiccond).setTriggerType( TT.muon ) - MenuItem('L1_MU4_FIRSTEMPTY' ).setLogic(d.MU4 & firstempty).setTriggerType( TT.muon ) - - MenuItem('L1_MU6_FIRSTEMPTY' ).setLogic(d.MU4 & firstempty).setTriggerType( TT.muon ) - MenuItem('L1_MU10_EMPTY' ).setLogic(d.MU10 & cosmiccond).setTriggerType( TT.muon ) - MenuItem('L1_MU11_EMPTY' ).setLogic(d.MU11 & cosmiccond).setTriggerType( TT.muon ) - - MenuItem('L1_2MU0_EMPTY' ).setLogic(d.MU0.x(2) & cosmiccond).setTriggerType( TT.muon ) - MenuItem('L1_2MU4_EMPTY' ).setLogic(d.MU4.x(2) & cosmiccond).setTriggerType( TT.muon ) - MenuItem('L1_2MU6_UNPAIRED_ISO' ).setLogic(d.MU6.x(2) & unpaired_isocond).setTriggerType( TT.muon ) - MenuItem('L1_2MU6_UNPAIRED_NONISO').setLogic(d.MU6.x(2) & unpaired_nonisocond).setTriggerType( TT.muon ) - MenuItem('L1_2MU6_EMPTY' ).setLogic(d.MU6.x(2) & cosmiccond).setTriggerType( TT.muon ) - MenuItem('L1_2MU6_FIRSTEMPTY' ).setLogic(d.MU6.x(2) & firstempty).setTriggerType( TT.muon ) - - MenuItem('L1_MU20_FIRSTEMPTY' ).setLogic( d.MU20 & firstempty).setTriggerType(TT.muon) - MenuItem('L1_MU21_FIRSTEMPTY' ).setLogic( d.MU21 & firstempty).setTriggerType(TT.muon) + MenuItem('L1_MU3V_UNPAIRED_ISO' ).setLogic(d.MU3V & unpaired_isocond ).setTriggerType( TT.muon ) + MenuItem('L1_MU3V_UNPAIRED_NONISO').setLogic(d.MU3V & unpaired_nonisocond).setTriggerType( TT.muon ) + MenuItem('L1_MU3V_EMPTY' ).setLogic(d.MU3V & cosmiccond).setTriggerType( TT.muon ) + MenuItem('L1_MU5VF_EMPTY' ).setLogic(d.MU5VF & cosmiccond).setTriggerType( TT.muon ) + MenuItem('L1_MU3V_FIRSTEMPTY' ).setLogic(d.MU3V & firstempty).setTriggerType( TT.muon ) + MenuItem('L1_MU5VF_FIRSTEMPTY' ).setLogic(d.MU5VF & firstempty).setTriggerType( TT.muon ) + MenuItem('L1_MU8F_EMPTY' ).setLogic(d.MU8F & cosmiccond).setTriggerType( TT.muon ) + MenuItem('L1_MU8VF_EMPTY' ).setLogic(d.MU8VF & cosmiccond).setTriggerType( TT.muon ) + MenuItem('L1_MU14FCH_FIRSTEMPTY' ).setLogic(d.MU14FCH & firstempty).setTriggerType(TT.muon) + MenuItem('L1_MU14FCHR_FIRSTEMPTY' ).setLogic(d.MU14FCHR & firstempty).setTriggerType(TT.muon) + MenuItem('L1_2MU0_EMPTY' ).setLogic(d.MU0.x(2) & cosmiccond).setTriggerType( TT.muon ) + MenuItem('L1_2MU3V_EMPTY' ).setLogic(d.MU3V.x(2) & cosmiccond).setTriggerType( TT.muon ) + MenuItem('L1_2MU5VF_UNPAIRED_ISO' ).setLogic(d.MU5VF.x(2) & unpaired_isocond).setTriggerType( TT.muon ) + MenuItem('L1_2MU5VF_UNPAIRED_NONISO').setLogic(d.MU5VF.x(2) & unpaired_nonisocond).setTriggerType( TT.muon ) + MenuItem('L1_2MU5VF_EMPTY' ).setLogic(d.MU5VF.x(2) & cosmiccond).setTriggerType( TT.muon ) + MenuItem('L1_2MU5VF_FIRSTEMPTY' ).setLogic(d.MU5VF.x(2) & firstempty).setTriggerType( TT.muon ) # EM and MU - MenuItem('L1_EM7_MU10' ).setLogic( d.EM7 & d.MU10 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM7_MU15' ).setLogic( d.EM7 & d.MU15 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM8VH_MU15' ).setLogic( d.EM8VH & d.MU15 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM7_MU20' ).setLogic( d.EM7 & d.MU20 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM20VH_MU20').setLogic( d.EM20VH & d.MU20 & physcond).setTriggerType(TT.muon) - - MenuItem('L1_EM7_MU11' ).setLogic( d.EM7 & d.MU11 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM8_MU10' ).setLogic( d.EM8 & d.MU10 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM8I_MU10' ).setLogic( d.EM8I & d.MU10 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM15I_MU4' ).setLogic( d.EM15 & d.EM8I & d.MU4 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM15VH_MU10').setLogic( d.EM15VH & d.MU10 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM3_MU20' ).setLogic( d.EM3 & d.MU20 & physcond).setTriggerType(TT.muon) - MenuItem('L1_2EM8VH_MU10').setLogic( d.EM8VH.x(2) & d.MU10 & physcond).setTriggerType(TT.muon) - MenuItem('L1_EM15VH_2EM8VH_MU6').setLogic( d.EM15VH & d.EM8VH.x(2) & d.MU6 & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM7_MU8F' ).setLogic( d.EM7 & d.MU8F & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM7_MU14FCH' ).setLogic( d.EM7 & d.MU14FCH & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM20VH_MU14FCH' ).setLogic( d.EM20VH & d.MU14FCH & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM7_MU8VF' ).setLogic( d.EM7 & d.MU8VF & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM8_MU8F' ).setLogic( d.EM8 & d.MU8F & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM8I_MU8F' ).setLogic( d.EM8I & d.MU8F & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM15I_MU3V' ).setLogic( d.EM15 & d.EM8I & d.MU3V & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM15VH_MU8F' ).setLogic( d.EM15VH & d.MU8F & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM3_MU14FCH' ).setLogic( d.EM3 & d.MU14FCH & physcond).setTriggerType(TT.muon) + MenuItem('L1_2EM8VH_MU8F' ).setLogic( d.EM8VH.x(2) & d.MU8F & physcond).setTriggerType(TT.muon) + MenuItem('L1_EM15VH_2EM8VH_MU5VF').setLogic( d.EM15VH & d.EM8VH.x(2) & d.MU5VF & physcond).setTriggerType(TT.muon) # TAU ctpid=[0x40:0x4f] MenuItem('L1_TAU2' ).setLogic( d.HA2 & physcond).setTriggerType( TT.calo ) @@ -422,11 +384,15 @@ class ItemDef: #Phase-I MenuItem('L1_eTAU8' ).setLogic( d.eTAU8 & physcond).setTriggerType( TT.calo ) MenuItem('L1_eTAU12' ).setLogic( d.eTAU12 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_eTAU12L' ).setLogic( d.eTAU12L & physcond).setTriggerType( TT.calo ) MenuItem('L1_eTAU12M' ).setLogic( d.eTAU12M & physcond).setTriggerType( TT.calo ) + MenuItem('L1_jTAU12' ).setLogic( d.jTAU12 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_jTAU12M' ).setLogic( d.jTAU12M & physcond).setTriggerType( TT.calo ) + MenuItem('L1_cTAU12M' ).setLogic( d.cTAU12M & physcond).setTriggerType( TT.calo ) MenuItem('L1_eTAU20' ).setLogic( d.eTAU20 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_eTAU20M' ).setLogic( d.eTAU20M & physcond).setTriggerType( TT.calo ) + MenuItem('L1_cTAU20M' ).setLogic( d.cTAU20M & physcond).setTriggerType( TT.calo ) MenuItem('L1_eTAU25' ).setLogic( d.eTAU25 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_eTAU25M' ).setLogic( d.eTAU25M & physcond).setTriggerType( TT.calo ) + MenuItem('L1_cTAU25M' ).setLogic( d.cTAU25M & physcond).setTriggerType( TT.calo ) MenuItem('L1_eTAU30H' ).setLogic( d.eTAU30H & physcond).setTriggerType( TT.calo ) MenuItem('L1_eTAU40' ).setLogic( d.eTAU40 & physcond).setTriggerType( TT.calo ) MenuItem('L1_eTAU60' ).setLogic( d.eTAU60 & physcond).setTriggerType( TT.calo ) @@ -477,22 +443,16 @@ class ItemDef: MenuItem('L1_EM15HI_2TAU12IL_J25_3J12' ).setLogic( d.EM15HI & d.HA12IL.x(2) & d.J25 & d.J12.x(3) & physcond).setTriggerType( TT.calo ) MenuItem('L1_EM15HI_2TAU12_J25_3J12' ).setLogic( d.EM15HI & d.HA12.x(2) & d.J25 & d.J12.x(3) & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12' ).setLogic( d.MU10 & d.HA12 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12I' ).setLogic( d.MU10 & d.HA12I & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12IM' ).setLogic( d.MU10 & d.HA12IM & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU20' ).setLogic( d.MU10 & d.HA20 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU20IM' ).setLogic( d.MU10 & d.HA20IM & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU11_TAU20IM' ).setLogic( d.MU11 & d.HA20IM & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU20IM_J25_2J20').setLogic( d.MU10 & d.HA20IM & d.J25 & d.J20.x(2) & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU20I' ).setLogic( d.MU10 & d.HA20I & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU20_TAU12IM' ).setLogic( d.MU20 & d.HA12IM & physcond).setTriggerType( TT.calo) - MenuItem('L1_TAU12I_MU10_J25' ).setLogic( d.HA12I & d.MU10 & d.J25 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_TAU12I_MU10_J25_2J12' ).setLogic( d.HA12I & d.MU10 & d.J25 & d.J12.x(2) & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12_J25_2J12' ).setLogic( d.MU10 & d.HA12 & d.J25 & d.J12.x(2) & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12IM_J25_2J12' ).setLogic( d.MU10 & d.HA12IM & d.J25 & d.J12.x(2) & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12IL_J25_2J12' ).setLogic( d.MU10 & d.HA12IL & d.J25 & d.J12.x(2) & physcond).setTriggerType( TT.calo ) - MenuItem('L1_TAU12I_MU10_J20p31ETA49' ).setLogic( d.HA12I & d.MU10 & d.J2031ETA49 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12IM_3J12' ).setLogic( d.MU10 & d.HA12IM & d.J12.x(3) & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12' ).setLogic( d.MU8F & d.HA12 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12IM' ).setLogic( d.MU8F & d.HA12IM & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU20' ).setLogic( d.MU8F & d.HA20 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU20IM' ).setLogic( d.MU8F & d.HA20IM & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8VF_TAU20IM' ).setLogic( d.MU8VF & d.HA20IM & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU20IM_J25_2J20').setLogic( d.MU8F & d.HA20IM & d.J25 & d.J20.x(2) & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU14FCH_TAU12IM' ).setLogic( d.MU14FCH & d.HA12IM & physcond).setTriggerType( TT.calo) + MenuItem('L1_MU8F_TAU12_J25_2J12' ).setLogic( d.MU8F & d.HA12 & d.J25 & d.J12.x(2) & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12IM_J25_2J12').setLogic( d.MU8F & d.HA12IM & d.J25 & d.J12.x(2) & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12IM_3J12' ).setLogic( d.MU8F & d.HA12IM & d.J12.x(3) & physcond).setTriggerType( TT.calo ) MenuItem('L1_TAU20_2TAU12I_J25_2J15_3J12' ).setLogic( d.HA20 & d.HA12I.x(2) & d.J25 & d.J15.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo ) MenuItem('L1_TAU20_2TAU12_J25_2J20_3J12' ).setLogic( d.HA20 & d.HA12.x(2) & d.J25 & d.J20.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo ) @@ -507,11 +467,9 @@ class ItemDef: MenuItem('L1_TAU20IM_2TAU12IM_4J12p0ETA28').setLogic( d.HA20IM & d.HA12IM.x(2) & d.J120ETA28.x(4) & physcond).setTriggerType( TT.calo ) MenuItem('L1_TAU60_2TAU40' ).setLogic( d.HA60 & d.HA40.x(2) & physcond).setTriggerType( TT.calo ) MenuItem('L1_2TAU12I_TAU20_J25_2J15_3J12' ).setLogic( d.HA12I.x(2) & d.HA20 & d.J25 & d.J15.x(2) & d.J12.x(3) & physcond).setTriggerType( TT.calo ) -####### MenuItem('L1_2TAU20IM_3J20' ).setLogic( d.HA20IM.x(2) & d.J20.x(3) & physcond).setTriggerType( TT.calo ) MenuItem('L1_2TAU20IM_J25_3J20' ).setLogic( d.HA20IM.x(2) & d.J25 & d.J20.x(3) & physcond).setTriggerType( TT.calo ) -###### MenuItem('L1_TAU20_2J20_XE45' ).setLogic( d.HA20 & d.J20.x(2) & d.XE45 & physcond).setTriggerType( TT.calo ) MenuItem('L1_TAU20IM_2J20_XE50' ).setLogic( d.HA20IM & d.J20.x(2) & d.XE50 & physcond).setTriggerType( TT.calo ) MenuItem('L1_TAU20IM_2J20_XE45' ).setLogic( d.HA20IM & d.J20.x(2) & d.XE45 & physcond).setTriggerType( TT.calo ) @@ -523,12 +481,12 @@ class ItemDef: MenuItem('L1_TAU20IM_2TAU12IM_XE40' ).setLogic( d.HA20IM & d.HA12IM.x(2) & d.XE40 & physcond).setTriggerType( TT.calo ) MenuItem('L1_TAU40_2TAU12IM_XE40' ).setLogic( d.HA40 & d.HA12IM.x(2) & d.XE40 & physcond).setTriggerType( TT.calo ) MenuItem('L1_EM20VHI_TAU20IM_2TAU20_J25_3J20').setLogic( d.EM20VHI & d.HA20IM & d.HA20.x(2) & d.J25 & d.J20.x(3) & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12I_XE35' ).setLogic( d.MU10 & d.HA12I & d.XE35 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12_XE35' ).setLogic( d.MU10 & d.HA12 & d.XE35 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12IL_XE35' ).setLogic( d.MU10 & d.HA12IL & d.XE35 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12IM_XE35' ).setLogic( d.MU10 & d.HA12IM & d.XE35 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12IT_XE35' ).setLogic( d.MU10 & d.HA12IT & d.XE35 & physcond).setTriggerType( TT.calo ) - MenuItem('L1_MU10_TAU12IM_XE40' ).setLogic( d.MU10 & d.HA12IM & d.XE40 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12I_XE35' ).setLogic( d.MU8F & d.HA12I & d.XE35 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12_XE35' ).setLogic( d.MU8F & d.HA12 & d.XE35 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12IL_XE35' ).setLogic( d.MU8F & d.HA12IL & d.XE35 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12IM_XE35' ).setLogic( d.MU8F & d.HA12IM & d.XE35 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12IT_XE35' ).setLogic( d.MU8F & d.HA12IT & d.XE35 & physcond).setTriggerType( TT.calo ) + MenuItem('L1_MU8F_TAU12IM_XE40' ).setLogic( d.MU8F & d.HA12IM & d.XE40 & physcond).setTriggerType( TT.calo ) MenuItem('L1_TAU20I_2TAU12I_XE35' ).setLogic( d.HA20I & d.HA12I.x(2) & d.XE35 & physcond).setTriggerType( TT.calo ) MenuItem('L1_EM15VHI_TAU20IM_2TAU15_J25_2J20_3J15').setLogic( d.EM15VHI & d.HA20IM & d.HA15.x(2) & d.J25 & d.J20.x(2) & d.J15.x(3) & physcond).setTriggerType( TT.calo ) @@ -567,11 +525,32 @@ class ItemDef: MenuItem('L1_J400' ).setLogic( d.J400 & physcond).setTriggerType(TT.calo) MenuItem('L1_J400_LAR' ).setLogic( d.J400 & physcond).setTriggerType(TT.lardemo) # ATR-22344 - MenuItem('L1_jJ100' ).setLogic( d.jJ100 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ12' ).setLogic( d.jJ12 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ12p0ETA25' ).setLogic( d.jJ120ETA25 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ15' ).setLogic( d.jJ15 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ15p0ETA25' ).setLogic( d.jJ150ETA25 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ15p31ETA49' ).setLogic( d.jJ1531ETA49 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ20' ).setLogic( d.jJ20 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ20p31ETA49' ).setLogic( d.jJ2031ETA49 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ25' ).setLogic( d.jJ25 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ25p0ETA23' ).setLogic( d.jJ250ETA23 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ30' ).setLogic( d.jJ30 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ30p31ETA49' ).setLogic( d.jJ3031ETA49 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ35p0ETA23' ).setLogic( d.jJ350ETA23 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ40' ).setLogic( d.jJ40 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ40p0ETA25' ).setLogic( d.jJ400ETA25 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ45p0ETA20' ).setLogic( d.jJ450ETA20 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ50' ).setLogic( d.jJ50 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ50p31ETA49' ).setLogic( d.jJ5031ETA49 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ75' ).setLogic( d.jJ75 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ75p31ETA49' ).setLogic( d.jJ7531ETA49 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ85' ).setLogic( d.jJ85 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ100' ).setLogic( d.jJ100 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ120' ).setLogic( d.jJ120 & physcond).setTriggerType(TT.calo) + MenuItem('L1_jJ400' ).setLogic( d.jJ400 & physcond).setTriggerType(TT.calo) MenuItem('L1_J10p31ETA49').setLogic( d.J1031ETA49 & physcond).setTriggerType(TT.calo) MenuItem('L1_J75p31ETA49').setLogic( d.J7531ETA49 & physcond).setTriggerType(TT.calo) - MenuItem('L1_jJ75p31ETA49').setLogic( d.jJ7531ETA49 & physcond).setTriggerType(TT.calo) MenuItem('L1_J10_UNPAIRED_ISO' ).setLogic( d.J10 & unpaired_isocond ).setTriggerType(TT.calo) @@ -643,18 +622,6 @@ class ItemDef: MenuItem('L1_4J15p0ETA25' ).setLogic( d.J150ETA25.x(4) & physcond).setTriggerType(TT.calo) MenuItem('L1_5J15p0ETA25' ).setLogic( d.J150ETA25.x(5) & physcond).setTriggerType(TT.calo) - MenuItem('L1_3jJ35p0ETA23' ).setLogic( d.jJ350ETA23.x(3) & physcond).setTriggerType(TT.calo) - MenuItem('L1_3jJ50' ).setLogic( d.jJ50.x(3) & physcond).setTriggerType(TT.calo) - MenuItem('L1_4jJ15' ).setLogic( d.jJ15.x(4) & physcond).setTriggerType(TT.calo) - MenuItem('L1_4jJ15p0ETA25' ).setLogic( d.jJ150ETA25.x(4) & physcond).setTriggerType(TT.calo) - MenuItem('L1_jJ25p0ETA23_2jJ15p31ETA49' ).setLogic( d.jJ250ETA23 & d.jJ1531ETA49.x(2) & physcond).setTriggerType(TT.calo) - MenuItem('L1_jJ40p0ETA25_2jJ25_jJ20p31ETA49' ).setLogic( d.jJ400ETA25 & d.jJ25.x(2) & d.jJ2031ETA49 & physcond).setTriggerType(TT.calo) - MenuItem('L1_jJ85_3jJ30' ).setLogic( d.jJ85 & d.jJ30.x(3) & physcond).setTriggerType(TT.calo) - - # jet and XE - MenuItem('L1_2jJ50_gXERHO40' ).setLogic( d.jJ50.x(2) & d.gXERHO40 & physcond).setTriggerType(TT.calo) - MenuItem('L1_3jJ15p0ETA25_gXERHO40' ).setLogic( d.jJ150ETA25.x(3) & d.gXERHO40 & physcond).setTriggerType(TT.calo) - if ('Physics_HI_v' in menuName or 'MC_HI_v' in menuName): MenuItem('L1_ZB', ctpid=240).setLogic(d.ZB_J75 & physcond).setTriggerType(TT.zerobs) else: @@ -680,36 +647,30 @@ class ItemDef: ### ATR-15524 MenuItem('L1_EM18VH_3J20' ).setLogic( d.EM18VH & d.J20.x(3) & physcond).setTriggerType(TT.calo) + # combined mu - jet - MenuItem('L1_MU4_J12' ).setLogic( d.MU4 & d.J12 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU4_J15' ).setLogic( d.MU4 & d.J15 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU6_J20' ).setLogic( d.MU6 & d.J20 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU6_J30p0ETA49_2J20p0ETA49').setLogic( d.MU6 & d.J300ETA49 & d.J200ETA49.x(2) & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU6_J40' ).setLogic( d.MU6 & d.J40 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU6_J75' ).setLogic( d.MU6 & d.J75 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU4_3J15' ).setLogic( d.MU4 & d.J15.x(3) & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU4_3J20' ).setLogic( d.MU4 & d.J20.x(3) & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU4_J30' ).setLogic( d.MU4 & d.J30 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU4_J50' ).setLogic( d.MU4 & d.J50 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU10_3J20' ).setLogic( d.MU10 & d.J20.x(3) & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU10_2J20' ).setLogic( d.MU10 & d.J20.x(2) & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU10_2J15_J20').setLogic( d.MU10 & d.J15.x(2) & d.J20 & physcond).setTriggerType(TT.calo) - - MenuItem('L1_MU10_2jJ15_jJ20').setLogic( d.MU10 & d.jJ15.x(2) & d.jJ20 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU10_2jJ20' ).setLogic( d.MU10 & d.jJ20.x(2) & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU10_2jJ40' ).setLogic( d.MU10 & d.jJ40.x(2) & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU20_2jJ40' ).setLogic( d.MU20 & d.jJ40.x(2) & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU20_gXERHO30' ).setLogic( d.MU20 & d.gXERHO30 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU20_J50' ).setLogic( d.MU20 & d.J50 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU4_XE60' ).setLogic( d.MU4 & d.XE60 & physcond).setTriggerType(TT.calo) - MenuItem('L1_2MU4_XE60' ).setLogic( d.MU4.x(2) & d.XE60 & physcond).setTriggerType(TT.calo) - - MenuItem('L1_2MU4_J40_XE50' ).setLogic( d.MU4.x(2) & d.J40 & d.XE50 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU4_J50_XE40' ).setLogic( d.MU4 & d.J50 & d.XE40 & physcond).setTriggerType(TT.calo) - MenuItem('L1_2MU4_J40_XE20').setLogic( d.MU4.x(2) & d.J40 & d.XE20 & physcond).setTriggerType(TT.calo) - MenuItem('L1_MU20_J40' ).setLogic( d.MU20 & d.J40 & physcond).setTriggerType(TT.calo) ## ATR-14377 - MenuItem('L1_MU20_jJ40' ).setLogic( d.MU20 & d.jJ40 & physcond).setTriggerType(TT.calo) ## ATR-14377 - MenuItem('L1_MU20_XE30' ).setLogic( d.MU20 & d.XE30 & physcond) ## ATR-14377 + MenuItem('L1_MU3V_J12' ).setLogic( d.MU3V & d.J12 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU3V_J15' ).setLogic( d.MU3V & d.J15 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU5VF_J20' ).setLogic( d.MU5VF & d.J20 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU5VF_J30p0ETA49_2J20p0ETA49').setLogic( d.MU5VF & d.J300ETA49 & d.J200ETA49.x(2) & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU5VF_J40' ).setLogic( d.MU5VF & d.J40 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU5VF_J75' ).setLogic( d.MU5VF & d.J75 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU3V_3J15' ).setLogic( d.MU3V & d.J15.x(3) & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU3V_3J20' ).setLogic( d.MU3V & d.J20.x(3) & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU3V_J30' ).setLogic( d.MU3V & d.J30 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU3V_J50' ).setLogic( d.MU3V & d.J50 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU8F_3J20' ).setLogic( d.MU8F & d.J20.x(3) & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU8F_2J20' ).setLogic( d.MU8F & d.J20.x(2) & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU8F_2J15_J20').setLogic( d.MU8F & d.J15.x(2) & d.J20 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU14FCH_J50' ).setLogic( d.MU14FCH & d.J50 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU3V_XE60' ).setLogic( d.MU3V & d.XE60 & physcond).setTriggerType(TT.calo) + MenuItem('L1_2MU3V_XE60' ).setLogic( d.MU3V.x(2) & d.XE60 & physcond).setTriggerType(TT.calo) + MenuItem('L1_2MU3V_J40_XE50' ).setLogic( d.MU3V.x(2) & d.J40 & d.XE50 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU3V_J50_XE40' ).setLogic( d.MU3V & d.J50 & d.XE40 & physcond).setTriggerType(TT.calo) + MenuItem('L1_2MU3V_J40_XE20' ).setLogic( d.MU3V.x(2) & d.J40 & d.XE20 & physcond).setTriggerType(TT.calo) + MenuItem('L1_MU14FCH_J40' ).setLogic( d.MU14FCH & d.J40 & physcond).setTriggerType(TT.calo) ## ATR-14377 + MenuItem('L1_MU14FCH_XE30' ).setLogic( d.MU14FCH & d.XE30 & physcond) ## ATR-14377 + # HI MenuItem('L1_J15_NZ' ).setLogic( d.J15 & Not(d.ZDC_AND) & physcond).setTriggerType(TT.calo) MenuItem('L1_2J15_NZ').setLogic( d.J15.x(2) & Not(d.ZDC_AND) & physcond).setTriggerType(TT.calo) @@ -1080,23 +1041,23 @@ class ItemDef: MenuItem('L1_J15_VZDC_C' ).setLogic( d.J15 & Not(d.ZDC_C) & physcond).setTriggerType(TT.minb) MenuItem('L1_J20_VZDC_A' ).setLogic( d.J20 & Not(d.ZDC_A) & physcond).setTriggerType(TT.minb) MenuItem('L1_J20_VZDC_C' ).setLogic( d.J20 & Not(d.ZDC_C) & physcond).setTriggerType(TT.minb) - MenuItem('L1_MU4_VZDC_A' ).setLogic( d.MU4 & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_VZDC_C' ).setLogic( d.MU4 & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU4_VZDC_A' ).setLogic( d.MU4.x(2) & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU4_VZDC_C' ).setLogic( d.MU4.x(2) & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) - - MenuItem('L1_MU4_VTE10_VZDC_A' ).setLogic( d.MU4 & Not(d.TE10) & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_VTE10_VZDC_C' ).setLogic( d.MU4 & Not(d.TE10) & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU4_VTE10_VZDC_A').setLogic( d.MU4.x(2) & Not(d.TE10) & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) - MenuItem('L1_2MU4_VTE10_VZDC_C').setLogic( d.MU4.x(2) & Not(d.TE10) & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) - - MenuItem('L1_MU4_VZDC_A_C' ).setLogic( d.MU4 & VZDC_A_C & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU4_VZDC_AORC_VTE200' ).setLogic( d.MU4 & VZDC_AORC & Not(d.TE200) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_VZDC_A' ).setLogic( d.MU6 & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_VZDC_C' ).setLogic( d.MU6 & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_VTE10_VZDC_A' ).setLogic( d.MU6 & Not(d.TE10) & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_VTE10_VZDC_C' ).setLogic( d.MU6 & Not(d.TE10) & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) - MenuItem('L1_MU6_VZDC_A_C' ).setLogic( d.MU6 & VZDC_A_C & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_VZDC_A' ).setLogic( d.MU3V & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_VZDC_C' ).setLogic( d.MU3V & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU3V_VZDC_A' ).setLogic( d.MU3V.x(2) & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU3V_VZDC_C' ).setLogic( d.MU3V.x(2) & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) + + MenuItem('L1_MU3V_VTE10_VZDC_A' ).setLogic( d.MU3V & Not(d.TE10) & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_VTE10_VZDC_C' ).setLogic( d.MU3V & Not(d.TE10) & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU3V_VTE10_VZDC_A').setLogic( d.MU3V.x(2) & Not(d.TE10) & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) + MenuItem('L1_2MU3V_VTE10_VZDC_C').setLogic( d.MU3V.x(2) & Not(d.TE10) & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) + + MenuItem('L1_MU3V_VZDC_A_C' ).setLogic( d.MU3V & VZDC_A_C & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU3V_VZDC_AORC_VTE200' ).setLogic( d.MU3V & VZDC_AORC & Not(d.TE200) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_VZDC_A' ).setLogic( d.MU5VF & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_VZDC_C' ).setLogic( d.MU5VF & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_VTE10_VZDC_A' ).setLogic( d.MU5VF & Not(d.TE10) & Not(d.ZDC_A) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_VTE10_VZDC_C' ).setLogic( d.MU5VF & Not(d.TE10) & Not(d.ZDC_C) & physcond).setTriggerType(TT.muon) + MenuItem('L1_MU5VF_VZDC_A_C' ).setLogic( d.MU5VF & VZDC_A_C & physcond).setTriggerType(TT.muon) MenuItem('L1_RD0_FILLED_VZDC_A' ).setLogic( d.RNDM0 & Not(d.ZDC_A) & physcond).setTriggerType(TT.minb) MenuItem('L1_RD0_FILLED_VZDC_C' ).setLogic( d.RNDM0 & Not(d.ZDC_C) & physcond).setTriggerType(TT.minb) MenuItem('L1_MBTS_4_C_VZDC_A' ).setLogic( MBTS_4_C & Not(d.ZDC_A) & physcond).setTriggerType(TT.minb) @@ -1294,16 +1255,16 @@ class ItemDef: MenuItem('L1_AFP_A_OR_C_J5').setLogic( (AFP_A | AFP_C) & d.J5 & physcond ) MenuItem('L1_AFP_A_AND_C_J12').setLogic( AFP_A & AFP_C & d.J12 & physcond ) MenuItem('L1_AFP_A_OR_C_J12').setLogic( (AFP_A | AFP_C) & d.J12 & physcond ) - MenuItem('L1_MU6_AFP_A_OR_C').setLogic( (AFP_A | AFP_C) & d.MU6 & physcond ) - MenuItem('L1_MU6_AFP_A_AND_C').setLogic( AFP_A & AFP_C & d.MU6 & physcond ) + MenuItem('L1_MU5VF_AFP_A_OR_C').setLogic( (AFP_A | AFP_C) & d.MU5VF & physcond ) + MenuItem('L1_MU5VF_AFP_A_AND_C').setLogic( AFP_A & AFP_C & d.MU5VF & physcond ) MenuItem('L1_EM7_AFP_A_OR_C').setLogic( (AFP_A | AFP_C) & d.EM7 & physcond ) MenuItem('L1_EM7_AFP_A_AND_C').setLogic( AFP_A & AFP_C & d.EM7 & physcond ) MenuItem('L1_AFP_A_AND_C_MBTS_2').setLogic( AFP_A & AFP_C & MBTS_2 & physcond ) MenuItem('L1_AFP_A_OR_C_MBTS_2').setLogic( (AFP_A | AFP_C) & MBTS_2 & physcond ) - MenuItem('L1_AFP_A_AND_C_TOF_CEP-CJ60').setLogic( AFP_TOF_A & AFP_TOF_C & d.TOPO_CEP_CJ60s6 & physcond ) - MenuItem('L1_AFP_A_AND_C_TOF_T0T1_CEP-CJ60').setLogic( (d.AFP_FSA_TOF_T0 | d.AFP_FSA_TOF_T1) & (d.AFP_FSC_TOF_T0 | d.AFP_FSC_TOF_T1) & d.TOPO_CEP_CJ60s6 & physcond ) + MenuItem('L1_AFP_A_AND_C_TOF_CEP-CjJ60').setLogic( AFP_TOF_A & AFP_TOF_C & d.TOPO_CEP_CjJ60s6 & physcond ) + MenuItem('L1_AFP_A_AND_C_TOF_T0T1_CEP-CjJ60').setLogic( (d.AFP_FSA_TOF_T0 | d.AFP_FSA_TOF_T1) & (d.AFP_FSC_TOF_T0 | d.AFP_FSC_TOF_T1) & d.TOPO_CEP_CjJ60s6 & physcond ) MenuItem('L1_AFP_A_AND_C_TOF_J20').setLogic( AFP_TOF_A & AFP_TOF_C & d.J20 & physcond ) MenuItem('L1_AFP_A_AND_C_TOF_T0T1_J20').setLogic( (d.AFP_FSA_TOF_T0 | d.AFP_FSA_TOF_T1) & (d.AFP_FSC_TOF_T0 | d.AFP_FSC_TOF_T1) & d.J20 & physcond ) MenuItem('L1_AFP_A_AND_C_TOF_J30').setLogic( AFP_TOF_A & AFP_TOF_C & d.J30 & physcond ) @@ -1400,10 +1361,10 @@ class ItemDef: MenuItem('L1_J12_ALFA_ANY_UNPAIRED_ISO').setLogic( d.J12 & ALFA_ANY & unpaired_isocond).setTriggerType(TT.alfa) MenuItem('L1_J12_ALFA_EINE' ).setLogic( d.J12 & ALFA_EINE & physcond).setTriggerType(TT.alfa) - MenuItem('L1_MU4_ALFA_ANY' ).setLogic( d.MU4 & ALFA_ANY & physcond).setTriggerType(TT.alfa) - MenuItem('L1_MU4_ALFA_ANY_UNPAIRED_ISO').setLogic( d.MU4 & ALFA_ANY & unpaired_isocond).setTriggerType(TT.alfa) - MenuItem('L1_MU4_ALFA_ANY_PAIRED_UNPAIRED_ISO').setLogic( d.MU4 & ALFA_ANY & physcond_or_unpaired_isocond).setTriggerType(TT.alfa) - MenuItem('L1_MU4_ALFA_EINE' ).setLogic( d.MU4 & ALFA_EINE & physcond).setTriggerType(TT.alfa) + MenuItem('L1_MU3V_ALFA_ANY' ).setLogic( d.MU3V & ALFA_ANY & physcond).setTriggerType(TT.alfa) + MenuItem('L1_MU3V_ALFA_ANY_UNPAIRED_ISO').setLogic( d.MU3V & ALFA_ANY & unpaired_isocond).setTriggerType(TT.alfa) + MenuItem('L1_MU3V_ALFA_ANY_PAIRED_UNPAIRED_ISO').setLogic( d.MU3V & ALFA_ANY & physcond_or_unpaired_isocond).setTriggerType(TT.alfa) + MenuItem('L1_MU3V_ALFA_EINE' ).setLogic( d.MU3V & ALFA_EINE & physcond).setTriggerType(TT.alfa) MenuItem('L1_TE5_ALFA_ANY' ).setLogic( d.TE5 & ALFA_ANY & physcond).setTriggerType(TT.alfa) MenuItem('L1_TE5_ALFA_ANY_UNPAIRED_ISO').setLogic( d.TE5 & ALFA_ANY & unpaired_isocond).setTriggerType(TT.alfa) @@ -1482,10 +1443,10 @@ class ItemDef: MenuItem('L1_HT190-J15s5pETA21').setLogic( d.R2TOPO_HT190_J15s5pETA21 & physcond) MenuItem('L1_BPH-0M9-EM7-EM5').setLogic( d.R2TOPO_0INVM9_EM7ab_EMab & physcond) MenuItem('L1_BPH-0DR3-EM7J15').setLogic( d.R2TOPO_0DR03_EM7ab_CJ15ab & physcond) - MenuItem('L1_BPH-0M9-EM7-EM5_MU6').setLogic( d.MU6 & d.R2TOPO_0INVM9_EM7ab_EMab & physcond) - MenuItem('L1_BPH-0DR3-EM7J15_MU6').setLogic( d.MU6 & d.R2TOPO_0DR03_EM7ab_CJ15ab & physcond) - MenuItem('L1_BPH-0M9-EM7-EM5_2MU4').setLogic( d.MU4.x(2) & d.R2TOPO_0INVM9_EM7ab_EMab & physcond) - MenuItem('L1_BPH-0DR3-EM7J15_2MU4').setLogic( d.MU4.x(2) & d.R2TOPO_0DR03_EM7ab_CJ15ab & physcond) + MenuItem('L1_BPH-0M9-EM7-EM5_MU5VF').setLogic( d.MU5VF & d.R2TOPO_0INVM9_EM7ab_EMab & physcond) + MenuItem('L1_BPH-0DR3-EM7J15_MU5VF').setLogic( d.MU5VF & d.R2TOPO_0DR03_EM7ab_CJ15ab & physcond) + MenuItem('L1_BPH-0M9-EM7-EM5_2MU3V').setLogic( d.MU3V.x(2) & d.R2TOPO_0INVM9_EM7ab_EMab & physcond) + MenuItem('L1_BPH-0DR3-EM7J15_2MU3V').setLogic( d.MU3V.x(2) & d.R2TOPO_0DR03_EM7ab_CJ15ab & physcond) MenuItem("L1_JPSI-1M5-EM7" ).setLogic( d.R2TOPO_1INVM5_EM7s1_EMs6 & physcond) MenuItem("L1_JPSI-1M5-EM12").setLogic( d.R2TOPO_1INVM5_EM12s1_EMs6 & physcond) MenuItem('L1_MJJ-500-NFF').setLogic( d.R2TOPO_500INVM9999_J30s6_AJ20s6 & physcond) @@ -1505,54 +1466,55 @@ class ItemDef: # Phase-1: MenuItem('L1_LAR-ZEE-eEM').setLogic( d.TOPO_ZEE_eEM20sm2 & physcond).setTriggerType( TT.lardemo ) # LAr demo (ATR-23403) - MenuItem('L1_LATE-MU10_XE50').setLogic( d.TOPO_LATE_MU10s1 & d.XE50 & physcond) - MenuItem('L1_LATE-MU10_XE40').setLogic( d.TOPO_LATE_MU10s1 & d.XE40 & physcond) - MenuItem('L1_LATE-MU10_J50' ).setLogic( d.TOPO_LATE_MU10s1 & d.J50 & physcond) - MenuItem('L1_LFV-MU11').setLogic( d.TOPO_0DR15_2MU6ab & d.MU11 & d.MU6.x(2) & physcond) - MenuItem('L1_LFV-MU6' ).setLogic( d.TOPO_0DR15_2MU6ab & d.MU6.x(2) & physcond) - MenuItem('L1_LFV-eEM8L-MU11' ).setLogic( d.TOPO_0INVM10_0DR15_eEM8abl_MU10ab & d.MU11 & physcond) - MenuItem('L1_LFV-eEM12L-MU6' ).setLogic( d.TOPO_0INVM10_0DR15_eEM12abl_MU6ab & physcond) - MenuItem('L1_LFV-eEM8L').setLogic( d.TOPO_0DETA04_eEM8abl_MU10ab & d.TOPO_0DPHI03_eEM8abl_MU10ab & d.MU10 & physcond) #ATR-14282 + MenuItem('L1_LATE-MU8F_XE50').setLogic( d.TOPO_LATE_MU10s1 & d.XE50 & physcond) + MenuItem('L1_LATE-MU8F_XE40').setLogic( d.TOPO_LATE_MU10s1 & d.XE40 & physcond) + MenuItem('L1_LATE-MU8F_J50' ).setLogic( d.TOPO_LATE_MU10s1 & d.J50 & physcond) + MenuItem('L1_LFV-MU8VF').setLogic( d.TOPO_0DR15_2MU6ab & d.MU8VF & d.MU5VF.x(2) & physcond) + MenuItem('L1_LFV-MU5VF' ).setLogic( d.TOPO_0DR15_2MU6ab & d.MU5VF.x(2) & physcond) + MenuItem('L1_LFV-eEM8L-MU8VF' ).setLogic( d.TOPO_0INVM10_0DR15_eEM8abl_MU10ab & d.MU8VF & physcond) + MenuItem('L1_LFV-eEM12L-MU5VF' ).setLogic( d.TOPO_0INVM10_0DR15_eEM12abl_MU6ab & physcond) + MenuItem('L1_LFV-eEM8L').setLogic( d.TOPO_0DETA04_eEM8abl_MU10ab & d.TOPO_0DPHI03_eEM8abl_MU10ab & d.MU8F & physcond) #ATR-14282 MenuItem('L1_LFV-eEM15L').setLogic( d.TOPO_0DETA04_eEM15abl_MUab & d.TOPO_0DPHI03_eEM15abl_MUab & physcond) #ATR-14282 #ATR-19720 - MenuItem('L1_BPH-8M15-0DR22-2MU6' ).setLogic( d.TOPO_8INVM15_0DR22_2MU6ab & d.MU6.x(2) & physcond) - MenuItem('L1_BPH-8M15-0DR22-MU6MU4-BO').setLogic( d.TOPO_8INVM15_0DR22_MU6ab_MU4ab & d.TOPO_MULT_CMU4ab.x(2) & d.TOPO_MULT_CMU6ab & d.MU6 & physcond) - MenuItem('L1_BPH-2M9-2DR15-2MU6' ).setLogic( d.TOPO_2INVM9_2DR15_2MU6ab & d.MU6.x(2) & physcond) - MenuItem('L1_BPH-2M9-0DR15-MU6MU4' ).setLogic( d.TOPO_2INVM9_0DR15_MU6ab_MU4ab & d.MU6 & physcond) - MenuItem('L1_BPH-2M9-0DR15-2MU4' ).setLogic( d.TOPO_2INVM9_0DR15_2MU4ab & physcond) - MenuItem("L1_2MU4-BO" ).setLogic( d.TOPO_MULT_CMU4ab.x(2) & physcond) - MenuItem("L1_2MU6-BO" ).setLogic( d.TOPO_MULT_CMU6ab.x(2) & d.MU6.x(2) & physcond) - MenuItem("L1_MU6MU4-BO").setLogic( d.TOPO_MULT_CMU4ab.x(2) & d.TOPO_MULT_CMU6ab & d.MU6 & physcond) + MenuItem('L1_BPH-8M15-0DR22-2MU5VF' ).setLogic( d.TOPO_8INVM15_0DR22_2MU6ab & d.MU5VF.x(2) & physcond) + MenuItem('L1_BPH-8M15-0DR22-MU5VFMU3V-BO').setLogic( d.TOPO_8INVM15_0DR22_MU6ab_MU4ab & d.TOPO_MULT_CMU4ab.x(2) & d.TOPO_MULT_CMU6ab & d.MU5VF & physcond) + MenuItem('L1_BPH-2M9-2DR15-2MU5VF' ).setLogic( d.TOPO_2INVM9_2DR15_2MU6ab & d.MU5VF.x(2) & physcond) + MenuItem('L1_BPH-2M9-0DR15-MU5VFMU3V' ).setLogic( d.TOPO_2INVM9_0DR15_MU6ab_MU4ab & d.MU5VF & physcond) + MenuItem('L1_BPH-2M9-0DR15-2MU3V' ).setLogic( d.TOPO_2INVM9_0DR15_2MU4ab & physcond) + MenuItem("L1_2MU3V-BO" ).setLogic( d.TOPO_MULT_CMU4ab.x(2) & physcond) + MenuItem("L1_2MU5VF-BO" ).setLogic( d.TOPO_MULT_CMU6ab.x(2) & d.MU5VF.x(2) & physcond) + MenuItem("L1_MU5VFMU3V-BO").setLogic( d.TOPO_MULT_CMU4ab.x(2) & d.TOPO_MULT_CMU6ab & d.MU5VF & physcond) #ATR-19355 - MenuItem('L1_BPH-0M10-3MU4' ).setLogic( d.TOPO_0INVM10_3MU4ab & physcond) + MenuItem('L1_BPH-0M10-3MU3V' ).setLogic( d.TOPO_0INVM10_3MU4ab & physcond) # ATR-19510 - MenuItem('L1_DY-BOX-2MU4' ).setLogic( d.TOPO_5DETA99_5DPHI99_2MU4ab & d.MU4.x(2) & physcond) - MenuItem('L1_DY-BOX-MU6MU4').setLogic( d.TOPO_5DETA99_5DPHI99_MU6ab_MU4ab & d.MU6 & physcond) - MenuItem('L1_DY-BOX-2MU6').setLogic( d.TOPO_5DETA99_5DPHI99_2MU6ab & d.MU6.x(2) & physcond) + MenuItem('L1_DY-BOX-2MU3V' ).setLogic( d.TOPO_5DETA99_5DPHI99_2MU4ab & d.MU3V.x(2) & physcond) + MenuItem('L1_DY-BOX-MU5VFMU3V').setLogic( d.TOPO_5DETA99_5DPHI99_MU6ab_MU4ab & d.MU5VF & physcond) + MenuItem('L1_DY-BOX-2MU5VF').setLogic( d.TOPO_5DETA99_5DPHI99_2MU6ab & d.MU5VF.x(2) & physcond) #ATR-17320 - MenuItem('L1_CEP-CJ60').setLogic( d.TOPO_CEP_CJ60s6 & physcond ) - MenuItem('L1_CEP-CJ50').setLogic( d.TOPO_CEP_CJ50s6 & physcond ) + MenuItem('L1_CEP-CjJ60').setLogic( d.TOPO_CEP_CjJ60s6 & physcond ) + MenuItem('L1_CEP-CjJ50').setLogic( d.TOPO_CEP_CjJ50s6 & physcond ) #ATR-18824 - MenuItem('L1_ZAFB-04DPHI-eEM15M' ).setLogic( d.TOPO_60INVM_04DPHI32_eEM15abm_FJj15s623ETA49 & physcond) - MenuItem('L1_ZAFB-25DPHI-eEM15M' ).setLogic( d.TOPO_60INVM_25DPHI32_eEM15abm_FJj15s623ETA49 & physcond) - MenuItem('L1_ZAFB-25DPHI-eEM18M' ).setLogic( d.TOPO_60INVM_25DPHI32_eEM15abm_FJj15s623ETA49 & d.eEM18M & physcond) + MenuItem('L1_ZAFB-04DPHI-eEM15M' ).setLogic( d.TOPO_60INVM_04DPHI32_eEM15abm_FjJj15s623ETA49 & physcond) + MenuItem('L1_ZAFB-25DPHI-eEM15M' ).setLogic( d.TOPO_60INVM_25DPHI32_eEM15abm_FjJj15s623ETA49 & physcond) #ATR-19302: MenuItem('L1_DPHI-M70-2eEM10M' ).setLogic( d.TOPO_0INVM70_27DPHI32_eEM10sm1_eEM10sm6 & physcond) MenuItem('L1_DPHI-M70-2eEM12M' ).setLogic( d.TOPO_0INVM70_27DPHI32_eEM12sm1_eEM12sm6 & physcond) #ATR-21637 MenuItem('L1_DPHI-M70-2eEM12' ).setLogic( d.TOPO_0INVM70_27DPHI32_eEM12s1_eEM12s6 & physcond) #ATR-19376 - MenuItem('L1_10DR-MU20-MU6' ).setLogic( d.TOPO_10DR99_2MU6ab & d.MU20 & physcond) + MenuItem('L1_10DR-MU14FCH-MU5VF' ).setLogic( d.TOPO_10DR99_2MU6ab & d.MU14FCH & physcond) #Missing: KF # subset of legacy chains migrated phase1 boards MenuItem('L1_BPH-0M9-eEM7-eEM5').setLogic( d.TOPO_0INVM9_eEM7ab_eEMab & physcond) - MenuItem('L1_BPH-0M9-eEM7-eEM5_MU6').setLogic( d.MU6 & d.TOPO_0INVM9_eEM7ab_eEMab & physcond) - MenuItem('L1_BPH-0M9-eEM7-eEM5_2MU4').setLogic( d.MU4.x(2) & d.TOPO_0INVM9_eEM7ab_eEMab & physcond) - MenuItem('L1_BPH-0DR3-eEM7J15').setLogic( d.TOPO_0DR03_eEM7ab_CJ15ab & physcond) - MenuItem('L1_BPH-0DR3-eEM7J15_MU6').setLogic( d.MU6 & d.TOPO_0DR03_eEM7ab_CJ15ab & physcond) - MenuItem('L1_BPH-0DR3-eEM7J15_2MU4').setLogic( d.MU4.x(2) & d.TOPO_0DR03_eEM7ab_CJ15ab & physcond) + + MenuItem('L1_BPH-0M9-eEM7-eEM5_MU5VF').setLogic( d.MU5VF & d.TOPO_0INVM9_eEM7ab_eEMab & physcond) + MenuItem('L1_BPH-0M9-eEM7-eEM5_2MU3V').setLogic( d.MU3V.x(2) & d.TOPO_0INVM9_eEM7ab_eEMab & physcond) + MenuItem('L1_BPH-0DR3-eEM7jJ15').setLogic( d.TOPO_0DR03_eEM7ab_CjJ15ab & physcond) + MenuItem('L1_BPH-0DR3-eEM7jJ15_MU5VF').setLogic( d.MU5VF & d.TOPO_0DR03_eEM7ab_CjJ15ab & physcond) + MenuItem('L1_BPH-0DR3-eEM7jJ15_2MU3V').setLogic( d.MU3V.x(2) & d.TOPO_0DR03_eEM7ab_CjJ15ab & physcond) + MenuItem("L1_JPSI-1M5-eEM7" ).setLogic( d.TOPO_1INVM5_eEM7s1_eEMs6 & physcond) MenuItem("L1_JPSI-1M5-eEM12").setLogic( d.TOPO_1INVM5_eEM12s1_eEMs6 & physcond) @@ -1573,55 +1535,47 @@ class ItemDef: MenuItem('L1_jMJJ-400-NFF').setLogic( d.TOPO_400INVM_jJ30s6_AjJ20s6 & physcond) MenuItem('L1_jMJJ-500-NFF').setLogic( d.TOPO_500INVM_jJ30s6_AjJ20s6 & physcond) MenuItem('L1_jMJJ-700-NFF').setLogic( d.TOPO_700INVM_jJ30s6_AjJ20s6 & physcond) - MenuItem('L1_MU6_jMJJ-300-NFF').setLogic( d.MU6 & d.TOPO_300INVM_jJ30s6_AjJ20s6 & physcond) - MenuItem('L1_eEM18M_jMJJ-300-NFF').setLogic( d.eEM18M & d.TOPO_300INVM_jJ30s6_AjJ20s6 & physcond) # modified from ATR-15062 + MenuItem('L1_MU5VF_jMJJ-300-NFF').setLogic( d.MU5VF & d.TOPO_300INVM_jJ30s6_AjJ20s6 & physcond) + MenuItem('L1_eEM15M_jMJJ-300-NFF').setLogic( d.eEM15M & d.TOPO_300INVM_jJ30s6_AjJ20s6 & physcond) # modified from ATR-15062 MenuItem('L1_jHT150-jJ20s5pETA31_jMJJ-400-CF').setLogic( d.TOPO_HT150_jJ20s5pETA31 & d.TOPO_400INVM_AjJ30s6pETA31_AjJ20s6p31ETA49 & physcond) MenuItem('L1_jMJJ-400-CF').setLogic( d.TOPO_400INVM_AjJ30s6pETA31_AjJ20s6p31ETA49 & physcond) - MenuItem('L1_jJ50_DETA20-jJ50J').setLogic( d.J50 & d.TOPO_0DETA20_J50s1_Js2 & physcond) + MenuItem('L1_jJ50_DETA20-jJ50J').setLogic( d.J50 & d.TOPO_0DETA20_jJ50s1_jJs2 & physcond) # Needed? MenuItem('L1_DPHI-2eEM3').setLogic( d.TOPO_27DPHI32_eEMs1_eEMs6 & physcond) MenuItem('L1_DPHI-2eEM3_VTE5p24ETA49').setLogic( d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE524ETA49) & physcond).setTriggerType(TT.calo) MenuItem('L1_DPHI-2eEM3_VTE5p24ETA49_ALFA_EINE').setLogic( d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE524ETA49) & ALFA_EINE & physcond).setTriggerType(TT.alfa) MenuItem('L1_DPHI-2eEM3_VTE10').setLogic( d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE10) & physcond).setTriggerType(TT.calo) - MenuItem('L1_DPHI-2eEM7_VTE50').setLogic( d.eEM7.x(2) & d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE50) & physcond).setTriggerType(TT.calo) + MenuItem('L1_DPHI-2eEM8_VTE50').setLogic( d.eEM8.x(2) & d.TOPO_27DPHI32_eEMs1_eEMs6 & Not(d.TE50) & physcond).setTriggerType(TT.calo) #needed? - MenuItem('L1_BTAG-MU4J15').setLogic( d.TOPO_0DR04_MU4ab_CJ15ab & physcond) - MenuItem('L1_BTAG-MU4J30').setLogic( d.TOPO_0DR04_MU4ab_CJ30ab & physcond) - MenuItem('L1_BTAG-MU6J20').setLogic( d.TOPO_0DR04_MU6ab_CJ20ab & d.MU6 & physcond) - MenuItem('L1_BTAG-MU6J25').setLogic( d.TOPO_0DR04_MU6ab_CJ25ab & d.MU6 & physcond) - MenuItem('L1_BTAG-MU4J20').setLogic( d.TOPO_0DR04_MU4ab_CJ20ab & physcond) - MenuItem('L1_3J15_BTAG-MU4J15').setLogic( d.J15.x(3) & d.TOPO_0DR04_MU4ab_CJ15ab & physcond) - MenuItem('L1_3J15_BTAG-MU4J30').setLogic( d.J15.x(3) & d.TOPO_0DR04_MU4ab_CJ30ab & physcond) - MenuItem('L1_3J15_BTAG-MU6J25').setLogic( d.J15.x(3) & d.TOPO_0DR04_MU6ab_CJ25ab & d.MU6 & physcond) - MenuItem('L1_3J20_BTAG-MU4J20').setLogic( d.J20.x(3) & d.TOPO_0DR04_MU4ab_CJ20ab & physcond) - + MenuItem('L1_BTAG-MU3VjJ15').setLogic( d.TOPO_0DR04_MU4ab_CjJ15ab & physcond) + MenuItem('L1_BTAG-MU5VFjJ20').setLogic( d.TOPO_0DR04_MU6ab_CjJ20ab & d.MU5VF & physcond) #needed? - MenuItem('L1_BPH-2M8-2MU4_BPH-0DR15-2MU4' ).setLogic( d.TOPO_2INVM8_2MU4ab & d.TOPO_0DR15_2MU4ab & physcond) # 78% for Bs,J/psi - MenuItem('L1_BPH-2M9-2MU4_BPH-0DR15-2MU4' ).setLogic( d.TOPO_2INVM9_2MU4ab & d.TOPO_0DR15_2MU4ab & physcond) # 78% for Bs,J/psi - MenuItem('L1_BPH-7M15-2MU4_BPH-0DR24-2MU4' ).setLogic( d.TOPO_7INVM15_2MU4ab & d.TOPO_0DR24_2MU4ab & physcond) # 78% for Upsi - MenuItem('L1_BPH-2M8-MU6MU4_BPH-0DR15-MU6MU4' ).setLogic( d.TOPO_2INVM8_MU6ab_MU4ab & d.TOPO_0DR15_MU6ab_MU4ab & d.MU6 & physcond) # 86% for Bs,J/psi - MenuItem('L1_BPH-2M9-MU6MU4_BPH-0DR15-MU6MU4' ).setLogic( d.TOPO_2INVM9_MU6ab_MU4ab & d.TOPO_0DR15_MU6ab_MU4ab & d.MU6 & physcond) - MenuItem('L1_BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4').setLogic( d.TOPO_8INVM15_MU6ab_MU4ab & d.TOPO_0DR22_MU6ab_MU4ab & d.MU6 & physcond) # 86% for Upsi - MenuItem('L1_BPH-2M9-2MU6_BPH-2DR15-2MU6' ).setLogic( d.TOPO_2INVM9_2MU6ab & d.TOPO_2DR15_2MU6ab & d.MU6.x(2) & physcond) # 96% for Bs,J/psi - MenuItem('L1_BPH-2M9-2MU6' ).setLogic( d.TOPO_2INVM9_2MU6ab & d.MU6.x(2) & physcond) - MenuItem('L1_BPH-8M15-2MU6_BPH-0DR22-2MU6' ).setLogic( d.TOPO_8INVM15_2MU6ab & d.TOPO_0DR22_2MU6ab & d.MU6.x(2) & physcond) # 96% for Upsi - MenuItem('L1_BPH-8M15-2MU4-BO' ).setLogic( d.TOPO_8INVM15_2CMU4ab & physcond) # 96% for Upsi + MenuItem('L1_BPH-2M8-2MU3V_BPH-0DR15-2MU3V' ).setLogic( d.TOPO_2INVM8_2MU4ab & d.TOPO_0DR15_2MU4ab & physcond) # 78% for Bs,J/psi + MenuItem('L1_BPH-2M9-2MU3V_BPH-0DR15-2MU3V' ).setLogic( d.TOPO_2INVM9_2MU4ab & d.TOPO_0DR15_2MU4ab & physcond) # 78% for Bs,J/psi + MenuItem('L1_BPH-7M15-2MU3V_BPH-0DR24-2MU3V' ).setLogic( d.TOPO_7INVM15_2MU4ab & d.TOPO_0DR24_2MU4ab & physcond) # 78% for Upsi + MenuItem('L1_BPH-2M8-MU5VFMU3V_BPH-0DR15-MU5VFMU3V' ).setLogic( d.TOPO_2INVM8_MU6ab_MU4ab & d.TOPO_0DR15_MU6ab_MU4ab & d.MU5VF & physcond) # 86% for Bs,J/psi + MenuItem('L1_BPH-2M9-MU5VFMU3V_BPH-0DR15-MU5VFMU3V' ).setLogic( d.TOPO_2INVM9_MU6ab_MU4ab & d.TOPO_0DR15_MU6ab_MU4ab & d.MU5VF & physcond) + MenuItem('L1_BPH-8M15-MU5VFMU3V_BPH-0DR22-MU5VFMU3V').setLogic( d.TOPO_8INVM15_MU6ab_MU4ab & d.TOPO_0DR22_MU6ab_MU4ab & d.MU5VF & physcond) # 86% for Upsi + MenuItem('L1_BPH-2M9-2MU5VF_BPH-2DR15-2MU5VF' ).setLogic( d.TOPO_2INVM9_2MU6ab & d.TOPO_2DR15_2MU6ab & d.MU5VF.x(2) & physcond) # 96% for Bs,J/psi + MenuItem('L1_BPH-2M9-2MU5VF' ).setLogic( d.TOPO_2INVM9_2MU6ab & d.MU5VF.x(2) & physcond) + MenuItem('L1_BPH-8M15-2MU5VF_BPH-0DR22-2MU5VF' ).setLogic( d.TOPO_8INVM15_2MU6ab & d.TOPO_0DR22_2MU6ab & d.MU5VF.x(2) & physcond) # 96% for Upsi + MenuItem('L1_BPH-8M15-2MU3V-BO' ).setLogic( d.TOPO_8INVM15_2CMU4ab & physcond) # 96% for Upsi # Barrel and BarrelOnly items w/o topo selection - MenuItem('L1_2MU4-B' ).setLogic( d.MU4.x(2) & d.TOPO_MULT_CMU4ab & physcond) # 2MU4_Barrel - MenuItem('L1_2MU6-B' ).setLogic( d.MU6.x(2) & d.TOPO_MULT_CMU6ab & physcond) # 2MU6_Barrel - MenuItem('L1_MU6_2MU4-B').setLogic( d.MU6 & d.MU4.x(2) & d.TOPO_MULT_CMU4ab & physcond) # MU6_2MU4_Barrel, + MenuItem('L1_2MU3V-B' ).setLogic( d.MU3V.x(2) & d.TOPO_MULT_CMU4ab & physcond) # 2MU4_Barrel + MenuItem('L1_2MU5VF-B' ).setLogic( d.MU5VF.x(2) & d.TOPO_MULT_CMU6ab & physcond) # 2MU6_Barrel + MenuItem('L1_MU5VF_2MU3V-B').setLogic( d.MU5VF & d.MU3V.x(2) & d.TOPO_MULT_CMU4ab & physcond) # MU6_2MU4_Barrel, # Barrel and BarrelOnly variants of L1Topo items - MenuItem('L1_BPH-2M8-2MU4-B_BPH-0DR15-2MU4' ).setLogic( d.TOPO_2INVM8_CMU4ab_MU4ab & d.TOPO_0DR15_2MU4ab & physcond) # 78% for Bs,J/psi + OneBarrel - MenuItem('L1_BPH-7M15-2MU4_BPH-0DR24-2MU4-B' ).setLogic( d.TOPO_7INVM15_2MU4ab & d.TOPO_0DR24_2MU4ab & d.TOPO_MULT_CMU4ab & physcond) # 78% for Upsi + OneBarrel - MenuItem('L1_BPH-7M15-2MU4_BPH-0DR24-2MU4-BO' ).setLogic( d.TOPO_7INVM15_2MU4ab & d.TOPO_0DR24_2CMU4ab & physcond) # 78% for Upsi + BarrelOnly - MenuItem('L1_BPH-2M8-MU6MU4-B_BPH-0DR15-MU6MU4' ).setLogic( d.TOPO_2INVM8_ONEBARREL_MU6ab_MU4ab & d.TOPO_0DR15_MU6ab_MU4ab & d.MU6 & physcond) # 86% for Bs,J/psi + OneBarrel - MenuItem('L1_BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4-B').setLogic( d.TOPO_8INVM15_MU6ab_MU4ab & d.TOPO_0DR22_MU6ab_MU4ab & d.TOPO_MULT_CMU4ab & d.MU6 & physcond) - MenuItem('L1_BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4-BO').setLogic( d.TOPO_8INVM15_MU6ab_MU4ab & d.TOPO_0DR22_MU6ab_MU4ab & d.TOPO_MULT_CMU4ab.x(2) & d.TOPO_MULT_CMU6ab & d.MU6 & physcond) - MenuItem('L1_BPH-2M8-2MU4').setLogic( d.TOPO_2INVM8_2MU4ab & physcond) # backup 71% for Bs,J/psi - MenuItem('L1_BPH-8M15-MU6MU4').setLogic( d.TOPO_8INVM15_MU6ab_MU4ab & d.MU6 & physcond) # backup 71% for Upsi - MenuItem('L1_BPH-8M15-2MU6').setLogic( d.TOPO_8INVM15_2MU6ab & d.MU6.x(2) & physcond) # backup 95% for Upsi + MenuItem('L1_BPH-2M8-2MU3V-B_BPH-0DR15-2MU3V' ).setLogic( d.TOPO_2INVM8_CMU4ab_MU4ab & d.TOPO_0DR15_2MU4ab & physcond) # 78% for Bs,J/psi + OneBarrel + MenuItem('L1_BPH-7M15-2MU3V_BPH-0DR24-2MU3V-B' ).setLogic( d.TOPO_7INVM15_2MU4ab & d.TOPO_0DR24_2MU4ab & d.TOPO_MULT_CMU4ab & physcond) # 78% for Upsi + OneBarrel + MenuItem('L1_BPH-7M15-2MU3V_BPH-0DR24-2MU3V-BO' ).setLogic( d.TOPO_7INVM15_2MU4ab & d.TOPO_0DR24_2CMU4ab & physcond) # 78% for Upsi + BarrelOnly + MenuItem('L1_BPH-2M8-MU5VFMU3V-B_BPH-0DR15-MU5VFMU3V' ).setLogic( d.TOPO_2INVM8_ONEBARREL_MU6ab_MU4ab & d.TOPO_0DR15_MU6ab_MU4ab & d.MU5VF & physcond) # 86% for Bs,J/psi + OneBarrel + MenuItem('L1_BPH-8M15-MU5VFMU3V_BPH-0DR22-MU5VFMU3V-B').setLogic( d.TOPO_8INVM15_MU6ab_MU4ab & d.TOPO_0DR22_MU6ab_MU4ab & d.TOPO_MULT_CMU4ab & d.MU5VF & physcond) + MenuItem('L1_BPH-8M15-MU5VFMU3V_BPH-0DR22-MU5VFMU3V-BO').setLogic( d.TOPO_8INVM15_MU6ab_MU4ab & d.TOPO_0DR22_MU6ab_MU4ab & d.TOPO_MULT_CMU4ab.x(2) & d.TOPO_MULT_CMU6ab & d.MU5VF & physcond) + MenuItem('L1_BPH-2M8-2MU3V').setLogic( d.TOPO_2INVM8_2MU4ab & physcond) # backup 71% for Bs,J/psi + MenuItem('L1_BPH-8M15-MU5VFMU3V').setLogic( d.TOPO_8INVM15_MU6ab_MU4ab & d.MU5VF & physcond) # backup 71% for Upsi + MenuItem('L1_BPH-8M15-2MU5VF').setLogic( d.TOPO_8INVM15_2MU6ab & d.MU5VF.x(2) & physcond) # backup 95% for Upsi except NameError as ex: exc_type, exc_value, exc_traceback = sys.exc_info() diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/MonitorDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/MonitorDef.py index 28775cbd93afa0eb20f71335b930509b316b5e29..b04cc345f957f57428ce35a682fecf405d3626fe 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/MonitorDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/MonitorDef.py @@ -75,7 +75,7 @@ class MonitorDef: cThr = {} cThr[1] = [ 'AFP_NSA', 'AFP_NSC', 'AFP_FSA', 'AFP_FSC', 'AFP_FSA_TOF_T0', 'AFP_FSC_TOF_T0', 'AFP_FSA_TOF_T1', 'AFP_FSC_TOF_T1', 'AFP_FSA_TOF_T2', 'AFP_FSC_TOF_T2', 'AFP_FSA_TOF_T3', 'AFP_FSC_TOF_T3', - 'BPTX0', 'BPTX1', 'LUCID_C', 'J20', 'MU4', 'TE50', 'XE35', 'XE60', + 'BPTX0', 'BPTX1', 'LUCID_C', 'J20', 'MU3V', 'TE50', 'XE35', 'XE60', 'MBTS_A0', 'MBTS_A1', 'MBTS_A2', 'MBTS_A3', 'MBTS_A4', 'MBTS_A5', 'MBTS_A6', 'MBTS_A7', 'MBTS_A8', 'MBTS_A9', 'MBTS_A10', 'MBTS_A11', 'MBTS_A12', 'MBTS_A13', 'MBTS_A14', 'MBTS_A15', 'MBTS_C0', 'MBTS_C1', 'MBTS_C2', 'MBTS_C3', 'MBTS_C4', 'MBTS_C5', 'MBTS_C6', 'MBTS_C7', @@ -111,7 +111,7 @@ class MonitorDef: monItems[TBP|TAP|TAV] = [ "L1_EM3","L1_EM20VH","L1_EM22VHI", - "L1_MU4","L1_MU10","L1_MU20", + "L1_MU3V","L1_MU8F","L1_MU14FCH", "L1_TAU12", "L1_TAU12IT", "L1_TAU20", "L1_TAU60", "L1_J12", "L1_J20", "L1_J100", "L1_J400", "L1_J20p31ETA49", "L1_J30p31ETA49", "L1_XE35", "L1_XE60", @@ -121,14 +121,14 @@ class MonitorDef: "L1_BPTX0_BGRP0","L1_BPTX1_BGRP0", "L1_CALREQ2", "L1_AFP_NSC","L1_AFP_FSC", - "L1_BPH-2M8-2MU4","L1_BPH-2M8-MU6MU4_BPH-0DR15-MU6MU4","L1_BPH-2M9-2MU6_BPH-2DR15-2MU6", - "L1_MU6MU4-BO","L1_2MU4-B", + "L1_BPH-2M8-2MU3V","L1_BPH-2M8-MU5VFMU3V_BPH-0DR15-MU5VFMU3V","L1_BPH-2M9-2MU5VF_BPH-2DR15-2MU5VF", + "L1_MU5VFMU3V-BO","L1_2MU3V-B", "L1_LFV-EM8I", "L1_TGC_BURST", "L1_LLP-NOMATCH", "L1_DR-TAU20ITAU12I", "L1_HT190-J15s5pETA21", - "L1_3J15_BTAG-MU4J15", + "L1_3J15_BTAG-MU3VJ15", "L1_MJJ-900", "L1_J40_DPHI-J20s2XE50", "L1_KF-XE55", diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py index 6a559d244ed160f2a79fb04ff3bf9040ac9fd0c1..a12a6ff9238c94fc7687bda17d35a7f6993762bf 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py @@ -1,6 +1,6 @@ -# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -from ..Base.Thresholds import MuonThreshold, EMThreshold, TauThreshold, JetThreshold, XEThreshold, MBTSThreshold, MBTSSIThreshold, NimThreshold +from ..Base.Thresholds import MuonThreshold, EMThreshold, eTauThreshold, jTauThreshold, cTauThreshold, JetThreshold, XEThreshold, MBTSThreshold, MBTSSIThreshold, NimThreshold class ThresholdDef: @@ -67,61 +67,63 @@ class ThresholdDef: MuonThreshold( "MU8EOF" ).setThrValue( thr=8 ).setTGCFlags("F").setRegion("EC,FW") # forward muon, commissioning MuonThreshold( "MU3EOF" ).setThrValue( thr=3, ba=4 ).setTGCFlags("F").setRegion("EC,FW") # forward muon, commissioning - # backward compatible threshold names (definition like above) - MuonThreshold( "MU4" ).setThrValue( thr=3, ba=4 ) # similar to Run-2 MU4 efficiency - MuonThreshold( "MU6" ).setThrValue( thr=5, ba=6 ).setTGCFlags("F") # similar to Run-2 MU6 - MuonThreshold( "MU10").setThrValue( thr=8 ).setTGCFlags("F") # similar to Run-2 MU10 - MuonThreshold( "MU11").setThrValue( thr=8, ba=10 ).setTGCFlags("F") # similar to Run-2 MU11 - MuonThreshold( "MU15").setThrValue( thr=12).setTGCFlags("F & c & H") # guess - MuonThreshold( "MU20").setThrValue( thr=14 ).setTGCFlags("F & C & H") # similar to Run-2 MU20 - MuonThreshold( "MU21" ).setThrValue( thr=14 ).setTGCFlags("F & C & H").setExclusionList("rpcFeet") # similar to Run-2 MU21 - # special threshold for magnet-off menu MuonThreshold( "MU0").setThrValue( thr=0 ) # EM - for thrV in [3, 7, 8, 10, 15, 20, 22]: - EMThreshold('eEM%i' % thrV, 'eEM').addThrValue(thrV) + for thrV in [3, 5, 8, 15, 20, 22]: + #EMThreshold('eEM%i' % thrV, 'eEM').addThrValue(thrV) + ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM%i'% thrV, 'eEM'), pt=thrV, shift_set = 1 ) # L section (used to be VH in Run2) - ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM8L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=8, shift_set = 1 ) - ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM10L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=10, shift_set = 1 ) - ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM15L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=15, shift_set = 1 ) - ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM20L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=20, shift_set = 1 ) + ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM8L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=8, shift_set = 1 ) + ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM10L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=10, shift_set = 1 ) + ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM15L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=15, shift_set = 1 ) + ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM20L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=20, shift_set = 1 ) + ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM22L', 'eEM').setIsolation( reta = "Loose", wstot = "Loose", rhad = "Loose" ), pt=22, shift_set = 1 ) # M section (used to be VHI in Run2) + ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM8M', 'eEM').setIsolation( reta = "Medium", wstot = "Medium", rhad = "Medium" ), pt=8, shift_set = 1 ) ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM15M', 'eEM').setIsolation( reta = "Medium", wstot = "Medium", rhad = "Medium" ), pt=15, shift_set = 1 ) - ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM18M', 'eEM').setIsolation( reta = "Medium", wstot = "Medium", rhad = "Medium" ), pt=18, shift_set = 1 ) ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM20M', 'eEM').setIsolation( reta = "Medium", wstot = "Medium", rhad = "Medium" ), pt=20, shift_set = 1 ) ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM22M', 'eEM').setIsolation( reta = "Medium", wstot = "Medium", rhad = "Medium" ), pt=22, shift_set = 1 ) # T section (used to be VHIM in Run2) - ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM22T', 'eEM').setIsolation( reta = "Tight", wstot = "Tight", rhad = "Tight" ), pt=22, shift_set = 1 ) - + ThresholdDef.addVaryingThrValues( EMThreshold( 'eEM22T', 'eEM').setIsolation( reta = "Tight", wstot = "Tight", rhad = "Tight" ), pt=22, shift_set = 1 ) - # TAU + # eTAU for et in [8, 12, 20, 25, 40, 60, 100]: - TauThreshold('eTAU%i' % et, 'eTAU').setEt(et) + eTauThreshold('eTAU%i' % et, 'eTAU').setEt(et) - # TODO: missing isolation thresholds - for et in [12,20, 25]: - TauThreshold('eTAU%iM' % et, 'eTAU').setEt(et) - # TODO: missing hadronic isolation + for et in [12]: + eTauThreshold('eTAU%iL' % et, 'eTAU').setEt(et).setIsolation( isoConeRel = "Loose" ) + for et in [12]: + eTauThreshold('eTAU%iM' % et, 'eTAU').setEt(et).setIsolation( isoConeRel = "Medium" ) for et in [30]: - TauThreshold('eTAU%iH' % et, 'eTAU').setEt(et) + eTauThreshold('eTAU%iH' % et, 'eTAU').setEt(et).setIsolation( fEM = "Had" ) + + # cTAU + for et in [12, 20, 25]: + cTauThreshold('cTAU%iM' % et, 'cTAU').setEt(et).setIsolation( isolation = "Medium" ) + + # jTAU + for et in [12]: + jTauThreshold('jTAU%i' % et, 'jTAU').setEt(et) + for et in [12]: + jTauThreshold('jTAU%iM' % et, 'jTAU').setEt(et).setIsolation( isolation = "Medium" ) # JET - for thrV in [12, 15, 20, 25, 30, 40, 50, 85, 100]: + for thrV in [12, 15, 20, 25, 30, 40, 50, 75, 85, 100, 120, 400]: JetThreshold('jJ%i' % thrV, 'jJ').setPt(thrV).addRange(etamin=-31, etamax=31) # jets are between -31 and 31 -ATR-11526 # Central jet - for (thrV, etamax) in [(12,25), (15,25), (25,23), (35,23), (40,25)]: + for (thrV, etamax) in [(12,25), (15,25), (25,23), (35,23), (40,25), (45,20)]: JetThreshold('jJ%ip0ETA%i' % (thrV, etamax), 'jJ').setPt(thrV).addRange(etamin = -etamax, etamax = etamax) # Standard forward jet - for thrV in [15, 20, 75]: + for thrV in [15, 20, 30, 50, 75]: JetThreshold('jJ%ip31ETA49' % thrV, 'jJ').setPt(thrV).addRange(etamin=31, etamax=49).addRange(etamin=-49, etamax=-31) # XE diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDef.py index 0282a36402da3db8a2875d88c75150ab03b826a4..4f17b22af6be50dfeefb832ba735943f02f54680 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDef.py @@ -31,7 +31,6 @@ class TopoAlgoDef: # SORT alg = AlgConf.eEmSort( name = 'eEMs', inputs = 'eEmTobs', outputs = 'eEMs' ) alg.addgeneric('InputWidth', HW.InputWidthEM) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortEM) alg.addgeneric('OutputWidth', HW.OutputWidthSortEM) alg.addvariable('REtaMin', 0) alg.addvariable('RHadMin', 0) @@ -63,7 +62,6 @@ class TopoAlgoDef: # SELECT alg = AlgConf.eEmSelect( name = 'eEMab', inputs = 'eEmTobs', outputs = 'eEMab' ) alg.addgeneric('InputWidth', HW.InputWidthEM) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectEM ) alg.addgeneric('OutputWidth', HW.OutputWidthSelectEM) alg.addvariable('MinET', 5*_et_conversion) alg.addvariable('REtaMin', 0) @@ -75,7 +73,6 @@ class TopoAlgoDef: alg = AlgConf.eEmSelect( name = 'eEMabl', inputs = 'eEmTobs', outputs = 'eEMabl' ) alg.addgeneric('InputWidth', HW.InputWidthEM) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectEM ) alg.addgeneric('OutputWidth', HW.OutputWidthSelectEM) alg.addvariable('MinET', 8*_et_conversion) alg.addvariable('REtaMin', 1) @@ -87,7 +84,6 @@ class TopoAlgoDef: alg = AlgConf.eEmSelect( name = 'eEMabm', inputs = 'eEmTobs', outputs = 'eEMabm' ) alg.addgeneric('InputWidth', HW.InputWidthEM) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectEM ) alg.addgeneric('OutputWidth', HW.OutputWidthSelectEM) alg.addvariable('MinET', 8*_et_conversion) alg.addvariable('REtaMin', 2) @@ -108,7 +104,6 @@ class TopoAlgoDef: # SORT alg = AlgConf.eTauSort( name = 'eTAUsi', inputs = 'eTauTobs', outputs = 'eTAUsi' ) alg.addgeneric('InputWidth', HW.InputWidthTAU) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortTAU) alg.addgeneric('OutputWidth', HW.OutputWidthSortTAU) alg.addvariable('IsoMask', 2) alg.addvariable('MinEta', 0*_eta_conversion) @@ -147,7 +142,6 @@ class TopoAlgoDef: # SORT alg = AlgConf.MuonSort( name = 'MUs', inputs = 'MuonTobArray', outputs = 'MUs' ) alg.addgeneric('InputWidth', HW.InputWidthMU) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortMU ) alg.addgeneric('OutputWidth', HW.OutputWidthSortMU) alg.addvariable('MinEta', 0*_eta_conversion) alg.addvariable('MaxEta', 25*_eta_conversion) @@ -156,7 +150,6 @@ class TopoAlgoDef: # SELECT alg = AlgConf.MuonSelect( name = 'MUab', inputs = 'MuonTobArray', outputs = 'MUab' ) alg.addgeneric('InputWidth', HW.InputWidthMU) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectMU ) alg.addgeneric('OutputWidth', HW.OutputWidthSelectMU) alg.addvariable('MinET', 4*_et_conversion) alg.addvariable('MinEta', 0*_eta_conversion) @@ -165,7 +158,6 @@ class TopoAlgoDef: alg = AlgConf.MuonSelect( name = 'CMUab', inputs = 'MuonTobArray', outputs = 'CMUab' ) alg.addgeneric('InputWidth', HW.InputWidthMU) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectMU ) alg.addgeneric('OutputWidth', HW.OutputWidthSelectMU) alg.addvariable('MinET', 4*_et_conversion) alg.addvariable('MinEta', 0*_eta_conversion) @@ -175,75 +167,32 @@ class TopoAlgoDef: #LATE alg = AlgConf.MuonSort_1BC( name = 'LMUs', inputs = 'LateMuonTobArray', outputs = 'LMUs' ) alg.addgeneric('InputWidth', HW.InputWidthMU) - #alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortMU ) alg.addgeneric('OutputWidth', HW.OutputWidthSortMU) alg.addgeneric('nDelayedMuons', 1) alg.addvariable('MinEta', 0*_eta_conversion) alg.addvariable('MaxEta', 25*_eta_conversion) tm.registerTopoAlgo(alg) - #jJets inputs # TODO: all lists below still to be fixed - alg = AlgConf.JetNoSort( name = 'AJall', inputs = 'JetTobArray', outputs = 'AJall' ) + #jJets inputs # TODO: switch to new jet TOB list in all algos below + alg = AlgConf.JetNoSort( name = 'AjJall', inputs = 'JetTobArray', outputs = 'AjJall' ) alg.addgeneric('InputWidth', HW.InputWidthJET) alg.addgeneric('OutputWidth', HW.InputWidthJET) - alg.addgeneric('JetSize', HW.DefaultJetSize) tm.registerTopoAlgo(alg) - alg = AlgConf.JetNoSort( name = 'AJjall', inputs = 'JetTobArray', outputs = 'AJjall' ) - alg.addgeneric('InputWidth', HW.InputWidthJET) - alg.addgeneric('OutputWidth', HW.InputWidthJET) - alg.addgeneric('JetSize', 1 if HW.DefaultJetSize.value==2 else 2) - tm.registerTopoAlgo(alg) - - - # for 0MATCH-4AJ20-4AJj15 - alg = AlgConf.JetNoSortMatch( name = 'AJMatchall', inputs = 'JetTobArray', outputs = 'AJMatchall' ) - alg.addgeneric('InputWidth', HW.InputWidthJET) - alg.addgeneric('OutputWidth', HW.InputWidthJET) - alg.addgeneric('JetSize', 2 if HW.DefaultJetSize.value==2 else 1) - alg.addvariable('MinET1', 15) # 4x4 - alg.addvariable('MinET2', 20) # 8x8 - tm.registerTopoAlgo(alg) - - # ab J lists: - #legacy - for jet_type in ['J', 'CJ', 'FJ']: - jetabseta = 49 - _minet = 25 - _mineta=0 - if jet_type=='J': - jetabseta = 31 - _minet = 20 - elif jet_type=='CJ': - jetabseta = 26 - _minet = 15 - elif jet_type=='FJ': - _mineta = 31 - _minet = 15 - alg = AlgConf.JetSelect( name = jet_type+'ab', inputs = 'JetTobArray', outputs = jet_type+'ab' ) - alg.addgeneric('InputWidth', HW.InputWidthJET) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSelectJET ) - alg.addgeneric('OutputWidth', HW.OutputWidthSelectJET) - alg.addgeneric('JetSize', HW.DefaultJetSize.value) - alg.addvariable('MinET', _minet) - alg.addvariable('MinEta', _mineta) - alg.addvariable('MaxEta', jetabseta) - alg.addgeneric('DoEtaCut', 1) - tm.registerTopoAlgo(alg) - #phase1 - for jet_type in ['jJ']: - jetabseta = 49*_eta_conversion - minet = 25*_et_conversion - mineta=0 - if jet_type=='J': - jetabseta = 31*_eta_conversion - minet = 20*_et_conversion - elif jet_type=='CJ': - jetabseta = 26*_eta_conversion - minet = 15*_et_conversion - elif jet_type=='FJ': - mineta = 31*_eta_conversion - minet = 15*_et_conversion + # ab jJ lists: + for jet_type in ['jJ', 'CjJ', 'FjJ']: + jetabseta = 49*_eta_conversion + minet = 25*_et_conversion + mineta= 0*_eta_conversion + if jet_type=='jJ': + jetabseta = 31*_eta_conversion + minet = 20*_et_conversion + elif jet_type=='CjJ': + jetabseta = 26*_eta_conversion + minet = 15*_et_conversion + elif jet_type=='FjJ': + mineta = 31*_eta_conversion + minet = 15*_et_conversion alg = AlgConf.JetSelect( name = jet_type+'ab', inputs = 'JetTobArray', outputs = jet_type+'ab' ) alg.addgeneric('InputWidth', HW.InputWidthJET) alg.addgeneric('OutputWidth', HW.OutputWidthSelectJET) @@ -252,76 +201,31 @@ class TopoAlgoDef: alg.addvariable('MaxEta', jetabseta) tm.registerTopoAlgo(alg) - - alg = AlgConf.JetSort( name = 'AJjs', inputs = 'JetTobArray', outputs = 'AJjs') + #input list needed for ATR-18824 (TODO: to be replaced by fwd jEM) + alg = AlgConf.JetSort( name = 'FjJjs23ETA49', inputs = 'JetTobArray', outputs = 'FjJjs23ETA49') alg.addgeneric('InputWidth', HW.InputWidthJET) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortJET ) alg.addgeneric('OutputWidth', HW.OutputWidthSortJET ) - alg.addgeneric('JetSize', 1 if HW.DefaultJetSize.value==2 else 2) - alg.addvariable('MinEta', 0) - alg.addvariable('MaxEta', 49) - alg.addgeneric('DoEtaCut', 0) - tm.registerTopoAlgo(alg) - - - #input list needed for ATR-18824 - alg = AlgConf.JetSort( name = 'FJjs23ETA49', inputs = 'JetTobArray', outputs = 'FJjs23ETA49') - alg.addgeneric('InputWidth', HW.InputWidthJET) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortJET ) - alg.addgeneric('OutputWidth', HW.OutputWidthSortJET ) - alg.addgeneric('JetSize', 1 if HW.DefaultJetSize.value==2 else 2) - alg.addvariable('MinEta', 23) - alg.addvariable('MaxEta', 49) - alg.addgeneric('DoEtaCut', 1) + alg.addvariable('MinEta', 23*_eta_conversion) + alg.addvariable('MaxEta', 49*_eta_conversion) tm.registerTopoAlgo(alg) - - alg = AlgConf.JetSort( name = 'CJsETA21', inputs = 'JetTobArray', outputs = 'CJsETA21') + alg = AlgConf.JetSort( name = 'CjJsETA21', inputs = 'JetTobArray', outputs = 'CjJsETA21') alg.addgeneric('InputWidth', HW.InputWidthJET) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortJET ) alg.addgeneric('OutputWidth', HW.OutputWidthSortJET ) - alg.addgeneric('JetSize', HW.DefaultJetSize.value) - alg.addvariable('MinEta', 0) - alg.addvariable('MaxEta', 21) + alg.addvariable('MinEta', 0*_eta_conversion) + alg.addvariable('MaxEta', 21*_eta_conversion) tm.registerTopoAlgo(alg) # Sorted J lists: - #legacy - for jet_type in ['AJ', 'FJ']: - jetabseta = 49 - _minet = 25 - _mineta = 0 - if jet_type=='J': - jetabseta = 31 - _minet = 20 - elif jet_type=='CJ': - jetabseta = 26 - _minet = 15 - elif jet_type=='FJ': - _mineta = 31 - _minet = 15 - alg = AlgConf.JetSort( name = jet_type+'s', inputs = 'JetTobArray', outputs = jet_type+'s' ) - alg.addgeneric('InputWidth', HW.InputWidthJET) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortJET ) - alg.addgeneric('OutputWidth', HW.OutputWidthSortJET ) - alg.addgeneric('JetSize', HW.DefaultJetSize.value) - alg.addvariable('MinEta', _mineta) - alg.addvariable('MaxEta', jetabseta) - if jet_type=='FJ': - alg.addgeneric('DoEtaCut', 1) - else: - alg.addgeneric('DoEtaCut', 0) - tm.registerTopoAlgo(alg) - #phase1 - for jet_type in ['AjJ']: - jetabseta = 49*_eta_conversion - mineta = 0*_eta_conversion - if jet_type=='J': - jetabseta = 31*_eta_conversion - elif jet_type=='CJ': - jetabseta = 26*_eta_conversion - elif jet_type=='FJ': - mineta = 31*_eta_conversion + for jet_type in ['AjJ', 'FjJ']: + jetabseta = 49*_eta_conversion + mineta = 0*_eta_conversion + if jet_type=='jJ': + jetabseta = 31*_eta_conversion + elif jet_type=='CjJ': + jetabseta = 26*_eta_conversion + elif jet_type=='FjJ': + mineta = 31*_eta_conversion alg = AlgConf.JetSort( name = jet_type+'s', inputs = 'JetTobArray', outputs = jet_type+'s' ) alg.addgeneric('InputWidth', HW.InputWidthJET) alg.addgeneric('OutputWidth', HW.OutputWidthSortJET ) @@ -329,33 +233,12 @@ class TopoAlgoDef: alg.addvariable('MaxEta', jetabseta) tm.registerTopoAlgo(alg) - - #legacy - for jet_type in ['J','CJ']: - jetabseta = 49 - _minet = 25 - if jet_type=='J': - jetabseta = 31 - _minet = 20 - elif jet_type=='CJ': - jetabseta = 26 - _minet = 15 - alg = AlgConf.JetSort( name = jet_type+'s', inputs = 'JetTobArray', outputs = jet_type+'s' ) - alg.addgeneric('InputWidth', HW.InputWidthJET) - alg.addgeneric('InputWidth1stStage', HW.InputWidth1stStageSortJET ) - alg.addgeneric('OutputWidth', HW.OutputWidthSortJET ) - alg.addgeneric('JetSize', HW.DefaultJetSize.value) - alg.addvariable('MinEta', 0) - alg.addvariable('MaxEta', jetabseta) - alg.addgeneric('DoEtaCut', 1) - tm.registerTopoAlgo(alg) - #phase1 - for jet_type in ['jJ']: - jetabseta = 49*_eta_conversion - if jet_type=='J': - jetabseta = 31*_eta_conversion - elif jet_type=='CJ': - jetabseta = 26*_eta_conversion + for jet_type in ['jJ','CjJ']: + jetabseta = 49*_eta_conversion + if jet_type=='jJ': + jetabseta = 31*_eta_conversion + elif jet_type=='CjJ': + jetabseta = 26*_eta_conversion alg = AlgConf.JetSort( name = jet_type+'s', inputs = 'JetTobArray', outputs = jet_type+'s' ) alg.addgeneric('InputWidth', HW.InputWidthJET) alg.addgeneric('OutputWidth', HW.OutputWidthSortJET ) @@ -363,15 +246,14 @@ class TopoAlgoDef: alg.addvariable('MaxEta', jetabseta) tm.registerTopoAlgo(alg) - - alg = AlgConf.METNoSort( name = 'XENoSort', inputs = 'MetTobArray', outputs = 'XENoSort' ) - + # TODO: replace to new TOB + alg = AlgConf.METNoSort( name = 'jXENoSort', inputs = 'MetTobArray', outputs = 'jXENoSort' ) alg.addgeneric('InputWidth', HW.InputWidthMET) alg.addgeneric('OutputWidth', HW.OutputWidthMET) tm.registerTopoAlgo(alg) - - alg = AlgConf.MetSort( name = 'XE', inputs = 'MetTobArray', outputs = 'XE' ) + # TODO: replace to new TOB + alg = AlgConf.MetSort( name = 'jXE', inputs = 'MetTobArray', outputs = 'jXE' ) alg.addgeneric('InputWidth', HW.InputWidthMET) alg.addgeneric('OutputWidth', HW.OutputWidthMET) tm.registerTopoAlgo(alg) @@ -546,11 +428,8 @@ class TopoAlgoDef: # added for muon-jet: # TODO: to be updated with phase1 muons and jets algoList = [ - {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 4, "olist1" : "ab", "otype2" : "CJ", "ocut2": 15, "olist2" : "ab"}, #0DR04-MU4ab-CJ15ab - {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 4, "olist1" : "ab", "otype2" : "CJ", "ocut2": 20, "olist2" : "ab"}, #0DR04-MU4ab-CJ20ab - {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 4, "olist1" : "ab", "otype2" : "CJ", "ocut2": 30, "olist2" : "ab"}, #0DR04-MU4ab-CJ30ab - {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 6, "olist1" : "ab", "otype2" : "CJ", "ocut2": 20, "olist2" : "ab"}, #0DR04-MU6ab-CJ20ab - {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 6, "olist1" : "ab", "otype2" : "CJ", "ocut2": 25, "olist2" : "ab"}, #0DR04-MU6ab-CJ25ab + {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 4, "olist1" : "ab", "otype2" : "CjJ", "ocut2": 15, "olist2" : "ab"}, #0DR04-MU4ab-CJ15ab + {"minDr": 0, "maxDr": 4, "otype1" : "MU" ,"ocut1": 6, "olist1" : "ab", "otype2" : "CjJ", "ocut2": 20, "olist2" : "ab"}, #0DR04-MU6ab-CJ20ab ] for x in algoList: class d: @@ -803,7 +682,7 @@ class TopoAlgoDef: alg.addvariable('DRCut', 0) #TODO: conversion needed here? tm.registerTopoAlgo(alg) - # TODO: to be updated with phase1 met + # TODO: to be updated with phase1 met, jets xemap = [{"etcut": 0, "Threlist": [ 40, 50, 55, 60, 65, 75 ]}] for x in xemap: class d: @@ -811,11 +690,11 @@ class TopoAlgoDef: for k in x: setattr (d, k, x[k]) log.debug("Define %s", toponame) - inputList = ['XENoSort', 'AJall'] + inputList = ['jXENoSort', 'AjJall'] toponames=[] for minxe in d.Threlist: - toponames.append("KF-XE%s-AJall" % (minxe)) - alg = AlgConf.KalmanMETCorrection( name = "KF-XE-AJall", inputs = inputList, outputs = toponames ) + toponames.append("KF-jXE%s-AjJall" % (minxe)) + alg = AlgConf.KalmanMETCorrection( name = "KF-jXE-AjJall", inputs = inputList, outputs = toponames ) alg.addgeneric('InputWidth', HW.InputWidthJET) alg.addgeneric('NumResultBits', len(toponames)) alg.addvariable('MinET', 0) @@ -853,7 +732,7 @@ class TopoAlgoDef: # (ATR-12748) fat jet trigger with Simple Cone algo # TODO: to be updated with phase1 jets algoList = [ - {"minHT": 111, "otype" : "CJ", "ocut" : 15, "olist" : "ab", "nleading" : HW.OutputWidthSelectJET, "inputwidth": HW.OutputWidthSelectJET, "oeta" : 26}, #SC111-CJ15abpETA26 + {"minHT": 111, "otype" : "CjJ", "ocut" : 15, "olist" : "ab", "nleading" : HW.OutputWidthSelectJET, "inputwidth": HW.OutputWidthSelectJET, "oeta" : 26}, #SC111-CjJ15abpETA26 ] for x in algoList: class d: @@ -896,10 +775,10 @@ class TopoAlgoDef: tm.registerTopoAlgo(alg) - # added for b-phys, 0DR03-eEM7ab-CJ15ab + # added for b-phys, 0DR03-eEM7ab-CjJ15ab # TODO: update with phase1 jets algoList = [ - {"minDr": 0, "maxDr": 3, "otype1" : "eEM" ,"ocut1": 7, "olist1" : "ab", "otype2" : "CJ", "ocut2": 15, "olist2" : "ab"} + {"minDr": 0, "maxDr": 3, "otype1" : "eEM" ,"ocut1": 7, "olist1" : "ab", "otype2" : "CjJ", "ocut2": 15, "olist2" : "ab"} ] for x in algoList: class d: @@ -1034,8 +913,8 @@ class TopoAlgoDef: # TLA deta # TODO: update to phase1 jets algoList = [ - { "minDeta": 0, "maxDeta": 20, "otype" : "J", "ocut1" : 50, "olist" : "s", - "nleading1" : 1, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 0, "nleading2": 2}, #0DETA20-J50s1-Js2 + { "minDeta": 0, "maxDeta": 20, "otype" : "jJ", "ocut1" : 50, "olist" : "s", + "nleading1" : 1, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 0, "nleading2": 2}, #0DETA20-jJ50s1-jJs2 ] for x in algoList: class d: @@ -1124,12 +1003,12 @@ class TopoAlgoDef: # all-jets items # legacy - invm_aj_highmass_map = { "algoname": 'INVM_AJ_HighMass', "Threlist": [ 700], "maxInvm": 9999, - "otype" : "AJ", "ocut1" : 30, "olist" : "s", "nleading1" : 6, + invm_aj_highmass_map = { "algoname": 'INVM_AjJ_HighMass', "Threlist": [ 700], "maxInvm": 9999, + "otype" : "AjJ", "ocut1" : 30, "olist" : "s", "nleading1" : 6, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 20, "nleading2" : 6} - invm_aj_lowmass_map = { "algoname": 'INVM_AJ_LowMass', "Threlist": [ 300], "maxInvm": 9999, - "otype" : "AJ", "ocut1" : 30, "olist" : "s", "nleading1" : 6, + invm_aj_lowmass_map = { "algoname": 'INVM_AjJ_LowMass', "Threlist": [ 300], "maxInvm": 9999, + "otype" : "AjJ", "ocut1" : 30, "olist" : "s", "nleading1" : 6, "inputwidth1": HW.OutputWidthSortJET, "ocut2" : 20, "nleading2" : 6} for x in [invm_aj_highmass_map, invm_aj_lowmass_map ]: @@ -1326,10 +1205,10 @@ class TopoAlgoDef: pass for k in x: setattr (d, k, x[k]) - inputList = [d.otype1 + d.olist1, 'FJjs23ETA49'] + inputList = [d.otype1 + d.olist1, 'FjJjs23ETA49'] toponames=[] for minDphi in d.minDphiList: - toponames.append ("%iINVM-%02dDPHI%i-%s%s%s%s-FJj%ss%s%iETA%i" % (d.minInvm, minDphi, d.maxDphi, + toponames.append ("%iINVM-%02dDPHI%i-%s%s%s%s-FjJj%ss%s%iETA%i" % (d.minInvm, minDphi, d.maxDphi, d.otype1, str(d.ocut1) , d.olist1, str(d.nleading1) if d.olist1=="s" else "", str(d.ocut2) , str(d.nleading2) , d.minEta2, d.maxEta2)) alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = 'ZAFB_DPHI', inputs = inputList, outputs = toponames) @@ -1507,20 +1386,20 @@ class TopoAlgoDef: alg.addvariable('DeltaRMax', 15*15*_dr_conversion*_dr_conversion) tm.registerTopoAlgo(alg) - # CEP_CJ + # CEP_CjJ # TODO: update with phase1 jets, what conversion for Xi? CEPmap = [ - {"algoname": 'CEP_CJ', "minETlist": [50, 60]} + {"algoname": 'CEP_CjJ', "minETlist": [50, 60]} ] for x in CEPmap: class d: pass for k in x: setattr (d, k, x[k]) - inputList = ['CJs'] + inputList = ['CjJs'] toponames=[] for minET in d.minETlist: # noqa: F821 - toponames.append ("CEP-CJ%is6" % (minET)) # noqa: F821 + toponames.append ("CEP-CjJ%is6" % (minET)) # noqa: F821 alg = AlgConf.ExclusiveJets( name = d.algoname, inputs = inputList, outputs = toponames) # noqa: F821 alg.addgeneric('InputWidth', HW.InputWidthJET) # noqa: F821 alg.addgeneric('MaxTob', HW.InputWidthJET) # noqa: F821 diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py index cfba12d44808f43688f8be6f791b765d79ebdc8f..adf3abd213b7210442eceed8a94ddd4294f7fc45 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py @@ -14,46 +14,89 @@ class TopoAlgoDefMultiplicity(object): def registerTopoAlgos(tm): currentAlgoId = 0 - emThresholds = [ - 'eEM3', 'eEM7', 'eEM8', 'eEM8L', 'eEM10', 'eEM10L', 'eEM15', 'eEM15L', 'eEM15M', 'eEM18M', - 'eEM20', 'eEM20L', 'eEM20M', 'eEM22', 'eEM22M', 'eEM22T', + emThresholds_3bits = [ + 'eEM3', 'eEM5', 'eEM8', 'eEM8L', + ] + emThresholds_2bits = [ + 'eEM8M', 'eEM10L', 'eEM15', 'eEM15L', 'eEM15M', + 'eEM20', 'eEM20L', 'eEM20M', 'eEM22', 'eEM22L', 'eEM22M', 'eEM22T', ] - for em in emThresholds: + for em in emThresholds_3bits: alg = EMMultiplicityAlgo( name = em, algoId = currentAlgoId, threshold = em, - nbits = 3) + nbits = 3, classtype='EMMultiplicity') + tm.registerTopoAlgo(alg) + for em in emThresholds_2bits: + alg = EMMultiplicityAlgo( name = em, + algoId = currentAlgoId, + threshold = em, + nbits = 2, classtype='EMMultiplicity') tm.registerTopoAlgo(alg) - # eTAU 3 bits (4 Thresholds) - tauThresholds_3bits = [ "eTAU8", "eTAU12", "eTAU12M", "eTAU20" ] - # eTAU 2 bits (max 12 Thresholds, 16 in production) - tauThresholds_2bits = [ "eTAU20M", "eTAU25", "eTAU25M", "eTAU30H", "eTAU40", "eTAU60", "eTAU100" ] + etauThresholds_3bits = [ 'eTAU8', 'eTAU12', ] + jtauThresholds_3bits = [ 'jTAU12', ] + ctauThresholds_3bits = [ 'cTAU12M' ] + etauThresholds_2bits = [ 'eTAU12L', 'eTAU12M', 'eTAU20', 'eTAU25', 'eTAU30H', 'eTAU40', 'eTAU60', 'eTAU100' ] + jtauThresholds_2bits = [ 'jTAU12M' ] + ctauThresholds_2bits = [ 'cTAU20M', 'cTAU25M', ] - for tau in tauThresholds_3bits: + for tau in etauThresholds_3bits: + alg = TauMultiplicityAlgo( name = tau, + algoId = currentAlgoId, + threshold = tau, + nbits = 3, classtype='eTauMultiplicity') + tm.registerTopoAlgo(alg) + for tau in jtauThresholds_3bits: alg = TauMultiplicityAlgo( name = tau, algoId = currentAlgoId, threshold = tau, - nbits = 3) + nbits = 3, classtype='jTauMultiplicity') tm.registerTopoAlgo(alg) - for tau in tauThresholds_2bits: + for tau in ctauThresholds_3bits: alg = TauMultiplicityAlgo( name = tau, algoId = currentAlgoId, threshold = tau, - nbits = 2) + nbits = 3, classtype='cTauMultiplicity') + tm.registerTopoAlgo(alg) + for tau in etauThresholds_2bits: + alg = TauMultiplicityAlgo( name = tau, + algoId = currentAlgoId, + threshold = tau, + nbits = 2, classtype='eTauMultiplicity') + tm.registerTopoAlgo(alg) + for tau in jtauThresholds_2bits: + alg = TauMultiplicityAlgo( name = tau, + algoId = currentAlgoId, + threshold = tau, + nbits = 2, classtype='jTauMultiplicity') + tm.registerTopoAlgo(alg) + for tau in ctauThresholds_2bits: + alg = TauMultiplicityAlgo( name = tau, + algoId = currentAlgoId, + threshold = tau, + nbits = 2, classtype='cTauMultiplicity') tm.registerTopoAlgo(alg) - jJThresholds = [ "jJ12", "jJ12p0ETA25", "jJ15", "jJ15p0ETA25", "jJ20", "jJ25", "jJ25p0ETA23", "jJ30", - "jJ35p0ETA23", "jJ40p0ETA25", "jJ40", "jJ50", "jJ85", "jJ100", "jJ15p31ETA49", "jJ20p31ETA49", "jJ75p31ETA49" ] - for jJet in jJThresholds: + jJThresholds_3bits = [ 'jJ12', 'jJ12p0ETA25', 'jJ15', 'jJ15p0ETA25', 'jJ20', 'jJ25', 'jJ25p0ETA23', 'jJ30',] + jJThresholds_2bits = [ 'jJ15p31ETA49', 'jJ20p31ETA49', 'jJ30p31ETA49', 'jJ35p0ETA23', 'jJ40', 'jJ40p0ETA25', 'jJ45p0ETA20', + 'jJ50', 'jJ50p31ETA49', 'jJ75', 'jJ75p31ETA49', + 'jJ85', 'jJ100', 'jJ120', 'jJ400',] + + for jJet in jJThresholds_3bits: alg = JetMultiplicityAlgo( name = jJet, algoId = currentAlgoId, threshold = jJet, - nbits = 3) + nbits = 3, classtype='jJetMultiplicity') + tm.registerTopoAlgo(alg) + for jJet in jJThresholds_2bits: + alg = JetMultiplicityAlgo( name = jJet, + algoId = currentAlgoId, + threshold = jJet, + nbits = 2, classtype='jJetMultiplicity') tm.registerTopoAlgo(alg) - gXEThresholds = [ "gXERHO20", "gXERHO30", "gXERHO35", "gXERHO40", "gXERHO45", "gXERHO50", "gXEPUFIT20", "gXEPUFIT50", "gXE50" ] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py index 16d1e9e779504212a3375e68072d6736896c7739..3120572dc843a87c1743886ac848120fa91214e7 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py @@ -17,6 +17,10 @@ def getTypeWideThresholdConfig(ttype): return getConfig_eEM() if ttype == ThrType.eTAU: return getConfig_eTAU() + if ttype == ThrType.cTAU: + return getConfig_cTAU() + if ttype == ThrType.jTAU: + return getConfig_jTAU() if ttype == ThrType.jJ: return getConfig_jJ() if ttype == ThrType.EM: @@ -83,27 +87,87 @@ def getConfig_eTAU(): confObj = odict() confObj["workingPoints"] = odict() confObj["workingPoints"]["Loose"] = [ - odict([("isolation", 16), ("maxEt", 25)]), + odict([("isoConeRel", 0.150), ("isoConeRel_fw", 40), ("fEM", 1), ("fEM_fw", 1), ("maxEt", 60)]), ] confObj["workingPoints"]["Medium"] = [ - odict([("isolation", 17), ("maxEt", 25)]), + odict([("isoConeRel", 0.175), ("isoConeRel_fw", 50), ("fEM", 1), ("fEM_fw", 1), ("maxEt", 60)]), ] confObj["workingPoints"]["Tight"] = [ - odict([("isolation", 18), ("maxEt", 25)]), + odict([("isoConeRel", 0.200), ("isoConeRel_fw", 60), ("fEM", 1), ("fEM_fw", 1), ("maxEt", 60)]), ] - confObj["ptMinToTopo"] = 6 + confObj["workingPoints"]["Had"] = [ + odict([("isoConeRel", 1), ("isoConeRel_fw", 1), ("fEM", 0.2), ("fEM_fw", 10), ("maxEt", 60)]), + ] + confObj["ptMinToTopo"] = 5 confObj["resolutionMeV"] = 100 + + # Check that FW values are integers + for wp in confObj["workingPoints"]: + for ssthr in confObj["workingPoints"][wp]: + for ssthr_i in ssthr: + if "_fw" in ssthr_i: + if not isinstance(ssthr[ssthr_i], int): + raise RuntimeError("Threshold %s in eEM configuration is not an integer!", ssthr_i ) return confObj +def getConfig_cTAU(): + confObj = odict() + confObj["workingPoints"] = odict() + confObj["workingPoints"]["Loose"] = [ + odict([("isolation", 0.40), ("isolation_fw", 40), ("maxEt", 60)]), + ] + confObj["workingPoints"]["Medium"] = [ + odict([("isolation", 0.35), ("isolation_fw", 50), ("maxEt", 60)]), + ] + confObj["workingPoints"]["Tight"] = [ + odict([("isolation", 0.30), ("isolation_fw", 60), ("maxEt", 60)]), + ] + confObj["resolutionMeV"] = 200 + + # Check that FW values are integers + for wp in confObj["workingPoints"]: + for ssthr in confObj["workingPoints"][wp]: + for ssthr_i in ssthr: + if "_fw" in ssthr_i: + if not isinstance(ssthr[ssthr_i], int): + raise RuntimeError("Threshold %s in eEM configuration is not an integer!", ssthr_i ) + return confObj + +def getConfig_jTAU(): + confObj = odict() + confObj["workingPoints"] = odict() + confObj["workingPoints"]["Loose"] = [ + odict([("isolation", 0.40), ("isolation_fw", 40), ("maxEt", 60)]), + ] + confObj["workingPoints"]["Medium"] = [ + odict([("isolation", 0.35), ("isolation_fw", 50), ("maxEt", 60)]), + ] + confObj["workingPoints"]["Tight"] = [ + odict([("isolation", 0.30), ("isolation_fw", 60), ("maxEt", 60)]), + ] + confObj["ptMinToTopo"] = 5 + confObj["resolutionMeV"] = 200 + + # Check that FW values are integers + for wp in confObj["workingPoints"]: + for ssthr in confObj["workingPoints"][wp]: + for ssthr_i in ssthr: + if "_fw" in ssthr_i: + if not isinstance(ssthr[ssthr_i], int): + raise RuntimeError("Threshold %s in eEM configuration is not an integer!", ssthr_i ) + return confObj def getConfig_jJ(): confObj = odict() confObj["ptMinToTopo"] = [ - odict([("etamin",-49), ("etamax",49), ("small", 12), ("large", 12)]) + odict([("etamin",-49), ("etamax",49), ("value", 12)]) ] + confObj["resolutionMeV"] = 200 return confObj +# LEGACY + def getConfig_EM(): confObj = odict() confObj["isolation"] = odict() diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/L1MenuConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/L1MenuConfig.py index c4476a8944ac6f74d533484ca663c474bfc65df0..768810c34bb33bdc85fa1fa91cc5cc385e740421 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/L1MenuConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/L1MenuConfig.py @@ -449,18 +449,31 @@ class L1MenuConfig(object): if currentTopoCategory == AlgCategory.TOPO and connDef["format"] == 'multiplicity': currentTopoCategory = AlgCategory.MULTI algoNames = [] + algoNbits = [] + fpgaNames = [] if connDef["format"] == 'multiplicity': for thrName in connDef["thresholds"]: + nBits = connDef["nbitsDefault"] + if type(thrName)==tuple: + (thrName,nBits) = thrName algoname = "Mult_" + thrName algoNames += [ algoname ] + algoNbits += [ int(nBits) ] + fpgaNames += [''] elif connDef["format"] == 'topological': for algGrp in connDef["algorithmGroups"]: for topodef in algGrp["algorithms"]: algoNames += [ topodef.algoname ] - - for algoName in algoNames: + algoNbits += [ -1 ] + fpgaNames += [str(algGrp['fpga'])] + for algoName, algoBits, fpgaName in zip(algoNames, algoNbits, fpgaNames): algo = self._getTopoAlgo(algoName, currentTopoCategory) - + # check that the output bits of the multiplicity topo algorithms are as many as the output bits of the associated thresholds + if algoBits>0: + if algoBits != algo.nbits: + msg = "Algorithm %s defined with %i bits, but the associated threshold has %i bits " % (algo.name, algo.nbits, algoBits) + raise RuntimeError(msg) + self.l1menu.checkBoardInputs(algo, connDef["name"], fpgaName) # add the decision algorithms to the menu self.l1menu.addTopoAlgo( algo, category = currentTopoCategory ) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_HI_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_HI_v1.py index 9081c013edb9b5b973f0cab3d4974d512c26fd75..9007363d1a9d6042e6e9f7753e96a1230153fa1f 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_HI_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_HI_v1.py @@ -42,41 +42,41 @@ def defineMenu(): 'L1_EM3_EMPTY', 'L1_EM7_EMPTY', 'L1_EM7_UNPAIRED_ISO', 'L1_EM7_FIRSTEMPTY', 'L1_EM20VH_FIRSTEMPTY', # new calo - 'L1_eEM3', 'L1_eEM8', 'L1_eEM10', 'L1_eEM15', 'L1_eEM20', - 'L1_eEM22', 'L1_eEM22M', 'L1_eEM20L', 'L1_eEM20M', + 'L1_eEM3', 'L1_eEM8', 'L1_eEM15', 'L1_eEM20', + 'L1_eEM22', 'L1_eEM22M', ## - # single MU + # MU ## - 'L1_MU4', 'L1_MU6', 'L1_MU10', 'L1_MU11', 'L1_MU20', 'L1_MU21', - 'L1_MU4_EMPTY', 'L1_MU6_EMPTY', 'L1_MU4_FIRSTEMPTY', 'L1_MU11_EMPTY', - 'L1_MU4_UNPAIRED_ISO', + 'L1_MU3V', 'L1_MU5VF', 'L1_MU8F', 'L1_MU8VF', 'L1_MU14FCH', 'L1_MU14FCHR', + 'L1_MU3VF', 'L1_MU8FC', 'L1_MU15VFCH', 'L1_MU10BOM', + 'L1_2MU3V', 'L1_2MU5VF', 'L1_2MU8F', 'L1_MU8VF_2MU5VF', 'L1_MU5VF_2MU3V', + 'L1_3MU3V', 'L1_3MU5VF', 'L1_MU5VF_3MU3V', 'L1_4MU3V', + 'L1_2MU5VF_3MU3V', 'L1_2MU8VF', + + 'L1_2MU14FCH_OVERLAY', + 'L1_MU3V_EMPTY', 'L1_MU5VF_EMPTY', 'L1_MU3V_FIRSTEMPTY', 'L1_MU8VF_EMPTY', + 'L1_MU3V_UNPAIRED_ISO', ## # combined lepton (e and mu) ## 'L1_2EM3', 'L1_2EM7', 'L1_2EM15', 'L1_2EM15VH', 'L1_2EM15VHI', 'L1_2EM20VH', 'L1_EM20VH_3EM10VH', - 'L1_EM7_MU10', - 'L1_2MU4', 'L1_2MU6', 'L1_2MU10', 'L1_2MU20_OVERLAY', 'L1_MU11_2MU6', - 'L1_3MU4', 'L1_MU6_2MU4', 'L1_3MU6', 'L1_4MU4', 'L1_MU6_3MU4', 'L1_2MU6_3MU4', 'L1_2MU11', 'L1_MU11_2MU10', - 'L1_2EM8VH_MU10', 'L1_EM15VH_MU10', 'L1_EM7_MU20', + 'L1_EM7_MU8F', 'L1_2EM8VH_MU8F', 'L1_EM15VH_MU8F', 'L1_EM7_MU14FCH', # combined em - jet 'L1_EM18VHI_3J20', 'L1_EM20VH_3J20', # combined mu - jet - 'L1_MU6_J20', 'L1_MU6_J40', 'L1_MU6_J75', + 'L1_MU3V_J15', + #ATR-13743 - 'L1_MU10_2J20','L1_MU10_3J20', 'L1_MU10_2J15_J20', - 'L1_MU20_J40', - 'L1_MU20_XE30', - 'L1_MU10_2jJ15_jJ20', - 'L1_MU10_2jJ20', - 'L1_MU20_jJ40', - 'L1_MU20_gXERHO30', - 'L1_MU20_J50', + 'L1_MU8F_2J20','L1_MU8F_3J20', 'L1_MU8F_2J15_J20', + 'L1_MU14FCH_J40', + 'L1_MU14FCH_XE30', + 'L1_MU14FCH_J50', # single jet 'L1_J15','L1_J20','L1_J25', 'L1_J30', 'L1_J40', 'L1_J50' ,'L1_J75','L1_J85', 'L1_J100', 'L1_J400', @@ -87,7 +87,7 @@ def defineMenu(): 'L1_J30_EMPTY', 'L1_J30_FIRSTEMPTY', 'L1_J30p31ETA49_EMPTY', 'L1_J30p31ETA49_UNPAIRED_ISO', 'L1_J30p31ETA49_UNPAIRED_NONISO', 'L1_J50_UNPAIRED_ISO', 'L1_J50_UNPAIRED_NONISO', 'L1_J50_ABORTGAPNOTCALIB', 'L1_J100_FIRSTEMPTY', - 'L1_jJ100', + # multi jet 'L1_J45p0ETA21_3J15p0ETA25', @@ -96,12 +96,6 @@ def defineMenu(): 'L1_3J15p0ETA25_XE40', 'L1_6J15', 'L1_J85_3J30', - 'L1_3jJ50', - 'L1_4jJ15', - 'L1_jJ25p0ETA23_2jJ15p31ETA49', - 'L1_jJ40p0ETA25_2jJ25_jJ20p31ETA49', - 'L1_jJ75p31ETA49', - 'L1_jJ85_3jJ30', # multi jet forward 'L1_J25p0ETA23_2J15p31ETA49', @@ -113,26 +107,14 @@ def defineMenu(): 'L1_3J35p0ETA23', 'L1_4J15p0ETA25', 'L1_5J15p0ETA25', - 'L1_3jJ15p0ETA25_gXERHO40', - 'L1_3jJ35p0ETA23', - 'L1_4jJ15p0ETA25', # combined jet 'L1_2J15_XE55', 'L1_J40_XE50', 'L1_2J50_XE40', 'L1_J40_XE60', - # new calo - 'L1_2jJ50_gXERHO40', # XE 'L1_XE35', 'L1_XE40', 'L1_XE45', 'L1_XE50', 'L1_XE55', 'L1_XE60', 'L1_XE30', 'L1_XE300', - # new calo - 'L1_gXERHO50', - 'L1_gXEPUFIT50', - 'L1_gXERHO20', - 'L1_gXEPUFIT20', - 'L1_gXE50', - 'L1_jXE50', # RNDM 'L1_RD0_FILLED', 'L1_RD0_UNPAIRED_ISO', 'L1_RD0_EMPTY', 'L1_RD0_ABORTGAPNOTCALIB', @@ -188,8 +170,8 @@ def defineMenu(): #ATR-17320 - 'L1_CEP-CJ60', - 'L1_CEP-CJ50' , + 'L1_CEP-CjJ60', + 'L1_CEP-CjJ50' , #ATR-21371 'L1_ALFA_ANY', @@ -220,17 +202,6 @@ def defineMenu(): 'L1_EM22VHI' : 11, 'L1_EM3_EMPTY' : 12, 'L1_EM7_EMPTY' : 13, - 'L1_MU4' : 14, - 'L1_MU6' : 15, - 'L1_MU10' : 16, - 'L1_MU11' : 256, - 'L1_MU20' : 18, - 'L1_MU21' : 17, - 'L1_MU4_EMPTY' : 19, - 'L1_MU6_EMPTY' : 66, - 'L1_MU4_FIRSTEMPTY' : 20, - 'L1_MU11_EMPTY' : 21, - 'L1_MU4_UNPAIRED_ISO' : 22, 'L1_2EM3' : 23, 'L1_2EM7' : 24, #'L1_EM30VHI' : 25, @@ -241,28 +212,8 @@ def defineMenu(): 'L1_2EM15VHI' : 31, 'L1_2EM20VH':400, 'L1_EM20VH_3EM10VH':431, - 'L1_2MU4' : 32, - 'L1_2MU6' : 33, - 'L1_2MU10' : 34, - 'L1_2MU11' : 48, - 'L1_2MU20_OVERLAY' : 35, - 'L1_MU11_2MU6' : 37, - 'L1_3MU4' : 38, - 'L1_MU6_2MU4' : 39, - 'L1_3MU6' : 40, - 'L1_4MU4' : 46, 'L1_4J15p0ETA25' : 41, - 'L1_2EM8VH_MU10' : 43, - 'L1_EM15VH_MU10' : 44, - 'L1_EM7_MU20' : 483, - - 'L1_MU11_2MU10' : 49, - 'L1_EM7_MU10':65, - 'L1_MU6_J20' : 88, - 'L1_MU6_J40' : 89, - 'L1_MU6_J75' : 90, - 'L1_MU20_J40' : 428, - 'L1_MU20_XE30' : 433, + 'L1_J15' : 92, 'L1_J20' : 93, 'L1_J25' : 94, @@ -332,33 +283,17 @@ def defineMenu(): 'L1_CEP-CJ60' : 162, 'L1_BCM_AC_UNPAIRED_ISO' : 163, 'L1_CEP-CJ50' : 80, - 'L1_BPH-8M15-2MU4-BO' : 165, - 'L1_MBTS_1_EMPTY' : 164, 'L1_MBTS_1_1_EMPTY' : 168, 'L1_MBTS_2_EMPTY' : 166, - 'L1_EM20VH_3J20' : 26, 'L1_EM18VHI_3J20' : 172, - 'L1_MU10_3J20' : 173, 'L1_2J50_XE40' : 175, 'L1_J40_XE60' : 176, - 'L1_MU10_2J20' : 278, - 'L1_MU20_J50' : 82, - - 'L1_MU10_2J15_J20' : 255, - - 'L1_BPH-0M9-EM7-EM5' : 80, - 'L1_BPH-0DR3-EM7J15' : 84, - 'L1_BPH-0DR3-EM7J15_MU6' : 134, - 'L1_BPH-0M9-EM7-EM5_2MU4' : 153, - 'L1_BPH-0DR3-EM7J15_2MU4' : 156, - 'L1_J25p0ETA23_2J15p31ETA49': 335 , 'L1_J40p0ETA25_2J15p31ETA49' : 181, 'L1_J40p0ETA25_2J25_J20p31ETA49' : 182, - ## noid 'L1_RD0_FILLED' : 200, 'L1_RD0_UNPAIRED_ISO' : 201, @@ -383,61 +318,37 @@ def defineMenu(): 'L1_BCM_AC_CALIB' : 235, 'L1_BCM_CA_CALIB' : 236, 'L1_BCM_Wide_CALIB' : 237, - 'L1_BTAG-MU4J15' : 238, + 'L1_ZB' : 240, - 'L1_BTAG-MU6J20' : 243, - 'L1_jHT150-jJ20s5pETA31_jMJJ-400-CF' : 91, 'L1_HT190-J15pETA21' : 258, 'L1_HT190-J15s5pETA21' : 259, 'L1_HT150-J20pETA31' : 260, 'L1_JPSI-1M5-EM7' : 263, 'L1_JPSI-1M5-EM12' : 264, - - - 'L1_jMJJ-400-NFF-0DPHI22' : 129, - 'L1_jMJJ-400-NFF-0DPHI24' : 133, - 'L1_jMJJ-400-NFF-0DPHI26' : 136, 'L1_MJJ-400-0DPHI20' : 270, 'L1_MJJ-400-0DPHI22' : 272, 'L1_MJJ-400-0DPHI24' : 274, 'L1_MJJ-400-0DPHI26' : 276, 'L1_EM22VH' : 295, - 'L1_BPH-2M9-2MU6_BPH-2DR15-2MU6' : 300, - 'L1_BPH-8M15-2MU6_BPH-0DR22-2MU6' : 301, - 'L1_BPH-8M15-MU6MU4_BPH-0DR22-MU6MU4-BO' : 488, ### ATR-14350 - these should be replaced in 2017 with items 296 and 298 - 'L1_BPH-2M9-2MU4_BPH-0DR15-2MU4' : 426, - 'L1_BPH-2M9-MU6MU4_BPH-0DR15-MU6MU4' : 427, - - 'L1_DY-DR-2MU4' : 315, - 'L1_DY-BOX-2MU6' : 318, - 'L1_LFV-MU6' : 332, - 'L1_LFV-MU11' : 364, 'L1_LFV-EM8I' : 320, 'L1_LFV-EM15I' : 321, - 'L1_jMJJ-700-NFF' : 216, 'L1_MJJ-800' : 327, 'L1_MJJ-400' : 329, - 'L1_jMJJ-300-NFF' : 331, 'L1_MJJ-100' : 333, - 'L1_jMJJ-500-NFF' : 108, 'L1_J50_DETA20-J50J' : 275, 'L1_DPHI-2EM3' : 288, 'L1_HT150-JJ15pETA49' : 334, 'L1_J4-MATCH' : 336, 'L1_LLP-RO' : 338, 'L1_LLP-NOMATCH' : 339, - 'L1_jMJJ-400-CF': 397, 'L1_LAR-EM' : 351, 'L1_LAR-J' : 352, 'L1_LAR-ZEE' : 71, 'L1_LAR-ZEE_LAR-EM' : 285, - 'L1_LATE-MU10_XE50': 354, - 'L1_LATE-MU10_XE40': 466, - 'L1_LATE-MU10_J50' : 355, 'L1_SC111-CJ15' : 356, 'L1_SC85-CJ15' : 357, @@ -445,7 +356,6 @@ def defineMenu(): 'L1_RD0_ABORTGAPNOTCALIB':372, 'L1_3J25p0ETA23' : 373, 'L1_3J35p0ETA23' : 425, - #'L1_MU6_J30p0ETA49_2J20p0ETA49' : 382, #'L1_4J20p0ETA49' : 383, 'L1_HT150-JJ15pETA49_MJJ-400' : 416, @@ -453,38 +363,9 @@ def defineMenu(): 'L1_EM7_UNPAIRED_ISO': 389, 'L1_EM24VHI' : 392, - 'L1_MU6_3MU4' : 36, - 'L1_2MU6_3MU4' : 42, # 'L1_EM20VH_FIRSTEMPTY': 411, 'L1_J100_FIRSTEMPTY': 414, - - - #ATR-19355 - 'L1_BPH-0M10-3MU4' : 143, - - #ATR-18815 - 'L1_LFV-EM8I-MU11' : 190, - 'L1_LFV-EM12I-MU6' : 191, - - #ATR-18824 - 'L1_ZAFB-04DPHI-EM15I' : 152, - 'L1_ZAFB-25DPHI-EM15I' : 157, - 'L1_ZAFB-25DPHI-EM18I' : 194, - - #ATR-19302: - 'L1_DPHI-M70-2EM10I' : 195, - 'L1_DPHI-M70-2EM12I' : 159, - - #ATR-19720 - 'L1_BPH-8M15-0DR22-2MU6' : 299, - 'L1_BPH-2M9-2DR15-2MU6' : 302, - 'L1_BPH-2M9-0DR15-MU6MU4' : 303, - 'L1_BPH-8M15-0DR22-MU6MU4-BO' : 488, - 'L1_BPH-2M9-0DR15-2MU4' : 487, - - #ATR-19510 - 'L1_DY-BOX-2MU4' : 160, # LUCID 'L1_LUCID' : 212, diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_v8.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_v8.py index bf0f75bda3332002f6ce1a1b55f8a161272d41c9..4088e72a0448ca04a1cd0d946e910147c208cb6d 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_v8.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_v8.py @@ -42,37 +42,41 @@ def defineMenu(): 'L1_EM3_EMPTY', 'L1_EM7_EMPTY', 'L1_EM7_UNPAIRED_ISO', 'L1_EM7_FIRSTEMPTY', 'L1_EM20VH_FIRSTEMPTY', # new calo - 'L1_eEM3', 'L1_eEM7', 'L1_eEM8', 'L1_eEM8L', 'L1_eEM10', 'L1_eEM10L', 'L1_eEM15', 'L1_eEM15L', 'L1_eEM15M', - 'L1_eEM18M', 'L1_eEM20', 'L1_eEM20L', 'L1_eEM20M', - 'L1_eEM22', 'L1_eEM22M', 'L1_eEM22T', + 'L1_eEM3', 'L1_eEM5', 'L1_eEM8', 'L1_eEM8L', 'L1_eEM8M', + 'L1_eEM10L', 'L1_eEM15', 'L1_eEM15L', 'L1_eEM15M', + 'L1_eEM20', 'L1_eEM20L', 'L1_eEM20M', + 'L1_eEM22', 'L1_eEM22L', 'L1_eEM22M', 'L1_eEM22T', ## - # single MU + # MU ## - 'L1_MU4', 'L1_MU6', 'L1_MU10', 'L1_MU11', 'L1_MU20', 'L1_MU21', - 'L1_MU4_EMPTY', 'L1_MU6_EMPTY', 'L1_MU4_FIRSTEMPTY', 'L1_MU11_EMPTY', - 'L1_MU4_UNPAIRED_ISO', - - # Run3 'L1_MU3V', 'L1_MU5VF', 'L1_MU8F', 'L1_MU8VF', 'L1_MU14FCH', 'L1_MU14FCHR', 'L1_MU3VF', 'L1_MU8FC', 'L1_MU15VFCH', 'L1_MU10BOM', - 'L1_2MU8F', 'L1_MU8VF_2MU5VF', 'L1_3MU3V', 'L1_3MU5VF', 'L1_MU5VF_3MU3V', 'L1_4MU3V', + 'L1_2MU3V', 'L1_2MU5VF', 'L1_2MU8F', 'L1_MU8VF_2MU5VF', 'L1_MU5VF_2MU3V', + 'L1_3MU3V', 'L1_3MU5VF', 'L1_MU5VF_3MU3V', 'L1_4MU3V', + 'L1_2MU5VF_3MU3V', 'L1_2MU8VF', + + + 'L1_2MU14FCH_OVERLAY', + 'L1_MU3V_EMPTY', 'L1_MU5VF_EMPTY', 'L1_MU3V_FIRSTEMPTY', 'L1_MU8VF_EMPTY', + 'L1_MU3V_UNPAIRED_ISO', ## # combined lepton (e and mu) ## 'L1_2EM3', 'L1_2EM7', 'L1_2EM15', 'L1_2EM15VH', 'L1_2EM15VHI', 'L1_2EM20VH', 'L1_EM20VH_3EM10VH', - 'L1_EM7_MU10', - 'L1_2MU4', 'L1_2MU6', 'L1_2MU10', 'L1_2MU20_OVERLAY', 'L1_MU11_2MU6', - 'L1_3MU4', 'L1_MU6_2MU4', 'L1_3MU6', 'L1_4MU4', 'L1_MU6_3MU4', 'L1_2MU6_3MU4', 'L1_2MU11', 'L1_MU11_2MU10', - 'L1_2EM8VH_MU10', 'L1_EM15VH_MU10', 'L1_EM7_MU20', + 'L1_2EM8VH_MU8F', 'L1_EM15VH_MU8F', 'L1_EM7_MU8F', # single tau 'L1_TAU8', 'L1_TAU12IM', 'L1_TAU20IM', 'L1_TAU40', 'L1_TAU60', 'L1_TAU100', 'L1_TAU8_EMPTY', 'L1_TAU8_FIRSTEMPTY', 'L1_TAU8_UNPAIRED_ISO', 'L1_TAU40_EMPTY', 'L1_TAU40_UNPAIRED_ISO', # new calo - 'L1_eTAU8', 'L1_eTAU12', 'L1_eTAU12M', 'L1_eTAU20', 'L1_eTAU20M', 'L1_eTAU25', 'L1_eTAU25M', + 'L1_eTAU8', + 'L1_eTAU12', 'L1_jTAU12', 'L1_jTAU12M', 'L1_cTAU12M', + 'L1_eTAU12L', 'L1_eTAU12M', + 'L1_eTAU20', 'L1_cTAU20M', + 'L1_eTAU25', 'L1_cTAU25M', 'L1_eTAU30H', 'L1_eTAU40', 'L1_eTAU60', 'L1_eTAU100', @@ -81,13 +85,12 @@ def defineMenu(): # combined tau - lepton 'L1_EM15VHI_2TAU12IM', - 'L1_MU10_TAU12IM', - 'L1_MU10_TAU12IM_J25_2J12', - 'L1_MU10_TAU12IM_3J12', + 'L1_MU8F_TAU12IM', + 'L1_MU8F_TAU12IM_J25_2J12', + 'L1_MU8F_TAU12IM_3J12', 'L1_EM15VHI_2TAU12IM_J25_3J12', - 'L1_MU10_TAU20IM', - 'L1_MU11_TAU20IM', - 'L1_MU10_TAU20IM_J25_2J20', + 'L1_MU8F_TAU20IM', + 'L1_MU8F_TAU20IM_J25_2J20', # combined tau - jet 'L1_TAU20IM_2TAU12IM_J25_2J20_3J12', @@ -99,25 +102,21 @@ def defineMenu(): 'L1_TAU20IM_2J20_XE50', 'L1_EM15VHI_2TAU12IM_XE35', 'L1_EM15VHI_2TAU12IM_4J12', - 'L1_MU10_TAU12IM_XE35', + 'L1_MU8F_TAU12IM_XE35', 'L1_TAU20IM_2TAU12IM_XE35', 'L1_TAU40_2TAU12IM_XE40', # combined em - jet 'L1_EM18VHI_3J20', 'L1_EM20VH_3J20', - - # combined mu - jet - 'L1_MU6_J20', 'L1_MU6_J40', 'L1_MU6_J75', + + # combined mu - jet + 'L1_MU3V_J15', 'L1_BTAG-MU3VjJ15', + #ATR-13743 - 'L1_MU10_2J20','L1_MU10_3J20', 'L1_MU10_2J15_J20', - 'L1_MU20_J40', - 'L1_MU20_XE30', - 'L1_MU10_2jJ15_jJ20', - 'L1_MU10_2jJ20', - 'L1_MU20_jJ40', - 'L1_MU20_gXERHO30', - 'L1_MU20_J50', + 'L1_MU8F_2J20','L1_MU8F_3J20', 'L1_MU8F_2J15_J20', + 'L1_MU14FCH_J40', + 'L1_MU14FCH_XE30', # single jet 'L1_J15','L1_J20','L1_J25', 'L1_J30', 'L1_J40', 'L1_J50' ,'L1_J75','L1_J85', 'L1_J100', 'L1_J400', @@ -128,7 +127,12 @@ def defineMenu(): 'L1_J30_EMPTY', 'L1_J30_FIRSTEMPTY', 'L1_J30p31ETA49_EMPTY', 'L1_J30p31ETA49_UNPAIRED_ISO', 'L1_J30p31ETA49_UNPAIRED_NONISO', 'L1_J50_UNPAIRED_ISO', 'L1_J50_UNPAIRED_NONISO', 'L1_J50_ABORTGAPNOTCALIB', 'L1_J100_FIRSTEMPTY', - 'L1_jJ100', + + # jJ + 'L1_jJ12', 'L1_jJ12p0ETA25', 'L1_jJ15', 'L1_jJ15p0ETA25', 'L1_jJ15p31ETA49', 'L1_jJ20', 'L1_jJ20p31ETA49', 'L1_jJ25', 'L1_jJ25p0ETA23', + 'L1_jJ30', 'L1_jJ30p31ETA49', 'L1_jJ35p0ETA23', 'L1_jJ40', 'L1_jJ40p0ETA25', 'L1_jJ45p0ETA20', 'L1_jJ50', 'L1_jJ50p31ETA49', + 'L1_jJ75', 'L1_jJ75p31ETA49', 'L1_jJ85', + 'L1_jJ100', 'L1_jJ120', 'L1_jJ400', # multi jet 'L1_J45p0ETA21_3J15p0ETA25', @@ -137,12 +141,6 @@ def defineMenu(): 'L1_3J15p0ETA25_XE40', 'L1_6J15', 'L1_J85_3J30', - 'L1_3jJ50', - 'L1_4jJ15', - 'L1_jJ25p0ETA23_2jJ15p31ETA49', - 'L1_jJ40p0ETA25_2jJ25_jJ20p31ETA49', - 'L1_jJ75p31ETA49', - 'L1_jJ85_3jJ30', # multi jet forward 'L1_J25p0ETA23_2J15p31ETA49', @@ -154,15 +152,10 @@ def defineMenu(): 'L1_3J35p0ETA23', 'L1_4J15p0ETA25', 'L1_5J15p0ETA25', - 'L1_3jJ15p0ETA25_gXERHO40', - 'L1_3jJ35p0ETA23', - 'L1_4jJ15p0ETA25', # combined jet 'L1_2J15_XE55', 'L1_J40_XE50', 'L1_2J50_XE40', 'L1_J40_XE60', - # new calo - 'L1_2jJ50_gXERHO40', # XE 'L1_XE35', 'L1_XE40', 'L1_XE45', 'L1_XE50', @@ -229,7 +222,7 @@ def defineMenu(): 'L1_AFP_A','L1_AFP_C', 'L1_AFP_A_AND_C', #'L1_AFP_A_OR_C_J5','L1_AFP_A_AND_C_J5', # J5 not available in legacy menu. Need to update to jJ threshold for low-mu 'L1_AFP_A_OR_C_J12','L1_AFP_A_AND_C_J12', - 'L1_MU6_AFP_A_OR_C','L1_MU6_AFP_A_AND_C','L1_EM7_AFP_A_OR_C','L1_EM7_AFP_A_AND_C', + 'L1_MU5VF_AFP_A_OR_C','L1_MU5VF_AFP_A_AND_C','L1_EM7_AFP_A_OR_C','L1_EM7_AFP_A_AND_C', # med-priority (low mu) 'L1_AFP_A_OR_C','L1_AFP_A_OR_C_MBTS_2', 'L1_AFP_A_AND_C_MBTS_2', @@ -261,10 +254,10 @@ def defineMenu(): # legacy L1Topo 'L1_HT190-J15s5pETA21', - 'L1_BPH-0M9-EM7-EM5_2MU4', - 'L1_BPH-0M9-EM7-EM5_MU6', - 'L1_BPH-0DR3-EM7J15_2MU4', - 'L1_BPH-0DR3-EM7J15_MU6', + 'L1_BPH-0M9-EM7-EM5_2MU3V', + 'L1_BPH-0M9-EM7-EM5_MU5VF', + 'L1_BPH-0DR3-EM7J15_2MU3V', + 'L1_BPH-0DR3-EM7J15_MU5VF', 'L1_JPSI-1M5-EM7', 'L1_JPSI-1M5-EM12', 'L1_MJJ-500-NFF', @@ -287,58 +280,58 @@ def defineMenu(): 'L1_LAR-ZEE-eEM', 'L1_JPSI-1M5-eEM7', 'L1_JPSI-1M5-eEM12', - 'L1_BPH-0M9-eEM7-eEM5', 'L1_BPH-0M9-eEM7-eEM5_MU6', 'L1_BPH-0M9-eEM7-eEM5_2MU4', - 'L1_BPH-0DR3-eEM7J15', 'L1_BPH-0DR3-eEM7J15_MU6', 'L1_BPH-0DR3-eEM7J15_2MU4', + 'L1_BPH-0M9-eEM7-eEM5', 'L1_BPH-0M9-eEM7-eEM5_MU5VF', 'L1_BPH-0M9-eEM7-eEM5_2MU3V', + 'L1_BPH-0DR3-eEM7jJ15', 'L1_BPH-0DR3-eEM7jJ15_MU5VF', 'L1_BPH-0DR3-eEM7jJ15_2MU3V', 'L1_LLP-RO-eEM', 'L1_LLP-NOMATCH-eEM', 'L1_DPHI-2eEM3', 'L1_jHT150-jJ20s5pETA31_jMJJ-400-CF', - 'L1_DY-BOX-2MU6', - 'L1_LFV-eEM8L-MU11', 'L1_LFV-eEM12L-MU6', - 'L1_LFV-MU6', - 'L1_LFV-MU11', + 'L1_DY-BOX-2MU5VF', + 'L1_LFV-eEM8L-MU8VF', 'L1_LFV-eEM12L-MU5VF', + 'L1_LFV-MU5VF', + 'L1_LFV-MU8VF', 'L1_LFV-eEM8L', 'L1_LFV-eEM15L', 'L1_jMJJ-700-NFF', 'L1_jMJJ-300-NFF', 'L1_jMJJ-500-NFF', 'L1_jMJJ-400-CF', - 'L1_eEM18M_jMJJ-300-NFF', + 'L1_eEM15M_jMJJ-300-NFF', - 'L1_10DR-MU20-MU6', #ATR-19376 + 'L1_10DR-MU14FCH-MU5VF', #ATR-19376 #ATR-19720 - 'L1_BPH-2M9-0DR15-2MU4', - 'L1_BPH-8M15-2MU4-BO', - 'L1_BPH-2M9-0DR15-MU6MU4', - 'L1_BPH-8M15-0DR22-MU6MU4-BO', - 'L1_BPH-2M9-2DR15-2MU6', - 'L1_BPH-8M15-0DR22-2MU6', + 'L1_BPH-2M9-0DR15-2MU3V', + 'L1_BPH-8M15-2MU3V-BO', + 'L1_BPH-2M9-0DR15-MU5VFMU3V', + 'L1_BPH-8M15-0DR22-MU5VFMU3V-BO', + 'L1_BPH-2M9-2DR15-2MU5VF', + 'L1_BPH-8M15-0DR22-2MU5VF', # INVM + DPHI 'L1_jMJJ-400-NFF-0DPHI22', 'L1_jMJJ-400-NFF-0DPHI24', 'L1_jMJJ-400-NFF-0DPHI26', - 'L1_LATE-MU10_XE50','L1_LATE-MU10_XE40', 'L1_LATE-MU10_J50', + 'L1_LATE-MU8F_XE50','L1_LATE-MU8F_XE40', 'L1_LATE-MU8F_J50', #ATR-19355 - 'L1_BPH-0M10-3MU4', + 'L1_BPH-0M10-3MU3V', #ATR-18824 'L1_ZAFB-04DPHI-eEM15M', 'L1_ZAFB-25DPHI-eEM15M', #ATR-22109 - 'L1_ZAFB-25DPHI-eEM18M', + #'L1_ZAFB-25DPHI-eEM18M', 'L1_DPHI-M70-2eEM10M', 'L1_DPHI-M70-2eEM12M', #ATR-19302 'L1_DPHI-M70-2eEM12', # ATR-21637 (no shower shape cuts) #ATR-19510 - 'L1_DY-BOX-2MU4', + 'L1_DY-BOX-2MU3V', #ATR-17320 - 'L1_CEP-CJ60', - 'L1_CEP-CJ50', - 'L1_AFP_A_AND_C_TOF_CEP-CJ60','L1_AFP_A_AND_C_TOF_T0T1_CEP-CJ60', + 'L1_CEP-CjJ60', + 'L1_CEP-CjJ50', + 'L1_AFP_A_AND_C_TOF_CEP-CjJ60','L1_AFP_A_AND_C_TOF_T0T1_CEP-CjJ60', ] @@ -474,36 +467,6 @@ def defineMenu(): 'L1_J50_ABORTGAPNOTCALIB' : 123, 'L1_J100_FIRSTEMPTY': 414, - # muon non-physics items - 'L1_MU4_EMPTY' : 19, - 'L1_MU4_FIRSTEMPTY' : 20, - 'L1_MU4_UNPAIRED_ISO' : 22, - 'L1_MU6_EMPTY' : 66, - 'L1_MU11_EMPTY' : 21, - 'L1_2MU20_OVERLAY' : 35, - - # physics items - - # muons - 'L1_MU4' : 14, - 'L1_MU6' : 15, - 'L1_MU10' : 16, - 'L1_MU11' : 256, - 'L1_MU20' : 18, - 'L1_MU21' : 17, - 'L1_2MU4' : 32, - 'L1_2MU6' : 33, - 'L1_2MU10' : 34, - 'L1_2MU11' : 48, - 'L1_MU11_2MU6' : 37, - 'L1_MU11_2MU10' : 49, - 'L1_3MU4' : 38, - 'L1_MU6_2MU4' : 39, - 'L1_3MU6' : 40, - 'L1_4MU4' : 46, - 'L1_MU6_3MU4' : 36, - 'L1_2MU6_3MU4' : 42, - # Legacy L1Calo threholds # EM 'L1_EM3' : 0, @@ -531,9 +494,6 @@ def defineMenu(): 'L1_2EM20VH':400, 'L1_EM20VH_3EM10VH':431, 'L1_4J15p0ETA25' : 41, - 'L1_2EM8VH_MU10' : 43, - 'L1_EM15VH_MU10' : 44, - 'L1_EM7_MU20' : 483, # TAU #'L1_TAU5' : 50, @@ -555,14 +515,6 @@ def defineMenu(): 'L1_EM15VHI_2TAU12IM_J25_3J12' : 61, #'L1_EM15VHI_TAU40_2TAU15' : 62, #'L1_EM20VHI_TAU20IM_2TAU20_J25_3J20' : 69, - 'L1_MU10_TAU12IM' : 63, - 'L1_MU10_TAU12IM_J25_2J12' : 64, - 'L1_MU10_TAU12IM_3J12' : 482, - 'L1_EM7_MU10' : 65, - 'L1_MU10_TAU20IM' : 67, - 'L1_MU11_TAU20IM' : 430, - 'L1_MU10_TAU20IM_J25_2J20' : 377, - 'L1_TAU20IM_2TAU12IM_J25_2J20_3J12' : 70, 'L1_TAU20IM_2TAU12IM_4J12p0ETA25' : 316, @@ -570,14 +522,9 @@ def defineMenu(): #'L1_TAU20IM_2TAU12IM_4J12p0ETA28' : 77, 'L1_TAU20IM_2J20_XE50' : 79, 'L1_TAU25IM_2TAU20IM_2J25_3J20' : 398, - 'L1_MU10_TAU12IM_XE35' : 81, 'L1_TAU20IM_2TAU12IM_XE35' : 83, 'L1_TAU40_2TAU12IM_XE40' : 429, - 'L1_MU6_J20' : 88, - 'L1_MU6_J40' : 89, - 'L1_MU6_J75' : 90, - 'L1_MU20_J40' : 428, - 'L1_MU20_XE30' : 433, + 'L1_J15' : 92, 'L1_J20' : 93, 'L1_J25' : 94, @@ -629,12 +576,6 @@ def defineMenu(): 'L1_TE10' : 158, #'L1_TE30' : 138, - 'L1_MU10_3J20' : 173, - 'L1_MU10_2J20' : 278, - 'L1_MU20_J50' : 82, - 'L1_MU10_2J15_J20' : 255, - #'L1_MU6_J30p0ETA49_2J20p0ETA49' : 382, - 'L1_EM20VH_3J20' : 26, 'L1_EM18VHI_3J20' : 172, diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_v8_inputs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_v8_inputs.py index f47e634882cf150b0e19b90415f4b5f1be2b0a34..79de7994459378b40165ed02b6fe2a37e450cfc1 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_v8_inputs.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_v8_inputs.py @@ -79,25 +79,27 @@ def defineInputsMenu(): topoBoards["Topo1"]["connectors"].append({ # first optical connector "name" : "Topo1Opt0", "format" : "multiplicity", - "nbitsDefault" : 3, + "nbitsDefault" : 2, "type" : "optical", "legacy" : False, - "thresholds" : [ # Topo1A: eFex EM, eFex TAU, gFex Large-R jet, gFex Small-R jet - 'eEM3', 'eEM7', 'eEM8', 'eEM8L', 'eEM10', 'eEM10L', 'eEM15', 'eEM15L', 'eEM15M', - 'eEM18M', 'eEM20', 'eEM20L', 'eEM20M', 'eEM22', 'eEM22M', 'eEM22T', + "thresholds" : [ # Topo1A: eFex EM, eFex TAU, gFex + ('eEM3',3), ('eEM5',3), ('eEM8',3), ('eEM8L',3), + 'eEM8M', 'eEM10L', 'eEM15', 'eEM15L', 'eEM15M', + 'eEM20', 'eEM20L', 'eEM20M', + 'eEM22', 'eEM22L', 'eEM22M', 'eEM22T', ] }) topoBoards["Topo1"]["connectors"].append({ # second optical connector "name" : "Topo1Opt1", "format" : "multiplicity", - "nbitsDefault" : 3, + "nbitsDefault" : 2, "type" : "optical", "fpga" : 0, "legacy" : False, - "thresholds" : [ # Topo1A: eFex EM, eFex TAU, gFex Large-R jet, gFex Small-R jet - 'eTAU8', 'eTAU12', 'eTAU12M', 'eTAU20', - 'eTAU20M', 'eTAU25', 'eTAU25M', 'eTAU30H', 'eTAU40', 'eTAU60', 'eTAU100', + "thresholds" : [ # Topo1A: eFex EM, eFex TAU, gFex + ('eTAU8',3), ('eTAU12',3), 'eTAU12L', 'eTAU12M', 'eTAU20', + 'eTAU25', 'eTAU30H', 'eTAU40', 'eTAU60', 'eTAU100', ] }) @@ -109,24 +111,27 @@ def defineInputsMenu(): "fpga" : 1, "legacy" : False, "thresholds" : [ # Topo1B: jFex small-R jet, jFex large-R jet, combined eFex/jFex TAU, gFex+jFex EX, gFex+jFex SumET, jFex TAU - 'gXERHO20', 'gXERHO30', 'gXERHO35', 'gXERHO40', 'gXERHO45', 'gXERHO50', - 'gXEPUFIT20', 'gXEPUFIT50', 'gXE50', + ('gXERHO20',1), ('gXERHO30',1), ('gXERHO35',1), ('gXERHO40',1), ('gXERHO45',1), ('gXERHO50',1), + ('gXEPUFIT20',1), ('gXEPUFIT50',1), ('gXE50',1), ] }) topoBoards["Topo1"]["connectors"].append({ # fourth optical connector "name" : "Topo1Opt3", "format" : "multiplicity", - "nbitsDefault" : 3, + "nbitsDefault" : 2, "type" : "optical", "fpga" : 1, "legacy" : False, "thresholds" : [ # Topo1B: jFex small-R jet, jFex large-R jet, combined eFex/jFex TAU, gFex+jFex EX, gFex+jFex SumET, jFex TAU - 'jJ12', 'jJ12p0ETA25', 'jJ15', 'jJ15p0ETA25', 'jJ20', 'jJ25', 'jJ25p0ETA23', 'jJ30', - 'jJ35p0ETA23', 'jJ40p0ETA25', 'jJ40', 'jJ50', 'jJ85', 'jJ100', 'jJ15p31ETA49', - 'jJ20p31ETA49', 'jJ75p31ETA49', + ('jTAU12',3), ('cTAU12M',3), 'jTAU12M', 'cTAU20M', 'cTAU25M', - 'jXE50', + ('jJ12',3), ('jJ12p0ETA25',3), ('jJ15',3), ('jJ15p0ETA25',3), 'jJ15p31ETA49', + ('jJ20',3), 'jJ20p31ETA49', ('jJ25',3), ('jJ25p0ETA23',3), ('jJ30',3), 'jJ30p31ETA49', + 'jJ35p0ETA23', 'jJ40', 'jJ40p0ETA25', 'jJ45p0ETA20', 'jJ50', 'jJ50p31ETA49', 'jJ75', 'jJ75p31ETA49', + 'jJ85', 'jJ100', 'jJ120', 'jJ400', + + ('jXE50',1), ] }) @@ -152,8 +157,8 @@ def defineInputsMenu(): TopoMenuDef( 'LATE-MU10s1', outputbits = 7 ), TopoMenuDef( 'MULT-CMU4ab', outputbits = (8,9), outputlines = ['MULT-CMU4ab[0]', 'MULT-CMU4ab[1]'] ), # 2bits # TODO: needed? TopoMenuDef( 'MULT-CMU6ab', outputbits = (10,11), outputlines = ['MULT-CMU6ab[0]', 'MULT-CMU6ab[1]'] ), # 2bits # TODO: needed? - TopoMenuDef( '0DR04-MU4ab-CJ15ab', outputbits = 12 ), # not a primary - TopoMenuDef( '0DR04-MU6ab-CJ20ab', outputbits = 13 ), # not a primary + TopoMenuDef( '0DR04-MU4ab-CjJ15ab', outputbits = 12 ), # not a primary + TopoMenuDef( '0DR04-MU6ab-CjJ20ab', outputbits = 13 ), # not a primary ] }, @@ -178,16 +183,16 @@ def defineInputsMenu(): "fpga" : 1, "clock" : 0, "algorithms" : [ - TopoMenuDef( 'KF-XE-AJall', outputbits = (0,5), outputlines = [ 'KF-XE40-AJall', - 'KF-XE50-AJall', - 'KF-XE55-AJall', - 'KF-XE60-AJall', - 'KF-XE65-AJall', - 'KF-XE75-AJall'] ), - TopoMenuDef( 'ZAFB_DPHI', outputbits = (6,7), outputlines = [ '60INVM-04DPHI32-eEM15abm-FJj15s623ETA49', - '60INVM-25DPHI32-eEM15abm-FJj15s623ETA49'] ), - TopoMenuDef( 'CEP_CJ', outputbits = (8,9), outputlines = [ 'CEP-CJ50s6', - 'CEP-CJ60s6'] ), + TopoMenuDef( 'KF-jXE-AjJall', outputbits = (0,5), outputlines = [ 'KF-jXE40-AjJall', + 'KF-jXE50-AjJall', + 'KF-jXE55-AjJall', + 'KF-jXE60-AjJall', + 'KF-jXE65-AjJall', + 'KF-jXE75-AjJall'] ), + TopoMenuDef( 'ZAFB_DPHI', outputbits = (6,7), outputlines = [ '60INVM-04DPHI32-eEM15abm-FjJj15s623ETA49', + '60INVM-25DPHI32-eEM15abm-FjJj15s623ETA49'] ), + TopoMenuDef( 'CEP_CjJ', outputbits = (8,9), outputlines = [ 'CEP-CjJ50s6', + 'CEP-CjJ60s6'] ), TopoMenuDef( 'INVM_eEMs6', outputbits = (10,11), outputlines = [ '1INVM5-eEM7s1-eEMs6', '1INVM5-eEM12s1-eEMs6'] ), TopoMenuDef( '27DPHI32-eEMs1-eEMs6', outputbits = 12 ), @@ -218,15 +223,15 @@ def defineInputsMenu(): "clock" : 0, "algorithms" : [ TopoMenuDef( 'HT190-jJ15s5pETA21', outputbits = 0 ), - TopoMenuDef( '0DR03-eEM7ab-CJ15ab', outputbits = 1 ), + TopoMenuDef( '0DR03-eEM7ab-CjJ15ab', outputbits = 1 ), TopoMenuDef( 'jINVM_NFF', outputbits = (2,5), outputlines = ['300INVM-jJ30s6-AjJ20s6', '400INVM-jJ30s6-AjJ20s6', '500INVM-jJ30s6-AjJ20s6', '700INVM-jJ30s6-AjJ20s6',] ), # TODO: needed? TopoMenuDef( 'HT150-jJ20s5pETA31', outputbits = 6 ), TopoMenuDef( '400INVM-AjJ30s6pETA31-AjJ20s6p31ETA49', outputbits = 7 ), - TopoMenuDef( 'SC111-CJ15abpETA26', outputbits = 8 ), - TopoMenuDef( '0DETA20-J50s1-Js2', outputbits = 9 ), + TopoMenuDef( 'SC111-CjJ15abpETA26', outputbits = 8 ), + TopoMenuDef( '0DETA20-jJ50s1-jJs2', outputbits = 9 ), TopoMenuDef( '0INVM9-eEM7ab-eEMab', outputbits = 10 ), ] }, @@ -282,14 +287,11 @@ def defineInputsMenu(): muctpiBoard["MuCTPi"]["connectors"].append({ "name" : "MuCTPiOpt0", "format" : "multiplicity", - "nbitsDefault" : 3, + "nbitsDefault" : 2, "type" : "optical", "legacy" : False, "thresholds" : [ # exactly the first 4 thresholds must be defined with 3 bits, all others use 2 bits automatically - # Run2 thresholds - ('MU4',3), ('MU6',3), ('MU10',3), ('MU11',3), 'MU20', 'MU21', - # Run3 ('MU3V',3), ('MU5VF',3), ('MU8F',3), ('MU8VF',3), 'MU14FCH', 'MU14FCHR', # Run3 test/backup 'MU3VF', 'MU8FC', 'MU15VFCH', 'MU10BOM', 'MU20FC', diff --git a/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py b/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py index d3d7339069bae0f9aefb47137aaeeb8c0bc4424f..b355c1f2fec314aee1241f54874050a7f9aa80f7 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py @@ -71,24 +71,24 @@ def generateChains(): emptyStep=makeChainStep("Step2_empty", multiplicity=[]) ## single muon trigger - MuonChains += [ makeChain(name='HLT_mu6fast_L1MU6', L1Thresholds=["MU6"], ChainSteps=[ step1mufast ])] - MuonChains += [ makeChain(name='HLT_mu6Comb_L1MU6', L1Thresholds=["MU6"], ChainSteps=[ step1mufast, step2muComb ])] - MuonChains += [ makeChain(name='HLT_mu6_L1MU6', L1Thresholds=["MU6"], ChainSteps=[ step1mufast, step2muComb, step3muEFSA, step4muEFCB ])] - MuonChains += [ makeChain(name='HLT_mu6msonly_L1MU6', L1Thresholds=["MU6"], ChainSteps=[ step1mufast, emptyStep, step3muEFSA ])] # removed due to muEFSA isuue(?) + MuonChains += [ makeChain(name='HLT_mu6fast_L1MU5VF', L1Thresholds=["MU5VF"], ChainSteps=[ step1mufast ])] + MuonChains += [ makeChain(name='HLT_mu6Comb_L1MU5VF', L1Thresholds=["MU5VF"], ChainSteps=[ step1mufast, step2muComb ])] + MuonChains += [ makeChain(name='HLT_mu6_L1MU5VF', L1Thresholds=["MU5VF"], ChainSteps=[ step1mufast, step2muComb, step3muEFSA, step4muEFCB ])] + MuonChains += [ makeChain(name='HLT_mu6msonly_L1MU5VF', L1Thresholds=["MU5VF"], ChainSteps=[ step1mufast, emptyStep, step3muEFSA ])] # removed due to muEFSA isuue(?) # multi muon trigger # 2muons symmetric step1_2mufast_sym= makeChainStep("Step1_2muFast_sym", [ mufastS], multiplicity=[2]) step2_2muComb_sym= makeChainStep("Step2_2muComb_sym", [ mucombS], multiplicity=[2]) - MuonChains += [ makeChain(name='HLT_2mu6Comb_L12MU6', L1Thresholds=["MU6"], ChainSteps=[ step1_2mufast_sym, step2_2muComb_sym ])] + MuonChains += [ makeChain(name='HLT_2mu6Comb_L12MU5VF', L1Thresholds=["MU5VF"], ChainSteps=[ step1_2mufast_sym, step2_2muComb_sym ])] # 2muons asymmetric (this will change): 2 sequences, 2 seeds step1_2mufast_asym= makeChainStep("Step1_2muFast_asym", [ mufastS, mufastS], multiplicity=[1,1]) step2_2muComb_asym= makeChainStep("Step1_2muComb_asym", [ mucombS, mucombS], multiplicity=[1,1]) - MuonChains += [ makeChain(name='HLT_mu6_mu4_L12MU4', - L1Thresholds=["MU4", "MU6"], + MuonChains += [ makeChain(name='HLT_mu6_mu4_L12MU3V', + L1Thresholds=["MU3V", "MU3V"], ChainSteps=[ step1_2mufast_asym, step2_2muComb_asym ])] @@ -96,7 +96,7 @@ def generateChains(): # Full scan MS tracking step stepFSmuEFSA=makeChainStep("Step_FSmuEFSA", [muEFSAFSSequence()]) stepFSmuEFCB=makeChainStep("Step_FSmuEFCB", [muEFCBFSSequence()]) - MuonChains += [ makeChain(name='HLT_mu6noL1_L1MU6', L1Thresholds=["FSNOSEED"], ChainSteps=[stepFSmuEFSA, stepFSmuEFCB])] + MuonChains += [ makeChain(name='HLT_mu6noL1_L1MU5VF', L1Thresholds=["FSNOSEED"], ChainSteps=[stepFSmuEFSA, stepFSmuEFCB])] testChains += MuonChains @@ -246,11 +246,11 @@ def generateChains(): steps = [step1_dimufast, step2_dimuComb, step3_dimuEFSA, step4_dimuEFCB] BphysChains = [ - makeChain(name='HLT_2mu4_bBmumu_L12MU4', L1Thresholds=["MU4"], ChainSteps=steps), - makeChain(name='HLT_2mu4_bDimu_L12MU4', L1Thresholds=["MU4"], ChainSteps=steps), - makeChain(name='HLT_2mu4_bJpsimumu_L12MU4', L1Thresholds=["MU4"], ChainSteps=steps), - makeChain(name='HLT_2mu6_bJpsimumu_L12MU6', L1Thresholds=["MU6"], ChainSteps=steps), - makeChain(name='HLT_2mu4_bUpsimumu_L12MU4', L1Thresholds=["MU4"], ChainSteps=steps) + makeChain(name='HLT_2mu4_bBmumu_L12MU3V', L1Thresholds=["MU3V"], ChainSteps=steps), + makeChain(name='HLT_2mu4_bDimu_L12MU3V', L1Thresholds=["MU3V"], ChainSteps=steps), + makeChain(name='HLT_2mu4_bJpsimumu_L12MU3V', L1Thresholds=["MU3V"], ChainSteps=steps), + makeChain(name='HLT_2mu6_bJpsimumu_L12MU5VF', L1Thresholds=["MU5VF"], ChainSteps=steps), + makeChain(name='HLT_2mu4_bUpsimumu_L12MU3V', L1Thresholds=["MU3V"], ChainSteps=steps) ] testChains += BphysChains @@ -267,7 +267,7 @@ def generateChains(): comboStep_et_mufast = makeChainStep("Step1_et_mufast", [fastCaloSeq, muFastSequence()], multiplicity=[1,1]) # comboStep_mufast_etcut1_step1 = makeChainStep("Step1_mufast_etcut1", [muFastSequence(), fastCaloSeq], multiplicity=[1,1]) - comboChains = [ makeChain(name='HLT_e3_etcut_mu6_L1EM7_MU10', L1Thresholds=["EM7", "MU10"], ChainSteps=[comboStep_et_mufast ])] + comboChains = [ makeChain(name='HLT_e3_etcut_mu6_L1EM7_MU8F', L1Thresholds=["EM7", "MU8F"], ChainSteps=[comboStep_et_mufast ])] # comboChains += [Chain(name='HLT_mu8fast_e8_etcut1step', ChainSteps=[ comboStep_mufast_etcut1_step1 ])] testChains += comboChains diff --git a/graphics/VP1/VP1Algs/src/VP1Alg.cxx b/graphics/VP1/VP1Algs/src/VP1Alg.cxx index ef8d89df85e79d2efaebc39327a0a6606a699aaa..144c6a8e61ff3f4a4d1e89715343a66c749740ee 100755 --- a/graphics/VP1/VP1Algs/src/VP1Alg.cxx +++ b/graphics/VP1/VP1Algs/src/VP1Alg.cxx @@ -157,13 +157,12 @@ StatusCode VP1Alg::execute() const xAOD::EventInfo *eventInfo = nullptr; StatusCode status = evtStore()->retrieve (eventInfo, "EventInfo"); - if(status.isSuccess()) { - + if(status.isSuccess()) { // Get run/event number: - const unsigned long long eventNumber = eventInfo->eventNumber(); + const unsigned long long eventNumber = eventInfo->eventNumber(); const uint32_t runNumber = eventInfo->runNumber(); msg(MSG::DEBUG) << " Got run number = " << runNumber - << ", event number = " << eventNumber << endmsg; + << ", event number = " << eventNumber << endmsg; // Get time stamp: uint32_t time = eventInfo->timeStamp();//0 means no info. @@ -174,11 +173,19 @@ StatusCode VP1Alg::execute() msg(MSG::INFO) << " Ending application gracefully." << endmsg; return StatusCode::FAILURE; } + return StatusCode::SUCCESS; + } + + msg(MSG::DEBUG) << " Unable to retrieve EventInfo from StoreGate... using dummy values" << endmsg; + + if (m_noGui||m_vp1gui->executeNewEvent(999,999,trigType,0)) { + return StatusCode::SUCCESS; + } else { + msg(MSG::INFO) << " Ending application gracefully." << endmsg; + return StatusCode::FAILURE; + } + return StatusCode::SUCCESS; - }; - - msg(MSG::WARNING) << " Unable to retrieve EventInfo from StoreGate. Skipping" << endmsg; - return StatusCode::FAILURE; } diff --git a/graphics/VP1/VP1Gui/src/VP1Authenticator.cxx b/graphics/VP1/VP1Gui/src/VP1Authenticator.cxx index 8228eb36ea8f00a30d0ff77c1fd9babcfb9160e1..f9b5cdaf7b32d9b53a3a047c2f6259f87af750fe 100644 --- a/graphics/VP1/VP1Gui/src/VP1Authenticator.cxx +++ b/graphics/VP1/VP1Gui/src/VP1Authenticator.cxx @@ -25,6 +25,9 @@ public: Imp(VP1Authenticator*,QString); ~Imp(); + Imp (const Imp&) = delete; + Imp& operator= (const Imp&) = delete; + // Gets value of the HTML tag attribute. Returns an empty string if attribute not found QString getTagAttributeVal(const QString& tag, const QString& attribute); diff --git a/graphics/VP1/VP1Gui/src/VP1DockWidget.cxx b/graphics/VP1/VP1Gui/src/VP1DockWidget.cxx index a3a9c10a585b692e48f3103e080abdca549064dc..35b27358d6338db929bbd733523a06911fbf7814 100644 --- a/graphics/VP1/VP1Gui/src/VP1DockWidget.cxx +++ b/graphics/VP1/VP1Gui/src/VP1DockWidget.cxx @@ -31,6 +31,8 @@ class VP1DockWidget::Imp { public: class FilterItem; Imp(VP1DockWidget*_dw,IVP1ChannelWidget * cw,VP1TabManager * tabmanager); + Imp (const Imp&) = delete; + Imp& operator= (const Imp&) = delete; FilterItem* filteritem; VP1DockWidget * dw; QFrame * frame; diff --git a/graphics/VP1/VP1Gui/src/VP1ExecutionScheduler.cxx b/graphics/VP1/VP1Gui/src/VP1ExecutionScheduler.cxx index f3ae7b33b50ba3724beb79f2659366c2d33becd6..5c97e5b7725c2de46884ce2a1647982c614918c0 100644 --- a/graphics/VP1/VP1Gui/src/VP1ExecutionScheduler.cxx +++ b/graphics/VP1/VP1Gui/src/VP1ExecutionScheduler.cxx @@ -715,6 +715,7 @@ void VP1ExecutionScheduler::eraseSystem(IVP1System*s) { VP1Msg::messageDebug("VP1ExecutionScheduler::eraseSystem()"); assert(s->state()==IVP1System::REFRESHED); + // cppcheck-suppress assertWithSideEffect assert(!s->isRefreshing()); QString base = QString(s->name())+" from channel "+s->channel()->unique_name(); @@ -736,6 +737,7 @@ void VP1ExecutionScheduler::systemNeedErase() { if (m_d->currentsystemrefreshing!=s) { eraseSystem(s); } else { + // cppcheck-suppress assertWithSideEffect assert(s->isRefreshing()); m_d->eraseJustAfterRefresh=true; } diff --git a/graphics/VP1/VP1HEPVis/src/SbPolyhedron.cxx b/graphics/VP1/VP1HEPVis/src/SbPolyhedron.cxx index 9984b01f0d221bd3704704314ce0fd88e0f27909..20caa8973997f070843ba7adc0544a7c78fd991b 100644 --- a/graphics/VP1/VP1HEPVis/src/SbPolyhedron.cxx +++ b/graphics/VP1/VP1HEPVis/src/SbPolyhedron.cxx @@ -1478,7 +1478,10 @@ SbPolyhedronCons::SbPolyhedronCons(double Rmn1, if (Rmn1 > Rmx1 || Rmn2 > Rmx2) k = 1; if (Rmn1 == Rmx1 && Rmn2 == Rmx2) k = 1; - if (Dz <= 0.) k += 2; + // We can get this from the tracking geometry. Don't complain. + if (Dz == 0) return; + + if (Dz < 0.) k += 2; double phi1, phi2, dphi; if (Dphi < 0.) { @@ -1981,7 +1984,7 @@ void SbPolyhedronPolygonXSect::Internals::setData(const std::vector<double> * xx { n = xx->size(); ntriangles = n-2; - assert (n==yy->size()&&n>3);//fixme n>2, and special code for n==3. + assert (n==yy->size()&&n>2);//fixme n>2, and special code for n==3. dz = the_dz; x = xx; y = yy; diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollHandleBase.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollHandleBase.cxx index 59c7614f6ea959a8579867465c26961a0d57ec74..8d0b8575931e9ae1ccf7db6e71a8f831c4984f1f 100644 --- a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollHandleBase.cxx +++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollHandleBase.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -46,6 +46,7 @@ #include <qdatetime.h> #include <vector> #include <QString> +#include <QElapsedTimer> //____________________________________________________________________ class AODCollHandleBase::Imp { @@ -64,28 +65,28 @@ public: //____________________________________________________________________ AODCollHandleBase::AODCollHandleBase( AODSysCommonData * cd, const QString& name, xAOD::Type::ObjectType type ) //AODCollHandleBase::AODCollHandleBase( AODSysCommonData * cd, const QString& name) - : VP1StdCollection(cd->system(),"AODCollHandleBase_FIXME_"+name), m_d(new Imp), // Need to add back ObjectType once simple way to create string is added to xAODBase + : VP1StdCollection(cd->system(),"AODCollHandleBase_FIXME_"+name), m_dbase(new Imp), // Need to add back ObjectType once simple way to create string is added to xAODBase m_nshownhandles(0), m_type(type), m_commonData(cd), m_sephelper(0) { - m_d->theclass = this; - m_d->name = name; - m_d->objBrowseTree = 0; + m_dbase->theclass = this; + m_dbase->name = name; + m_dbase->objBrowseTree = 0; } // //____________________________________________________________________ // void AODCollHandleBase::init(VP1MaterialButtonBase*) // { -// // m_d->matButton = new TrackCollectionSettingsButton; -// // m_d->matButton->setText(text()); -// // VP1StdCollection::init(m_d->matButton);//this call is required. Passing in TrackCollectionSettingsButton means we have the more complex button. +// // m_dbase->matButton = new TrackCollectionSettingsButton; +// // m_dbase->matButton->setText(text()); +// // VP1StdCollection::init(m_dbase->matButton);//this call is required. Passing in TrackCollectionSettingsButton means we have the more complex button. // VP1StdCollection::init();//FIXME // setupSettingsFromController(common()->controller()); // connect(this,SIGNAL(visibilityChanged(bool)),this,SLOT(collVisibilityChanged(bool))); // -// // collSwitch()->addChild(m_d->matButton->trackDrawStyle()); +// // collSwitch()->addChild(m_dbase->matButton->trackDrawStyle()); // } //____________________________________________________________________ @@ -95,7 +96,7 @@ AODCollHandleBase::~AODCollHandleBase() // delete the Imp instance - delete m_d; + delete m_dbase; if (m_sephelper) { SoSeparator * sep = m_sephelper->topSeparator(); @@ -128,7 +129,7 @@ void AODCollHandleBase::setupSettingsFromController(AODSystemController* control //____________________________________________________________________ QString AODCollHandleBase::name() const { - return m_d->name; + return m_dbase->name; } @@ -161,7 +162,7 @@ void AODCollHandleBase::recheckCutStatusOfAllVisibleHandles() // handle=getNextHandle(); // recheckCutStatus(handle); - // std::vector<AODHandleBase*>::iterator it(m_d->handles.begin()),itE(m_d->handles.end()); + // std::vector<AODHandleBase*>::iterator it(m_dbase->handles.begin()),itE(m_dbase->handles.end()); // for (;it!=itE;++it) { // if ((*it)->visible()) // recheckCutStatus(*it); @@ -320,12 +321,12 @@ void AODCollHandleBase::updateMaterialOfAllHandles() // // targetText = Imp::comboBoxEntry_ColourByCollection(); // // break; // // } -// // if (targetText!=m_d->comboBox_colourby->currentText()) { -// // int i = m_d->comboBox_colourby->findText(targetText); -// // if (i>=0&&i<m_d->comboBox_colourby->count()) { -// // bool save = m_d->comboBox_colourby->blockSignals(true); -// // m_d->comboBox_colourby->setCurrentIndex(i); -// // m_d->comboBox_colourby->blockSignals(save); +// // if (targetText!=m_dbase->comboBox_colourby->currentText()) { +// // int i = m_dbase->comboBox_colourby->findText(targetText); +// // if (i>=0&&i<m_dbase->comboBox_colourby->count()) { +// // bool save = m_dbase->comboBox_colourby->blockSignals(true); +// // m_dbase->comboBox_colourby->setCurrentIndex(i); +// // m_dbase->comboBox_colourby->blockSignals(save); // // } else { // // message("ERROR: Problems finding correct text in combo box"); // // } @@ -347,7 +348,7 @@ void AODCollHandleBase::updateMaterialOfAllHandles() // // return; // // messageVerbose("rerandomiseRandomTrackColours start"); // // largeChangesBegin(); -// // std::vector<AODHandleBase*>::iterator it(m_d->handles.begin()),itE(m_d->handles.end()); +// // std::vector<AODHandleBase*>::iterator it(m_dbase->handles.begin()),itE(m_dbase->handles.end()); // // for (;it!=itE;++it) // // (*it)->rerandomiseRandomMaterial(); // // largeChangesEnd(); @@ -361,7 +362,7 @@ void AODCollHandleBase::updateMaterialOfAllHandles() // // return; // // messageVerbose("handleSelectionChanged start"); // // largeChangesBegin(); -// // std::vector<AODHandleBase*>::iterator it(m_d->handles.begin()),itE(m_d->handles.end()); +// // std::vector<AODHandleBase*>::iterator it(m_dbase->handles.begin()),itE(m_dbase->handles.end()); // // for (;it!=itE;++it) // // (*it)->updateMaterial(); // // largeChangesEnd(); @@ -397,39 +398,39 @@ void AODCollHandleBase::collVisibilityChanged(bool vis) if (!m_sephelper) m_sephelper = new VP1ExtraSepLayerHelper(collSep()); - if (!m_d->objBrowseTree) + if (!m_dbase->objBrowseTree) fillObjectBrowser(); if (vis){ recheckCutStatusOfAllNotVisibleHandles();//Fixme -> ofallhandles? All must be not visible anyway... - if (m_d->objBrowseTree) m_d->objBrowseTree->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // selectable, enabled + if (m_dbase->objBrowseTree) m_dbase->objBrowseTree->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // selectable, enabled }else{ recheckCutStatusOfAllVisibleHandles(); // QTreeWidget* trkObjBrowser = common()->controller()->trackObjBrowser(); - // if (m_d->objBrowseTree && trkObjBrowser) { - // trkObjBrowser->takeTopLevelItem(trkObjBrowser->indexOfTopLevelItem(m_d->objBrowseTree)); - // delete m_d->objBrowseTree; m_d->objBrowseTree=0; + // if (m_dbase->objBrowseTree && trkObjBrowser) { + // trkObjBrowser->takeTopLevelItem(trkObjBrowser->indexOfTopLevelItem(m_dbase->objBrowseTree)); + // delete m_dbase->objBrowseTree; m_dbase->objBrowseTree=0; // } // FIXME - need to loop through handles setting pointers to deleted QTreeWidgetItems - if (m_d->objBrowseTree) m_d->objBrowseTree->setFlags(0); // not selectable, not enabled + if (m_dbase->objBrowseTree) m_dbase->objBrowseTree->setFlags(Qt::ItemFlags()); // not selectable, not enabled } } void AODCollHandleBase::updateObjectBrowserVisibilityCounts() { messageVerbose("AODCollHandleBase::updateObjectBrowserVisibilityCounts called for "+name()); QTreeWidget* trkObjBrowser = common()->controller()->objBrowser(); - if (!trkObjBrowser || !m_d->objBrowseTree) { + if (!trkObjBrowser || !m_dbase->objBrowseTree) { messageVerbose("AODCollHandleBase::updateObjectBrowserVisibilityCounts: no common()->controller()->objBrowser() and/or d->objBrowseTree. Aborting"); - messageVerbose("trkObjBrowser: "+str(trkObjBrowser)+"\t d->objBrowseTree: "+str(m_d->objBrowseTree)); + messageVerbose("trkObjBrowser: "+str(trkObjBrowser)+"\t d->objBrowseTree: "+str(m_dbase->objBrowseTree)); return; } QString text(QString(": (")+QString::number(nShownHandles())+QString("/")+QString::number(getHandlesList().count())+QString(") visible")); - m_d->objBrowseTree->setText(1, text); + m_dbase->objBrowseTree->setText(1, text); } void AODCollHandleBase::fillObjectBrowser() { - QTime t; + QElapsedTimer t; t.start(); messageVerbose("AODCollHandleBase::fillObjectBrowser called for "+name()); @@ -446,12 +447,12 @@ void AODCollHandleBase::fillObjectBrowser() trkObjBrowser->setUpdatesEnabled(false); bool firstTime=false; - if (!m_d->objBrowseTree) { - m_d->objBrowseTree = new QTreeWidgetItem(0); + if (!m_dbase->objBrowseTree) { + m_dbase->objBrowseTree = new QTreeWidgetItem(0); firstTime=true; messageVerbose("AODCollHandleBase::fillObjectBrowser: First time so creating QTreeWidgetItem."); } else { - int index = trkObjBrowser->indexOfTopLevelItem(m_d->objBrowseTree); + int index = trkObjBrowser->indexOfTopLevelItem(m_dbase->objBrowseTree); if (index==-1 ) { messageVerbose("Missing from WidgetTree! Will continue but something must be wrong"); } @@ -480,10 +481,10 @@ void AODCollHandleBase::fillObjectBrowser() QString text(QString(": (")+QString::number(numVisible)+QString("/")+QString::number(i)+QString(") visible")); - m_d->objBrowseTree->setText(0, name()); - m_d->objBrowseTree->setText(1, text); - m_d->objBrowseTree->addChildren(list); - trkObjBrowser->addTopLevelItem(m_d->objBrowseTree); + m_dbase->objBrowseTree->setText(0, name()); + m_dbase->objBrowseTree->setText(1, text); + m_dbase->objBrowseTree->addChildren(list); + trkObjBrowser->addTopLevelItem(m_dbase->objBrowseTree); trkObjBrowser->setUpdatesEnabled(true); messageVerbose("AODCollHandleBase::fillObjectBrowser completed in "+QString::number(t.elapsed())+" ms"); @@ -501,7 +502,7 @@ void AODCollHandleBase::assignDefaultMaterial(SoMaterial * m) const //____________________________________________________________________ QList<QWidget*> AODCollHandleBase::provideExtraWidgetsForGuiRow() const { - // return QList<QWidget*>() << m_d->comboBox_colourby; + // return QList<QWidget*>() << m_dbase->comboBox_colourby; return QList<QWidget*>(); } @@ -509,7 +510,7 @@ QList<QWidget*> AODCollHandleBase::provideExtraWidgetsForGuiRow() const QByteArray AODCollHandleBase::extraWidgetsState() const { VP1Serialise serialise(0/*version*/,systemBase()); - // serialise.save(m_d->comboBox_colourby); + // serialise.save(m_dbase->comboBox_colourby); // serialise.disableUnsavedChecks(); return serialise.result(); } @@ -525,7 +526,7 @@ void AODCollHandleBase::setExtraWidgetsState(const QByteArray& ba) // VP1Deserialise state(ba, systemBase()); // if (state.version()!=0) // return;//just ignore silently... i guess we ought to warn? - // state.restore(m_d->comboBox_colourby); + // state.restore(m_dbase->comboBox_colourby); // state.disableUnrestoredChecks(); // colourByComboBoxItemChanged(); } @@ -539,7 +540,7 @@ void AODCollHandleBase::colourByComboBoxItemChanged() messageVerbose("TO BE IMPLEMENTED!!!"); /* - if (m_d->comboBox_colourby->currentText()==Imp::comboBoxEntry_ColourByRandom()) + if (m_dbase->comboBox_colourby->currentText()==Imp::comboBoxEntry_ColourByRandom()) setColourBy(COLOUR_RANDOM); else setColourBy(COLOUR_PERCOLLECTION); @@ -558,7 +559,7 @@ void AODCollHandleBase::setState(const QByteArray&state) bool vis = des.restoreBool(); QByteArray matState = des.restoreByteArray(); - // m_d->matButton->restoreFromState(matState); + // m_dbase->matButton->restoreFromState(matState); QByteArray extraWidgetState = des.version()>=1 ? des.restoreByteArray() : QByteArray(); setVisible(vis); @@ -569,15 +570,15 @@ void AODCollHandleBase::setState(const QByteArray&state) //____________________________________________________________________ QByteArray AODCollHandleBase::persistifiableState() const { - // if (!m_d->matButton) { + // if (!m_dbase->matButton) { // message("ERROR: persistifiableState() called before init()"); // return QByteArray(); // } VP1Serialise serialise(1/*version*/); serialise.disableUnsavedChecks(); serialise.save(visible()); - // Q_ASSERT(m_d->matButton&&"Did you forget to call init() on this VP1StdCollection?"); - // serialise.save(m_d->matButton->saveState()); + // Q_ASSERT(m_dbase->matButton&&"Did you forget to call init() on this VP1StdCollection?"); + // serialise.save(m_dbase->matButton->saveState()); serialise.save(extraWidgetsState());//version 1+ return serialise.result(); } diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollHandleBase.h b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollHandleBase.h index 0d47b477cb62874cc80654d6815d841f11590fc9..0c408b4a839391d2e32a0832a685c01a0ed24656 100644 --- a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollHandleBase.h +++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollHandleBase.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -181,7 +181,7 @@ public slots: private: class Imp; - Imp * m_d; + Imp * m_dbase; int m_nshownhandles; xAOD::Type::ObjectType m_type; diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollWidget.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollWidget.cxx index ac17f6b36cc98688d291e2045948142d69de9a02..f4c93caaad8f74dc8103453184cc40c774ac78f6 100644 --- a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollWidget.cxx +++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODCollWidget.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -33,6 +33,6 @@ AODCollWidget * AODCollWidget::Imp::theclass = 0; void AODCollWidget::sortSections(QList<QString>& sections) { Imp::theclass = this;//I guess this is not really threadsafe... - qSort(sections.begin(),sections.end(),Imp::sectionSorting); + std::sort(sections.begin(),sections.end(),Imp::sectionSorting); Imp::theclass = 0; } diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODHandleBase.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODHandleBase.cxx index d351df3a0bc636d4dc2803daa2f588248f5a3c83..5e47fc3e0a9a40d5a3930c01f782fb2e9786675c 100644 --- a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODHandleBase.cxx +++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODHandleBase.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -302,7 +302,7 @@ void AODHandleBase::fillObjectBrowser( QList<QTreeWidgetItem *>& listOfItems) { m_d->m_objBrowseTree->setText(1, l ); if (!visible()) { - m_d->m_objBrowseTree->setFlags(0); // not selectable, not enabled + m_d->m_objBrowseTree->setFlags(Qt::ItemFlags()); // not selectable, not enabled } listOfItems << browserTreeItem(); } @@ -321,7 +321,7 @@ void AODHandleBase::visibleStateChanged() } if (!visible()) { - browserTreeItem()->setFlags(0); // not selectable, not enabled + browserTreeItem()->setFlags(Qt::ItemFlags()); // not selectable, not enabled } else { browserTreeItem()->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // selectable, enabled } diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODSystemController.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODSystemController.cxx index 6757b834da6f71a17086255db98b2e4ca4cebeee..4e4f4a3a3fee2cd1e781667f98035c266aa97af5 100644 --- a/graphics/VP1/VP1Systems/VP1AODSystems/src/AODSystemController.cxx +++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/AODSystemController.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ //////////////////////////////////////////////////////////////// @@ -65,7 +65,7 @@ public: // Ui::AODSysSettingsExtrapolationsForm ui_extrap; // Ui::AODSysSettingsInteractionsForm ui_int; // Ui::AODSysSettingsCutsForm ui_cuts; - Ui::ObjectBrowser ui_objBrowser; + Ui::AODObjectBrowser ui_objBrowser; QTreeWidget* objBrowserWidget; AODSysCommonData * common; diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/objectbrowser.ui b/graphics/VP1/VP1Systems/VP1AODSystems/src/objectbrowser.ui index 0461dc9b7027056064d853a746f51a06c29355f9..bd0c56e75cd98b1b16b0e0b0dfe414064da66068 100644 --- a/graphics/VP1/VP1Systems/VP1AODSystems/src/objectbrowser.ui +++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/objectbrowser.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>ObjectBrowser</class> - <widget class="QWidget" name="ObjectBrowser"> + <class>AODObjectBrowser</class> + <widget class="QWidget" name="AODObjectBrowser"> <property name="geometry"> <rect> <x>0</x> diff --git a/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx b/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx index 8d27a1c06a737b2b3e550131b4fc33e4292eb4b2..919f4c8ac01fa22fc0efc88deaca755bb0eb9177 100755 --- a/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx +++ b/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx @@ -1165,7 +1165,7 @@ void VP1CaloReadoutSystem::createHV() { const FCALDetectorManager *fcalManager=VP1DetInfo::fcalDetMgr(); if (fcalManager) { FCALDetectorManager::ConstIterator e; - for (e=fcalManager->beginFCAL();e!=fcalManager->endFCAL(); e++) { + for (e=fcalManager->beginFCAL();e!=fcalManager->endFCAL(); ++e) { const FCALModule *fcalMod = *e; const HepGeom::Transform3D &xf = Amg::EigenTransformToCLHEP(fcalMod->getAbsoluteTransform()); @@ -1178,7 +1178,7 @@ void VP1CaloReadoutSystem::createHV() { int cc=0; FCALModule::ConstIterator t; - for (t=fcalMod->beginTiles();t!=fcalMod->endTiles();t++) { + for (t=fcalMod->beginTiles();t!=fcalMod->endTiles();++t) { double zf = fcalMod->getEndcapIndex()== 0 ? +fcalMod->getFullDepthZ(*t)/2.0 : -fcalMod->getFullDepthZ(*t)/2.0; // double zc = 0; @@ -1225,7 +1225,7 @@ void VP1CaloReadoutSystem::createEtaPhi() { if (manager) { EMBDetectorManager::DetectorRegionConstIterator e; - for (e=manager->beginDetectorRegion();e!=manager->endDetectorRegion(); e++) { + for (e=manager->beginDetectorRegion();e!=manager->endDetectorRegion(); ++e) { const EMBDetectorRegion *region = *e; const HepGeom::Transform3D &xf = Amg::EigenTransformToCLHEP(region->getAbsoluteTransform()); SoTransform *XF = VP1LinAlgUtils::toSoTransform(xf); @@ -1325,7 +1325,7 @@ void VP1CaloReadoutSystem::createEtaPhi() { if (manager) { EMECDetectorManager::DetectorRegionConstIterator e; - for (e=manager->beginDetectorRegion();e!=manager->endDetectorRegion(); e++) { + for (e=manager->beginDetectorRegion();e!=manager->endDetectorRegion(); ++e) { const EMECDetectorRegion *region = *e; const HepGeom::Transform3D &xf = Amg::EigenTransformToCLHEP(region->getAbsoluteTransform()); @@ -1407,7 +1407,7 @@ void VP1CaloReadoutSystem::createEtaPhi() { if (manager) { HECDetectorManager::DetectorRegionConstIterator e; - for (e=manager->beginDetectorRegion();e!=manager->endDetectorRegion(); e++) { + for (e=manager->beginDetectorRegion();e!=manager->endDetectorRegion(); ++e) { const HECDetectorRegion *region = *e; @@ -1494,7 +1494,7 @@ void VP1CaloReadoutSystem::createEtaPhi() { const FCALDetectorManager * manager=VP1DetInfo::fcalDetMgr(); if (manager) { FCALDetectorManager::ConstIterator e; - for (e=manager->beginFCAL();e!=manager->endFCAL(); e++) { + for (e=manager->beginFCAL();e!=manager->endFCAL(); ++e) { const FCALModule *fcalMod = *e; const HepGeom::Transform3D &xf = Amg::EigenTransformToCLHEP(fcalMod->getAbsoluteTransform()); @@ -1506,7 +1506,7 @@ void VP1CaloReadoutSystem::createEtaPhi() { SoSeparator *sep = new SoSeparator(); sep->addChild(XF); FCALModule::ConstIterator t; - for (t=fcalMod->beginTiles();t!=fcalMod->endTiles();t++) { + for (t=fcalMod->beginTiles();t!=fcalMod->endTiles();++t) { double x = t->getX(); double y = t->getY(); double dx = fcalMod->getFullWidthX(*t)/2.0; diff --git a/graphics/VP1/VP1Systems/VP1GeometrySystems/VP1GeometrySystems/ZappedVolumeListModel.h b/graphics/VP1/VP1Systems/VP1GeometrySystems/VP1GeometrySystems/ZappedVolumeListModel.h index fde4a2fb036300307a24781907d8310e5fa4cf4c..d8b2e3211d7e675f2fcff56b07964753f6dd47e5 100644 --- a/graphics/VP1/VP1Systems/VP1GeometrySystems/VP1GeometrySystems/ZappedVolumeListModel.h +++ b/graphics/VP1/VP1Systems/VP1GeometrySystems/VP1GeometrySystems/ZappedVolumeListModel.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef ZAPPEDVOLUMELISTMODEL_H @@ -49,7 +49,7 @@ inline int ZappedVolumeListModel::rowCount ( const QModelIndex & parent ) const inline Qt::ItemFlags ZappedVolumeListModel::flags ( const QModelIndex & index ) const { - return index.isValid() ? (Qt::ItemIsEnabled|Qt::ItemIsSelectable) : static_cast<Qt::ItemFlags>(0); + return index.isValid() ? (Qt::ItemIsEnabled|Qt::ItemIsSelectable) : Qt::ItemFlags(); } diff --git a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/GeoSysController.cxx b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/GeoSysController.cxx index 1ce906c57dad79a61fa4b7f37409e4d9043e2331..41e33abc054fb0445f6d5d1270361157c362b3d0 100644 --- a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/GeoSysController.cxx +++ b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/GeoSysController.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -459,7 +459,7 @@ bool GeoSysController::showVolumeOutLines() const //____________________________________________________________________ VP1GeoFlags::MuonChamberAdaptionStyleFlags GeoSysController::muonChamberAdaptionStyle() const { - VP1GeoFlags::MuonChamberAdaptionStyleFlags f(0); + VP1GeoFlags::MuonChamberAdaptionStyleFlags f; if (m_d->ui_muon.checkBox_muonadapt_openmdtchambers->isChecked()) f |= VP1GeoFlags::OpenMDTChambers; if (m_d->ui_muon.checkBox_muonadapt_hidetubes->isChecked()) @@ -609,7 +609,7 @@ void GeoSysController::emit_actionOnAllNonStandardVolumes() { */ void GeoSysController::emit_resetSubSystems() { - VP1GeoFlags::SubSystemFlags f(0); + VP1GeoFlags::SubSystemFlags f; if (sender()==m_d->ui_misc.toolButton_pixelmod_reset) f = VP1GeoFlags::Pixel; else if (sender()==m_d->ui_misc.toolButton_sctmod_reset) diff --git a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/PhiSectorManager.cxx b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/PhiSectorManager.cxx index 60b16f628394e21843d6798b868c72b63e6e6df9..0b6e79dda0d3051e219e4d4820ffff11759732d7 100644 --- a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/PhiSectorManager.cxx +++ b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/PhiSectorManager.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ ///////////////////////////////////////////////////////////////////////// @@ -102,8 +102,6 @@ VP1ExtraSepLayerHelper * PhiSectorManager::getSepHelperForNode(VP1GeoFlags::SubS SoSwitch * sw = new SoSwitch; sw->whichChild = (iphi>=0 ? m_d->phisectionwidget->virtualSectorEnabled(iphi,NPHISECTORS):!m_d->phisectionwidget->allSectorsOff()) ? SO_SWITCH_ALL : SO_SWITCH_NONE; - if (m_d->iphi2switches.find(iphi)==m_d->iphi2switches.end()) - m_d->iphi2switches[iphi] = std::set<SoSwitch*>(); m_d->iphi2switches[iphi].insert(sw); SoSeparator * sep = new SoSeparator; @@ -130,8 +128,6 @@ VP1ExtraSepLayerHelper * PhiSectorManager::getLabelSepHelperForNode(VP1GeoFlags: SoSwitch * sw = new SoSwitch; sw->whichChild = (iphi>=0 ? m_d->phisectionwidget->virtualSectorEnabled(iphi,NPHISECTORS):!m_d->phisectionwidget->allSectorsOff()) ? SO_SWITCH_ALL : SO_SWITCH_NONE; - if (m_d->iphi2Labelswitches.find(iphi)==m_d->iphi2Labelswitches.end()) - m_d->iphi2Labelswitches[iphi] = std::set<SoSwitch*>(); m_d->iphi2Labelswitches[iphi].insert(sw); SoSeparator * sep = new SoSeparator; diff --git a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VP1GeometrySystem.cxx b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VP1GeometrySystem.cxx index 6ad4fd6fb2d913d9bbc4e345fc2b073e91c21bc4..8674910f3cf3d330327a27c7068fe9a4eee63511 100644 --- a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VP1GeometrySystem.cxx +++ b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VP1GeometrySystem.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ ///////////////////////////////////////////////////////////////////////// @@ -1341,7 +1341,7 @@ void VP1GeometrySystem::restoreFromState(QByteArray ba) { m_d->controller->restoreSettings(state.restoreByteArray()); //Subsystem checkboxes: - VP1GeoFlags::SubSystemFlags flags(0); + VP1GeoFlags::SubSystemFlags flags; QMap<QString,bool> subsysstate = state.restore<QMap<QString,bool> >(); foreach (Imp::SubSystemInfo * subsys, m_d->subsysInfoList) { state.widgetHandled(subsys->checkbox); diff --git a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VisAttributes.cxx b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VisAttributes.cxx index 71407856e5be574bf9b0b06d078fee657d7feb03..ac417f94771a9d1b47f92d7583891a835450e8c8 100644 --- a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VisAttributes.cxx +++ b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VisAttributes.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "VP1GeometrySystems/VisAttributes.h" @@ -103,7 +103,7 @@ VisAttributes::VisAttributes() : m_d(new Imp) { VisAttributes::~VisAttributes() { std::map<std::string, SoMaterial *>::iterator m,e=m_d->_map.end(); - for (m=m_d->_map.begin();m!=e;m++) + for (m=m_d->_map.begin();m!=e;++m) (*m).second->unref(); delete m_d; diff --git a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VolumeHandle.cxx b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VolumeHandle.cxx index 31b6216de47db6b6520d7bb7dcdd97b8342d2d54..59fbe576b6fae9672b53c2e38fab7658e57ffc6c 100644 --- a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VolumeHandle.cxx +++ b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VolumeHandle.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "VP1GeometrySystems/VolumeHandle.h" @@ -39,6 +39,11 @@ #include <QMap> #include <QDataStream> +// Suppress warning from Coin4 headers. +#if __GNUC__ >= 10 +# pragma GCC diagnostic ignored "-Wdeprecated-copy" +#endif + //____________________________________________________________________ class VolumeHandle::Imp { public: diff --git a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VolumeTreeModel.cxx b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VolumeTreeModel.cxx index c0878db4e09885692413a300533ae52209032ea2..28433414ea764ecdb6729d3bb308e0d469958e1d 100644 --- a/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VolumeTreeModel.cxx +++ b/graphics/VP1/VP1Systems/VP1GeometrySystems/src/VolumeTreeModel.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "VP1GeometrySystems/VolumeTreeModel.h" @@ -442,12 +442,12 @@ int VolumeTreeModel::rowCount(const QModelIndex& parent) const //____________________________________________________________________ QVariant VolumeTreeModel::data(const QModelIndex& index, int role) const { - if ((role!=Qt::DisplayRole&&role!=Qt::TextColorRole)||!index.isValid()) + if ((role!=Qt::DisplayRole&&role!=Qt::ForegroundRole)||!index.isValid()) return QVariant(); VolumeHandle *volumeHandle = Imp::handlePointer(index); if (Imp::isRegularVolumeHandle(volumeHandle)) { - if (role==Qt::TextColorRole) { + if (role==Qt::ForegroundRole) { if (volumeHandle->isAttached()) return QVariant(); else @@ -460,7 +460,7 @@ QVariant VolumeTreeModel::data(const QModelIndex& index, int role) const return volumeHandle->getName(); } - if (role==Qt::TextColorRole) + if (role==Qt::ForegroundRole) return QVariant(); if (Imp::isSubSystemPointer(volumeHandle)) @@ -475,7 +475,7 @@ QVariant VolumeTreeModel::data(const QModelIndex& index, int role) const Qt::ItemFlags VolumeTreeModel::flags(const QModelIndex &index) const { if (!index.isValid()) - return 0; + return Qt::ItemFlags(); if (Imp::isRegularVolumeHandle(Imp::handlePointer(index))) return Qt::ItemIsEnabled | Qt::ItemIsSelectable; diff --git a/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_CSC.cxx b/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_CSC.cxx index 2c0baf2984c4198a29a8af00fdaebfe2060edde9..13e2ae34afffb5dc0e9f40f8a36c6afab6efd9ee 100644 --- a/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_CSC.cxx +++ b/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_CSC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "VP1PRDSystems/PRDHandle_CSC.h" @@ -53,7 +53,8 @@ void PRDHandle_CSC::buildShapes(SoNode*&shape_simple, SoNode*&shape_detailed) if( !localposHIT ) { - localposHIT = Amg::Vector2D{}; + localposHIT.emplace(); + localposHIT->setZero(); VP1Msg::message("Warning: Local wire position is NULL"); } SoTranslation * localtrans0 = new SoTranslation; diff --git a/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_RPC.cxx b/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_RPC.cxx index de1c62e3a24a1bb88c5f6615ce4a5d432e40f950..919f1a3df956c51dd7a6d4ba2dae747877121827 100644 --- a/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_RPC.cxx +++ b/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_RPC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "VP1PRDSystems/PRDHandle_RPC.h" @@ -50,7 +50,8 @@ void PRDHandle_RPC::buildShapes(SoNode*&shape_simple, SoNode*&shape_detailed) std::optional<Amg::Vector2D> localposHIT = m_rpc->detectorElement()->surface( id ).Trk::Surface::globalToLocal(globalposHIT,tolerance); if( !localposHIT ) { - localposHIT = Amg::Vector2D{}; + localposHIT.emplace(); + localposHIT->setZero(); VP1Msg::message("Warning: Local wire position is NULL"); } SoTranslation * localtrans0 = new SoTranslation; diff --git a/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_TGC.cxx b/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_TGC.cxx index 9fd6c3a29d09693e91eddaad071fe0005f34e0f3..d39f41e90d75c33bce5a3886b648af3558a9fb0b 100644 --- a/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_TGC.cxx +++ b/graphics/VP1/VP1Systems/VP1PRDSystems/src/PRDHandle_TGC.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "VP1PRDSystems/PRDHandle_TGC.h" @@ -163,7 +163,8 @@ void PRDHandle_TGC::buildShapes(SoNode*&shape_simple, SoNode*&shape_detailed) std::optional<Amg::Vector2D>localposHIT = m_tgc->detectorElement()->surface( id ).Trk::Surface::globalToLocal(globalposHIT,tolerance); if( !localposHIT ) { - localposHIT = Amg::Vector2D{}; + localposHIT.emplace(); + localposHIT->setZero(); VP1Msg::message("Warning: Local wire position is NULL"); } diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObjSelectionManager.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObjSelectionManager.cxx index 338f64cc8b1c501d8bd3b6aac42b12af23831f86..44455defc6cbed36b9409aa50235c04ee1289841 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObjSelectionManager.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObjSelectionManager.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -262,7 +262,7 @@ void AscObjSelectionManager::pretendUserClicked(AssociatedObjectHandleBase*handl if (!handle) return; const bool alreadyselected = m_d->selAscObjHandles.contains(handle); - qSort(m_d->selAscObjHandles); + std::sort(m_d->selAscObjHandles.begin(), m_d->selAscObjHandles.end()); QList<AssociatedObjectHandleBase*> selHandlesBefore = m_d->selAscObjHandles; if (m_d->mode==SINGLE) { @@ -303,7 +303,7 @@ void AscObjSelectionManager::pretendUserClicked(AssociatedObjectHandleBase*handl deselectAll(); return; } - qSort(m_d->selAscObjHandles); + std::sort(m_d->selAscObjHandles.begin(), m_d->selAscObjHandles.end()); if (selHandlesBefore!=m_d->selAscObjHandles) { m_d->updateSelectionVisuals(); @@ -368,7 +368,7 @@ void AscObjSelectionManager::ensureSelected(const QList<AssociatedObjectHandleBa if (!m_d->selAscObjHandles.contains(handle)) m_d->selAscObjHandles << handle; } - qSort(m_d->selAscObjHandles); + std::sort(m_d->selAscObjHandles.begin(), m_d->selAscObjHandles.end()); if (selHandlesBefore!=m_d->selAscObjHandles) { m_d->updateSelectionVisuals(); currentSelectionChanged(m_d->selAscObjHandles); diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TSOS.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TSOS.cxx index d2af767386ec573137b8cd13fc9d028442f6413f..0e6b243373551531a766eea146597b8f41fcfd24 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TSOS.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AscObj_TSOS.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -1176,7 +1176,7 @@ void AscObj_TSOS::setVisible(bool vis) { if (!visible()) { // std::cout<<"Hidden"<<std::endl; - me->setFlags(nullptr); // not selectable, not enabled + me->setFlags(Qt::ItemFlags()); // not selectable, not enabled itemFont.setStrikeOut(true); } else { diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AssociatedObjectHandleBase.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AssociatedObjectHandleBase.cxx index 589654a06b986fc5c34274508a3d65fb7548ec82..92aac7bd599a6596f24e5efd2825788f10b07190 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/AssociatedObjectHandleBase.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/AssociatedObjectHandleBase.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -21,6 +21,7 @@ #include "VP1Base/VP1Msg.h" #include <Inventor/nodes/SoSeparator.h> +#include <optional> //____________________________________________________________________ class AssociatedObjectHandleBase::Imp { diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandleBase.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandleBase.cxx index 7e35edd86fd54a49c500fa98bf32dddab74b4307..3d2d5d02054ad865e9447720731b948b99295478 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandleBase.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandleBase.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -41,6 +41,7 @@ #include <QComboBox> #include <QTreeWidgetItem> +#include <QElapsedTimer> #include <qdatetime.h> #include <vector> @@ -1063,7 +1064,7 @@ void TrackCollHandleBase::collVisibilityChanged(bool vis) // delete m_d->objBrowseTree; m_d->objBrowseTree=0; // } // FIXME - need to loop through handles setting pointers to deleted QTreeWidgetItems - if (m_d->objBrowseTree) m_d->objBrowseTree->setFlags(nullptr); // not selectable, not enabled + if (m_d->objBrowseTree) m_d->objBrowseTree->setFlags(Qt::ItemFlags()); // not selectable, not enabled } actualSetShownTSOSPartsOnHandles(); actualSetCustomColouredTSOSPartsOnHandles(); @@ -1083,7 +1084,7 @@ void TrackCollHandleBase::updateObjectBrowserVisibilityCounts() { void TrackCollHandleBase::fillObjectBrowser() { - QTime t; + QElapsedTimer t; t.start(); QTreeWidget* trkObjBrowser = common()->controller()->trackObjBrowser(); diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandle_TruthTracks.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandle_TruthTracks.cxx index 4196a64b4a4dc4b1112a421ba7759f012b971605..92b60b146d2839e3489924897a9d0456aa1f19ac 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandle_TruthTracks.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollHandle_TruthTracks.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -47,6 +47,7 @@ #include <QStringList> #include <QTime> +#include <QElapsedTimer> //____________________________________________________________________ @@ -425,7 +426,7 @@ bool TrackCollHandle_TruthTracks::load() int newBarCode(-1); std::map<SimBarCode,SimHitList> secondaryHitLists; messageVerbose("Sorting non-unique secondaries into lists of hits likely to originate from the same track."); - QTime timer;timer.start(); + QElapsedTimer timer;timer.start(); for (itHitList = hitLists.begin();itHitList!=itHitListEnd;) { if (itHitList->first.isNonUniqueSecondary()) { m_d->createSecondaryHitLists(itHitList->first,itHitList->second,secondaryHitLists,newBarCode); diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollWidget.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollWidget.cxx index ef43ccd663d3471666b7fb5caf357753d472e186..88a47dad9516db734ef56ca9258121539d5cc380 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollWidget.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackCollWidget.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -39,6 +39,6 @@ TrackCollWidget * TrackCollWidget::Imp::theclass = nullptr; void TrackCollWidget::sortSections(QList<QString>& sections) { Imp::theclass = this;//I guess this is not really threadsafe... - qSort(sections.begin(),sections.end(),Imp::sectionSorting); + std::sort(sections.begin(),sections.end(),Imp::sectionSorting); Imp::theclass = nullptr; } diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandleBase.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandleBase.cxx index 654fa16bca01a126758546e1d095b7618a74e978..a593cb53448072b9d994038c1fa4cb7b9d76782a 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandleBase.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandleBase.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -859,7 +859,8 @@ void TrackHandleBase::Imp::convertLineSetToCylinders(SoLineSet*line,SoSeparator* m.multRight(m3); //m is the transform we need in front of our cylinder. //However, we need to first add the inverse of all previous transforms. - SbMatrix mat(m); + SbMatrix mat; + mat = m; mat.multRight(lastTransf.inverse()); SoMatrixTransform * mt = new SoMatrixTransform; mt->matrix.setValue(mat); @@ -1969,7 +1970,7 @@ void TrackHandleBase::fillObjectBrowser( QList<QTreeWidgetItem *>& listOfItems) m_d->m_objBrowseTree->setText(1, l ); if (!visible()) { - m_d->m_objBrowseTree->setFlags(nullptr); // not selectable, not enabled + m_d->m_objBrowseTree->setFlags(Qt::ItemFlags()); // not selectable, not enabled } listOfItems << browserTreeItem(); } @@ -1985,7 +1986,7 @@ void TrackHandleBase::visibleStateChanged() } if (!visible()) { - browserTreeItem()->setFlags(nullptr); // not selectable, not enabled + browserTreeItem()->setFlags(Qt::ItemFlags()); // not selectable, not enabled } else { browserTreeItem()->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // selectable, enabled } diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandle_TrkTrack.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandle_TrkTrack.cxx index 1b4aebf1e95db5937d11658f9482ca150593ed4a..08303ede0475bfab0abf58307d78374c29970167 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandle_TrkTrack.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackHandle_TrkTrack.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -175,7 +175,7 @@ void TrackHandle_TrkTrack::fillObjectBrowser( QList<QTreeWidgetItem *>& listOfIt } if (!visible) { - TSOSitem->setFlags(nullptr);// not selectable, not enabled + TSOSitem->setFlags(Qt::ItemFlag());// not selectable, not enabled QFont itemFont = TSOSitem->font(0); itemFont.setStrikeOut(true); TSOSitem->setFont(0, itemFont); @@ -322,7 +322,7 @@ void TrackHandle_TrkTrack::updateObjectBrowser(){ // VP1Msg::messageVerbose("updateObjectBrowser "+m_objBrowseTree->text(0)+" with visible()="+tmp); if (!visible()) { - browserTreeItem()->setFlags(nullptr); // not selectable, not enabled + browserTreeItem()->setFlags(Qt::ItemFlag()); // not selectable, not enabled } else { browserTreeItem()->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // selectable, enabled } @@ -372,7 +372,7 @@ void TrackHandle_TrkTrack::updateObjectBrowser(){ } if (!asc->visible()) { - asc->browserTreeItem()->setFlags(nullptr); // not selectable, not enabled + asc->browserTreeItem()->setFlags(Qt::ItemFlag()); // not selectable, not enabled } else { asc->browserTreeItem()->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); // selectable, enabled } diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackSystemController.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackSystemController.cxx index 01379e979549732738db277297d3e9ae5d11ab6d..8e3a21d8bd40c7feede63a96ac78859b31876fc6 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackSystemController.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/TrackSystemController.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ @@ -70,6 +70,7 @@ #include <QTreeWidget> #include <QTreeWidgetItem> +#include <QtCoreVersion> @@ -146,7 +147,7 @@ public: Ui::TrackSysSettingsCutsForm ui_cuts{}; Ui::TrackSysSettingsAscObjsForm ui_ascobjs{}; Ui::TrackSysShiftMuonChambersForm ui_shiftmuonchambers{}; - Ui::ObjectBrowser ui_objBrowser{}; + Ui::TrackObjectBrowser ui_objBrowser{}; static bool extrapolatorsCreated; static void ensureExtrapolatorsCreated(IVP1System *); @@ -202,7 +203,12 @@ void TrackSystemController::Imp::ensureExtrapolatorsCreated(IVP1System * sys) { delete availTools; VP1ToolAccessHelper toolaccess(sys); - foreach (QString key,VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_EXTRAPOLATORS").split(';',QString::SkipEmptyParts)) { +#if QTCORE_VERSION >= 0x050E00 + foreach (QString key,VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_EXTRAPOLATORS").split(';',Qt::SkipEmptyParts)) +#else + foreach (QString key,VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_EXTRAPOLATORS").split(';',QString::SkipEmptyParts)) +#endif + { if (existingExtrapolators.contains(key)) continue; sys->messageDebug("Attempting creation of fitter with tooltype/key "+key); @@ -234,7 +240,12 @@ void TrackSystemController::Imp::ensureFittersCreated(IVP1System * sys) { delete availTools; VP1ToolAccessHelper toolaccess(sys); - foreach (QString instance,VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_FITTERS").split(';',QString::SkipEmptyParts)) { +#if QTCORE_VERSION >= 0x050E00 + foreach (QString instance,VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_FITTERS").split(';',Qt::SkipEmptyParts)) +#else + foreach (QString instance,VP1QtUtils::environmentVariableValue("VP1_JOBCFG_EXTRA_VP1_FITTERS").split(';',QString::SkipEmptyParts)) +#endif + { if (existingFitters.contains(instance)) continue; sys->messageDebug("Attempting creation of fitter with tooltype/key "+instance); diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/VP1TrackSystem.cxx b/graphics/VP1/VP1Systems/VP1TrackSystems/src/VP1TrackSystem.cxx index 1742366d2aaa0cd3f2495964fa0cb69e5f1af364..3d50799f2b82e9c0e7a8701b7203d4c9474ec6fd 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/VP1TrackSystem.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/VP1TrackSystem.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ //////////////////////////////////////////////////////////////// @@ -510,9 +510,10 @@ void VP1TrackSystem::setApplicableIDProjections( InDetProjFlags::InDetProjPartsF if (changes) { messageVerbose(" => Flags changed."); - if (m_d->common->controller()) + if (m_d->common->controller()) { foreach( TrackCollHandleBase* collhandle, m_d->common->controller()->collWidget()->collections<TrackCollHandleBase>() ) collhandle->updateInDetProjectionsOfAllHandles(); + } } else { messageVerbose(" => Flags unchanged."); } diff --git a/graphics/VP1/VP1Systems/VP1TrackSystems/src/objectbrowser.ui b/graphics/VP1/VP1Systems/VP1TrackSystems/src/objectbrowser.ui index 627fb443744c660930fa3fb6137b00fc86165bba..190164f8f8426af62f77d30b0259bc8d4706c7d5 100644 --- a/graphics/VP1/VP1Systems/VP1TrackSystems/src/objectbrowser.ui +++ b/graphics/VP1/VP1Systems/VP1TrackSystems/src/objectbrowser.ui @@ -1,6 +1,6 @@ <ui version="4.0" > - <class>ObjectBrowser</class> - <widget class="QWidget" name="ObjectBrowser" > + <class>TrackObjectBrowser</class> + <widget class="QWidget" name="TrackObjectBrowser" > <property name="geometry" > <rect> <x>0</x> diff --git a/graphics/VP1/VP1Systems/VP1TrackingGeometrySystems/src/VP1TrackingGeometrySystem.cxx b/graphics/VP1/VP1Systems/VP1TrackingGeometrySystems/src/VP1TrackingGeometrySystem.cxx index 0fafa2dbb6a756bc0e16861c1b81b2046eac1e8c..480ec7ba3bbf2a279247177bf7eb319fd2e09199 100755 --- a/graphics/VP1/VP1Systems/VP1TrackingGeometrySystems/src/VP1TrackingGeometrySystem.cxx +++ b/graphics/VP1/VP1Systems/VP1TrackingGeometrySystems/src/VP1TrackingGeometrySystem.cxx @@ -1062,7 +1062,7 @@ void VP1TrackingGeometrySystem::processTrkVolume(const Trk::TrackingVolume* tvol surfaceSepHelper = m_d->sephelper_pixSurfECC; } } - } else if (volumeName.contains("SCT") > 0) { + } else if ((volumeName.contains("SCT") > 0) or (volumeName.contains("Strip") > 0)) { // SCT sector if ( volumeName.contains("Barrel") > 0 ){ // sct barrel surfaces & layers diff --git a/graphics/VP1/VP1Systems/VP1TriggerDecisionSystems/src/VP1TriggerDecisionSystem.cxx b/graphics/VP1/VP1Systems/VP1TriggerDecisionSystems/src/VP1TriggerDecisionSystem.cxx index f01c41f361a33bed08365abdebe8a74b1002da91..60c23c9919d70798fc516f2b6aed2b9ea44e46ec 100644 --- a/graphics/VP1/VP1Systems/VP1TriggerDecisionSystems/src/VP1TriggerDecisionSystem.cxx +++ b/graphics/VP1/VP1Systems/VP1TriggerDecisionSystems/src/VP1TriggerDecisionSystem.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "VP1TriggerDecisionSystems/VP1TriggerDecisionSystem.h" @@ -55,8 +55,6 @@ void VP1TriggerDecisionSystem::create( StoreGateSvc* /*triggerDecisonTool*/ ) StatusCode sc = m_clock->m_trigDec.retrieve(); if(sc.isFailure()) message("Error: retrieve TrigDecisionTool failed!"); - - m_clock->m_trigDec->ExperimentalAndExpertMethods()->enable(); } //____________________________________________________________________ @@ -150,7 +148,7 @@ void VP1TriggerDecisionSystem::Clockwork::getInfo(const std::string& key,const s // For LV1 ROI informations if(key.find("L1",0)!= std::string::npos) { os << " LV1: " << key << std::endl; - const LVL1CTP::Lvl1Item* l1iterm = m_trigDec->ExperimentalAndExpertMethods()->getItemDetails(key); + const LVL1CTP::Lvl1Item* l1iterm = m_trigDec->ExperimentalAndExpertMethods().getItemDetails(key); if(l1iterm) { os << " LV1 " << l1iterm->name() << " isPassed: " << l1iterm->isPassed() << std::endl; os << " LV1 " << l1iterm->name() << " isPrescaled: " << l1iterm->isPrescaled() diff --git a/graphics/VP1/VP1Utils/src/VP1JobConfigInfo.cxx b/graphics/VP1/VP1Utils/src/VP1JobConfigInfo.cxx index 7e0c872013390bfc0fc1280dcdda0eea4d7e1b37..e562dd28633d9ed9a0949a580fe52e14f99ac9a8 100644 --- a/graphics/VP1/VP1Utils/src/VP1JobConfigInfo.cxx +++ b/graphics/VP1/VP1Utils/src/VP1JobConfigInfo.cxx @@ -178,7 +178,7 @@ bool VP1JobConfigInfo::Imp::actualInit( StoreGateSvc* detStore ) while (!av.atEnd()) { std::string name = av.getName(); - if ( !hasPixelGeometry && name=="Pixel") { + if ( !hasPixelGeometry && (name=="Pixel" or name=="ITkPixel")) { hasPixelGeometry = true; if ( !hasBCMGeometry ) { //Loop under the top Pixel volume to check if there are BCM volumes @@ -193,7 +193,7 @@ bool VP1JobConfigInfo::Imp::actualInit( StoreGateSvc* detStore ) } } } - if ( !hasSCTGeometry && name=="SCT") hasSCTGeometry = true; + if ( !hasSCTGeometry && (name=="SCT" or name=="ITkStrip")) hasSCTGeometry = true; if ( !hasTRTGeometry && name=="TRT") hasTRTGeometry = true; if ( !hasInDetServiceMaterialGeometry && name=="InDetServMat") hasInDetServiceMaterialGeometry = true; if ( !hasBeamPipeGeometry && name=="BeamPipe") hasBeamPipeGeometry = true;